Zabbix(3)SNMP監視

SNMPポーリング

Zabbixサーバから、SNMPエージェント(クライアント)に対して、定期的にSNMPの問い合わせを行い、情報を取得する場合の環境構築方法は以下の通り。

パッケージのインストール

sudo yum install net-snmp net-snmp-utils

SNMPインタフェースの追加

設定 > ホストからSNMPインタフェースを追加する。
SNMPインタフェースの追加

監視アイテムの追加

テンプレート > アイテムから監視アイテム(項目)を追加する。Zabbixは、アプリケーションや監視アイテム、トリガーなどを収納するテンプレートを作成することが可能で、監視アイテムやトリガーは、複数のアプリケーションに属すことが可能となっている。アイテムを追加する際には、SNMPコミュニティ名SNMP OIDキーなどが必要となる。

SNMP設定

出力される値は、値のマッピング、もしくは、管理 > 一般設定 > 値のマッピングに設定を加えることで、識別しやすい文字列を登録することが可能である。

値のマッピング
以上の設定で、SNMPエージェントから値を取得し、状態を表示させることが可能となる。

トリガーの設定

登録した監視アイテムは、トリガーを設定することで、エラー判定することが可能となる。エラーの深刻度は、深刻な方から軽度なものから順番に、情報、警告、軽度の障害、重度の障害、致命的な障害と分類される。

以上で、SNMPで定期的に値を取得し、しきい値との比較を行うことで、エラーを検出することができるようになった。

SNMPトラップ

Zabbixサーバで、SNMPエージェント(クライアント)からのトラップを受信するためには、SNMP Trap デーモン(snmptrapd)SMNPTTという2つのパッケージが必要となる。

SNMPエージェント(クライアント)からのSNMP Trapデータは、SNMP Trapデーモンがまず受信する。SNMP Trapデーモンは、この値をSNMP Handler経由で、SNMP Trapデータ整形プログラムであるSNMPTTに転送する。SNMPTTは、あらかじめ定めたフォーマットにしたがってTrapデータを整形し、ファイルに出力する。Zabbixは、このファイルを定期的に参照することで、SNMP TrapデータをZabbixに取り込む。

パッケージのインストール

SNMP関連のパッケージをインストールする。

sudo yum install -y net-snmp-perl perl-Sys-Syslog

SNMPTTのパッケージをインストールする。SNMPTTのパッケージはepelリポジトリから取得することができる。

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-7.noarch.rpm
sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7

sudo yum install -y snmptt

SNMP Trapデーモン(snmptrapd)の設定を変更

TrapデータをSNMPTTで処理するために、SNMP TrapデーモンからSNMP Handlerにデータ転送する設定とする。このとき、受信するTrapデータをコミュニティ名を指定して限定することもできる。今回は、全てのTrapデータを転送する処理にしている。

sudo vi /etc/snmp/snmptrapd.conf

# 全てのTrapを受信
disableAuthorization yes
# SNMP Handlerに転送する
traphandle default /usr/sbin/snmptthandler

SNMP Trapデーモンの起動オプションに以下を追加する。

sudo vi /etc/sysconfig/snmptrapd

OPTIONS="-m +ALL -On"

SNMPTTの設定を変更

SNMPTTは、SNMP Handler経由で受信したデータをZabbixで解釈できるデータフォーマットに変換する。Zabbixはこの変換後のテキストデータを定期的に取得する。

sudo vi snmptt.ini

# SNMP Handler経由の場合はdaemonを指定
mode = daemon
# NetSNMPでPerlモジュールを使用する
net_snmp_perl_enable = 1
# This sets the best_guess parameter used by the UCD-SNMP / NET-SNMP Perl module for 
# translating symbolic nams to OIDs and vice versa.
# For UCD-SNMP, and Net-SNMP 5.0.8 and previous versions, set this value to 0.
# For Net-SNMP 5.0.9, or any Net-SNMP with patch 722075 applied, set this value to 2.
net_snmp_perl_best_guess = 2
# Syslogへは、snmptrapdがログ書き込みを行う
syslog_enable = 0

また、snmptt.confに変換するフォーマットを記述する。受信データ種別毎にかき分けても良いが、取り敢えず以下の記述にしておけば、Zabbixで全てのデータを読み込めるようになる。

EVENT general .* "General event" Normal 
FORMAT ZBXTRAP $aA $ar $1

サービスの開始

以上で設定は完了なので、SNMP TrapデーモンとSNMPTTを開始する。

sudo systemctl start snmptrapd
sudo systemctl enable snmptrapd
sudo systemctl start snmptt
sudo systemctl enable snmptt

動作テスト

SNMP TrapのテストデータをZabbixサーバ宛に送信し、これがSNMP Trapデーモン、SNMPTT経由で受信できているかを確認する。

sudo snmptrap -v 2c -c public 192.168.0.10 '' .1.2.3.4.5.6.7.0 .1.2.3.4.5.6.7.0 s 'TEST'

正常に受信した場合は、/var/log/snmptt.logに以下のようなテキストが追加されていることが確認できる。Zabbixはこのファイルを定期的に参照する。

01:00:00 2016/08/09 .1.2.3.4.5.6.7.0 Normal "General event" 192.168.0.11 - ZBXTRAP 192.168.0.11 192.168.0.11 4345

