日本Zabbixユーザー会の田中です。
Zabbix Advent Calendar 2019の3日目の記事です。
小ネタですが、ある程度はカレンダーを埋めたいので投稿します。
発生していた問題
一部の方は気づかれているようですが、Zabbix 4.0.14から4.0.15で、RHEL 7以降用のZabbixエージェントの起動方法に若干の変更が入っています。
具体的には、/usr/lib/systemd/system/zabbix-agent.serviceというファイルの、[Service]セクションに、以下の行が追加されています。
User=zabbix
Group=zabbix
4.4.1から4.4.2でも同様の変更が行われています。
問題発生の原因
これは、OSのディストリビューションによるsystemdを使用したサービスの起動の動作の違いがあったことが原因です。その差を吸収するために追加されたようです。
違いがあった現象の一例としては、環境変数の設定有無の違いがあり、4.4で追加された新しい監視用テンプレートを使用しようとしたときに発覚しました。
より具体的な内容としては、パッケージでZabbixをインストールした場合は、/etc/zabbix/zabbix_agentd.d/userparameter_mysql.confにMySQL監視用のUserParameterの設定があります。
このファイルの、Zabbix 4.0のデフォルトで用意されているファイルとZabbix 4.4で用意されているファイルを見比べていただくとわかるのですが、4.4の方は、環境変数HOMEを明示的に指定しないものとなっています。
環境変数HOMEが明示的に指定されていない場合、特定のディストリビューションでは環境変数HOMEが設定されるようなのですが、RHELやUbuntuでは設定されないので、ホームディレクトリに.my.cnfを用意してもMySQLの監視ができないという状況が発生していました。
そこで、zabbix_agentdをsystemdを使って起動する時に、明示的にユーザーとグループを指定するようにしたようです。
検討と対策の経緯
以下のURLでも議論されていましたが、きっと、より汎用的な監視の設定となるようにするということで、UserParameterでの環境変数HOMEの設定は行わないという方向で決まったということですね。
- Discussion thread for official Zabbix Template DB MySQL
- ZBX-16629 : On ubuntu home environment variable is not set for user zabbix
新しいテンプレート
4.4から本格的に、ガイドラインに合わせた監視用テンプレートの見直しが行われています。
新しいMySQL用のテンプレートは以下のURLにあります。
4.4自体にも取り込まれてはいますが、依存アイテムや保存前処理など新機能も活用して、より多くの監視(Apache HTTP Sever、nginx、RabbitMQ、MySQL、PostgreSQL、各種ネットワーク機器など)ができるようになっているので、4.4以降を使用されている方や、今後、4.4や5.0を使おうと思っている方は新しいテンプレートを参考にしてみてください。
明日は、誰でしょう?
どなたかよろしくお願いします。