去年の5月にZabbix4.0に乗り換えたばかり()なのだが、リリースされたZabbix5.0のインストールに挑戦することにした。最初はデータの移行をしようと思ったのだが、テンプレートが結構変わっているのをみて、こりゃ移行はあきらめた方がよさそうだなと思いなおした。過去のログを捨てるのは惜しいが、そもそもZabbix監視はそういうもんじゃないと割り切る方が楽だ。というわけで本稿はごく普通にZabbix5.0をCentOS8にインストールするだけの退屈な記事である。
Zabbix Serverの新規インストール
最初にサーバを作る。これまではさくらのクラウド上のcore2/memory4GBのVMで問題なく運用できていたので、今回もそれで作る。古いサーバはとりあえず置いといて別のサーバを新しく起動する。
Zabbixのインストール要件をチェックする。
必要なのは(あまり変わっておらず)MySQL、Apache、PHPだ。またPHPの各種ライブラリもきちんと指定されている。個人的にはデータをたくさん保存しておきたいので、/var/lib/mysql用に別のディスクを割り当てたりしているが、まあその辺は個人の趣味でお好きなように。
さて、まずはMySQLをインストールする。
dnf install mysql-server
MySQLのチューニングについてはあまりコメントはない。メモリ4GBのサーバについて、自分はだいたいこんな感じ。
character-set-server = utf8
collation-server = utf8_bin
innodb_buffer_pool_size = 1G
innodb_flush_method = O_DIRECT
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_file_per_table = 1
設定できたら起動する。
systemctl start mysqld
CentOS8のmysqlにはrootのパスワードが設定されないので、適当な手段でパスワードを設定する。それが済んだらZabbix用にデータベースを初期化する。ちなみにこのステップは、Zabbixのインストラクション通りではエラーで通らない。MySQL8.0の構文が変わってgrant文1つではユーザ作成と権限付与が同時にできないので、createとgrantを分けなければならない。
[root@zabbix ~]# mysql -u root -p
create database zabbix character set utf8 collate utf8_bin;
create user 'zabbix'@'localhost' identified by 'PASSWORD';
grant all on zabbix.* to 'zabbix'@'localhost' with grant option;
\q
次にApacheとPHPをインストールする。
dnf install httpd php php-{gd,bcmath,xml,mbstring}
これでZabbixが指定するライブラリは全部入るはずだ。
Zabbixのリポジトリを取ってくる。
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
そうしておいてdnfでインストールする。
dnf clean all
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
これでZabbixの関連ファイルがセットアップされる。続いてデータベースを初期化する。
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u root zabbix
次にZabbixサーバの設定ファイルに、データベースのパスワードを設定する。/etc/zabbix/zabbix_server.conf
を開いて、DBPassword
を設定する。
DBPassword=PASSWORD
/etc/php-fpm.d/zabbix.confを開いてタイムゾーンを設定する。最終行がヨーロッパのどこかの国になっているので、こんな風に書き換える。
; php_value[date.timezone] = Europe/Riga
↓
php_value[date.timezone] = Asia/Tokyo
80番ポートを開ける。
firewall-cmd --permanent --add-service http
firewall-cmd --reload
最後にもうひとつ、Zabbixサーバのエージェントのconfigをチェックする。設定変更しなくてもそのままで動くが、Hostnameをデフォルトから変えたいならここでやっておいたほうがいい。
これで準備完了だ。
起動と準備
いよいよ起動する。
systemctl start httpd php-fpm zabbix-server zabbix-agent
無事に起動出来たら、サーバのHTTPポートにブラウザでアクセスする。Zabbixの設定画面が見えるはずだ。
あとは画面のインストラクションに従って設定を続けていけばよい。ぶっちゃけこの手順が必要なのかちょっと疑問だが、まあ一応やっておく。最後にログイン画面が出てくる。
ここがちょっとひどいのだが、Zabbixは5.0になってもいまだにAdmin/zabbixのデフォルトパスワードでログインさせようとする。なので、大急ぎでログインして、超特急でパスワードを変更しなければならない。当サイトでは何度も取り上げているが、グローバルIPアドレスを割り当てたサーバは常にポートスキャンを受けており、HTTPでアクセスできると知られるやあらゆるタイプのアクセスを施行される。自分だったら、サーバでZabbixが動いていると知ったらまずこの組み合わせを絶対に試す。まあとにかく、起動したらまず最初にパスワードを変更することを強くお勧めする。
パスワードの変更方法など、Zabbixの使い方は別途詳しく説明しているサイトや書籍をご覧いただきたい。
新旧サーバの入替
新サーバの準備が整ったら、サーバを入れ替える。というのもagent側はIPアドレスでアクセス制限がかかっている状態だからだ。新サーバのIPアドレスで書き換えてもよいが、ちょいと面倒なので今回は入れ替えにする。
さくらのクラウドの場合、これはディスクの付け替えで実現できる。ただしIPアドレスの変更は、手動でやるかディスクの書き換え機能でやらなければならない。手順は省略する。
インストールした新サーバを適切なIPアドレスで起動したら、zabbix_getコマンドでagentからキーが取れるかを試す。これで取れれば、だいたいの設定は正しく設定できていると確認できる。
[root@zabbix ~]# dnf install zabbix-get
[root@zabbix ~]# zabbix_get -s agent.machine.example.jp -k agent.ping
1
後はUIから設定をしていけばOKだ。
agentのアップグレード
serverをアップグレードしたら、合わせてagentもアップグレードしておきたい。agentの方は簡単にできる。まずagentを止める。
systectml stop zabbix-agent
CentOS8ならば
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
CentOS7ならば
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
を実行してリポジトリをアップグレードする。そして以下のようにしてパッケージをアップグレードする。
dnf clean all
dnf upgrade zabbix-agent
次にconfigを見直す。手っ取り早いのは新しいconfigでオーバーライトしてしまうことだ。たぶん/etc/zabbix/zabbix_agentd.conf.rpmnew
になっていると思うので、そちらを使うようにする。
cd /etc/zabbix
mv zabbix_agentd.conf zabbix_agentd.conf.old
mv zabbix_agentd.conf.rpmnew zabbix_agentd.conf
こうしておいて、zabbix_agentd.confのパラメータを適切に書き換える。ポイントは以下の3つだろう。
- Server=
- ServerActive=
- Hostname=
書き換えたら再起動して完了だ。
systemctl start zabbix-agent
ざっと使ってみた印象
冒頭でも少し触れたが、テンプレートの構造が4.0から大きく変わっている。たとえばLinux OSのテンプレートは、多数のモジュールの集合になっていて、以前に比べて細かいメトリックを取るようになっている。自分はZabbixの最新版をきめ細かく追いかけているわけではないので、どういう経緯でこうなったのか理由は知らないのだが、これがよいことかどうかは判断がつかない。なんかちょっと管理が面倒だなあ、という気はする。
MySQL監視テンプレートも入れ替えてみたが、「Buffer poolが余っています」警告が出るようになってしまい、なんか痛し痒しという感じだ。フォーラムを見に行ったら「どうやって警告を消しますか」という質問が立っていて、その返答が「壊れていないのなら直さない」だった。まあそうだけどさあ、という気持ちになった。
総合的には、UIはわかりやすくて使いやすくなったが、グラフの配色とポイントにドットを置くようになったのはどうかな、と思う。