竹の子エンジニア

30代から目指すエンジニアの日記

備忘録:Zabbixサーバーの構築

※9/28記述ミスがいくつかあったため更新しています。

どうもこんばんわ。
ちょっと仕事でAWSインスタンスを監視するように、Zabbixの構築をする機会があったので、
備忘録として久しぶりのブログ更新です。
Rubyクローラー開発技法を9/13までに読むと豪語していたんですが、中々時間が取れずに断念。
という言い訳

さて。まずZabbixはオープンソースのサーバー監視ツールです。
監視対象のサーバーの状況などを視覚化してくれる表示機能なんかを備えています。

Zabbixのインストールについては、AWSにあるAmazon Linuxに行います。
また、監視対象サーバーについてもAWS上にあるものとして、以下のような構成になります。

f:id:take9021:20150917110119p:plain

監視サーバーと監視対象サーバーについてはVPNでサブネットを分割していますが、トラフィックはすべてOpenにしています。
今回監視対象サーバーに使うのは、Windows Server 2012で構築しているWindows Serverです。

というわけで、実際にZabbixを構築してみます。

Zabbixサーバーの構築

では、Zabbixサーバーの構築を行っていきます。

余談にはなるのですが、ZabbixはMySQLもしくはPostgreSQLを使うので個人的にPostgreSQLを使う機会が多いので
当初PostgreSQLで実行しようとしたのですが、Amazon LinuxPostgreSQLを利用しようとする時点で
エラーが頻発したので、MySQLで実施します。

Zabbixサーバーにログインし、以下のコマンドを実行します。
実行による出力は必要箇所以外省いています。

#yumリポジトリへの登録
$ sudo rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm  

#Zabbix各種パッケージのインストール
$ sudo yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent

#Zabbixインストールの確認
$ zabbix_server -V
Zabbix server v2.4.6 (revision 54796) (10 August 2015)
Compilation time: Aug 10 2015 13:10:01

次にZabbixで使用するMySQLをインストール。

#mysql-serverのインストール
$ sudo yum -y install mysql-server

#mysqlの起動
$ sudo /etc/init.d/mysqld start

#mysql-serverインストール確認
$ mysqladmin version
mysqladmin  Ver 8.42 Distrib 5.5.42, for Linux on x86_64
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version          5.5.42
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 16 hours 3 min 0 sec

Threads: 14  Questions: 87515  Slow queries: 0  Opens: 552  Flush tables: 1  Open tables: 111  Queries per second avg: 1.514

次にMySQLの設定を行います。

# データベースの初期化
$ mysql -uroot

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

#権限付与
#※こちらでDBユーザーのパスワードを設定していますが、自己責任でお願い致します。zabbixpasswdがパスワードです。
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpasswd';

次に作成したDBスキーマへデータを流し込みます

$ cd /usr/share/doc/zabbix-server-mysql-2.4.6/create
$ mysql -uroot zabbix < schemae.sql
$ mysql -uroot zabbix < images.sql
$ mysql -uroot zabbix < data.sql

zabbixのコンフィグなどを設定します。

$ sudo vi /etc/zabbix/zabbix_server.conf

#以下の箇所を修正
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpasswd

あとPHPなど

$ sudo vi /etc/php.ini

#以下の箇所を修正
date.timezone = Asia/Tokyo
always_populate_raw_post_data = -1 #コメントアウトする

Apacheの設定を行います。
ApacheのVersionが2.4になっている場合は以下の設定を実施します。

$ sudo vi /etc/httpd/conf.d/zabbix.conf

#
# Zabbix monitoring system php web frontend
#
 
Alias /zabbix /usr/share/zabbix
 
<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    #Order allow,deny
    #Allow from all
    Require all granted
 
    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    # php_value date.timezone Europe/Riga
    php_value date.timezone Asia/Tokyo
</Directory>
 
<Directory "/usr/share/zabbix/conf">
    #Order deny,allow
    #Deny from all
    Require all denied
    <files *.php>
        #Order deny,allow
        #Deny from all
        Require all denied
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/api">
    #Order deny,allow
    #Deny from all
    Require all denied
    <files *.php>
        #Order deny,allow
        #Deny from all
        Require all denied
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/include">
    #Order deny,allow
    #Deny from all
    Require all denied
    <files *.php>
        #Order deny,allow
        #Deny from all
        Require all denied
    </files>
</Directory>
 
<Directory "/usr/share/zabbix/include/classes">
    #Order deny,allow
    #Deny from all
    Require all denied
    <files *.php>
        #Order deny,allow
        #Deny from all
        Require all denied
    </files>
</Directory>

最後にZabbixとhttpdの起動を実施します。

$ sudo /etc/init.d/zabbix-server start
$ sudo /etc/init.d/httpd start

zabbixとhttpdが正常に起動したら、ブラウザより
http://[EC2インスタンスのパブリックIP]/zabbix
にアクセスします。

するとZabbixの画面が出力されます。Nextを押していきます。
入力箇所では、mysqlサーバーのユーザー名などを入力します。※画面取得するのを忘れた。。

f:id:take9021:20150928170217p:plain
f:id:take9021:20150928170222p:plain
f:id:take9021:20150928171102p:plain
f:id:take9021:20150928171110p:plain
f:id:take9021:20150928171118p:plain
f:id:take9021:20150928171125p:plain

Zabbixの画面より初期設定を実施すると(errorとなっている場合修正する必要があります)
ログイン画面が表示されます。
ログインは、ユーザー名:Admin、パスワード:zabbixで可能です。

f:id:take9021:20150928170224p:plain

以上、Zabbixサーバーの構築方法でした。
監視対象サーバーの追加方法や、Zabbixの設定方法なんかについては
またどこかで触れていければと思います。

余談

元々サーバー周りの仕事をおもにやってきたんですが、
最近数年ぶりにサーバーの仕事をさせられそうなので
復習として以下の書籍を読んでいっている最中です。

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

まだ読んでいる途中ではあるのですが、サーバーについて学習する書籍としては
必携かと思います。
これからサーバー周りの仕事をされる方には是非おすすめです。
むしろ定番すぎて今更かよ!と罵られそうですが...