Zabbixの設定

しばらく放置してましたが、久々にZabbixをいじる時間が出来たので、前回の続きの設定をします。

インストール

ひとまず、zabbix インストールメモ にあるようにインストールがおこなわれていて、Zabbixのページにアクセスできることが前提です。バージョンは1.6.4みたいです。

日本語化

右上の[profile]リンクから言語を変更できます。

設定ファイルの編集

設定しなければならない主な設定は

  • zabbix_agent.conf 監視対象のサーバ
  • zabbix_agentd.conf 監視対象のサーバ
  • zabbix_server.conf 監視サーバ
  • dbconfig.php 監視サーバ

以下、順に。
すべての監視対象の /etc/zabbix/zabbix_agent.conf を編集します。

# This is config file for zabbix_agent
# To get more information about ZABBIX, 
# go http://www.zabbix.com

# IP address of ZABBIX server
# Connections from other hosts will be denied

#Server=localhost <= オリジナル
Server=192.168.10.100 # <= ZabbixサーバのIPアドレスを設定。

# Spend no more than Timeout seconds on processing
# Must be between 1 and 30

Timeout=3

####### USER-DEFINED MONITORED PARAMETERS #######
# Format: UserParameter=<key>,<shell command>
# Note that shell command must not return empty string or EOL only
#UserParameter=system.test,who|wc -l
### Set of parameter for monitoring MySQL server (v3.23.42 and later)
### Change -u<username> and add -p<password> if required
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f1 -d"Q"
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f1 -d"S"
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f1 -d"O"
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"
#UserParameter=mysql.version,mysql -V


すべての監視対象の /etc/zabbix/zabbix_agentd.conf を編集します。

$ more zabbix_agentd.conf 
# This is config file for zabbix_agentd
# To get more information about ZABBIX, go http://www.zabbix.com

############ GENERAL PARAMETERS #################

# List of comma delimited IP addresses (or hostnames) of ZABBIX servers. 
# No spaces allowed. First entry is used for sending active checks.
# Note that hostnames must resolve hostname->IP address and
# IP address->hostname.

#Server=localhost <= オリジナル
Server=192.168.10.100 # <= ZabbixサーバのIPアドレスを設定。

# Server port for sending active checks

#ServerPort=10051

# Unique hostname. Required for active checks.

Hostname=localhost

# Listen port. Default is 10050

#ListenPort=10050

# IP address to bind agent
# If missing, bind to all available IPs

#ListenIP=127.0.0.1

# Number of pre-forked instances of zabbix_agentd.
# Default value is 5
# This parameter must be between 1 and 16

StartAgents=5

# How often refresh list of active checks. 2 minutes by default.

#RefreshActiveChecks=120

# Disable active checks. The agent will work in passive mode listening server.

#DisableActive=1

# Enable remote commands for ZABBIX agent. By default remote commands disabled.

#EnableRemoteCommands=1

# Specifies debug level
# 0 - debug is not created
# 1 - critical information
# 2 - error information
# 3 - warnings
# 4 - information (default)
# 5 - for debugging (produces lots of information)

DebugLevel=3

# Name of PID file

PidFile=/var/run/zabbix-agent/zabbix_agentd.pid

# Name of log file.
# If not set, syslog will be used

LogFile=/var/log/zabbix-agent/zabbix_agentd.log

# Maximum size of log file in MB. Set to 0 to disable automatic log rotation.
#LogFileSize=1

# Spend no more than Timeout seconds on processing
# Must be between 1 and 30

Timeout=3

####### USER-DEFINED MONITORED PARAMETERS #######
# Format: UserParameter=<key>,<shell command>
# Note that shell command must not return empty string or EOL only
#UserParameter=system.test,who|wc -l
### Set of parameter for monitoring MySQL server (v3.23.42 and later)
### Change -u<username> and add -p<password> if required
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f1 -d"Q"
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f1 -d"S"
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f1 -d"O"
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"
#UserParameter=mysql.version,mysql -V


/etc/zabbix/zabbix_server.conf と /etc/zabbix/dbconfig.php もありますが、マニュアルによると小規模なサーバにおいて zabbix_server.conf を編集する必要はないとあります。また、dbconfig.php は zabbix-frontend のプログラムの一部なのであまりいじらないほうがいいでしょう。ただし、DBのサーバが変更になったなど、設定が変わったりするといじらないといけないです。とりあえず、参考までにオリジナルのまま載っけておきます。DBの接続設定がじかにかかれているので、パーミッション等は変更しないほうがいいですね。

/etc/zabbix/zabbix_server.conf

$ sudo more zabbix_server.conf
# This is config file for ZABBIX server process
# To get more information about ZABBIX, 
# go http://www.zabbix.com

############ GENERAL PARAMETERS #################

# This defines unique NodeID in distributed setup,
# Default value 0 (standalone server)
# This parameter must be between 0 and 999
#NodeID=0

# Number of pre-forked instances of pollers
# Default value is 5
# This parameter must be between 0 and 255
#StartPollers=5

# Number of pre-forked instances of pollers for unreachable hosts
# Default value is 1
# This parameter must be between 0 and 255
#StartPollersUnreachable=1

# Number of pre-forked instances of trappers
# Default value is 5
# This parameter must be between 0 and 255
#StartTrappers=5

# Number of pre-forked instances of ICMP pingers
# Default value is 1
# This parameter must be between 0 and 255
#StartPingers=1

