如何用zabbix监控mysql多实例
agent上起了多了 mysql实例,占用不同的端口,agent 仅在初始状况下,塞入脚本和 键配置,然后重启。 以后维护的时候(mysql端口变动),要做到 不能 动agent,力争 只在 web端 或者server端做修改 就能自动监控到对应端口。 |
主机宏格式:$MACRO (直接就可以 填 值)
自动发现宏:#MACRO (需要配合 创建的 key 取值)
1.agent主机 -- agent 主机创建 宏变量 $MYSQLPORT ,宏变量的值为 Discovery rules的 自动发现脚本参数
2.模板 -- 模板里创建自动发现规则,靠的是自动发现脚本,得到自动发现宏变量。
3.监控项-- 在Discovery rules 里创建监控项,监控项名称和key值里都有自动发现宏变量,会自动生成相关端口的监控项
4.客户端 脚本和键创建,来支持整个架构运行
![](https://www.linuxprobe.com/wp-content/uploads/2019/05/1-13.png)
因为这个模板是 克隆 的默认 mysql监控模板,可以忽略 items,triggers。 监控项都在 Discovery rules 里。
![](https://www.linuxprobe.com/wp-content/uploads/2019/05/2-7.png)
上图 里的 mysql.discovery 就是获取 自动发现宏的 脚本,脚本是放在 agent端。
后面的 $MYSQLPORT 为此脚本执行时带的参数,$MYSQLPORT 是主机宏。
discovery rule 右边的 filters 是过滤规则的意思,比方你 只想取脚本里的 某某 自动发现宏,就可以在里面设置。 这里就只有一个自动发现宏,所有不做 配置。
![](https://www.linuxprobe.com/wp-content/uploads/2019/05/3-5.png)
![](https://www.linuxprobe.com/wp-content/uploads/2019/05/4-1.png)
点开主机,添加主机宏,宏名称是 自动发现脚本里的 参数, 宏的值就是 此 主机上需要监控的端口。
这样就实现了 只要改动主机宏的 值,就可以改变主机宏的监控项。
res=`echo $1| sed "s/_/\n/g"`;
port=($res)
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];
then
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
执行实例: 以_ 为分隔符,格式化输出 自动发现宏
./discovery_mysql.sh 3306_3307_3308
{
"data":[
{
"{#MYSQLPORT}":"3306"},
{
"{#MYSQLPORT}":"3307"},
{
"{#MYSQLPORT}":"3308"}
]
}
var=$1
MYSQL_PORT=$2
MYSQL_NAME=`ps -ef |grep '/mysql/app/bin/mysqld'| grep "$MYSQL_PORT" |grep -v grep | awk -F" " '{print $11}' |awk -F"/" '{print $2}'` ;
MYSQL_SOCk_DIR="/$MYSQL_NAME/" ;
df -h "${MYSQL_SOCk_DIR}${var}" |grep -v Filesystem |awk -F" " '{print $5}' | awk -F"%" '{print $1}' ;
MYSQL_PORT=$1; [ "${MYSQL_USER}" = '' ] && MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=xxxxx mysqladmin=/mysql/app/bin/mysqladmin ; MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'` ; ${mysqladmin} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} ping 2> /dev/null |grep 'alive'|wc -l ;
注意: 这边连接实例 都是 mysql -u -p -S /xxx/mysql.sock
但是后来发现部分客户端总是无法正确显示值,而且就是这条 语句报错, 感觉是环境变量的问题
所以拿 --socket=/xxx/mysql.sock 来代替 -S/xxx/mysql.sock 。 这里的变量${MYSQL_SOCk_DIR} 就是--socket=/xxx/mysql.sock 。
var=$1
MYSQL_PORT=$2
MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'` ;
mysql=/mysql/app/bin/mysql
[ "${MYSQL_USER}" = '' ] && MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=xxxx
${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show slave status\G;" 2> /dev/null |grep "\b${var}\b"|awk -F" " '{print $2}' ;
主从状态 有几个端口的值是 空的, 这个得 具体问题具体设置
mysql=/mysql/app/bin/mysql
var=$1
MYSQL_PORT=$2
[ "${MYSQL_USER}" = '' ] && MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=xxxxx MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'` ; ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}' ;
发现有些监控项 或因为数字过长而无法显示,待解决
MYSQL_PORT=$1; MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'` ; mysql=/mysql/app/bin/mysql ; [ "${MYSQL_USER}" = '' ] && MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=xxxx ${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "select version();" 2> /dev/null |awk 'END {print}'
UserParameter=mysql.discovery[*],/patrol/zabbix/bin/duoshili_discovery/discovery_mysql.sh $1
UserParameter=mysql.status_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_status2 $1 $2
UserParameter=mysql.ping_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_ping.sh $1
UserParameter=mysql.version_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_version.sh $1
UserParameter=mysqlcheck_repl[*],/patrol/zabbix/bin/duoshili_discovery/mysql_repl.sh $1 $2
UserParameter=mysql.filestyle_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_filestype
如何用zabbix监控mysql多实例的更多相关文章
- Zabbix监控mysql performance
介绍 zabbix监控mysql性能,使用zabbix自带的mysql监控模板,可以监控以下内容OPS(增删改查).mysql慢查询数量.mysql请求\响应流量带宽 配置 新建mysql监控用户 G ...
- zabbix 监控MySQL
现在我来说一下我的监控环境 zabbix-3.0.3 MySQL-5.6.23 1.首先我们要登录MySQL,创建一个监控MySQL的用户 GRANT USAGE,PROCESS,SUPER,REPL ...
- Zabbix监控mysql配置及故障告警配置
本文主要介绍zabbix监控mysql的配置,包含使用zabbix自带模板监控mysql相关信息及自定义key监控mysql同步情况.同时介绍了触发器的创建及zabbix通过邮件方式告警配置. 一.配 ...
- 分布式数据存储 - Zabbix监控MySQL性能
Zabbix如何监控mysql性能,我们可以使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_m ...
- 使用zabbix监控mysql的三种方式
使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...
- zabbix监控mysql性能
使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...
- zabbix监控mysql最简单的方法
该实验基于我的上一篇文章监控第一台主机的基础上 首先,因为水平有限,我选择直接关闭了防火墙和SELinux. 环境: 两台centos7,服务器端IP是192.168.200.128(以下简称主机), ...
- Zabbix 监控 Mysql 状态
简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 ...
- zabbix监控mysql以及其他常见
zabbix监控mysql以及其他常见,监控mysql,也可是使用percona提供的详细的模板,里面的监控项目非常的详细 <template>Template Percona MySQL ...
随机推荐
- vscode配置Microsoft C++注意事项
vscode配置c++插件教程链接如下: https://code.visualstudio.com/docs/cpp/config-msvc#_check-your-microsoft-visual ...
- window10教育版激活失败
问题 输入完key之后显示无法连接服务器 再次输入密钥无效,而且家庭版密钥激活也没了 使用命令行消除过去的key,使用新的教育版key后,显示运行在运行microsoft windows 非核心版本的 ...
- pyhon笔记入门
人生苦短,我用Python 博客园精华区01-15 23:46 (一)认识Python Python背景介绍 Python的格言: Life is short,use python. (人生苦短,我用 ...
- JVM常用命令(九)
前面东西说完后,现在可以说一些和我们平时进行性能调优相关的东西了,那怎么看和我们JVM性能调优相关的东西呢,其实这对我们开发来说是一个比较头痛的问题,其实我们JDK官网给了一些我们相关的指令,我们可以 ...
- C语言system函数
我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system 功 能: 发 ...
- AFN框架
0.AFN框架基本使用 0.1 AFN内部结构 AFN结构体 - NSURLConnection + AFURLConnectionOperation(已经被废弃) + AFHTTPRequestOp ...
- Android中的多线程【转】
感谢大佬:https://www.cnblogs.com/zoe-mine/p/7954605.html 感谢大佬:https://blog.csdn.net/u014555121/article/d ...
- Android图表库hellocharts详解
感谢大佬:https://www.cnblogs.com/huolongluo/p/5988644.html 因为项目需要搞一个折线图,按照日期显示相应的成绩,所以有了本文. 以前用过一次XCL-ch ...
- CSS:第1课
CSS选择器有:id选择器.派生选择器 1.id选择器 id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式. id 选择器以 "#" 来定义. #red {colo ...
- JSP页面 CTRL+F 功能实现
.res { color: rgba(255, 0, 0, 1) } .result { background: rgba(255, 255, 0, 1) } --- js 部分 var oldKey ...