Zenn
🕌

箱庭に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による死活監視

こんな感じ
キーに入れる内容は↓を参照
https://www.zabbix.com/documentation/5.0/en/manual/config/items/itemtypes/simple_checks



設定 > ホスト > ホスト名 > アイテム > アイテムの作成
トラフィック情報の取得(ge-0/0/0のパターン)

> アイテム
こんな感じ



> 保存前処理
こんな感じ
乗数を8・・・bit⇒byte変換(bps単位で見たいんで)
1秒あたりの差分・・・これをしないと累積値を持ってきちゃうから

トリガーの作成

設定 > ホスト > ホスト名 > トリガー > トリガーの作成

こんな感じ
pingが1回でもlostしたら警告でひっかける
手動クローズを許可



条件式は 追加 > 選択 > アイテムを選択 > 関数を選択して必要項目を入力

グラフの作成

設定 > ホスト > ホスト名 > グラフ > グラフの作成

こんな感じ

監視データを見てみる

vsrx1をシャットダウンすると障害を検知する

Discussion

ログインするとコメントできます