# Number of pre-forked instances of discoverers
# Default value is 1
# This parameter must be between 0 and 255
#StartDiscoverers=1

# Number of pre-forked instances of HTTP pollers
# Default value is 1
# This parameter must be between 0 and 255
#StartHTTPPollers=1

# Listen port for trapper. Default port number is 10051. This parameter 
# must be between 1024 and 32767

#ListenPort=10051

# Listen interface for trapper. Trapper will listen all network interfaces
# if this parameter is missing.

#ListenIP=127.0.0.1

# How often ZABBIX will perform housekeeping procedure
# (in hours)
# Default value is 1 hour
# Housekeeping is removing unnecessary information from
# tables history, alert, and alarms
# This parameter must be between 1 and 24

#HousekeepingFrequency=1

# How often ZABBIX will try to send unsent alerts
# (in seconds)
# Default value is 30 seconds
SenderFrequency=30

# Uncomment this line to disable housekeeping procedure
#DisableHousekeeping=1

# Specifies debug level
# 0 - debug is not created
# 1 - critical information
# 2 - error information
# 3 - warnings (default)
# 4 - for debugging (produces lots of information)

DebugLevel=3

# Specifies how long we wait for agent response (in sec)
# Must be between 1 and 30 
Timeout=5

# Specifies how many seconds trapper may spend processing new data
# Must be between 1 and 30 
#TrapperTimeout=5

# After how many seconds of unreachability treat a host as unavailable
#UnreachablePeriod=45

# How ofter check host for availability during the unreachability period
#UnavailableDelay=15

# How ofter check host for availability during the unavailability period
#UnavailableDelay=60

# Name of PID file

PidFile=/var/run/zabbix-server/zabbix_server.pid

# Name of log file
# If not set, syslog is used

LogFile=/var/log/zabbix-server/zabbix_server.log

# Maximum size of log file in MB. Set to 0 to disable automatic log rotation.
#LogFileSize=1

# Location for custom alert scripts
AlertScriptsPath=/etc/zabbix/alert.d/

# Location of 'fping. Default is /usr/sbin/fping
# Make sure that fping binary has root permissions and SUID flag set
FpingLocation=/usr/bin/fping

# Frequency of ICMP pings (item keys 'icmpping' and 'icmppingsec'). Defauls is 60 seconds.
#PingerFrequency=60

# Database host name
# Default is localhost

DBHost=localhost

# Database name
# SQLite3 note: path to database file must be provided. DBUser and DBPassword are ignored.
DBName=zabbix

# Database user

DBUser=zabbix

# Database password
# Comment this line if no password used

DBPassword=xxxxx

# Connect to MySQL using Unix socket?

#DBSocket=/tmp/mysql.sock

/etc/zabbix/dbconfig.php

>||$ sudo more dbconfig.php

|


ここで、おもむろにサーバとエージェントを起動!なんてマニュアルには書いてあるけど、

$ chkconfig --list | grep zabbix
zabbix-agent              0:off  1:off  2:on   3:on   4:on   5:on   6:off
zabbix-server             0:off  1:off  2:on   3:on   4:on   5:on   6:off


とあるので、おそらくディストリのインストールコマンドでインストールしているようなものぐさな自分のサーバでは既に動いています。
たぶん。Zabbixサーバが動いているサーバでは下記のようなプロセスが動いてるはずだし、

$ ps -A | grep zabbix
 1020 ?        00:00:00 zabbix_server
  〜〜 全部で20個動いてるけど省略 〜〜
 1075 ?        00:00:00 zabbix_server
 1694 ?        00:00:00 zabbix_agentd
  〜〜 全部で8個動いてるけど省略 〜〜
 1701 ?        00:00:00 zabbix_agentd


たぶん。Zabbixエージェントが動いているサーバでは下記のようなプロセスが動いてるはず。

$ ps -A | grep zabbix
  778 ?        00:00:00 zabbix_agentd
  〜〜 全部で8個動いてるけど省略 〜〜
  787 ?        00:00:00 zabbix_agentd


普通に動いているみたいなので、あまり考えず大人な対応をしておきます。

$ sudo service zabbix-agent restart
Stopping Zabbix agent: zabbix_agentd
Starting Zabbix agent: zabbix_agentd
$ sudo service zabbix-server restart
Stopping Zabbix server: zabbix_server
Starting Zabbix server: zabbix_server

設定

メール通知

まず、基本のメール通知の設定は、[管理]>[メディアタイプ]>[Email]を選択し、適切なSMTPサーバを設定します。

エージェントを使用するホストの追加

ホストの追加は、[設定]>[ホスト]を選択し、[ホストの作成]ボタンを押します。

ひとまず、ここでは、テスト用のホストを追加してみます。IPアドレスは192.168.10.101と192.168.10.102のUbuntu9.10を用意しています。あと、監視サーバ自身。

やることは、

  • ホスト名
  • グループ名
  • DNS
  • IPアドレス
  • 接続方法
  • テンプレートとのリンク

グループ名はあった方がいい程度かもしれません。DNS名かIPアドレスのどちらか片方は設定して、接続方法を設定したほうに合わせます。テンプレートとのリンクで、Template linuxというのがあるのでそれを設定すると、ある程度、基本的な監視項目が追加されます。最終的にはサーバの目的に合わせて、それぞれテンプレートを作成しそれをあてます。

ダッシュボードにアクセスすると、監視が始まってるようすが分かります。

以上、簡単でしたが、Zabbixの設定でした。