Zabbix 2.4 の構築から監視、メールの設定まで


はじめに

諸事情あり、Zabbixの2.4.6を構築して一通りの監視業務を行おうということになった

2.4.6はすでにサポートが切れているバージョンであり、
今更誰得な情報なのかというところもあるが、
自分の作業記録と、
いつかの誰かの役に立てればと思い記録する

使用するソフト

CentOS 6.8 :Zabbixを載せる用

Zabbix server 2.4.6: 監視用サーバー

Zabbix agent 2.4.6: 被監視用クライアント

Postfix 2.6.6 メール送信用サーバー

PHP 5.3.3

MySQL 5.1

必要なパッケージのダウンロード

Zabbix 2.4.6はZabbix公式のページから取得することはすでにできない
※コメントをいただいて修正
インストールに必要なパッケージは公式リポジトリからも取得可能
公式リポジトリ

今回はZabbix-serverについては、Zabbixが用意しているソースをダウンロードし、
Zabbix-agentについてはリポジトリからインストールというやり方でやっていく

まずソースを取得するにはSourceForge.netなどからダウンロードまたはwgetする

zabbix-2.4.6.tar.gz

ダウンロードしたパッケージをCentOS上の好きなところに置き解凍する

$ tar -zxvf zabbix-2.4.6.tar.gz

Zabbixユーザーの作成

$ groupadd zabbix
$ useradd -g zabbix zabbix

Zabbix構築のための必要なソフトのインストール

Zabbixを構築するにはいくつか追加のインストールが必要

##gcc
$ yum -y groupinstall "Development tools"

##mysql
$ yum -y install mysql-server mysql-devel
$ chkconfig mysqld on
$ service mysqld start

##apache
$ yum -y install httpd php
$ chkconfig httpd on
$ service httpd start

##zabbixインストール時に利用
$ yum -y install libxml2 libxml2-devel net-snmp net-snmp-devel curl libcurl libcurl-devel

また、セキュリティはガバガバになるが、
SELINUXとfirewallを無効化する

このあたりは実際の運用にあわせて細かく設定を加えていくこと
今回はとりあえず動かすというのを目標にしている

$ iptables -F
$ setenforce 0

Zabbix用データベースの作成

zabbix-2.4.6.tar.gzを解凍してできたディレクトリの中にdatabaseというディレクトリがあるはずで、
その中のmysql用のクエリを流し込む

##database作成
$mysql
mysql> create database zabbix character set utf8 collate utf8_bin;

$ mysql zabbix < ~/zabbix-2.4.6/database/mysql/schema.sql
$ mysql zabbix < ~/zabbix-2.4.6/database/mysql/images.sql
$ mysql zabbix < ~/zabbix-2.4.6/database/mysql/data.sql

インストールファイルの作成

準備ができたらZabbixのインストールファイルを作成する

コマンドはzabbix-2.4.6直下のパスで行う

『./configure』のコマンドで何かしらパッケージが足りないといわれた際は、
参照先のページやgoogle先生に確認する

$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

$ make install

設定ファイルの確認

今回は内容を編集はしないが、ファイルの場所だけ確認しておく

##zabbiz serverファイル
/usr/local/etc/zabbix_server.conf

##zabbiz agentファイル
/usr/local/etc/zabbix_agent.conf

Zabbixサービスの開始

今回のバージョンの場合は、serviceコマンドで操作ができないようである
サービスの開始は以下のコマンドのみで可能

コマンドの実行結果は何もなし

$ zabbix_server

$ zabbix_agentd

Web用ファイルの用意

make installした際にできたファイルをWeb用パスに配置する

$ mkdir /var/www/html/zabbix
$ cd ~/zabbix-2.4.6/frontends/php/
$ cp -a . /var/www/html/zabbix/
$ chown -R apache:apache /var/www/html/zabbix/

Web画面を見るためにhttp://<サーバーのアドレス>/zabbixへアクセスする

web画面にてログイン

スクショは割愛

ログイン途中でphpの設定が不備といわれた際は、
php用の設定をしてhttpdサービスの再起動

$ vi /var/www/html/zabbix/.htaccess

php_value post_max_size 16M
php_value max_execution_time 300
php_value max_input_time 300
php_value date.timezone Asia/Tokyo

$vi /etc/httpd/conf/httpd.conf
##ファイル内のAllowOverride部分をすべてAllに変える

##必要なソフトをインストール
$ yum -y install php-mysql php-bcmath php-mbstring gd gd-devel php-gd php-xml

$ service httpd restart

順調に進んだら
User:Admin
pass:zabbix
でログインする

ちなみに自分がやったときはZabbixサーバーのログは/tmp/以下に作られていた

Zabbixのクライアントを追加

Zabbix agentのインストール

監視対象となるマシンにZabbix agentをインストールする

$ rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-2.4.6-1.el6.x86_64.rpm
$ rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-agent-2.4.6-1.el6.x86_64.rpm

$ yum -y install zabbix-agent

##agentの設定を変更

$ vi /etc/zabbix/zabbix_agentd.conf

EnableRemotecommands = 1

Server = [サーバーのIPアドレス]

ListenPort = 10050

ServerActive = [サーバーのIPアドレス]

Hostname = [任意の名前]

AllowRoot = 1

続いてfirewallの設定

vi /etc/sysconfig/iptables \\下記追加

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 10051 -j ACCEPT

agentのサービス開始

$ service iptables restart

$ service zabbix-agent start
$ chkconfig zabbix-agent on

Zabbix serverに登録

Webコンソール画面から[設定]→[ホストグループ]にて[ホストグループの作成]を選択
グループ名:任意

