Zabbix 5.0 + Zabbix Agent 2でMySQLのPing監視ができない→解決

zabbix-mysql-ping
  • URLをコピーしました!

以前、Zabbix Serverを3系から5.0アップグレードした記事をご紹介した際、ついでにエージェントZabbix Agent2に入れ替えました。

MySQLMariaDB)を入れているデータベースサーバZabbixエージェントも同じように入れ替えたところ、正常に稼働しているにも関わらず、何故かずっと「MySQL is down」の障害が常に表示されるようになりました。
これをアップグレード前と同じように正常な監視ができるように解決しました!

目次

解決できなかったパターン

よく目にする情報では、エージェント側の/etc/zabbix/zabbix_agent2.d/配下にuserparameter_mysql.confというファイルを作成するといったもの。
書き方は違えど、大体こんな感じですね。

ここに出てくる「my.cnf」とは、DB接続情報を記したファイルです。
内容はこのようなものです。

ちなみに、公式のGitHubで公開しているuserparameterの内容ではこんな感じ。

いずれもUserParametermysql.pingキーを指定し、mysqladminコマンドDBに対して疎通確認を行うもの。
しかし、上記のように設定してエージェントを再起動しても正常に起動せず、ログに以下のようなエラーが吐かれます。

これをGoogle翻訳で直訳すると、

とのこと。
注目すべきは「キーはすでに使用されています」ってところです。
それでは本当にキーが設定されているか、Zabbix Serverの管理画面から、

  • [設定]→[テンプレート]→[Template App MySQL]→[アイテム]→[MySQL status]

を見てみましょう。
確かに、キーの項目に「mysql.ping」が存在しました。
これは想像ですが、Zabbix Serverの4系まではこのキーがなく別の方法で監視していて、5.0(またはZabbix Agent2)以降の場合は一旦アイテムを削除してuserparameterを追加するか、既存のアイテムを改造するかの2択だと思いました。

解決したパターン

ここからいよいよ本題です!
調べていくと、そもそも監視ができてない理由は、上記のmy.cnfのようなDBへの接続情報が無かったからだと思われます。
まずは、Zabbix公式サイトに掲載されている、こちらのページをご覧ください。

今回はZabbix Agent2を対象としていますので、[Available solutions]の[Template DB MySQL By Agent2]タブをクリックしてください。
それから下に進み、[Items collected]章にあるテーブルの1行目をご覧ください。
Name項目がアイテム名同じ、[MySQL: Status]となっています。
注目すべきは右側の[Key and additional info]の内容です。
[mysql.ping]の後ろにデフォルトのアイテム設定にはないマクロ3つあると思います。

名前説明
{$MYSQL.DSN}tcp://host:port や unix:/path/to/socket/などのシステムデータソース名
{$MYSQL.USER}MySQLユーザー名
{$MYSQL.PASSWORD}MySQLユーザーパスワード

これは、同じページの[Zabbix configuration]章の[Macros used]の中に説明があります。
つまり、先程のアイテムキーをこの内容に書き換え、監視対象のホスト(ここではDBサーバ)のマクロに、この3つ追加してあげればと考えました。

[MySQL status]アイテムのキーを更新

上記と同様にアイテム設定に進み、

  • [設定]→[テンプレート]→[Template App MySQL]→[アイテム]→[MySQL status]

キーの項目を以下のように変更します。

一応「テスト」してみて、監視できることを確認できれば「更新」ボタンを押して登録完了です。

ホストのマクロに値を登録

次に、上記のキーに設定した3つのマクロに、それぞれ値を登録してあげます。
対象ホストマクロの設定画面に進み、

  • [設定]→[ホスト]→[監視対象ホスト]→[マクロ]

追加」をクリックして、マクロと値、説明(任意)を3つ登録します。

マクロ説明
{$MYSQL.DSN}[192.168.XXX.XXXやlocalhostなど]データソース名
{$MYSQL.USER}zabbixagentMySQLユーザー名
{$MYSQL.PASSWORD}********MySQLユーザーパスワード

以上を入力して「更新」ボタンを押下したら設定完了です。
これで、正常にMySQL監視ができたと思います。

余談

ちなみに、[Template App MySQL]テンプレートにもマクロを登録すると、ホストマクロの「継承したマクロとホストマクロ」にテンプレートから継承されたマクロが表示されます。
しかし、テンプレートマクロに登録した値は、ホストマクロでは変更することができません。
もし、同じテンプレートを使用して複数のDBサーバ(MySQL)を監視する場合に困りますので、ここはホストマクロに登録した方が無難だと思いましたとさ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次