Zabbixの設定

SNMP Trapデータの参照先を設定する。

sudo vi /etc/zabbix/zabbix_server.conf

SNMPTrapperFile=/var/log/snmptt/snmptt.log 
StartSNMPTrapper=1

サービスの再起動。

sudo systemctl restart zabbix-server
sudo systemctl enable zabbix-server

以下のようにアイテムを登録することで、受信したTrapデータを取り込むことが可能となる。今回便宜上、Template名やアプリケーション名を、Template SNMP Trap、SNMP Trapなどとし、作成したアイテムはこれらにぶらさげる形とした。

SNMPトラップアイテムの追加

/var/log/snmptt.logから文字列のパターンマッチングを行うことで、任意の事象に対してのトリガーの設定を行うことができる。

SNMPトラップアイテムの追加

Zabbix(2)初期設定

前回、Zabbixのインストールと関連する設定を行った。今回はWeb上で行う各種設定を確認する。

ログイン

標準のログインアカウントは、

  • User: Admin
  • Password: zabbix

なので、ログイン後適宜変更する。

Zabbixログイン

エラーメール設定

管理 > ユーザ > メディア からユーザと送信先メールアドレスの紐付けを行う。

送信先メールアドレスの設定

また、送信元アドレスの設定を、管理 > メディア > Email から行う。今回は、ローカルのpostfix経由でメールを送信するので、SMTPサーバをlocalhostとしている。

送信元メールアドレスの設定

最後に、どのタイミングでエラーメールを送信するかを設定するために、設定 > アクションから新たなアクションを作成する。メンテナンス期間外、かつ障害発生時(「情報あり」ステータスも障害に含む)に、Adminユーザにメールを送信する場合は、以下の通りの設定とする。

アラートアクションの設定
アラートアクションの設定
アラートアクションの設定

Zabbix(1)CentOS7にZabbix3.0をインストールする

サーバ

サーバの構築環境は、CentOS7、およびZabbix Server 3.0とする。また、サーバにもエージェントをインストールし、自身を自身で監視する体制とする。Zabbixを設定する際には、FirewallやSElinuxの設定にも変更が必要となる。ただし、今回は閉じたネットワーク内で監視を行うことを想定して設定するため、FirewallもSElinuxも無効にしている。

Zabbixサーバの設定

  • Zabbixリポジトリの追加
sudo yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
  • パッケージのインストール
sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
sudo yum install mariadb-server
  • MariaDBを設定
    文字コードの設定を追記

    sudo vi /etc/my.cnf.d/server.cnf
    
    [mysqld]
    character-set-server = utf8
    collation-server     = utf8_bin
    skip-character-set-client-handshake
    innodb_file_per_table
    

    SQLサーバを起動

    sudo systemctl start mariadb
    sudo systemctl enable mariadb
    

  • MariaDBを初期化
    データベースとユーザの追加

    mysql -u root
    
    create database zabbix;
    grant all privileges on zabbix.* to zabbix@localhost identified by 'password' ;
    exit;
    

    初期データのインポート

    zcat /usr/share/doc/zabbix-server-mysql-3.0.4/create.sql.gz | mysql -uroot zabbix
    

  • Zabbixサーバの設定を変更

    sudo vi /etc/zabbix/zabbix_server.conf
    
    # データベースのパスワードを設定
    DBPassword=password
    # Zabbix discoverer processes more than 75% busyが発生する場合は以下を設定
    StartDiscoverers=3
    

  • Apacheの設定を変更
    タイムゾーンの設定

    sudo vi /etc/httpd/conf.d/zabbix.conf
    
    php_value date.timezone Asia/Tokyo
    

  • サービスの起動

    sudo systemctl start zabbix-agent
    sudo systemctl start zabbix-server
    sudo systemctl start httpd
    sudo systemctl enable zabbix-agent
    sudo systemctl enable zabbix-server
    sudo systemctl enable httpd
    

関連するサービスの設定

ログの時刻を正確な値にするため、定期的にNTPによる時刻合わせを行う

sudo yum install -y ntpdate
sudo crontab -e

0 * * * *       /usr/sbin/ntpdate XXX.XXX.XXX.XXX

エラーメールを送信するためのSMTP設定を行う

myhostname = XXX.surbiton.jp
relayhost = [XXX.XXX.XXX.XXX]

メールサーバ起動

sudo systemctl start postfix
sudo systemctl enable postfix

エージェント

監視対象のサーバにはエージェントをインストールする。サーバの構築環境は、CentOS6、およびZabbix Server 2.4とする。

Zabbixエージェントの設定

  • Zabbixリポジトリの追加
sudo yum install http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
  • パッケージのインストール
sudo yum install -y zabbix-agent-2.4.8-1.el6
  • エージェントの設定を変更
    sudo vi /etc/zabbix/zabbix_agentd.conf
    
    # ZabbixサーバのIPアドレス
    Server=XXX.XXX.XXX.XXX
    # アクティブチェック用のZabbixサーバのIPアドレス
    ServerActive=XXX.XXX.XXX.XXX
    # ホスト名
    Hostname=hoge
    

  • サービスの起動

    sudo systemctl start zabbix-agent
    sudo systemctl enable zabbix-agent
    

参考URL

Zabbix 3.0をCentOS 7にインストール