使えるねっとVPS上にzabbixサーバーを作る

わが社で運用してるサーバーでは複数ドメインホスティングしてて、そろそろ管理が煩雑になってきた*1のでとりあえず障害監視サーバーとしてzabbixを使ってみることにした。

zabbixサーバーのインストール

パッケージの取り込み

zabbix.jpのCentOS5でのyumリポジトリ利用方法を元にちょいちょいっと。

# rpm -ivh http://www.zabbix.jp/binaries/relatedpkgs/rhel5/i386/zabbix-jp-release-5-2.noarch.rpm
# yum install fping iksemel iksemel-devel curl curl-devel openldap openldap-devel OpenIPMI OpenIPMI-devel net-snmp net-snmp-devel unixODBC unixODBC-devel
# yum install zabbix zabbix-web zabbix-agent
mysqlの設定

mysqlの設定で若干手間取った。

まずはユーザーとデータベースの作成*2

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24041 to server version: 5.0.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'hogehoge';
mysql> flush privileges;
mysql> quit

次にスキーマとデータのインポート。
上で上げた@itもzabbix.jpもSQLが/usr/share/zabbix-server-xxx/schema/... って書いてあるんだが、yumでインストールしてもそのファイルがない。
仕方ないのでrpmで探してみる。

# rpm -ql zabbix-1.4.6-1.el5.JP | grep "images_mysql"

/usr/share/doc/zabbix-1.4.6/dbinit/data/images_mysql.sql

というわけで、何故か ''/usr/share/doc/zabbix-1.4.6/dbinit''で発見するっつー。

で、インポート

# cd /usr/share/doc/zabbix-1.4.6/dbinit
# mysql -u zabbix -p < ./schema/mysql.sql
# mysql -u zabbix -p < ./data/data.sql
# mysql -u zabbix -p < ./data/images_mysql.sql
/etc/zabbix/* の設定
  • zabbix.conf.php

データベースの接続設定を。

  • zabbix_server.conf

データベースの接続設定を。

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<zabbixのパスワード>
  • zabbix_agent.conf

zabbix-agentでは管理元となるzabbix-serverの設定を。詳細はあとで。

Server=127.0.0.1
  • zabbix_agentd.conf

zabbix-agentのデーモン設定

Server=127.0.0.1
ServerPort=10051
Hostname=localhost
ListenPort=10050

Apacheの設定

VirtualHostで運用してなければzabbix-webのインストールだけでAlias "/zabbix"が効いてるので変更する必要はないんだけど、今回あえてサブドメインのVirtualHost内で運用することにしたのでそのあたりを変更。

/etc/httpd/zabbix.confの設定

先頭のaliasをコメントアウト

#Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

    php_value max_execution_time 300
    php_value date.timezone Asia/Tokyo
    php_value memory_limit 64M
    php_value upload_max_filesize 10M
</Directory>

<Directory "/usr/share/zabbix/include">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>

<Directory "/usr/share/zabbix/include/classes">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>
VirtualHostの設定を変更

使えるねっとだと /var/www/vhosts/<ドメイン名>/conf/httpd.include にある。

<VirtualHost <IPアドレス>:80>
        ServerName   <サブドメイン>.<ドメイン>:80
        DocumentRoot /usr/share/zabbix
        CustomLog  /var/www/vhosts/<ドメイン>/statistics/logs/access_log plesklog
        ErrorLog  /var/www/vhosts/<ドメイン>/statistics/logs/error_log
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
</VirtualHost>

DocumentRootを/usr/share/zabbixに。

ついでに/usr/share/zabbix/conf/zabbix.conf.phpApacheが更新できるよう変更しとく。

# chown apache.apache /usr/share/zabbix/conf/zabbix.conf.php

zabbixの起動とapacheの再起動

# /etc/init.d/httpd condrestart
# /etc/init.d/zabbix start
# /etc/init.d/zabbix-agent start

監視対象サーバーへzabbix-agentのインストール

簡単にさらっと。

# yum install zabbix-agent
# vi /etc/zabbix/zabbix_agentd.conf
Server=<管理サーバーのIPアドレス>
ServerPort=10051
Hostname=<監視対象サーバーのサーバー名>
ListenPort=10050

# /etc/init.d/zabbix-agent start

ちょっとハマったzabbix_agentd.confの設定

zabbix_agent[d].confのServerには監視サーバーのIPアドレス(この例では10.10.1.10)を設定する。

よく考えたら当たり前なんだけど('A`)

感想とか

yum最高すぐる。

*1:というか結構ヤバいミスをしてたので人間管理に限界を感た

*2:もちろんmysqladminでやってもOK。というかその方が楽