zabbix自动发现mysql端口并监控

一、需求:

因为我们是游戏业务,要用到mysql,一个服务器上面跑多个mysql实例也是很正常。如果单独手动一台台修改agent.conf,添加web监控,太费时费力。所以就想的要用zabbix 的自动发现来监控

二、配置Agent

1.编写自动发现端口脚本

[[email protected] ~]# cat /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh 
#!/bin/bash
mysql() {
            port=($(sudo netstat -tpln | awk -F "[ :]+" ‘/[m]ysql/‘ | awk -F: ‘{print $4}‘))
            printf ‘{\n‘
            printf ‘\t"data":[\n‘
               for key in ${!port[@]}
                   do
                       if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
              socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F ‘=‘ ‘{print $10}‘|cut -d ‘ ‘ -f 1`
                          printf ‘\t {\n‘
                          printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"
                     else [[ "${key}" -eq "((${#port[@]}-1))" ]]
              socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F ‘=‘ ‘{print $10}‘|cut -d ‘ ‘ -f 1`
                          printf ‘\t {\n‘
                          printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
                       fi
               done
                          printf ‘\t ]\n‘
                          printf ‘}\n‘
}
$1

2.赋权

赋执行权限 chmod 755  /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh 
修改属组 chown  zabbix.zabbix /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh

3.测试脚本效果

[[email protected] ~]# /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh  mysql
{
        "data":[
         {
                        "{#MYSQLPORT}":"3306"}
         ]
}

4.配置agent.conf

[[email protected] ~]# cat /etc/zabbix/zabbix_agentd.conf | grep Include
### Option: Include
# Include=
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
[[email protected] zabbix_agentd.conf.d]# cat check_mysql.conf 
UserParameter=mysql.discovery[*],/etc/zabbix/alertscripts/zabbix_discovery_mysql.sh  $1
UserParameter=mysql_stats[*],/usr/bin/mysql --defaults-file=/home/zabbix/.my.cnf -P $1  -e "show global status"|grep "\<$2\>"|cut  -f2

5.sudo权限

#Defaults    requiretty
Defaults:zabbix    !requiretty
zabbix  ALL=(root)      NOPASSWD:/bin/netstat,/usr/bin/mysql

6.创建zabbix查询mysql用户

GRANT PROCESS ON *.* TO ‘zabbix‘@‘localhost‘ identified BY ‘zabbix‘;
Flush privileges;

注意:Warning: Using a password on the command line interface can be insecure.

因为mysql5.6不能使用明文密码登录,所以这里要创建一个文件用来指定用户名密码

7.创建mysql.cnf文件

[[email protected] zabbix]# cat /home/zabbix/.my.cnf 
[client]
user=zabbix
password=zabbix
host=localhost
chown zabbix.zabbix /home/zabbix/.my.cnf
chmod 600  /home/zabbix/.my.cnf

8.重启agent服务

service zabbix_agentd restart

9.测试

[[email protected] alertscripts]# /usr/local/zabbix/bin/zabbix_get  -s 127.0.0.1 -k mysql_stats[3306,Uptime]
3862
[[email protected] alertscripts]# /usr/local/zabbix/bin/zabbix_get  -s 127.0.0.1 -k mysql.discovery[mysql]
{
        "data":[
         {
                        "{#MYSQLPORT}":"3306"}
         ]
}

三、配置web

  1. 添加模板

2.创建应用

3.创建自动发现规则

4.创建监控项

5.创建图形

6.主机链接模板

7.查看监控数据

时间: 2024-08-08 22:09:21

zabbix自动发现mysql端口并监控的相关文章

zabbix自动发现使用中端口并图形展示各个端口连接数

zabbix自动发现当前服务器使用中的端口并图形展示各个端口连接数 1.修改配置文件 vi /data/server/zabbix_agent/conf/zabbix_agentd.conf UserParameter=tcp.port.discovery,/data/server/zabbix/bin/discover_tcp_port_count tcp_port_discovery UserParameter=tcp.port.count[*],/data/server/zabbix/bi

zabbix 自动发现指定端口和服务

官方有模板示例,根据官方更改 连接如下 https://zabbix.org/wiki/File:ZabbixTemplate_-_TCP_service_discovery.xml 配置端口服务列表 root #cat tcp-port.conf http,80 tomcat,8080 mq,1883 编写自动发现脚本 discovery_tcp_service.sh #/bin/bash CONFIG_FILE=/etc/zabbix/script/tcp-port.conf portarr

使用 zabbix 自动发现监控 MySQL

介绍 使用 zabbix 的 low-level 自动发现功能完成单主机多端口的监控, 详见low_level_discovery, 整体上监控类似 percona 的 zabbix 监控插件, 不过使用 mymonitor.pl 替换了脚本 ss_get_mysql_stats.php, 而且配置有点不同. 具体代码及配置详见: zabbix_mysql 1. 结构说明: zabbix_mysql/ |-- README.md |-- bin | |-- get_mysql_stats_wra

Zabbix自动发现监控Mysql数据库

结果图展现 先让大家看下结果图,Zabbix通过自动发现监控Mysql每秒的增.删.改.查,通过自动发现监控Mysql的流入流出流量,结果图如下: Mysql给Zabbix监控的权限 首先创建一个监控用户,usage on为比较小的权限,较安全.sql如下 grant usage on *.* to 'monitor'@'127.0.0.1' identified by 'shijiangepwd'; flush privileges; 测试监控用户是否生效,测试结果如下 mysql -umon

zabbix自动发现监控多台mysql

1: 前言 由于前面写的博客,zabbix自动发现监控redis.zabbix自动发现监控mongo这两篇博客虽然都能自动发现并监控,但是由于每个zabbix_agentd都得配置,监控起来非常不方便,因此,再做了个模板,能够自动发现并监控多台mysql.这个方法在监控mongo.redis或者mysql主从等时候也都适用. 2: 在zabbix_agentd下编写自动发现并监控多台mysql的脚本,脚本如下: #!/bin/sh #zhuangweihong 20160512 zabbix d

zabbix自动发现监控mongo

1: zabbix自动发现mongo监控的端口,并返回zabbix_server需要的格式,脚本部署在zabbix_agent上,路径为/usr/local/zabbix/zabbix_discover_mongo.sh,脚本内容如下: #!/bin/sh #zhuangweihong 20160419 zabbix discover mysql res=`sudo ss -tulnp|grep mongo|grep -v 28107|awk '{print $(NF-2)}'|awk -F':

zabbix自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源

最近在想一个问题,线上服务器跑的服务五花八门,可能这台跑的是nginx,另一台跑的是mysql,其他的跑的是nfs或者其他服务等等,通过某一个脚本中固定的写入一些服务来实现监控所有的服务器的进程占用资源情况占用zabbix服务器资源不说,假如该服务器跑的服务不在固定列表中,监控服务获取不到相应数据. 为了解决这个问题,最近在想通过zabbix的自动发现功能能不能实现自动发现占用服务器内存最大的N个进程,然后对这些进程占用内存和CPU的资源情况进行监控获取数据呢?于是就有了本篇文章的诞生. 首先,

zabbix自动发现与监控内存和CPU使用率最高的进程

监控需求 某项目的应用服务器CPU和内存使用率的监控,通过zabbix系统监控记录应用服务器上进程的CPU和内存的使用情况,并以图表的形式实时展现,以便于我们分析服务器的性能瓶颈. 监控方式 利用zabbix监控系统的自动发现功能,首先编写shell脚本获取服务器的CPU和内存资源使用率最大的进程,以json的格式输出,然后对这些进程的CPU和内存资源使用情况进行监控.(本文监控的进程为Linux服务器中资源使用率最高的10个进程.) 缺点 不适用于监控固定的进程 首先使用top命令查看进程状态

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora