Ansible Tower(AWX)のログをlogstash経由でElasticsearchに取り込んでKibanaでユーザー毎に実行されたテンプレート情報を可視化してみます。
目的
ユーザー毎に実行されたPlaybookやテンプレートをテーブルで可視化してみます。
イメージは以下の様な感じです。
| ユーザー名 | テンプレート名 | 実行回数 |
|---|---|---|
| admin | example | 2 |
| user01 | example2 | 3 |
環境
| 項目 | バージョン |
|---|---|
| OS | RHEL7.5 |
| ELK | 6.3.2-1 |
| Ansible Tower | 3.2.5 |
ユーザー毎の情報が記録されているフィールド
Ansible Towerのログでテンプレートを実行した時にユーザー別情報が記録されるされるフィールドは actor が記録されている_sourceの changes です。
しかし changes の値はstring型のJSONで記録されています。
これをKibanaで解釈するにはJSONをパースしてフィールドに定義してあげる必要があります。
JSONをパースしてフィールドに定義
ここでは、logstashのfilter処理でJSONをパースしてフィールド(ansible.xxxという名前の)を追加してみようと思います。
logstashの設定を以下の様に changes を ansible というフィールドに定義する設定を入れます。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
(snip) filter { json { source => "message" } json { source => "changes" target => "ansible" } } (snip) |
logstashを再起動します。
|
1 2 |
[root@localhost ~]# systemctl restart logstash |
ログの再取り込み
Ansible Towerでテンプレートを実行してログを再取り込みし Index Patterns にある対象のパターンで Refresh field list を実行します。
そして、actorのあるログを見ると ansible.xxxxx というフィールドが定義されていることが確認できます。
これで準備完了です。
可視化例
こんな感じで集計して可視化できます。
changes の生JSONをパースすることで他にも色々可視化ができそうなのでやってみようと思います。



