zabbix低级自动发现之mysql多实例
1、低级自动发现概述
zabbix的低级自动发现(LLD)适用于监控多实例,监控变化的数据(分区、网卡)。
自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项。此外,可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控项。
在zabbix中,支持六种类型的发现项目:
系统文件的发现
网络接口的发现
CPU和CPU内核的发现
SNMP OID的发现
使用ODBC SQL查询的发现
Windows服务的发现
用户可以自己定义发现类型,只要它们遵循特定的JSON协议。
发现过程的一般架构如下。
首先,用户在"配置"→"模板"→"发现"列中创建一个发现规则。发现规则包括(1)发现必要实体(例如,文件系统或网络接口)的项目和(2)应该根据该项目的值创建的监控项,触发器和图形的原型
发现必要实体的项目就像其他地方所看到的常规项目:服务器向该项目的值询问Zabbix agent(或者该项目的任何类型的设置),agent以文本值进行响应。区别在于agent响应的值应该包含特定JSON格式的发现实体的列表。这种格式的自定义检查者发现的细节才是最重要的,因为返回值必须包含宏→值对。例如,项目"net.if.discovery"可能会返回两对键值:"{#IFNAME}"→"lo"和"{#IFNAME}"→"eth0"。
这些宏用于名称,键值和其他原型字段中,然后用接收到的值为每个发现的实体创建实际的监控项,触发器,图形甚至主机。
当服务器接收到发现项目的值时,它会查看宏→值对,每对都根据原型生成实际监控项,触发器和图形。在上面的"net.if.discovery"示例中,服务器将生成环路接口"lo"的一组监控项,触发器和图表,另一组用于界面"eth0"。
2、mysql多实例
2.1 什么是MySQL多实例
MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务
2.2 MySQL多实例的特点
有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务
节约服务器资源
资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降
2.3 部署mysql多实例的两种方式
第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便
第二种是通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理
3、mysql单实例监控
即为主机链接mysql模板,进行监控,查看最新数据

