概要 †
Zabbix serverをRaspberry piに入れ、agentをRaspberry piとWindowsにインストールします。
Zabbix serverを入れるRaspberry piは、ほぼ専用用途で作成するので、全てパッケージ構成で作成します。
(MySQL, Apache, PHPなどは未インストール状態で、MariaDB, Nginx, HHVMなどに置き換えたりはしません)
なお、このZabbix serverへのLAN外からのアクセスは、VPN経由でしかできないという想定の下構築しています。
主に実現することは、以下の通りです。
- メール通知
- ホストの自動登録
- 監視端末のリソース状況俯瞰
- microSD, USBメモリのI/O取得とグラフ化(標準のテンプレートではディスクI/O値は取得しないので)
- 監視端末のログ収集
Zabbix serverのインストール †
- インストール
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -
!
-
!
-
!
| apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent php5-mysql fonts-ipafont
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to [email protected] identified by '<パスワード>';
exit
cd /usr/share/zabbix-server-mysql
zcat schema.sql.gz | mysql -v -uzabbix -p zabbix
zcat images.sql.gz | mysql -v -uzabbix -p zabbix
zcat data.sql.gz | mysql -v -uzabbix -p zabbix
|
- 設定変更
vi /etc/zabbix/zabbix_server.conf
vi /usr/share/zabbix/include/defines.inc.php
1
2
|
| define('ZBX_FONTPATH', '/usr/share/fonts/opentype/ipafont-gothic/');
define('ZBX_GRAPH_FONT_NAME', 'ipagp');
|
vi /etc/php5/apache2/php.ini
1
2
3
4
|
| post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Tokyo
|
vi /etc/mysql/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| -
|
|
|
|
|
|
|
|
|
|
|
|
|
!
| [mysqld]
innodb_buffer_pool_size=512M
innodb_log_file_size=128M
innodb_flush_log_at_trx_commit=0
tmp_table_size=32M
max_heap_table_size=32M
query_cache_size=128M
query_cache_limit=4M
|
- サイト有効化
1
2
|
| ln -s /usr/share/doc/zabbix-frontend-php/examples/apache.conf /etc/apache2/conf-available/zabbix.conf
a2enconf zabbix
|
- ログファイルサイズの変更
上記の通り、MySQLのログファイルサイズを変更しないのであればこの作業は不要
1
2
3
4
5
6
7
8
9
10
|
| service apache2 stop
service zabbix-server stop
mysql -uroot -p
SET GLOBAL innodb_fast_shutdown=0;
exit
service mysql stop
rm /var/lib/mysql/ib_logfile*
service mysql start
|
- 再起動
1
2
|
| service zabbix-server retart
service apache2 restart
|
- iptables設定
いつもどおりの構成ならば(iptables/Debianへのインストール)
vi /etc/network/if-pre-up.d/iptables
1
2
3
|
| iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp --dport 10051 -m state --state NEW -j ACCEPT iptables -A INPUT -p udp --dport 10051 -m state --state NEW -j ACCEPT
|
- 設定変更2
ブラウザで、http://<IP>/zabbix へアクセス
PHPの設定が正常であることを確認
MySQLの接続設定を行い、zabbix.conf.phpをダウンロード
vi /etc/zabbix/zabbix.conf.php
e.g.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?php
// Zabbix GUI configuration file
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '<パスワード>';
// SCHEMA is relevant only for IBM_DB2 database
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
|
vi /etc/default/zabbix
- 再起動
1
2
|
| service zabbix-server restart
service apache2 restart
|
初期設定 †
ブラウザで、http://<IP>/zabbix へアクセス
Admin/zabbix でログイン
言語(日本語) †
- [Profile]-[Language]-<Japanese(ja_JP)>-[Save]
新規管理者ユーザー作成, Admin削除 †
- [管理]-[ユーザー]-(右上ドロップダウン)[ユーザー]-[ユーザーの作成]
[ユーザー]タブ
グループ:Zabbix administrators
言語:日本語(ja_JP)
[権限]タブ
ユーザーの種類:Zabbix特権管理者
あとは好みで設定し[保存]
- 今作成したユーザーで入り直し、[管理]-[ユーザー]-(右上ドロップダウン)[ユーザー]でAdminを選択し、[削除]
データの保存期間 †
[管理]-[一般設定]-(右上ドロップダウン)[データの保存期間]
必要に応じて調整する
メール通知 †
メールの送信はいつも通りの構成(Exim4/外部SMTPサーバー経由でメールを送信したい(Debian))
- [管理]-[メディアタイプの作成]
- vi /etc/zabbix/alert.d/alertmail.sh
1
2
3
4
5
6
7
8
9
| -
!
|
to=$1
subject=$2
body=$3
cat <<EOF | mail -s "$subject" "$to"
$body
EOF
|
1
|
| chmod 755 /etc/zabbix/alert.d/alertmail.sh
|
- [管理]-[ユーザー]-<メールを送信したいユーザー>-[メディア]-[追加]
- [設定]-[アクション]-(右上ドロップダウン)[イベントソース]-[トリガー]-[アクションの作成]
1
2
3
4
5
6
7
| -
|
|
|
|
|
|
|
|
ディスクI/O取得 †
- [設定]-[テンプレート]-[テンプレートの作成]
- [RaspberryPi microSD]-[アイテム]-[アイテムの作成]
これをmmcblk0, mmcblk0p1, mmcblk0p2, read, write, ops, spsの組み合わせ分定義する
- [RaspberryPi microSD]-[グラフ]-[グラフの作成]
ほかのディスクもあり、監視したいのであれば、同じようなことを繰り返す
ホストの自動登録 †
- [設定]-[アクション]-(右上ドロップダウン)[自動登録]-[アクションの追加]
これをLinux, Windows, Mac用にも定義する
監視対象のログ収集 †
syslogはプライオリティがerr以上を、auth.logは全て収集
- [設定]-[テンプレート]-[Template OS Linux]-[アイテム]-[アイテムの作成]
1
2
3
4
5
6
7
8
9
10
11
| -
|
|
|
|
!
-
|
|
|
|
|
|
- [設定]-[テンプレート]-[Template OS Linux]-[トリガー]-[トリガーの作成]
1
2
3
4
5
6
7
8
9
| -
|
|
|
!
-
|
|
|
|
|
- agent側の設定
syslog(-rw-r----- 1 root adm)なので、zabbix-agentが動作しているユーザー(zabbix)ではアクセスできない
admは、監視システムなど用のログが見れるグループなので、zabbixユーザーの補助グループにadmを追加
プライオリティ情報をトリガーの条件としたが、デフォルトのrsyslog設定では、プライオリティはログに出力されていない
プライオリティを出力するようにする
vi /etc/rsyslog.conf
1
2
3
4
5
6
7
8
9
10
| -
|
|
!
-
|
|
!
| $template logformat, "%timegenerated% %hostname% %programname% %syslogpriority-text% %msg%\n"
auth,authpriv.* /var/log/auth.log;logformat
*.*;auth,authpriv.none -/var/log/syslog;logformat
|
- 再起動
1
2
|
| service rsyslog restart
service zabbix-agent restart
|
swapトリガーの無効化 †
Raspberry Piのswapを無効にすると、このトリガーがエラーを出すので、無効にする
- [設定]-[テンプレート]-[Template OS Linux]-[トリガー]
- [Lack of free swap space on {HOST.NAME}]のステータス[有効]をクリックし、[無効]にする
監視端末のリソース状況俯瞰 †
- [設定]-[スクリーン]-[スクリーンの作成]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| -
|
|
!
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| -
|
|
!
-
|
|
|
|
|
!
-
|
|
|
|
|
|
|
Zabbix agentのインストール †
Linux †
- インストール
1
|
| apt-get install zabbix-agent
|
- vi /etc/zabbix/zabbix_agentd.conf
1
2
3
4
|
| Server=<Zabbix serverの名前|IP>
ServerActive=<Zabbix serverの名前|IP>
Hostname=<一意な名前>
HostMetadata=<Pi or Linux(ホストの自動登録で設定した文字列)>
|
- iptables設定
いつもどおりの構成ならば(iptables/Debianへのインストール)
vi /etc/network/if-pre-up.d/iptables
1
2
|
| iptables -A INPUT -p tcp --dport 10050 -m state --state NEW -j ACCEPT iptables -A INPUT -p udp --dport 10050 -m state --state NEW -j ACCEPT
|
- 再起動
1
|
| service zabbix-agent restart
|
Windows †
- 公式サイト(http://www.zabbix.com/jp/download)から取得
- 解凍したものを C:\zabbix などに移動
- conf\zabbix_agentd.win.conf を編集
1
2
3
4
5
6
|
| LogFile=C:\zabbix\zabbix_agents_2.2.14.win\bin\win64\zabbix_agentd.log
LogFileSize=10
Server=<Zabbix serverの名前|IP>
ServerActive=<Zabbix serverの名前|IP>
Hostname=<一意な名前>
HostMetadata=Windows(ホストの自動登録で設定した文字列)
|
- 管理者権限でcmd
1
2
|
| zabbix_agentd -i -c "C:\zabbix\zabbix_agents_2.2.14.win\conf\zabbix_agentd.win.conf"
net start "Zabbix agent"
|
- ファイアーウォールの設定で、inbound, 10050(tcp/udp)を開ける
その他 †
phpMyAdmin †
MySQLを使うので、入れておけば便利
1
2
3
4
5
|
-
!
| apt-get install phpmyadmin
http://<IP>/phpmyadmin
mysqlのrootアカウントなどでログイン
|
opcache †
PHPのopcacheが効いているかを確認したければ、以下のphpファイルを、phpmyadminのディレクトリにでも入れておけば便利
https://github.com/rlerdorf/opcache-status/blob/master/opcache.php
serverからagentへの通信確認 †
1
2
3
|
-
| zabbix_get -s <エージェントがインストールされている端末名|IP> -k agent.version
|
検証時の環境 †
- エージェント
- Raspbian jessie
- Windows 10 Pro x64
参考 †