2014年02月27日

Zabbix覚書

先日Zabbixをいれてみた覚書。

色んなサイトからかき集めた情報です。皆様の情報に感謝m(__)m

■ソフトウェア

zabbix2.2.1
apache2.2.15
PHP5.3

■サーバー

zabbixサーバー:192.168.1.X
DBサーバー:192.168.1.Y
監視対象サーバー:192.168.1.Z

■リポジトリ準備

全部 yum で入れるが、なるべく新しいのを入れたいので、zabbix、remi、epel、nginx 公式の repo を使う。

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

rpm --import http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

■インストール(これで必要なのは全部入る)

・zabbix
yum install --enablerepo=zabbix zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get

■DB準備

create database zabbix_db;

grant all privileges on zabbix_db.* to zabbix@'192.168.1.%' identified by 'std1528' with grant option;

/usr/share/doc/zabbix-server-mysql-2.2.1/createl 内のdata.sql images.sql schema.sql を実行する。

※schema.sql ⇒ images.sql ⇒ data.sql の順

/etc/zabbix/zabbix_server.confに以下を設定する。

DBHost=192.168.1.Y
DBName=zabbix_db
DBUser=zabbix
DBPassword=XXXXXX

■zabbix-server 起動

service zabbix-server start

chkconfig zabbix-server on

■PHP設定

/etc/php.ini 修正

- ;date.timezone =
+ date.timezone = Asia/Tokyo

- post_max_size = 8M
+ post_max_size = 16M

- max_execution_time = 30
+ max_execution_time = 300

- max_input_time = 60
+ max_input_time = 300

■HttpServer 起動

service httpd start

chkconfig httpd on

■設定画面へ

http://192.168.1.X/zabbix/setup.php

※selinuxを無効にしといたほうがいい。DB接続などが出来ない。

setenforce 0

※恒久的対応

vi /etc/selinux/config

SELINUX=disabled

設定参考:http://tkuchiki.hatenablog.com/entry/2013/05/07/210418

■エージェントインストール

・linux

リポジトリ登録後、YUMでインストール

rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

yum install zabbix-agent

/etc/zabbix/zabbix_agentd.conf の編集

Server=192.168.1.X
ServerActive=192.168.1.X
ListenIP=192.168.1.Z
Hostname=hogehoge

[パラメーラ説明]
Server=(ZabbixサーバのIPアドレス)
ServerActive=(ZabbixサーバのIPアドレス)
Hostname=(Zabbixエージェントが稼働するホスト名)
ListenPort=(ZabbixエージェントがZabbixサーバからの接続を受け付けるポート)
ListenIP=(ZabbixエージェントがListenするIPアドレス)

サービス起動

service zabbix-agent start

ZabbixサーバからZabbixエージェントに対する通信が出来るように、Zabbixエージェント稼働マシンのiptables設定を行います。

■Mysql 監視方法

次の手順で行った。

1.mysql.sock の存在を確認(/var/lib/mysql/ にあるはず)

# ll /var/lib/mysql/mysql.sock

2./var/lib/zabbix/.my.cnf を作成

# mkdir /var/lib/zabbix
# vi /var/lib/zabbix/.my.cnf

3..my.cnfに次の内容を記述

[client]
host=localhost
user=root
password=scmysql
socket=/var/lib/mysql/mysql.sock

[パラメーラ説明]
・user、password = (監視対象のZABBIXエージェントのもの)
・socket = (確認したmysql.sockのフルパス)

4..my.cnf の所有者、パーミッションを設定 所有者とグループを zabbix に、パーミッションはきつくしてユーザのみ読み込み可能に

# chown zabbix:zabbix /var/lib/zabbix/.my.cnf
# chmod 400 /var/lib/zabbix/.my.cnf

5.MySQL用のUserParametersを追加する

# vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.max_connections,HOME=/var/lib/zabbix mysqladmin variables | grep max_connections | awk '{print $4}'
UserParameter=mysql.threads_connected,HOME=/var/lib/zabbix mysqladmin extended-status|grep Threads_connected|awk '{print $4}'
UserParameter=mysql.threads_created,HOME=/var/lib/zabbix mysqladmin extended-status | grep Threads_created | awk '{print $4;}'
UserParameter=mysql.threads_running,HOME=/var/lib/zabbix mysqladmin extended-status | grep Threads_running | awk '{print $4;}'
UserParameter=mysql.thread_cache_size,HOME=/var/lib/zabbix mysqladmin variables | grep thread_cache_size | awk '{print $4}'
UserParameter=mysql.connections,HOME=/var/lib/zabbix mysqladmin extended-status | grep Connections | awk '{print $4;}'

[パラメーラ説明]
max_connections = (これまでに記録された同時接続数の最大値)
threads_connected = (現在開いている接続の数)
threads_created = (接続を処理するために生成されたスレッド数。起動してから生成されたスレッドの数。この値が大きい場合はthread_cache_sizeの値を大きくした方が良いかも。)
threads_running = (スリープ状態になっていないスレッド数)
thread_cache_size = (スレッドキャッシュでキャッシュされているスレッドの数。)
connections = (コネクション数)

これらを登録後、テンプレートのアイテム追加で、キーを設定してく。

■Tomcat監視方法

Zabbix 2.0 からは、Zabbix Java Gateway という形で JMX監視が組み込まれた。
Zabbix 1.xまではJMX監視を行う際はZapcat などが使われていたようだが、
Zabbix 2.0 からはZabbixで用意されている仕組みだけでJMXを使ったJavaアプリケーションの監視が出来るようになったもよう。

今回は、Zabbix Server と JMX監視を担当する Zabbix Java Gateway を同じマシンで稼働させます。

1.TomcatをリモートからJMXで監視できるように設定する

/usr/local/tomcat/bin/setenv.sh を以下の内容で作成。

#!/bin/sh
export CATALINA_OPTS="-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=18080
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

JMXが利用しているRMIでは2つのポートを使用するが、
実行時オプションで [com.sun.management.jmxremote.port] で指定した場合、
もうひとつのポートはランダムに使用される。
そのため、ファイアウォールで制限された環境ではポートをフルで開くなどしない限り、RMIの疎通ができない。
そのため、Tomcatには使用するポートを固定するための措置を行う。

http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.36/bin/extras/

適したバージョンの、catalina-jmx-remote.jar をダウンロード。(zipになってることがあるので、jarへリネーム)
TOMCAT_HOME/lib へ配置。

server.xmlにて、Listenerの登録をして固定ポートを設定。

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />

指定したポートのファイアウォールの調整。

Tomcat再起動。

2.Zabbix2でJMXが使えるようにインストールする(Zabbixサーバー側)

# yum install --enablerepo=zabbix zabbix-java-gateway

3.Zabbix Java Gateway の設定を行う

# vi /etc/zabbix/zabbix_java_gateway.conf

LISTEN_IP="192.168.1.X"
LISTEN_PORT=10052
START_POLLERS=2

# service zabbix-java-gateway start

4.Zabbix Server で Zabbix Java Gateway を認識させる

# vi /etc/zabbix/zabbix_server.conf

JavaGateway=192.168.1.X
JavaGatewayPort=10052
StartJavaPollers=2

# service zabbix-server restart

5.Zabbix 画面から、JMXを使ったアイテム設定を行う

設定→ホスト→JMXインターフェイス

IP: 192.168.1.Z
DNS : 空白
接続方法:IPアドレス
ポート:10001

■SNMP監視方法

まだ試してない。。。。

■IPMI監視方法

まだ試してない。。。。

■その他

・グラフの文字化け対応

http://sechiro.hatenablog.com/entry/2013/08/27/Zabbix_2.0_%E3%81%AE%E3%82%B0%E3%83%A9%E3%83%95%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%82%92%E7%9B%B4%E3%81%99%E3%80%81%E3%80%8Calternatives%E3%80%8D%E3%81%A7%E3%81%AE%E6%97%A5%E6%9C%AC

現在使用中のフォント確認
# alternatives --display zabbix-web-font

新フォントインストール
# yum install ipa-pgothic-fonts

使用フォントの切替(最後の数字が大きいほど優先度高)
# alternatives --install /usr/share/zabbix/fonts/graphfont.ttf zabbix-web-font /usr/share/fonts/ipa-pgothic/ipagp.ttf 1000