1.はじめに
ほぼ自分のメモ用です。習熟してきたら整理して書き直すかも。
2.環境
Zabbix 3.0 on CentOS7 on AWS。
環境構築は今回は対象外。
Zabbixサーバ自身に/var/log/jinnai73というログファイルを作って監視してみる。
3.実践
3-1.監視対象ログファイルを作成する
[root@ip-10-0-128-4 ~]# touch /var/log/jinnai73
[root@ip-10-0-128-4 ~]# ls /var/log/jinnai73
/var/log/jinnai73
できました。
3-2.アイテムを設定する
Name: Log
Type: Zabbix agent(active)
Key: log[/var/log/jinnai73]
Type of information: Log
Nameは適当につけてOKです。
TypeはZabbix agent(active)、passiveではログ監視ができません。
Keyはlog[ファイル名]。
Typeはlogに。
間違っていたらエラーが出るので、表示を見て直しましょう。
作成したらテストをします。
echoで適当な文字列「Test」などを書き込みましょう。
date
しておくと、複数回書き込んだ時の見分けがつきやすいのでオススメです。
[root@ip-10-0-128-4 ~]# echo `date` Test > /var/log/jinnai73
[root@ip-10-0-128-4 ~]# cat /var/log/jinnai73
Thu Oct 27 22:51:22 JST 2016 Test
ログファイルに書き込まれたことを確認したらZabbix Webに戻って。
Monitoring>Latest dataを選択。
Logの行のLast valueに、さきほど書き込んだTestが入っています。
Historyを選択して詳細も見ちゃいましょう。
できました。
余談ですが、テストもせずに「できました」というエンジニアがたまにいます。
滅べばいいのにと思います。
変更とテストは必ずセットで。
いやむしろ、テストと変更は必ずセットで。
先にテストを考えてから、テストを満たす変更方法を考えましょう。
3-3.トリガーを設定する
ログファイルに特定の文字列が出力された時に、Zabbix webに出力が出るようにしましょう。
Name: Log error detected
Expression: {Zabbix server:log[/var/log/jinnai73].regexp(error)}=1
Severity: Warning
できました。
NameやSeverityは適当に。
Expressionは全体で条件式となっており、条件を満たすとトリガーが発動します。
条件式の左辺はアイテムのキー.トリガー関数という書式になっています。
今回はregexp関数を使っていますね。
これはアイテムの最新の値の中にregexp()の引数が含まれていたら1を返す関数です。
全体として、アイテムlog[/var/log/jinnai73]の最新値にerrorが含まれていたらトリガーが発動します。
では試してみましょう。
[root@ip-10-0-128-4 ~]# echo `date` error >> /var/log/jinnai73
[root@ip-10-0-128-4 ~]# cat /var/log/jinnai73
Thu Oct 27 23:32:45 JST 2016 Test
Thu Oct 27 23:32:49 JST 2016 error
[root@ip-10-0-128-4 ~]#
ログファイルにerrorを追記します。
(途中で間違えて上書きしてしまったため、時間が少し変わっています。。。)
Zabbixを見てみましょう。
しっかりとトリガーが発動していますね。
ログに追記してトリガーを解消してみます。
[root@ip-10-0-128-4 ~]# cat /var/log/jinnai73
Thu Oct 27 23:32:45 JST 2016 Test
Thu Oct 27 23:32:49 JST 2016 error
Thu Oct 27 23:36:24 JST 2016 fixed
[root@ip-10-0-128-4 ~]#
最新のログをfixedにしました。
4.おわりに
インフラ構築部隊を外れて運用側の人間になったため、しばらくはzabbix等で遊んでいこうと思います。