4、开启mysql多实例
4.1 准备配置文件
[root@db01 ~]# cp /etc/my.cnf /etc/my3307.cnf
[root@db01 ~]# vim /etc/my3307.cnf
[mysqld]
datadir=/data/3307/
socket=/data/3307/mysql.sock
port=3307
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/data/3307/mysqld.log
pid-file=/data/3307/mysqld.pid
[root@db01 ~]# cp /etc/my3307.cnf /etc/my3308.cnf
[root@db01 ~]# sed -i 's#3307#3308#g' /etc/my3308.cnf
4.2 初始化数据库
初始化数据库3307
[root@db01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
[root@db01 ~]# mysqld_safe --defaults-file=/etc/my3307.cnf &
初始化数据库3308
[root@db01 ~]# mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
[root@db01 ~]# mysqld_safe --defaults-file=/etc/my3308.cnf &
4.3 检查多实例是否正常
[root@db01 ~]# netstat -lntup|grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1648/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 5434/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 6021/mysqld
[root@db01 ~]# mkdir /data/3306
[root@db01 ~]# ln -s /var/lib/mysql/mysql.sock /data/3306/
检查
[root@db01 ~]# find /data -name "*.sock"
/data/3307/mysql.sock
/data/3308/mysql.sock
/data/3306/mysql.sock
[root@db01 ~]# chmod 755 /data/*
[root@db01 ~]# ll -d /data/*
drwxr-xr-x 2 root root 23 6月 21 09:58 /data/3306
drwxr-xr-x 5 mysql root 4096 6月 21 09:48 /data/3307
drwxr-xr-x 5 mysql root 4096 6月 21 09:53 /data/3308
[root@db01 ~]# netstat -lntp|awk -F "[ :]+" '/mysqld/{print$5}'
3306
3307
3308
5、编写脚本并测试
编写脚本获取多实例并输出为json格式
[root@db01 ~]# mkdir /etc/zabbix/scripts
[root@db01 ~]# cd /etc/zabbix/scripts
[root@db01 scripts]# vim discover.sh
#!/bin/bash
#mysql low-level discovery
res=`sudo netstat -lntp|awk -F "[ :\t]+" '/mysqld/{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 '}\n'
脚本中需要为zabbix用户授权netstat的命令
方法一:
sed -i '98a zabbix\tALL=(ALL)\tNOPASSWD: /bin/netstat' /etc/sudoers
sed -i 's@^Defaults requiretty@#Defaults requiretty@g' /etc/sudoers
方法二:
去掉脚本的sudo,添加suid
usermod -s /bin/bash zabbix
chmod u+s /usr/bin/netstat
测试脚本
[root@db01 scripts]# sh discover.sh
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
6、自定义key
[root@db01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@db01 zabbix_agentd.d]# vim mysql.conf
UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.sh
[root@db01 zabbix_agentd.d]# systemctl restart zabbix-agent.service
在server端命令行测试
[root@zabbix ~]# zabbix_get -s 192.168.1.51 -k mysql.discovery
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}
增加自定义key
[root@db01 zabbix_agentd.d]# vim mysql.conf
UserParameter=mysql.discovery,sh /etc/zabbix/scripts/discover.sh
UserParameter=mysql-status[*],echo "show global status where Variable_name='$2';" |mysql -S /data/$1/mysql.sock -N | awk '{print $$2}'
UserParameter=mysql-ping[*],mysqladmin -S /data/$1/mysql.sock ping | grep -c alive
UserParameter=mysql-version,mysql -V
[root@db01 zabbix_agentd.d]# systemctl restart zabbix-agent.service
在server端命令行进行测试
[root@zabbix ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3306]
1
[root@zabbix ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3307]
1
[root@zabbix ~]# zabbix_get -s 192.168.1.51 -k mysql-ping[3308]
1
7、server端web界面操作
创建自动发现规则,添加监控项原型,触发器类型,图形原型,可以参照系统已有的规则进行创建
为了简化操作,直接导入做好的模板并为主机链接模板

成功链接模板后查看最新数据

部分参考来源:https://www.qstack.com.cn/archives/108.html
zabbix低级自动发现之mysql多实例的更多相关文章
- Zabbix学习之路(九)之低级自动发现以及MySQL多实例
1.概述 Zabbix的网络发现是指zabbix server通过配置好的规则,自动添加host,group,template Zabbix的主动注册刚好和网络发现是相反的,功能基本一致.zabbix ...
- 016-zabbix低级自动发现以及MySQL多实例
1.概述 Zabbix的网络发现是指zabbix server通过配置好的规则,自动添加host,group,template Zabbix的主动注册刚好和网络发现是相反的,功能基本一致.zabbix ...
- Zabbix低级主动发现之MySQL多实例
接上篇:Zabbix自动发现与主动注册 在一个agent安装一个maraidb 拷贝一个原始配置文档并且修改配置用于开启多实例 按照配置文件初始化数据库 mysql_install_db --user ...
- Zabbix--06主动模式和被动模式、低级自动发现、性能优化、
目录 一. Zabbix主动模式和被动模式 1.克隆模版 2.修改克隆后的模版为主动模式 3.修改监控主机关联的模版为主动模式 4.修改客户端配置文件并重启 5.查看最新数据 二.Zabbix低级自动 ...
- zabbix自动发现监控mysql
一. 数据库给只读权限 1.1 grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; flush privileges; ...
- 【Zabbix】Zabbix Server自动发现
Zabbix自动发现 由于有上百台的虚拟机需要监控,如果一个个去添加配置,费时费力.Zabbix的自动发现,可以自动发现需要监控的机器,监控相应指标. 前置条件 安装部署好Zabbix Server. ...
- zabbix使用自动发现监控esxi的磁盘存储storage
zabbix使用自动发现监控esxi的磁盘存储storage 在任意一台可以访问vcenter的zabbix-agent服务器上添加exsi的磁盘监控模板即可 创建模板过程: custom.esxi. ...
- zabbix的自动发现、自定义添加监控项目、配置邮件告警
1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...
- 01 - zabbix | LLD自动发现
01 - zabbix | LLD自动发现 1. 原理 zabbix支持设置变量,用{#VAR_NAME}来表示.然后有一些系统保留的变量 2. 设置 2.1 交换机电源自动发现 名字写好后进进入 ...
随机推荐
- UVA 11478(差分约束 + 二分)
题意: 给定一个有向图,每条边都有一个权值,每次你可以选择一个结点和一个整数的,把所有以v为终点的边的权值减去d, 把所有以v为起点的边的权值加上d 最后要让所有边的权的最小值非负且尽量大 代码 #i ...
- oracle 查看表空间的脚本
SELECT upper(f.tablespace_name) "表空间名", d.Tot_grootte_Mb "表空间大小(M)", d.Tot_groot ...
- Codeforces Round #355 (Div. 2) C 预处理
C. Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- linux查看日志的方法
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- windows 系统下git 的安装
在linux系统下,可以直接在命令窗口安装和使用git.但是,在windows系统下,想要达到同样的效果,可以安装git,使用git bash到达效果.具体安装步骤如下: 第一步:官网上下载git 网 ...
- Unicode字符集和多字节字符集关系
在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset). 在最初的时候,Internet上只有一种字符集—— ...
- openGL初学函数解释汇总
openGL初学函数解释汇总 1.GLUT工具包提供的函数 //GLUT工具包所提供的函数 glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使 ...
- wcf常用的概念
常见的服务行为包括实例控制.并发控制.元数据发布等 在WCF中,有三种消息交换模式:数据报模式.请求-响应模式.双工模式. 在WCF中一共包含了4种契约,分别是服务契约.数据契约.错误契约和消息契约. ...
- [bzoj2190][SDOI2008]仪仗队 ——欧拉函数
题解 以c点为(0, 0)建立坐标系,可以发现, 当(x,y)!=1,即x,y不互素时,(x,y)点一定会被点(x/n, y/n)遮挡. 所以点(x, y)被看到的充分必要条件是Gcd(x, y) = ...
- 【git】Git 常用命令大全
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.