概要
ZabbixでNW機器を監視し、通信断が復旧したらAnsibleでログを自動取得します。
NW機器はcsrとし、show running-configとshow logを取得します。
環境
Software | Versions |
---|---|
AWX(Ansible) | 13.0.0 |
Zabbix | 5.0 |
1.Zabbixの構築
先日の記事の環境を使用します。
監視対象のNW機器も追加されている状態です。
https://mitomito.hatenablog.jp/entry/2020/06/20/070000
なお、監視対象のNW機器csr-1にはSSH接続出来るようにしておきます。
2.AWXの構築
こちらの記事を参考に構築しました。
https://qiita.com/mina-stop/items/71266d74d102850eb4c0
また、テンプレートを作成する上で以下の問題にあたりますので、対応します。
https://sky-joker.tech/2018/03/21/awx%E3%81%ABvarlibawxprojects%E3%81%8C%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6/
- 再インストール結果
冪等性(べきとうせい)により、特に問題なくインストールされます。
PLAY RECAP ********************************************************************* localhost : ok=16 changed=5 unreachable=0 failed=0 skipped=86 rescued=0 ignored=0
3.AWX(Ansible)の設定
2020/07/01追記 本記事はAnsible側に監視対象機器のIPアドレスを設定しています。
ワークフローのサーベイを使うことにより、ZabbixからIPアドレスを渡せます。
「Ansible × Zabbix」通信断復旧時の自動ログ取得を改善した - mito’s blog
Playbookやテンプレート等を作成します。
- Playbookの作成
以下のコマンドを実行します。- show running-config
- show log
- プロジェクトの作成
- インベントリの作成
- 認証情報の設定
- ジョブテンプレートの作成
- APIの確認
Zabbixのアクションに設定するため、ジョブテンプレートIDを確認します。
APIの参考情報
https://docs.ansible.com/ansible-tower/3.7.1/html_ja/towerapi/
4.Zabbixの設定
アクションの「復旧時の実行内容」に、ジョブテンプレートを実行するためのコマンドを記載します。
- 実行内容のタイプ「リモートコマンド」
- ターゲットリストは現在のホストにチェックを入れる
- タイプ「カスタムスクリプト」
- 次で実行「Zabbixサーバー」
- コマンド
curl -f -k -H 'Content-Type: application/json' -X POST --user '「AWXログインID」:「AWXログインパスワード」' http://「IPアドレス」/api/v2/job_templates/「ジョブテンプレートID」/launch/
5.Ansible × Zabbix の連携
死活監視の間隔を10秒にし、監視対象のcsr-1を再起動させます。 Zabbixが通信断、および復旧を検知したあと、アクション(右ポップアップのリモートコマンド)が実行されます。
AWXでは、対象のジョブテンプレートが実行されています。
show logの結果から、restartのログが確認できます。
雑記
インベントリやPlaybookの内容の工夫や、そもそもログを見やすくしたいなどAnsible側のスッキリさせたい設定は盛りだくさんですが、次はジョブテンプレートの結果をRedmineのチケットに追記してみたい。たい。いろいろ組み込みたい。