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をパースすることで他にも色々可視化ができそうなのでやってみようと思います。