箱庭にzabbixを入れてみた(設定編②)
対象ホストのSNMP有効化
CentOS7の設定
- CentOSに net-snmp と net-snmp-utils をインストール
[root@covb ~]# yum install net-snmp
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
・
・
・
インストール:
net-snmp.x86_64 1:5.7.2-49.el7_9.2
依存性関連をインストールしました:
lm_sensors-libs.x86_64 0:3.4.0-8.20160601gitf9185e5.el7
net-snmp-agent-libs.x86_64 1:5.7.2-49.el7_9.2
perl-Data-Dumper.x86_64 0:2.145-3.el7
完了しました!
[root@covb ~]#
[root@covb ~]# yum install net-snmp-utils
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
・
・
・
インストール:
net-snmp-utils.x86_64 1:5.7.2-49.el7_9.2
完了しました!
[root@covb ~]#
- 穴あけ
[root@covb ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client http ssh
ports: 10050/tcp 10051/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@covb ~]#
[root@covb ~]# firewall-cmd --add-port=161/udp
success
[root@covb ~]#
[root@covb ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client http ssh
ports: 10050/tcp 10051/tcp 161/udp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@covb ~]#
- snmpd.confの修正
- /etc/snmp/snmpd.confを↓で修正
-com2sec notConfigUser default public
+com2sec notConfigUser 10.0.2.110 banSnmp
-#disk / 10000
+disk / 10000
-#load 12 14 14
+load 12 14 14
- snmpd開始
[root@covb ~]# systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[root@covb ~]#
[root@covb ~]# systemctl start snmpd
[root@covb ~]#
[root@covb ~]# systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; disabled; vendor preset: disabled)
Active: active (running) since 日 2022-10-30 15:37:11 JST; 2s ago
Main PID: 3309 (snmpd)
CGroup: /system.slice/snmpd.service
mq3309 /usr/sbin/snmpd -LS0-6d -f
10月 30 15:37:10 covb systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
10月 30 15:37:11 covb snmpd[3309]: NET-SNMP version 5.7.2
10月 30 15:37:11 covb systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
[root@covb ~]#
- snmpwalkで動作確認
[root@covb ~]# snmpwalk -v 2c -c banSnmp 10.0.2.110
SNMPv2-MIB::sysDescr.0 = STRING: Juniper Networks, Inc. firefly-perimeter internet router, kernel JUNOS 12.1X47-D15.4 #0: 2014-11-12 02:13:59 UTC builder@chamuth.juniper.net:/volume/build/junos/12.1/service/12.1X47-D15.4/obj-i386/junos/bsd/kernels/VSRX/kernel Build date: 2014-11-12
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.2636.1.1.1.2.96
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (149261) 0:24:52.61
SNMPv2-MIB::sysContact.0 = STRING:
・
・
・
ubuntuを監視する
snmpエージェント有効化
- いつものおまじない
ban@UoVb:~$ sudo apt update
ban@UoVb:~$ sudo apt upgrade
- snmpのインストール
ban@UoVb:~$ sudo apt install snmpd
ban@UoVb:~$ sudo apt install snmp-mibs-downloader
- snmpd.confの設定
ban@UoVb:~$ sudo vim /etc/snmp/snmpd.conf
rocommunity banSnmp #こちらを追記
- ポート開け
ban@UoVb:~$ sudo ufw allow 161/udp
ban@UoVb:~$ sudo ufw allow 162/udp
ban@UoVb:~$ sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
161/udp ALLOW Anywhere
162/udp ALLOW Anywhere
161/udp (v6) ALLOW Anywhere (v6)
162/udp (v6) ALLOW Anywhere (v6)
ban@UoVb:~$
- zabbix側の設定
ホストにsnmpの登録
設定 > ホスト > 対象のホスト(今回はUoVb) > インターフェース > 追加 > SNMP
IPアドレスに対象ホストのIPアドレスを書く
テンプレート > Template OS Linux SNMP
マクロ > マクロにSNMP_COMUNITYを入力 > 値にコミュニティ名を入力
vsrx1を監視する
- snmpの有効化
- 設定前
ban@vsrx1> show configuration snmp | display set
ban@vsrx1>
- 設定
ban@vsrx1> configure
Entering configuration mode
[edit]
ban@vsrx1#
ban@vsrx1# set snmp community banSnmp authorization read-only
[edit]
ban@vsrx1#
ban@vsrx1# set snmp community banSnmp clients 10.0.2.0/24
[edit]
ban@vsrx1#
ban@vsrx1# set snmp community banSnmp clients 0.0.0.0/0 restrict
[edit]
ban@vsrx1#
ban@vsrx1# show | compare
[edit]
+ snmp {
+ community banSnmp {
+ authorization read-only;
+ clients {
+ 10.0.2.0/24;
+ 0.0.0.0/0 restrict;
+ }
+ }
+ }
[edit]
ban@vsrx1#
[edit]
ban@vsrx1# commit check
configuration check succeeds
[edit]
ban@vsrx1# commit
commit complete
[edit]
ban@vsrx1#
- 設定後
ban@vsrx1> show configuration snmp | display set
set snmp community banSnmp authorization read-only
set snmp community banSnmp clients 10.0.2.0/24
set snmp community banSnmp clients 0.0.0.0/0 restrict
ban@vsrx1>
- vsrx1でsnmptrapの設定
- 設定前
ban@vsrx1> show configuration snmp
community banSnmp {
authorization read-only;
clients {
10.0.2.0/24;
0.0.0.0/0 restrict;
}
}
ban@vsrx1>
- 設定
ban@vsrx1# set snmp trap-group snmp-trap version v2 targets 10.0.2.100
[edit]
ban@vsrx1# show | compare
[edit snmp]
+ trap-group snmp-trap {
+ version v2;
+ targets {
+ 10.0.2.100;
+ }
+ }
[edit]
ban@vsrx1#
[edit]
ban@vsrx1# commit check
configuration check succeeds
[edit]
ban@vsrx1# commit
commit complete
[edit]
ban@vsrx1#
- 設定後
ban@vsrx1> show configuration snmp
community banSnmp {
authorization read-only;
clients {
10.0.2.0/24;
0.0.0.0/0 restrict;
}
}
trap-group snmp-trap {
version v2;
targets {
10.0.2.100;
}
}
ban@vsrx1>
- vsrx1側
- snmptrap送信テスト
ban@vsrx1> request snmp spoof-trap coldStart
Spoof-trap request result: trap sent successfully
ban@vsrx1>
- zabbix側の設定
ホストにsnmpの登録
設定 > ホスト > 対象のホスト > インターフェース > 追加 > SNMP
IPアドレスに対象ホストのIPアドレスを書く
テンプレート > Template Net Juniper SNMP
マクロ > マクロにSNMP_COMUNITYを入力 > 値にコミュニティ名を入力
グラフを見てみる
監視データ > ホスト > グラフ > 最新の15分間とか
好きな値を取る
- ifindexの確認
[ban@covb ~]$ snmpwalk -v 2c -c banSnmp 10.0.2.110 1.3.6.1.2.1.2.2.1.1
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifIndex.7 = INTEGER: 7
IF-MIB::ifIndex.8 = INTEGER: 8
IF-MIB::ifIndex.9 = INTEGER: 9
IF-MIB::ifIndex.10 = INTEGER: 10
IF-MIB::ifIndex.11 = INTEGER: 11
IF-MIB::ifIndex.12 = INTEGER: 12
IF-MIB::ifIndex.21 = INTEGER: 21
IF-MIB::ifIndex.22 = INTEGER: 22
IF-MIB::ifIndex.248 = INTEGER: 248
IF-MIB::ifIndex.501 = INTEGER: 501
IF-MIB::ifIndex.502 = INTEGER: 502
IF-MIB::ifIndex.503 = INTEGER: 503
IF-MIB::ifIndex.504 = INTEGER: 504
IF-MIB::ifIndex.505 = INTEGER: 505
IF-MIB::ifIndex.506 = INTEGER: 506
IF-MIB::ifIndex.507 = INTEGER: 507
IF-MIB::ifIndex.508 = INTEGER: 508
IF-MIB::ifIndex.509 = INTEGER: 509
IF-MIB::ifIndex.510 = INTEGER: 510
IF-MIB::ifIndex.511 = INTEGER: 511
IF-MIB::ifIndex.516 = INTEGER: 516
IF-MIB::ifIndex.517 = INTEGER: 517
IF-MIB::ifIndex.518 = INTEGER: 518
IF-MIB::ifIndex.519 = INTEGER: 519
IF-MIB::ifIndex.520 = INTEGER: 520
IF-MIB::ifIndex.521 = INTEGER: 521
IF-MIB::ifIndex.522 = INTEGER: 522
IF-MIB::ifIndex.523 = INTEGER: 523
IF-MIB::ifIndex.524 = INTEGER: 524
IF-MIB::ifIndex.531 = INTEGER: 531
[ban@covb ~]$
これだとよく分からないのでdescriptionの確認
※今回は ge-0/0/0.0 に "mgmt-seg." の設定済み
[ban@covb ~]$ snmpwalk -v 2c -c banSnmp 10.0.2.110 1.3.6.1.2.1.31.1.1.1.18
IF-MIB::ifAlias.4 = STRING:
IF-MIB::ifAlias.5 = STRING:
IF-MIB::ifAlias.6 = STRING:
IF-MIB::ifAlias.7 = STRING:
IF-MIB::ifAlias.8 = STRING:
IF-MIB::ifAlias.9 = STRING:
IF-MIB::ifAlias.10 = STRING:
IF-MIB::ifAlias.11 = STRING:
IF-MIB::ifAlias.12 = STRING:
IF-MIB::ifAlias.21 = STRING:
IF-MIB::ifAlias.22 = STRING:
IF-MIB::ifAlias.248 = STRING:
IF-MIB::ifAlias.501 = STRING:
IF-MIB::ifAlias.502 = STRING:
IF-MIB::ifAlias.503 = STRING:
IF-MIB::ifAlias.504 = STRING:
IF-MIB::ifAlias.505 = STRING:
IF-MIB::ifAlias.506 = STRING:
IF-MIB::ifAlias.507 = STRING: mgmt-seg.
IF-MIB::ifAlias.508 = STRING:
IF-MIB::ifAlias.509 = STRING:
IF-MIB::ifAlias.510 = STRING:
IF-MIB::ifAlias.511 = STRING:
IF-MIB::ifAlias.516 = STRING:
IF-MIB::ifAlias.517 = STRING:
IF-MIB::ifAlias.518 = STRING:
IF-MIB::ifAlias.519 = STRING:
IF-MIB::ifAlias.520 = STRING:
IF-MIB::ifAlias.521 = STRING:
IF-MIB::ifAlias.522 = STRING:
IF-MIB::ifAlias.523 = STRING:
IF-MIB::ifAlias.524 = STRING:
IF-MIB::ifAlias.531 = STRING:
[ban@covb ~]$
ge-0/0/0.0が507と分かったので監視したいOIDを確認
[ban@covb ~]$ snmpwalk -v 2c -c banSnmp 10.0.2.110 1.3.6.1.2.1.2.2.1.16
IF-MIB::ifOutOctets.4 = Counter32: 0
IF-MIB::ifOutOctets.5 = Counter32: 0
IF-MIB::ifOutOctets.6 = Counter32: 259405
IF-MIB::ifOutOctets.7 = Counter32: 0
IF-MIB::ifOutOctets.8 = Counter32: 0
IF-MIB::ifOutOctets.9 = Counter32: 0
IF-MIB::ifOutOctets.10 = Counter32: 0
IF-MIB::ifOutOctets.11 = Counter32: 0
IF-MIB::ifOutOctets.12 = Counter32: 0
IF-MIB::ifOutOctets.21 = Counter32: 0
IF-MIB::ifOutOctets.22 = Counter32: 0
IF-MIB::ifOutOctets.248 = Counter32: 0
IF-MIB::ifOutOctets.501 = Counter32: 0
IF-MIB::ifOutOctets.502 = Counter32: 0
IF-MIB::ifOutOctets.503 = Counter32: 0
IF-MIB::ifOutOctets.504 = Counter32: 0
IF-MIB::ifOutOctets.505 = Counter32: 0
IF-MIB::ifOutOctets.506 = Counter32: 0
IF-MIB::ifOutOctets.507 = Counter32: 24076016
IF-MIB::ifOutOctets.508 = Counter32: 26872
IF-MIB::ifOutOctets.509 = Counter32: 23496462
IF-MIB::ifOutOctets.510 = Counter32: 0
IF-MIB::ifOutOctets.511 = Counter32: 0
IF-MIB::ifOutOctets.516 = Counter32: 0
IF-MIB::ifOutOctets.517 = Counter32: 0
IF-MIB::ifOutOctets.518 = Counter32: 0
IF-MIB::ifOutOctets.519 = Counter32: 0
IF-MIB::ifOutOctets.520 = Counter32: 0
IF-MIB::ifOutOctets.521 = Counter32: 0
IF-MIB::ifOutOctets.522 = Counter32: 0
IF-MIB::ifOutOctets.523 = Counter32: 0
IF-MIB::ifOutOctets.524 = Counter32: 18632
IF-MIB::ifOutOctets.531 = Counter32: 0
[ban@covb ~]$
ifOutOctets.507 ←コイツを見る
- 新たに監視データとグラフを作成
- アイテムの作成
設定 > ホスト > vsrx1 > アイテム > アイテムの作成
こんな感じで作成
- グラフの作成
設定 > ホスト > vsrx1 > グラフの作成
こんな感じで作成
- グラフの見えっぷりを確認
※グラフが分かりやすいようにpingをうちっぱにした
監視データ > ホスト > グラフ
監視対象をゼロから作る
ホストグループの作成
設定 > ホストグループ > ホストグループの作成
お好きな名前で作成
ホストの作成
設定 > ホスト > ホストの作成
> ホスト
こんな感じ
インターフェースにはSNMPを指定してマネジメントのIPアドレスを指定
デフォルトでインターフェースに存在するzabbixエージェントは削除した
> マクロ
こんな感じ
マクロにコミュニティ名の変数を入れて値に実際の設定値を入れる
アイテムの作成
設定 > ホスト > ホスト名 > アイテム > アイテムの作成
pingによる死活監視
こんな感じ
キーに入れる内容は↓を参照
設定 > ホスト > ホスト名 > アイテム > アイテムの作成
トラフィック情報の取得(ge-0/0/0のパターン)
> アイテム
こんな感じ
> 保存前処理
こんな感じ
乗数を8・・・bit⇒byte変換(bps単位で見たいんで)
1秒あたりの差分・・・これをしないと累積値を持ってきちゃうから
トリガーの作成
設定 > ホスト > ホスト名 > トリガー > トリガーの作成
こんな感じ
pingが1回でもlostしたら警告でひっかける
手動クローズを許可
条件式は 追加 > 選択 > アイテムを選択 > 関数を選択して必要項目を入力
グラフの作成
設定 > ホスト > ホスト名 > グラフ > グラフの作成
こんな感じ
監視データを見てみる
vsrx1をシャットダウンすると障害を検知する
Discussion