3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-12

はじめに

諸事情あり、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アカウントのセキュリティページで、
『安全性の低いアプリのアクセス』をオンにする

WS000018.JPG

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 hogefuga@example.com: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 hogefuga@example.com(受信者)
To: hogefuga@example.com (あて先)
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でメールを送信出来るようになるまで

3
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?