CentOS 6.4 (x86_64) に Zabbix 2.0.6 のインストール

2013.06.21 作成

2014.03.01 更新

Zabbix
ヤマハのルーターから SNMP を受けたりして何かしようと Zabbix をインストールした。
インストール手順は、http://blog.watercloud.net/article/360365606.html を参照。この記事はそちらのほぼパクリですが、なかなか情報が出なかったためメモに残しておきます。
ZABBIX-JP ホームページの Zabbixのインストール(RPM編) も参考にした。ただし、後者は ZABBIX のバージョンが 1.8 なので多少内容が異なります。
なお、MySQL は既にインストールされていることを前提です。このときは MySQL 5.6 を使用しました。
★Zabbix の yumリポジトリの登録
# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm

★インストール(2013.06.21 時点のバージョンは 2.0.6-1)
# yum -y install zabbix-server-mysql zabbix-web-mysql
# yum -y install zabbix-agent
# yum -y install zabbix-get

★Zabbix の yumリポジトリの無効化修正
# vi /etc/yum.repos.d/zabbix.repo
------------------------------------------
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/2.0/rhel/6/$basearch/
enabled=1 ★←ココ
 ↓
enabled=0

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/
enabled=1 ★←ココ
 ↓
enabled=0
------------------------------------------

★MySQL に Zabbix用の DB とユーザーを作成
# mysql -u root -p

(★Zabbixのテスト用などで既に Zabbix の DB を作成していて、不要なので全て消したいという場合は drop で消す)
(drop database zabbix;)

★Zabbix用DBの作成
create database zabbix character set utf8;
★Zabbix用ユーザーの作成
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
★設定の反映
FLUSH PRIVILEGES;
quit

★Zabbix用DBスキーマとデータをインポート
# mysql -uroot -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/schema.sql
# mysql -uroot -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/images.sql
# mysql -uroot -p zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/data.sql

★zabbixサーバーの設定
# vi /etc/zabbix/zabbix_server.conf
----------------------
# DBPassword=
 ↓(コメントを外して)
DBPassword=zabbix
----------------------

★Zabbixサーバーの起動
# service zabbix-server start
★Zabbixサーバーの自動起動設定
# chkconfig zabbix-server on
★Zabbixエージェントの起動
# service zabbix-agent start
★Zabbixエージェントの自動起動設定
# chkconfig zabbix-agent on

★PHPのタイムゾーンの変更(これをしないと Zabbix の Web初期設定画面でエラーが出た)
# vi /etc/php.ini
------------------------------
date.timezone = "Asia/Tokyo"
------------------------------

★Apacheの再起動
# service httpd restart
★Apacheの自動起動設定
# chkconfig httpd on

あとはWebブラウザで【 http://(ZabbixサーバIP)/zabbix/ 】にアクセスして初期設定を行う。
基本はデフォルトで進み、DB設定の画面では【DBユーザー:zabbix / パスワード:zabbix】とする。
設定が終わるとログイン画面が出る。デフォルトアカウントは【ユーザ名:Admin / パスワード:zabbix】となっている。
※SELinux が有効になっている場合はもしかしたら設定が完了できないかもしれない。
ログイン後、表示が英語になっているが右上にある【profile】から日本語に変更できる。
関連ページ
Zabbixエージェントのインストール
Zabbixのテンプレート集
zabbix-senderのインストール
これは通常は不要。snmptrapを受けてzabbixで何かしたい場合の設定(?)
★ダウンロード
# wget http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-sender-2.0.5-1.el6.x86_64.rpm

★インストール(2013.06.21 時点のバージョンは 2.0.6-1)
# rpm -ivh zabbix-sender-2.0.5-1.el6.x86_64.rpm

★インストール内容確認
# rpm -qs zabbix-sender
通常          /usr/bin/zabbix_sender
通常          /usr/share/man/man1/zabbix_sender.1.gz

★コマンドパス確認
# which zabbix_sender
/usr/bin/zabbix_sender

★snmptrapd設定(設定例)
# vi /etc/snmp/snmptrapd.conf
---------------------------------------------------------------
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
# authCommunity   log,execute,net public
# traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold


authCommunity log,execute,net private
authCommunity log,execute,net public
traphandle default /bin/bash /etc/zabbix/snmptrap.sh
---------------------------------------------------------------

★シェルスクリプト設定
# vi /etc/zabbix/snmptrap.sh(設定例)
---------------------------------------------------------------
#!/bin/bash

# CONFIGURATION
ZABBIX_SERVER="127.0.0.1";
ZABBIX_PORT="10051";
ZABBIX_SENDER="/usr/bin/zabbix_sender";
KEY="snmptraps";
HOST="snmptraps";

# Execute
read hostname
read ip
read uptime
read oid
read address
read community
read enterprise

oid=`echo $oid|cut -f2 -d' '`
address=`echo $address|cut -f2 -d' '`
community=`echo $community|cut -f2 -d' '`
enterprise=`echo $enterprise|cut -f2 -d' '`

oid=`echo $oid|cut -f11 -d'.'`
community=`echo $community|cut -f2 -d'"'`

str="$hostname $address $community $enterprise $oid"

# Output
$ZABBIX_SENDER -z $ZABBIX_SERVER -vv -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"

# Debug
echo $str >> /tmp/snmptrap.log
---------------------------------------------------------------

★snmptrapdの起動
# service snmptrapd start
★snmptrapdの自動起動設定
# chkconfig snmptrapd on

★ファイアウォールの UDP 162ポート解放
#  vi /etc/sysconfig/iptables
 【-A INPUT -m state --state NEW -m udp -p udp --dport 162 -j ACCEPT】
# service iptables restart

これでtrapを受けると/var/log/messageにそのログが出力されているハズ。

あとはzabbixのWebでうまく設定すればなんとかなる?!(まだそこまでできていない)
関連リンク:zabbix-agent2.0のインストール(監視対象サーバー用)
関連リンク:trap受信からのzabbix_senderの実行がうまく動作しない