このテンプレートの全体的な使い方を説明してください。リンクテンプレート
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';
マクロを設定しました。 (スクリーンショットを参照)。
権限ファイル:
[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」と「」の値をそれぞれ割り当てます。ホストレベルの割り当てはグローバル割り当てよりも優先されるため、テンプレートは無効な値を使用します。