Zabbix监控之低级自动发现以及MySQL多实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix监控之低级自动发现以及MySQL多实例相关的知识,希望对你有一定的参考价值。
概述
Zabbix的网络发现是指zabbix server通过配置好的规则,自动添加host,group,template
Zabbix的主动注册刚好和网络发现是相反的,功能基本一致。zabbix agent主动联系zabbix server,server自动添加host,group,template
以上两种方式都是发现host,添加host,而low-level discovery(低级自动发现)更加底层,用于发现item,trigger,graph等等。
2.mysql多实例的低级自动发现
(1)配置3307、3308的实例 [[email protected] ~]# mkdir /data/{3307,3308} -p [[email protected] ~]# chown -R mysql.mysql /data [[email protected] ~]# cp /etc/my.cnf /etc/my3307.cnf [[email protected] ~]# vim /etc/my3307.cnf [mysqld] datadir=/data/3307 socket=/data/3307/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 port=3307 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/data/3307/mariadb.log pid-file=/data/3307/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d [[email protected] ~]# cp /etc/my3307.cnf /etc/my3308.cnf [[email protected] ~]# vim /etc/my3308.cnf [mysqld] datadir=/data/3308 socket=/data/3308/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 port=3308 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/data/3308/mariadb.log pid-file=/data/3308/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d (2)初始化数据库 [[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf Installing MariaDB/MySQL system tables in '/data/3307' ... 171218 12:01:02 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 4804 ... OK Filling help tables... 171218 12:01:02 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 4813 ... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! To do so, start the server, then issue the following commands: '/usr/bin/mysqladmin' -u root password 'new-password' '/usr/bin/mysqladmin' -u root -h linux-node2 password 'new-password' Alternatively you can run: '/usr/bin/mysql_secure_installation' which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the MariaDB Knowledgebase at http://mariadb.com/kb or the MySQL manual for more instructions. You can start the MariaDB daemon with: cd '/usr' ; /usr/bin/mysqld_safe --datadir='/data/3307' You can test the MariaDB daemon with mysql-test-run.pl cd '/usr/mysql-test' ; perl mysql-test-run.pl Please report any problems at http://mariadb.org/jira The latest information about MariaDB is available at http://mariadb.org/. You can find additional information about the MySQL part at: http://dev.mysql.com Consider joining MariaDB's strong and vibrant community: https://mariadb.org/get-involved/ [[email protected] ~]# mysqld_safe --defaults-file=/etc/my3307.cnf & [1] 4825 [[email protected] ~]# 171218 12:01:53 mysqld_safe Logging to '/data/3307/mariadb.log'. 171218 12:01:53 mysqld_safe Starting mysqld daemon with databases from /data/3307 [[email protected] ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf Installing MariaDB/MySQL system tables in '/data/3308' ... 171218 12:03:48 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 5041 ... OK Filling help tables... 171218 12:03:48 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 5049 ... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! To do so, start the server, then issue the following commands: '/usr/bin/mysqladmin' -u root password 'new-password' '/usr/bin/mysqladmin' -u root -h linux-node2 password 'new-password' Alternatively you can run: '/usr/bin/mysql_secure_installation' which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the MariaDB Knowledgebase at http://mariadb.com/kb or the MySQL manual for more instructions. You can start the MariaDB daemon with: cd '/usr' ; /usr/bin/mysqld_safe --datadir='/data/3308' You can test the MariaDB daemon with mysql-test-run.pl cd '/usr/mysql-test' ; perl mysql-test-run.pl Please report any problems at http://mariadb.org/jira The latest information about MariaDB is available at http://mariadb.org/. You can find additional information about the MySQL part at: http://dev.mysql.com Consider joining MariaDB's strong and vibrant community: https://mariadb.org/get-involved/ [[email protected] ~]# mysqld_safe --defaults-file=/etc/my3308.cnf & [2] 5061 [[email protected] ~]# 171218 12:03:56 mysqld_safe Logging to '/data/3308/mariadb.log'. 171218 12:03:56 mysqld_safe Starting mysqld daemon with databases from /data/3308 [[email protected] ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 4972/mysqld tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 5207/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8237/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 866/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2235/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3263/zabbix_agentd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4645/mysqld tcp6 0 0 :::22 :::* LISTEN 866/sshd tcp6 0 0 ::1:25 :::* LISTEN 2235/master tcp6 0 0 :::10050 :::* LISTEN 3263/zabbix_agentd [[email protected] ~]# netstat -tulnp |grep mysql|awk -F "[ :]+" '{print $5}' 3307 3308 3306 (3)编写获取端口号的shell脚本 [[email protected] scripts]# vim discovery_mysql.sh #!/bin/bash #mysql low-lever discovery res=`netstat -lntp|grep mysql |awk -F "[ :]+" '{print $5}'` port=($res) printf '{' printf '"data":[' for key in ${!port[@]} do if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then printf '{' printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}," else [[ "${key}" -eq "((${#port[@]}-1))" ]] printf '{' printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}" fi done printf ']' printf '}' [[email protected] scripts]# sh discovery_mysql.sh |python -m json.tool #采用json格式显示 { "data": [ { "{#MYSQLPORT}": "3307" }, { "{#MYSQLPORT}": "3308" }, { "{#MYSQLPORT}": "3306" } ] } [[email protected] zabbix_agentd.d]# vim discovery_mysql.conf #编辑自定义key UserParameter=discovery_mysql,/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/discovery_mysql.sh [[email protected] ~]# zabbix_get -s linux-node2 -k discovery_mysql #测试server端获取数据 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) {"data":[]} #这里报错是因为netstat -tulnp的参数-p在执行时需要root的权限,这里使用suid的方式进行授权 [[email protected] ~]# chmod u+s `which netstat` [[email protected] ~]# ll `which netstat` -rwsr-xr-x. 1 root root 155000 8月 3 17:17 /usr/bin/netstat [[email protected] ~]# zabbix_get -s linux-node2 -k discovery_mysql {"data":[{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"},{"{#MYSQLPORT}":"3306"}]} (4)编辑自定义key,获取每个端口的状态数据 [[email protected] zabbix_agentd.d]# cat userparameter_mysql.conf UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -h 127.0.0.1 -P $1 -N | awk '{print $$2}' 修改不同端口的mysql密码: [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306 [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307 [[email protected] zabbix_agentd.d]# mysqladmin -h 127.0.0.1 -uroot password '123456' -P3308 测试是否正常 [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3306 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3307 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3307 | +---------------+-------+ [[email protected] zabbix_agentd.d]# mysql -uroot -p123456 -h 127.0.0.1 -P3308 -e "use mysql;show GLOBAL VARIABLES like 'port';" +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3308 | +---------------+-------+ zabbix_get测试是否能正常获取数据: [[email protected] ~]# zabbix_get -s linux-node2 -k mysql.status[3306,Bytes_sent] 1808
3.创建发现规则
这里直接在linux-node2上进行创建
"Configuration"-->"Host"-->"linux-node2"-->"Discovery"-->"Create discovery rule"-->"Add"
创建 Item prototypes,其实就是一个创建一个 item
Item prototypes (0)>>create Item prototypes,按照官方模板来配置。这里配5个展示
再查看Host中的item项,会多出以下监控项:
查看监控最新数据图表,即可看到3306、3307、3308的数据库状态信息:
以上是关于Zabbix监控之低级自动发现以及MySQL多实例的主要内容,如果未能解决你的问题,请参考以下文章