zabbix ( nginx + php-fpm + MariaDB ) 導入

自宅とIDCFクラウド環境のopenvpnによるLAN to LAN接続が成功したので、ようやく監視環境を構築する。nagiosを割と使い込んでいたんだけど、サービス監視とリソースウォッチが統合されているzabbixを使ってみたかった。データもRDBに貯められるので冗長構成を作り易い。いまいちだったら別のものを作るという考えで、とりあえず使い始めてみる。インストールはもはや何の問題にもならない。zabbixリポジトリを設定してyum installするだけ。依存関係を解決する形でphpやhttpdもインストールされる。DBサーバには別サーバdb1のMariaDBを使うので構築済みの前提で進める。

yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-java-gateway-3.2.3-1.el7.x86_64.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
scp /usr/share/doc/zabbix-server-mysql-3.2.3/create.sql.gz  db1:~
ssh db1
mysql -uroot -e 'create database zabbix'
gzip -dc create.sql.gz | mysql -uroot zabbix

これでzabbixとDBの準備は終わり。続いて、WEBサーバ側の設定を行う。うちのWEBサーバは完全にnginxに移行済みなので、一緒にインストールされるapacheは使わない。nginxとphp-fpmをインストールして、いつもの慣れた構成に切り替える。そこかしこのパーミッションがapacheユーザー前提になっているので、忘れずにnginxユーザーに変更しておく。phpの設定はtimzoneだけ直しておけば、とりあえずは動作するかも。不足する分は、あとでWebUIが指摘してくれるので、それに従う形でもOK。

yum install nginx php-fpm
chown nginx:nginx /etc/zabbix/web
chgrp nginx /var/lib/php/*
vi /etc/nginx/conf.d/zabbix.conf
    :
server {
  listen 80;
  server_name zabbix.domain.com;

  location / {
    root /usr/share/zabbix;
    index index.php;
    try_files $uri $uri/ /index.php?q=$uri&$args;
  }
  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include fastcgi_params;
  }
}

vi /etc/php.ini
    :
date.timezone = "Asia/Tokyo"
post_max_size = 20M
max_execution_time = 300
max_input_time = 300

vi /etc/php-fpm.d/www.conf
    :
user = nginx
group = nginx

systemctl start nginx php-fpm
systemctl enable nginx php-fpm

これで設定したURLにブラウザからアクセスすれば、zabbixのWebUIにアクセス出来る。最初はDBの設定を求められるので必要な項目を入力。DBに繋がるとダッシュボードが表示される。監視したいノードにzabbix-agentをインストールして WebUIでホストを登録する。Linux serversグループに所属させてTemplate OS Linuxを利用する。これで基本的な監視が開始される。

yum install zabbix-agent
vi /etc/zabbix/zabbix_agentd.conf
    :
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=zabbix
ServerActive=zabbix
Hostname=node1
Include=/etc/zabbix/zabbix_agentd.d/

systemctl start zabbix-agent
systemctl enable zabbix-agent

サーバ数が多いと、同じことをポチポチやるのも面倒なので、自動登録の設定をすると楽。設定>アクションで右上のイベントソースのプルダウンメニューから『自動登録』を選択してアクション作成。適当なアクション名と必要な条件を設定。実行内容タブで『ホストを追加』、『ホストグループに追加 : Linux servers』、『テンプレートとリンク : Template OS Linux』を加える。追加ボタンをクリックして登録。これでノード側でzabbix-agentを起動すれば、自動でホスト追加が行われるようになる。なかなか便利。

初期設定で自分がいじったのは、ディスクの空き容量監視の閾値とプロセス数監視の閾値を緩めた。閾値の変更場所があまり直感的でないようにも思うのだが、設定>テンプレート>Template OS Linuxのディスカバリ>トリガーのプロトタイプで必要項目を選択して修正する。あとはディスクのグラフが円グラフなのがイマイチなので、推移のわかる線グラフに変更。設定>テンプレート>Template OS Linuxのディスカバリ>グラフのプロトタイプ>Disk space usage {#FSNAME}を選択。グラフのタイプをノーマルに変更して幅900高さ200に設定。これで推移が追えるようになった。

冗長構成はいつも通りkeepalivedによるvipのfail overで実現。zabbix-agentの接続先はvipにしておいて、2号機にもzabbix-serverを構築。1号機が落ちるとkeepalivedがvipに付け替えと共に2号機のzabbix-serverを起動する仕組み。zabbix-agent側はvipに接続するので、特に何もしなくても2号機を見に行くようになる。どちらのzabbixも同じDBに接続している。zabbix-agent側からの切り替わりはうまくいったり、いかなかったり。安定させるには被監視ノードのzabbix-agentを全て再起動した方がよいかもしれない。とりあえずは、そこまで厳密な冗長構成は求めていないので、現在の構成でしばらく運用してみる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)