ZabbixテンプレートMySQLの使用に関する混乱(800以上の項目)

ZabbixテンプレートMySQLの使用に関する混乱(800以上の項目)

このテンプレートの全体的な使い方を説明してください。リンクテンプレート

Googleでたくさん検索して説明どおりに構成しましたが、まだ使用できませんね。完全に説明できますか? 2つのcentos 7.zabbixバージョン3.4があります。 zabbix-agentを設定します。 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'

UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/etc/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
UserParameter=mysql[*],/etc/zabbix/mysql_check.pl $1 $2 $3 $4

ユーザーを作成しますmysql

CREATE USER 'david'@'%' IDENTIFIED BY 'david123';
    ---------------------------------------------------------------
MariaDB [(none)]> select user,host from mysql.user;
+--------------+-----------+
| user         | host      |
+--------------+-----------+
| cluster_user | %         |
| david        | %         |
| dav          | 127.0.0.1 |
| root         | 127.0.0.1 |
| root         | ::1       |
| dav          | db1       |
| root         | db1       |
| root         | db3       |
| dav          | localhost |
| fazeli       | localhost |
| root         | localhost |
+--------------+-----------+
11 rows in set (0.00 sec)
------------------------------------------------
     MariaDB [(none)]> show databases;           
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
    ------------------------------------------------
    MariaDB [(none)]> show grants for 'david'@'%';  
+---------------------------------------------------------------------------------------------------------------+
| Grants for david@%                                                                                            |
+---------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'david'@'%' IDENTIFIED BY PASSWORD '*76E1DED67C484EF41716EFA3545C12098380B713' |
+---------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
------------------------------------------------

私が作った.my.cnf場所/etc/zabbix

[mysql]
user=david
password=david123
[mysqladmin]
user=david
password=david123

私のperlスクリプトmysql_check.pl/etc/zabbix

use strict;
use Data::Dumper;
use DBI;
my $user = shift;
my $password = shift;
my $type = shift;
my $search_like = shift;
my $dsn = "DBI:mysql:database=mysql;host=db2";
my $tmp_file = '/tmp/zbx_mysql.status';
my $zbx_sender_file = '/usr/bin/zabbix_sender';
my $zabbix_sender = '/usr/bin/zabbix_sender';

マクロを設定しました。 (スクリーンショットを参照)。

マクロ1 マクロ2

権限ファイル:

[root@db2 zabbix]# ll
total 92
-rw-r--r-- 1 root root 78654 Jan 24 06:20 mysql_check.pl
-rw-r--r-- 1 root root 11124 Jan 21 10:28 zabbix_agentd.conf
drwxr-xr-x 2 root root    38 Jan 21 09:52 zabbix_agentd.d

ありがとうございます。

ベストアンサー1

メモ:スクリーンショットにMySQLデータベースの実際のルートパスワードが含まれている場合は、できるだけ早くパスワードを変更してください。

このUserParameter行は、mysql_check.plテンプレートで指定できる4つのパラメータを示しています。

UserParameter=mysql[*],/etc/zabbix/mysql_check.pl $1 $2 $3 $4

テンプレートに付属のソースはmysql_check.pl次のように始まります。

#!/usr/bin/perl

use strict;
use Data::Dumper;
use DBI;

my $user = shift;
my $password = shift;

my $type = shift;

my $search_like = shift;

my $dsn = "DBI:mysql:database=mysql;host=<replace mysql host>";
my $tmp_file = '/tmp/zbx_mysql.status';
my $zbx_sender_file = '/tmp/zbx_mysql.sender';

[...continues...]

あなたの質問にこの部分の重要/編集された行だけを投稿したとします。 2つの問題があります。

1.)CASはまた、正確な引用が不足していることを指摘しました。

明らかな間違いは、mysql_check.plの文字列davを引用する必要があるということです:my $ user = 'dav';。私はzabbixについてよく知らないので、もう助けることはできません。 –カス

私はあなたがこの問題を解決したと仮定します。

2.)これら4つのshiftコマンドは、受け取ったコマンドライン引数を選択し、mysql_check.pl順番に変数に入れる必要があります。

元のバージョンでは、最初のパラメータが変数に格納され$user、2番目のパラメータが変数に格納される$password式です。ただし、最初の2つのコマンドをハードコードされた値に置き換えましたshift。これにより、最初のパラメータ(明らかにテンプレートを介して渡されたスクリーンショットマクロのMySQLユーザー名)がに割り当てられ、$type代わりに最初と4番目の$userパラメータが割り当て$search_likeられます。$passwordコマンドラインパラメータは使用されません。これら2つのパラメータは、何を確認するかを示しますmysql_check.pl

スクリプトコードをさらに詳しく見ると、変更されたバージョンはmysql_check.plユーザー名を値として解釈しようとし、無意味な操作を実行し、何も返さないか、$typeテンプレートから解析できない項目を返します。

shiftからコマンドを削除しないでくださいmysql_check.pl。何らかの理由でユーザー名とパスワードをハードコードする必要がある場合は、次の手順を実行してください。

[...]
use DBI;

my $user = shift;
my $password = shift;

#hard-coded user info for testing only; these should come from the zabbix macro instead
$user = 'dav';
$password = 'dav123456';

my $type = shift; 
my $search_like = shift;
[...]

また、Zabbixマクロに似ており、${MYSQL_USER}グローバル${MYSQL_PWD}レベルでは「dav」と「dav123456」の値を割り当てますが、ホストレベルでは「root」と「」の値をそれぞれ割り当てます。ホストレベルの割り当てはグローバル割り当てよりも優先されるため、テンプレートは無効な値を使用します。

おすすめ記事