Zabbix 4.4.0で標準テンプレートとして入っている Template DB MySQL について

お世話になります。
Zabbix 4.4.0で標準テンプレートとして入っている Template DB MySQL についてご質問させてください。

Zabbix 4.4.0
mysql 8.0.17
CentOS 7.7

上記環境にて、下記手順を参考に設定をしましたが、値が取得できませんでした。
https://www.zabbix.com/integrations/mysql

zabbix_server.logには下記が出力されております。
何か方法はございますでしょうか?

よろしくお願いいたします。
-----------------------
21111:20191113:175126.613 item "Zabbix server:mysql.get_status_variables["{$MYSQL.HOST}","{$MYSQL.PORT}"]" became supported
21111:20191113:175127.641 item "Zabbix server:mysql.ping["{$MYSQL.HOST}","{$MYSQL.PORT}"]" became supported
21111:20191113:175128.680 error reason for "Zabbix server:mysql.version["{$MYSQL.HOST}","{$MYSQL.PORT}"]" changed: Preprocessing failed for:
1. Failed: cannot perform regular expression "(Server version)\s+(.+)" match for value of type "string": pattern does not match
21144:20191113:175202.076 discovery rule "Zabbix server:mysql.db.discovery["{$MYSQL.HOST}","{$MYSQL.PORT}"]" became supported
21111:20191113:175209.906 error reason for "Zabbix server:mysql.dbsize["{$MYSQL.HOST}","{$MYSQL.PORT}","ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)"]" changed: Special characters "\, ', ", `, *, ?, [, ], {, }, ~, $, !, &, ;, (, ), <, >, |, #, @, 0x0a" are not allowed in the parameters.
noname.xml:1: noname.xml:1: parser error : parser Start tag expected, '<' not found
noname.xml:1: error : parser Start tag expected, '<' not found
error : ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
Start tag expected, '<' not found
^
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
^
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: parser error : Start tag expected, '<' not found
noname.xml:1: parser noname.xml:1: error : ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
Start tag expected, '<' not found
^
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
parser noname.xml:1: error : Start tag expected, '<' not found
parser ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
error : Start tag expected, '<' not found
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: parser noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
^
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: noname.xml:1: parser error : noname.xml:1: Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
parser noname.xml:1: error : parser Start tag expected, '<' not found
error : noname.xml:1: Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
^
parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
noname.xml:1: noname.xml:1: parser error : Start tag expected, '<' not found
noname.xml:1: parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
parser error : Start tag expected, '<' not found
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
^
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
-----------------------

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー ngc7293 の写真

使っていないので外しているかもしれませんが、ログの最初の方にヒントがあります。

21111:20191113:175209.906 error reason for "Zabbix server:mysql.dbsize["{$MYSQL.HOST}","{$MYSQL.PORT}","ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: NO)"]"

このログから mysql のアカウント「zabbix」で「localhost」からのアクセスが許可されていません。
※そして、その応答文字列をパージングしようとして大量のログを吐いている。。。

考えられる原因は以下などがあげられます。

・mysql側のアカウント/アクセス権限設定不備
・テンプレートに定義されているマクロが環境に適合していない

ユーザー myyam の写真

ご返信ありがとうございます。

DBユーザーについては、Template DB MySQL用にDBユーザー(zbx_monitor)を作成し、/var/lib/zabbix/my.cnfに記述しております。

先程のログに出ていたzabbixユーザーはzabbix自体をインストールした際のユーザーですが、このユーザーも関係しているのでしょうか。

ユーザー TNK の写真

以下のURLで話題になっている問題の可能性があります。
https://support.zabbix.com/browse/ZBX-16629
https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-disc...
https://www.zabbix.com/forum/zabbix-troubleshooting-and-problems/389399-...

Zabbix 4.4から追加されたMySQL用のテンプレート使用した場合、
現時点では特定のディストリビューションでしか正常に動きません。
CentOS 7を使用されているようですので、上記のURLでも紹介して
いるように、明示的にconfファイル内のUserParameterの行で明示
的に環境変数HOMEを設定するようにしてみてください。

ユーザー myyam の写真

ご返信ありがとうございます。

URL拝見いたしました。確かに症状としては似ていますね。

下記の様にHOMEを明示的に設定し、エージェントを再起動してみましたが、挙動としては変わらなかったです。

------------------------------------------------
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

↓↓↓↓

UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*],HOME=/var/lib/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
------------------------------------------------

何か方法はありますでしょうか・・?

ユーザー myyam の写真

ご返信ありがとうございます。

URL拝見いたしました。確かに症状としては似ていますね。

下記の様にHOMEを明示的に設定し、エージェントを再起動してみましたが、挙動としては変わらなかったです。

------------------------------------------------
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

↓↓↓↓

UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*],HOME=/var/lib/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
------------------------------------------------

何か方法はありますでしょうか・・?

ユーザー myyam の写真

すみません、二重投稿になってしまったようです。

noname.xml:1: ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password:
parser ^

上記の様に Access denied for user 'zabbix' となっておりますが、監視用に作成したユーザーは zbx_monitor というユーザーですので、
/var/lib/zabbixに配置したmy.cnfが正常に読めていないという事かと思われます。

ユーザー TNK の写真

ファイル名を「my.cnf」ではなく「.my.cnf」にしてみてください。

ユーザー myyam の写真

ご返信ありがとうございます。

my.cnfのファイル名を”.my.cnf”に変更したところ、正常に値を取得出来るようになりました。
下記手順でOKでした。

□userparameter_mysql.confの作成

vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
-------------------------------------
#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 4.2
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default)
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user=zbx_monitor
#password=
#

UserParameter=mysql.ping[*],HOME=/var/lib/zabbix mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*],HOME=/var/lib/zabbix mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*],HOME=/var/lib/zabbix mysql -h"$1" -P"$2" -sNX -e "show slave status"
-------------------------------------

□モニター用mysqlユーザーの作成

CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<任意のパスワード>';
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';

□.my.cnfの作成

mkdir /var/lib/zabbix
vi /var/lib/zabbix/.my.cnf
-------------------------------------
[client]
user=zbx_monitor
password="**************"
-------------------------------------
chown -R zabbix. /var/lib/zabbix
chmod -R 700 /var/lib/zabbix

□zabbix-agent再起動

systemctl restart zabbix-agent

□zabbix GUIからTemplate DB MySQLを適応

しかし、下記のアイテムのみが値0で取得されております。
0として値が取得できているので、動作としては正しいのかな?と思いますが、
依存アイテムをzabbix_getで確認したい場合、どのような書式になるのでしょうか?

Aborted clients per second
Aborted connections per second
Connection errors accept per second
Connection errors internal per second
Connection errors max connections per second
Connection errors peer address per second
Connection errors select per second
Connection errors tcpwrap per second
Created tmp tables on disk
Slow queries per second

ユーザー TNK の写真

依存アイテムはzabbix_getコマンドでは取得できません。
親のアイテムならできるかもしれませんが、取得できるかどうかは、
タイプがZabbixエージェントのアイテムかどうか、テンプレートの
内容をご自身で確認してみてください。

ユーザー myyam の写真

ご返信ありがとうございます。

依存アイテムはzabbix_getコマンドでは取得不可なんですね。理解しました。

大変助かりました。ありがとうございます。