zabbix安装完成后,当需要使用自定义脚本构建自定义item必须注意以下几点:

1.首先使用zabbix_get手动在zabbix-server服务端获取监控的默认的item值,如下:

[root@aliyun ~]# zabbix_get -s 39.106.219.238 -p 10050 -k "system.swap.size[,free]"
0

当遇到zabbix_get命令没有找到时,解决办法:yum install -y zabbix_get

2.在zabbix-server端打开配置文件找到:

AlertScriptsPath=/usr/lib/zabbix/alertscripts

默认将自定义的脚本放在该位置

3.在zabbix-agent端打开配置文件找到:

Include=/usr/local/etc/zabbix_agentd.conf.d/.conf

确认上面几步后,现在开始创建自定义脚本创建自定义item:

1.编写item脚本:

#!/usr/bin/env python
import MySQLdb class Db:
def __init__(self, host1, user1, password1, db1):
self.host = host1
self.user = user1
self.password = password1
self.db = db1
try:
self._conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.password, db=self.db)
except Exception as e:
print e
self._cursor = self._conn.cursor() def fetchone(self, sql1):
self._cursor.execute(sql1)
result = self._cursor.fetchone()
return result host = '172.16.23.131'
user = 'root'
db = 'mysql'
password = 'redhat'
sql = "show global status like 'questions';"
sql1 = "show global status like 'uptime';"
if __name__ == '__main__':
db_conn = Db(host, user, password, db)
result = db_conn.fetchone(sql)
result1 = db_conn.fetchone(sql1)
print int(result[1])/int(result1[1])

手动执行:

[root@zabbix-server zabbix_agentd.d]# python /usr/lib/zabbix/alertscripts/getQueryCountFromMysql.py
7

将该脚本赋予执行权限:chmod +x /usr/lib/zabbix/alertscripts/getQueryCountFromMysql.py

2.在zabbix-agent端编写配置文件:重启zabbix-agent服务

/etc/zabbix/zabbix_agentd.d/userparameter_script.conf

[root@zabbix-server zabbix_agentd.d]# cat userparameter_script.conf
UserParameter=script.getQueryCountFromMysql.py,/usr/lib/zabbix/alertscripts/getQueryCountFromMysql.py

格式:UserParameter=key,command

手动在zabbix-server端获取值:

[root@zabbix-server zabbix_agentd.d]# zabbix_get -s 172.16.23.131 -k script.getQueryCountFromMysql.py
7

手动获取到值后,在zabbix页面进行配置:

1.创建自定义template:

2.创建自定义item:

3.创建自定义graph:

上面各步骤创建完成后,将此template加在host上:

过一段时间后,查看graphs:

可以看出自定义item的值已经可以显示出来了

如果自定义脚本带有参数的话,做如下修改:

[root@zabbix-server alertscripts]# cat /usr/lib/zabbix/alertscripts/getmysqlstatu.py
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import MySQLdb
import sys class Db:
def __init__(self, host1, user1, password1, db1):
self.host = host1
self.user = user1
self.password = password1
self.db = db1
try:
self._conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.password, db=self.db) # 连接mysql
except Exception as e:
print e
self._cursor = self._conn.cursor() # 创建游标 def fetchone(self, sql1):
self._cursor.execute(sql1) # 执行sql语句
result = self._cursor.fetchone() # 获取执行的结果
return result def getops(self):
questions = db_conn.fetchone(sql_questions)
uptime = db_conn.fetchone(sql_uptime)
return int(questions[1])/int(uptime[1]) host = '127.0.0.1'
user = 'root'
db = 'mysql'
password = 'redhat'
sql_questions = "show global status like 'questions';"
sql_uptime = "show global status like 'uptime';"
if __name__ == '__main__':
db_conn = Db(host, user, password, db)
result = db_conn.getops()
if sys.argv[1] == 'qps':
print result
# chmod +x getmysqlstatu.py

然后在zabbix-agent做下面配置:

[root@zabbix-server alertscripts]# cat /etc/zabbix/zabbix_agentd.d/userparameter_script.conf
UserParameter=script.getQueryCountFromMysql.py,/usr/lib/zabbix/alertscripts/getQueryCountFromMysql.py
UserParameter=script.getmysqlstatu.py[*],/usr/lib/zabbix/alertscripts/getmysqlstatu.py $1

在zabbix-server端手动获取item的值:

[root@zabbix-server alertscripts]# zabbix_get -s 172.16.23.131 -k script.getmysqlstatu.py[qps]
7

获取qps和tps双指标:

