概要
指定の IP の範囲に Zabbix Agent がいる場合にそれを検知して何かしらのアクションを起こすことができます
今回は検知したホストを自動で Hosts に登録することをやってみました
今回は docker 上で機能を試してみました
環境
- Zabbix サーバ
- Ubuntu 16.04 LTS
- docker 18.09.6
- Zabbix Server 4.2
- Zabbix エージェント
- macOS 10.14.5
- docker 18.09.2
- Zabbix Agent 4.2
Zabbix サーバ起動
Ubuntu 16.04 上で起動します
前回の記事で紹介しているのでそちらを参考にしてください
Zabbix サーバが起動していればいいので docker でなくても OK です
Zabbix Agent 起動
docker run -d -e ZBX_HOSTNAME="c2" -e ZBX_SERVER_HOST="192.168.99.200,172.17.0.1" -p 10050:10050 zabbix/zabbix-agent
こちらもコンテナでなくて OK です
ディスカバリ作成
まずはディスカバリを作成します
特定のネットワーク上にエージェントが出現したら発見させるようなディスカバリにします
Configuration -> Discovery
で「Create discovery rule」or 既存のルールを選択します
下記は既存の「Local network」を変更しています
- IP range・・・192.168.99.1
- Update interval・・・10s
- Checks・・・
Zabbix agent "system.uname"
- Device uniqueness criteria, Host name, Visible name・・・
Zabbix agent "system.uname"
IP range は 192.168.99.1-254
や 192.168.99.0/24
などの範囲指定フォーマットもサポートしています
Update interval は好きな値を設定してください
今回はテストなので 10s にしています
数字が小さいと負荷が上がります
Checks は zabbix_agent -s 192.168.99.1 -k system.uname
の値が取得できるかどうか判断するようにします
他にも ping や特定の tcp ポートでもチェックできます
Device uniqueness criteria, Host name, Visible name
はすべて `Zabbix agent "system.uname"
にしていますがこれも好きなものを設定してください
例えば Host name を IP address にするとホストが登録された際に IP で登録されます
作成 or 編集後のディスカバリは以下のような感じです
アクション作成
次に作成したディスカバリが真の場合に実行するアクションを作成します
Configuration -> Actions
で右上のプルダウンの「Event source」を「Discovery」にします
「Create action」でも OK です
以下は既存の「Auto discovery. Linux servers.」を編集しています
- Conditions・・・Discovery rule equals Local network -> Add を押す
- Enabled・・・チェック
次に Operations タブを選択します
Operations -> New を選択します
- Operations・・・Add host -> Add を押す
これで OK です
Update を押して作成しましょう
作成 or 編集後のアクションは以下の通りです
動作確認
しばらくするとディスカバリされホストが追加されるはずです
まずは Monitoring -> Discovery を見てみましょう
ここでホストが見つからないとアクションも実行されます
アクションも問題なく実行されれば Configuration -> Hosts にホストが登録されています
今回は system.uname
を Host name に使っているので以下のように少し長いホスト名として登録されます
Zabbix Server のログ的には 177:20190621:040419.777 enabling Zabbix agent checks on host "Linux be1c04e1d4aa 4.9.125-linuxkit _1 SMP Fri Sep 7 08_20_28 UTC 2018 x86_64": host became available
が出ていれば成功です
トラブルシュート
手順的にはサクっとできますが実はいろいろハマっています、、
自分がトラブルシュートした方法をいくつか紹介します
Zabbix Server のロギングレベルを上げる
docker の場合は .env_srv
の ZBX_DEBUGLEVEL=3
を 4 にすれば OK です
これで再度 zabbix-server
コンテナを down -> up すれば OK です
IP range を短くする
ディスカバリのルールはあっているのに中々 Monitoring -> Discovery に登場しない場合はこれを試してみてください
確証はないですが Zabbix Server は当然していの範囲を精査します
アクションや発見したホストの登録を実行するタイミングがもしかすると精査後になっているので unreachable な IP が多いほどアクションが実行されるタイミングが遅くなっているのかもしれません
(ソースまで終えていないので自信なし)
最後に
Zabbix4.2 でディスカバリの機能を試してみました
機能自体は昔からあるので今更感がありますが UI はだいぶ変わっているのでその辺りは参考になるかなと思います
サーバもエージェントもコンテナなのでバイナリを直接ホストで動かしてる場合は少し設定値は変わるかなと思いますが流れは基本的に同じかなと思います
0 件のコメント:
コメントを投稿