2015年2月7日土曜日

ZABBIXサーバを構築しよう

LinuxでZABBIXサーバを構築します。
この先、このブログではこの記事で構築したサーバを前提に話を進めていきます。
環境は流行りのAWSを使います。
小規模なサイトの監視であれば、t2.microのEC2インスタンスで良いと思います。
Amazon Linux AMIを使って作ります。CentOSやRHELでも良いと思います。その場合はSELinuxはdisabledにしてください。SuSEは使ったことありません。
インスタンスの作り方は、ここでは省略しますが、SecurityGroupのIncomingはSSHとHTTPSの2つは必ず設定してください。MySQLは開けないほうが良いです。便宜上MySQLのrootパスワードは設定しないので。Outgoingはどんな監視をしたいかによりますが、基本はデフォルトのままで良いかと思います。
ストレージについても予算の許す範囲で大きくしておけば、後々困ることはありません。ここでは8GBで進めます。(足りなくなったら増やす方法やRDSへの移行方法を記事にします)

できあがったらログインしてrootユーザになります。このブログは管理者向けのブログですので、rootユーザで作業ができることが前提です。
$ sudo su -
個人的にではありますが、ログインしてすぐに以下の事をします
  • タイムゾーンをJSTにする
# cp /usr/share/zoneinfo/Japan /etc/localtime
  • アップデート 
# yum update -y
  • sendmailをpostfixに入れ替える
# /etc/init.d/sendmail stop
# yum install -y postfix
# alternatives --set mta /usr/sbin/sendmail.postfix
# chkconfig sendmail off
# chkconfig postfix on
# /etc/init.d/postfix start
これで準備が整いました。ZABBIXサーバをインストールします。バージョンは次の通りです。
OS: Amazon Linux AMI 2014.09
ZABBIX: 2.4.3
Apache: 2.229
PHP: 5.3.29
MySQL: 5.5.40
# yum install -y \
http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64\
/zabbix-release-2.4-1.el6.noarch.rpm
# yum install -y httpd mod_ssl mysql-server
# yum install -y \
php php-gd php-mbstring php-bcmath php-xml php-mysql \
php-cli php-common php-process php-pdo php-pear
# yum install -y zabbix zabbix-agent zabbix-server zabbix-server-mysql \
zabbix-web zabbix-web-mysql zabbix-get ipa-gothic-fonts --enablerepo=epel,zabbix
 ここから少しZABBIXサーバ以外のミドルウェアの設定をします。
  • MySQL
インスタンスサイズが小さいので、my.cnfをsmallテンプレートにします
# cp /usr/share/mysql/my-small.cnf /etc/my.cnf 
文字コードをUTF8にします
# sed -i -e 's/^\[mysqld\]/\[mysqld\]\ncharacter-set-server=utf8/' \
/etc/my.cnf
# sed -i -e 's/^\[mysql\]/\[mysql\]\ndefault-character-set=utf8/' \
/etc/my.cnf
# sed -i -e 's/^\[client\]/\[client\]\ndefault-character-set=utf8/' \
/etc/my.cnf
# sed -i -e 's/^\[mysqldump\]/\[mysqldump\]\ndefault-character-set=utf8/' \
/etc/my.cnf
  • PHP
タイムゾーンをAsia/Tokyoにします
# sed -i -e 's/^;date.timezone =/date.timezone = Asia\/Tokyo/' \
/etc/php.ini
  • Apache
POODLE対策としてSSLv3を無効にします
# sed -i -e "s/^SSLProtocol.*/SSLProtocol all -SSLv2 -SSLv3/" \
/etc/httpd/conf.d/ssl.conf
以上でミドルウェアの設定は終わりです。続いてZABBIXの設定をしていきます。

  • zabbixユーザー
ZABBIXは監視の閾値を超えた際に様々なアクションができます。そのひとつにコマンドを実行することができますが、そのためにはzabbixユーザにsudo権限があると便利です。
# echo "zabbix ALL=NOPASSWD: ALL" >> /etc/sudoers
# sed -i -e "s/^Defaults    requiretty/#Defaults    requiretty/" /etc/sudoers
また、それらのコマンドを実際に動かして確認するので、zabbixユーザにシェルを設定しておきます。
# chsh -s /bin/bash zabbix
  • zabbix-agent
# sed -i -e "s/^# EnableRemoteCommands=0/EnableRemoteCommands=1/" \
/etc/zabbix/zabbix_agentd.conf
# sed -i -e "s/^# Timeout=3/Timeout=10/" \
/etc/zabbix/zabbix_agentd.conf
  • zabbix-server
# sed -i -e "s/^DBUser=zabbix/DBUser=root/" \
/etc/zabbix/zabbix_server.conf
# sed -i -e "s/^# Timeout=3/Timeout=10/" \
/etc/zabbix/zabbix_server.conf
# sed -i -e "s/^# JavaGateway=/JavaGateway=127.0.0.1/" \
/etc/zabbix/zabbix_server.conf
# sed -i -e "s/^# StartJavaPollers=0/StartJavaPollers=5/" \
/etc/zabbix/zabbix_server.conf
  • 初期データ
# /etc/init.d/mysqld start
# chkconfig mysqld on
# mysqladmin create zabbix
# mysql zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/schema.sql
# mysql zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/images.sql
# mysql zabbix < /usr/share/doc/zabbix-server-mysql-2.4.3/create/data.sql

  • ZABBIXのグラフで日本語の文字化けを直す
# sed -i -e 's/graphfont/ipag/' /usr/share/zabbix/include/defines.inc.php
# ln -s /usr/share/fonts/ipa-gothic/ipag.ttf /usr/share/zabbix/fonts/ipag.ttf

以上で完了です。最後に少しだけZABBIXのWebUIで設定があります。
まずは各ミドルウェアの自動起動設定とそれぞれを起動します。
# chkconfig httpd on
# chkconfig zabbix-agent on
# chkconfig zabbix-server on
# /etc/init.d/httpd start
# /etc/init.d/zabbix-agent start
# /etc/init.d/zabbix-server start
では、ブラウザを使ってzabbixにアクセスしましょう。httpsで。
https://54.92.110.56/zabbix/
Nextを押していき、最後にログイン画面まで行けば完了です。

今回はここまでです。次回からZABBIXでいろいろな監視を設定していきます。


0 件のコメント:

コメントを投稿