[root@zabbix-server alertscripts]# cat getmysqlstatu.py
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import MySQLdb
import sys class Db:
def __init__(self, host1, user1, password1, db1):
self.host = host1
self.user = user1
self.password = password1
self.db = db1
try:
self._conn = MySQLdb.connect(host=self.host, user=self.user, passwd=self.password, db=self.db) # 连接mysql
except Exception as e:
print e
self._cursor = self._conn.cursor() # 创建游标 def fetchone(self, sql1):
self._cursor.execute(sql1) # 执行sql语句
result = self._cursor.fetchone() # 获取执行的结果
return result def getqps(self):
questions = db_conn.fetchone(sql_questions)
uptime = db_conn.fetchone(sql_uptime)
return int(questions[1])/int(uptime[1]) def gettps(self):
Com_rollback = db_conn.fetchone(sql_Com_rollback)
Com_commit = db_conn.fetchone(sql_Com_commit)
uptime = db_conn.fetchone(sql_uptime)
return (int(Com_rollback[1])+int(Com_commit[1]))/int(uptime[1]) host = '127.0.0.1'
user = 'root'
db = 'mysql'
password = 'redhat'
sql_questions = "show global status like 'questions';"
sql_uptime = "show global status like 'uptime';"
sql_Com_rollback = "show global status like 'Com_rollback';"
sql_Com_commit = "show global status like 'Com_commit';"
if __name__ == '__main__':
db_conn = Db(host, user, password, db)
if sys.argv[1] == 'qps':
result_qps = db_conn.getqps()
print result_qps
if sys.argv[1] == 'tps':
result_tps = db_conn.gettps()
print float(result_tps)

  

zabbix监控之自定义item的更多相关文章

  1. Zabbix学习之路(二)之添加主机监控及自定义item监控

    1.zabbix_get命令详解 安装zabbix-get命令 [root@linux-node1 ~]# yum install -y zabbix_get 参数说明: -s --host: 指定客 ...

  2. zabbix监控之自定义监控

    自定义监控node1数据库状态,并设置报警 编辑agent客户端的userparameter_mysql.conf 文件,最后一行添加自定义监控内容 [root@node1 ~]# cd /etc/z ...

  3. 分布式监控系统之Zabbix宏、模板和自定义item

    前文我们聊了下zabbix的基础使用,包括主机的添加.监控项.触发器.action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/140073 ...

  4. zabbix使用(自定义监控、自动报警)

    自定义监控(制作模板) zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU.内存.磁盘.网卡等常规监控,只要新加主机关联此模板,就 ...

  5. zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)

    zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...

  6. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  7. zabbix添加对自定义无规则的关键日志文件的监控

    zabbix添加对自定义无规则日志文件的监控 项目背景及思路: zabbix自带有针对日志文件的监控,自带的监控只能监控到指定文件或者正则匹配的固定日志文件,但当需要监控的文件名没有规律的时候自带监控 ...

  8. (8)zabbix监控项item是什么

    什么是item Items是从主机里面获取的所有数据.通常情况下我叫itme为监控项,例如服务器加入了zabbix监控,我需要监控它的cpu负载,那么实现这个方法的东西就叫item item构成 it ...

  9. zabbix自定义监控,自定义图表。

    zabbix server:hostname=Zabbix server ip:192.168.100.7 zabbix agent: hostname=host3 ip:192.168.100.3 ...

随机推荐

  1. pcl学习笔记(二):点云类型

    不同的点云类型 前面所说的,pcl::PointCloud包含一个域,它作为点的容器,这个域是PointT类型的,这个域是PointT类型的是pcl::PointCloud类的模板参数,定义了点云的存 ...

  2. 使用Pangolon在同一副图中,画出两个轨迹,比较误差

    使用 code/ground-truth.txt 和 code/estimate.txt 两条轨迹.请你根据上面公式,实现 RMSE的计算代码,给出最后的 RMSE 结果.作为验算,参考答案为:2.2 ...

  3. UVA - 11624 Fire! bfs 地图与人一步一步先后搜/搜一次打表好了再搜一次

    UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动.火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间. 题解:先考 ...

  4. Linux CPU实时监控mpstat命令详解

    简介 mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查 ...

  5. CAP 一致性协议及应用解析

    https://mp.weixin.qq.com/s/26x8O1bRzurl84e3nM6TTA CAP 一致性协议及应用解析 原创: 有赞技术 有赞coder 1周前 文 | 云开 on 用户中心 ...

  6. 【Pyton】【小甲鱼】正则表达式(一)

    正则表达式学习: >>> import re >>> re.search(r'FishC','I love FishC.com!') <_sre.SRE_Ma ...

  7. 集成百度地图API实现定位

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u010982006/article/details/32347107 一.百度地图API获取定位 A ...

  8. 3.cassandra遇到内存占用过高的问题

    目前cssandra的内存分配如下: https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/ops_tune_jvm_c.ht ...

  9. 十天精通CSS3(3)

    颜色之RGBA RGB是一种色彩标准,是由红(R).绿(G).蓝(B)的变化以及相互叠加来得到各式各样的颜色.RGBA是在RGB的基础上增加了控制alpha透明度的参数. 语法: color:rgba ...

  10. 使用LinkedList模拟栈数据结构的集合

    封装MyStack类 public class MyStack { private LinkedList link; //调用MyStack创建对象的时候其实是调用的LinkedList创建的是Lin ...