Zabbixによるログ監視

過去にZabbixによるログ監視を試してみた時の手順メモ。
出来ればZabbixを仕事等で使ってみたいので、思い出すのも兼ねて。
Zabbix3系出ているので、情報としてはかなり古いが、基本は同じではないかな?(自己暗示)

検証した環境

  • Zabbix Server側のOSはRHEL6.5
  • Zabbix Agent側のOSはRHEL6.5
  • Zabbix Serverのバージョンは1.8.22
  • Zabbix Agentのバージョンは1.8.20
  • MySQLのバージョンは5.1.73
  • モジュールはEPELからインストール

Zabbix ServerとMySQLのインストール

インストールは普通にマニュアルどおり。
# yum install mysql-server
# yum --enablerepo=epel install zabbix-server zabbix-server-mysql
# yum --enablerepo=epel install zabbix-web-mysql

Zabbix用DBの作成

CREATE~FLUSHまではmysql上で実行します。
# mysql -u root -p
CREATE USER zabbix;
CREATE DATABASE zabbix character set utf8;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';
FLUSH PRIVILEGES;
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/schema/mysql.sql
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/data/data.sql
# mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-1.8.15/create/data/images_mysql.sql

/etc/zabbix/zabbix_server.confの設定

DB接続情報(DBName、DBUser、DBPassword)を設定します。
### Option: DBName
#       Database name.
#       For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
#
# Mandatory: yes
# Default:
# DBName=
DBName=zabbix
### Option: DBSchema
#       Schema name. Used for IBM DB2.
#
# Mandatory: no
# Default:
# DBSchema=
### Option: DBUser
#       Database user. Ignored for SQLite.
#
# Mandatory: no
# Default:
# DBUser=
DBUser=zabbix
### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
DBPassword=zabbix

Zabbix Agentのインストール

# yum --enablerepo=epel install zabbix-agent

/etc/zabbix/zabbix_agentd.confの設定

自ホスト名とZabbix Serverを指定する。
### Option: Server
#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
#       No spaces allowed. If ServerActive is not specified, the first entry is used
#       for receiving list of and sending active checks.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: yes
# Default:
# Server=
Server=(Zabbix Serverホスト名)
### Option: ServerActive
#       Comma-separated list of host:port pairs of Zabbix servers for active checks.
#       If ServerActive is specified, first host in the Server option is not used for active checks, only for passive checks.
#       If the port is not specified, ServerPort port is used for that host. If ServerPort is not specified, default port is used.
#       IPv6 addresses must be enclosed in square brackets if port for that host is specified.
#       If port is not specified, square brackets for IPv6 addresses are optional.
#       Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
# Mandatory: no
# Default:
# ServerActive=
ServerActive=(Zabbix Serverホスト名)
### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=
Hostname=(自ホスト名)

Zabbix Server、Zabbix Agentの起動

それぞれのホストでデーモンを起動します。
# service zabbix-server start
# service zabbix-agent start

監視テンプレートを作成して、監視対象のサーバに設定します。

以下のようにアイテム(監視対象のログファイルを決める)とトリガー(監視対象のメッセージを決める)を設定します。
zabbix_item_syslog.png

zabbix_trigger_syslog.png

その後、作成した監視テンプレートに監視対象ホストをリンクします。

監視対象のログファイルをZabbix Agentが読み取りできるように権限設定します。

検証用だったので、適当にzabbixユーザーにrootグループを追加しました。
# usermod -G root zabbix
# groups zabbix
loggerコマンドで監視対象のメッセージを出力させ、Zabbix Serverで検知できるか試してみましょう。