[ホスト]ページにて、[ホストの作成]を選択
名前:任意(agent側の設定と合わせる)グループ:先ほど作ったグループを選択エージェントのインターフェイス:該当のエージェントのアドレスを指定

ステータスが有効になっていることや、エラーなどが出ていないことを確認

メール設定

Zabbixに付き物のアラートメールを飛ばせるようにする

イメージとしてはPostfixでGamilのsmtpサーバーを利用し、
Zabbixでメールを飛ばすときにlocalhostのメールサーバーを使うようにする

Gmailの設定

Zabbix専用のGmailアカウントを作ってもいいし、
普段自分の使ってるアカウントを使ってもいい

アカウントのセキュリティは下がるから、運用の上では注意して

メール送信に使用するGoogleアカウントのセキュリティページで、
『安全性の低いアプリのアクセス』をオンにする

Postfixの設定

smtp認証用のソフトをインストール

$ yum -y install cyrus-sasl-plain cyrus-sasl-md5

設定ファイルを書き換える

$ vi /etc/postfix/main.cf

##デフォルトで書かれている部分を書き換える
myhostname = zabbix.example.com

mydomain = example.com

myorigin = $mydomain

inet_protocols = ipv4

mynetworks = 127.0.0.0/8

relayhost = [smtp.gmail.com]:587

##新規に追記
smtp_sasl_auth_enable  = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_loglevel = 1

上記で追記したパスワードファイルを作成する

$ vi /etc/postfix/gmail

[smtp.gmail.com]:587 [email protected]:password

パスワードファイルを適用

$ postmap /etc/postfix/gmail

サービスの停止、開始

$ /etc/init.d/sendmail stop
$ chkconfig sendmail off
$ chkconfig postfix on
$ /etc/init.d/postfix restart

この段階でメールを飛ばすだけならできるはず

$ sendmail -f zabbix.example.com(送信者) -t [email protected](受信者)
To: [email protected] (あて先)
Subject: test (タイトル)
testtest (本文)
. (.で入力終了)

ちなみにメールのログには、Gmailのsmtpに認証できました、とかいうようなメッセージがあるはず

$ tail /var/log/maillog

Apr 10 09:33:58 zabbix postfix/smtp[2521]: setting up TLS connection to smtp.gmail.com[64.233.187.108]:587
Apr 10 09:33:58 zabbix postfix/smtp[2521]: certificate verification failed for smtp.gmail.com[64.233.187.108]:587: untrusted issuer /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
Apr 10 09:33:58 zabbix postfix/smtp[2521]: Untrusted TLS connection established to smtp.gmail.com[64.233.187.108]:587: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Zabbixの設定

Webコンソール画面上で[管理]→[メディアタイプ]→[Email]と移動する

下記のように自分のメールサーバーを見るように設定

名前:Email
タイプ:メール
SMTPサーバー:127.0.0.1
SMTP helo:127.0.0.1
送信元メールアドレス:zabbix.example.com

[管理]→[ユーザー]→[adminユーザー]に移動し、
メディアタブ内で「追加」を選択し、以下を設定「追加」で

タイプ:Email
送信先:[受信したいアドレス]

[設定]→[アクション]に移動し、「アクションの作成」を選択
以下のように設定

##アクションタブ
名前:任意
件名・メッセージを好きなように
有効:オン

##アクションの実行内容
[新規]を選択し、
ユーザー:追加で先ほどのユーザーを選択
次のメディアのみ使用:Email

最後に[追加]を選択

これで何か異常を検知したらメールを飛ばすはず

監視の設定

ひとまず簡単にPingを使って死活監視をしてみる

Zabbixでping監視をするためにはfpingのインストールが必要

$ yum -y install epel-release
$ yum -y install fping

[設定]→[テンプレート]から[テンプレートの作成]を選択、以下を設定
テンプレート名:pingホスト:任意のユーザー追加

[アイテム]ページにて以下を設定
名前:任意タイプ:シンプルチェックキー:icmpping[,5,5000,64,4000]値のマッピングの使用:Service state

[トリガー]ページにて以下を設定
名前:ping条件式:{ping-monitor:icmpping[,5,5000,64,4000].last()}=0深刻度:任意

これで完了

エージェントクライアントに対してあえて
ネットワークを切ったりしてエラーを起こさせるとメールが飛んでくるはず

はまったところ

Zabbixをインストールした後にWeb画面が真っ白である

mysqlの設定や/var/www/html/zabbix/のファイルなどを見返してみたが、
結局firewallをすべて無効化したら表示された

通常運用の時にはしっかりポートの設定をしておいたほうがいい

サーバーからメールを飛ばすことはできるが、Zabbixエラー検知時にメールが飛ばない

メールアクションのログを確認した
コンソール画面上の[監視]→[イベント]→発生しているイベントの『時間』(アクション項目でエラーになっていた)→[message actions]の部分でエラー内容の確認

またサーバーのログでも確認

両方共に以下のメッセージ出力

10493:20190410:101501.543 cannot connect to SMTP server "localhost": cannot connect to [[localhost]:25]: [111] Connection refused

これはIPv4とIPv6にかかわるエラー

最初はメディアタイプのEmailページで、

SMTPサーバー:localhost
SMTP helo:localhost

と設定しており、メールサーバー接続先が間違えていたよう、
IPv6を無効化するという解決方法もあるようだが、
今回は明示的にアドレス指定して解決となった

参考ページ

zabbix Document
Zabbixをインストールして簡単に動作確認を行う
PostfixからGmailへリレーする方法と受信したメールがSOFTFAILになる対策
Zabbixでメールを送信出来るようになるまで