ZabbixでSNMPのLLD(ローレベルディスカバリ)を利用して正規表現で定義したプロセスが、監視対象で動作していたら自動でプロセス監視の設定を追加する。
これでプロセス監視を1つのテンプレートに集約できる。
前提条件
監視対象にZabbix Agentがインストール済みであること
SNMP設定
1. 監視対象にsnmpdインストール
# yum install -y net-snmp
# sed -i -e 's/^#view all/view all/' -e 's/systemview none none/all none
none/' /etc/snmp/snmpd.conf
# chkconfig snmpd on
# service snmpd start
上記でSNMPで全ての項目を取得できるよう設定を変更している
別途Zabbix Serverから監視対象への 161port/udp を通信許可する
2. Zabbix Serverからsnmp疎通テスト
Zabbix Serverからsnmpwalkを実行し起動プロセスが取得できることを確認する
※52.68.137.109は監視対象のIPアドレス
$ snmpwalk -v 2c -c public 52.68.137.109 'HOST-RESOURCES-MIB::hrSWRunName'
HOST-RESOURCES-MIB::hrSWRunName.1 = STRING: "init"
.
.
HOST-RESOURCES-MIB::hrSWRunName.2374 = STRING: "zabbix_agentd"
HOST-RESOURCES-MIB::hrSWRunName.2416 = STRING: "snmpd"
Zabbix Web設定
1. 監視対象プロセスの正規表現の作成
Zabbix Webに管理者権限でログインし、管理タブ、一般、正規表現、正規表現の作成の順で進み
sshd, zabbix_agentd, snmpd とマッチするプロセスが起動しているか確認するルールを作成する。
名前 = snmp-process-monitor
条件式 = ^(sshd"|"zabbix_agentd|snmpd)$
条件式の形式 = 結果が真
2. プロセス監視アイテム自動追加用テンプレートの作成
2-a. ディスカバリルール
起動プロセスを取得するOIDを設定
項目 | 値 |
---|---|
名前 | Process discovery |
タイプ | SNMPv2エージェント |
キー | hrSWRunName |
SNMP OID | HOST-RESOURCES-MIB::hrSWRunName |
SNMPコミュニティ | public |
2-b. フィルター
作成した正規表現とマッチするプロセス名をマクロに設定するルール
マクロ | 正規表現 |
---|---|
{#SNMPVALUE} | @snmp-process-monitor |
2-c. プロセス数取得用アイテムのプロトタイプ
項目 | 値 |
---|---|
名前 | proc.num[$1] |
タイプ | Zabbixエージェント |
キー | proc.num[{#SNMPVALUE},,,] |
2-d. 仮想メモリ使用サイズ取得用アイテムのプロトタイプ
項目 | 値 |
---|---|
名前 | proc.mem[$1] |
タイプ | Zabbixエージェント |
キー | proc.mem[{#SNMPVALUE},,,] |
単位 | B |
2-e. トリガーのプロトタイプ
3. ホストの追加
テスト環境
OS: Amazon Linux
Zabbix: 2.4.4