GWの時間がある内に、こないだ出たZabbix 6.0を試してみようと。
環境
Amazon LightsailでCentOS 8使えないからなー。。とりあえずUbuntu 20.04 LTSでやってみるか、と試して見れば「"E: Unable to locate package zabbix-apache-conf"」とか出てインストールが途中から進まない。仕方ないやここはCentOS 7で。。と思ったらZabbix ServerはCentOS 7をサポートしておらぬ。すごい久しぶりだがAmazon EC2でRHEL 8使うか。。
サイズは、無料枠のt2.microではメモリが全然足りない。2GBのt2.smallで。
あー、EC2のインスタンス起動画面は最近使ってなく知らなんだが、1画面に整理されるようになったんだな。使いやすくて良いことだ。
インストール
Zabbix Packagesのページで以下の設定で。
https://www.zabbix.com/download?zabbix=6.0&os_distribution=red_hat_enterprise_linux&os_version=8&db=mysql
$ sudo -i
# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
# dnf clean all
# dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
# yum install -y mysql-server
# systemctl enable mysqld --now
# mysql -uroot
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
# zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -ppassword -Dzabbix
# sed -i /etc/zabbix/zabbix_server.conf -e 's/^# DBHost=.*/DBHost=localhost/'
# sed -i /etc/zabbix/zabbix_server.conf -e 's/# DBPassword=/DBPassword=password/'
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
Zabbix frontendを構成する
EC2のセキュリティグループにHTTPのインバウンドルールを追加し、Webブラウザで「http://<IPアドレス>/zabbix/
」に接続。
ちなみに、仮想マシンのメモリが1GBだとここでメモリが足りなくなってハングする。
初期ユーザー名/パスワードは「Admin」/「zabbix」。
うんまあ、良いんじゃないか。
ログ監視を設定する
とりあえずZabbix serverの、/var/log/messagesの"ERROR"を監視させてみよう。
https://www.zabbix.com/documentation/current/jp/manual/config/items/itemtypes/log_items
左メニューの「Configuration」>「Hosts」、Zabbix serverの「Items」をクリック。
とりま、以下の感じでログ監視のItemを作成。
※追記、画像は「Type: Zabbix agent」となっているが、これは「Zabbix agent (active)」が良さそう。
Zabbix agentがzabbixユーザーで動作していると/var/log/messagesが読めないため、AllowRootを設定。
https://www.zabbix.com/documentation/current/en/manual/appendix/install/run_agent_as_root
/var/log/messagesのアクセス権を変えるとかの方法もあるが、まあ、そちらの方が受け入れ難いだろう。
SELinuxもまあ無効にする。
# setenfoce 0
# sed -i /etc/selinux/config -e 's/^SELINUX=.*/SELINUX=disabled/'
# sed -i /etc/zabbix/zabbix_agentd.conf -e 's/^# AllowRoot=.*/AllowRoot=1/'
# sed -i /etc/zabbix/zabbix_agentd.conf -e 's/^# User=.*/User=root/'
# mkdir /etc/systemd/system/zabbix-agent.service.d
# cat > /etc/systemd/system/zabbix-agent.service.d/override.conf << EOF
[Service]
User=root
Group=root
EOF
# systemctl daemon-reload
# systemctl restart zabbix-agent
# logger ERROR
エージェントを再起動した後、「logger ERROR
」と実行してしばらくすると、Zabbixの「Monitoring」>「Latest data」の「Log item」にいくつかのイベントが記録される。
まあ、良いんじゃないか。
では、そのトリガーをば設定する。「Configuration」>「Hosts」で、Zabbix serverの「Triggers」をクリック。
まあ、中身はよくわからないが以下の画面のように設定して、「Add」。
設定後、sshセッションでlogger ERRORを実行する。
# logger ERROR
しばらくすると、ZabbixのDashboardにDisasterの問題が一つ登録される。
なお、イベントをCloseしたい場合はAckの「No」をクリックして、「Acknowledge」、「Close problem」。
まとめ
いやまあ、ログ監視にこんな大層なシステムを導入する必要もないとはいつも思うんだが。とかく自分でスクリプトを書いて何かを監視するというのを嫌う人は嫌うというか、それが圧倒的多数な日本のITシステム故。