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. ubuntu16.04下安装文献管理工具mendelay

    1.首先下载mendelay的安装包 到官网下载对应版本的安装包,官网地址:Download for Ubuntu and Kubuntu 16.04 LTS, 17.04 and Debian 2. ...

  2. 2016江苏省CPC省赛 I - Itinerary Planning

    Description Mike moved to a new city. There are bus stations in the city, each has a unique name. Ea ...

  3. Taking a peek inside with the Actuator

    Taking a peek inside with the Actuator <dependency> <groupId>org.springframework.boot< ...

  4. mysql unix domain socket and network socket, ssh key

    当主机填写为localhost时mysql会采用 unix domain socket连接 当主机填写为127.0.0.1时mysql会采用tcp方式连接 这是linux套接字网络的特性,win平台不 ...

  5. 2018/04/07 每日一个Linux命令 之 logrotate

    简介 日志的存在一直是 Linux 里面一个比较重要内容. 但是随着服务器运行的时间越来越长,日志越来越大.我见过一个线上项目 TP3.2 log文件有260+G的...... logrotate 也 ...

  6. 转:数据库范式(1NF 2NF 3NF BCNF)

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...

  7. requests库的get请求(加上head,加上get参数请求)

    #coding:utf-8 # 导入requests import requests # 构建url url = 'http://www.baidu.com' # 发送请求,获取响应 # respon ...

  8. js-jquery-Validate校验【二】中文api

    jQuery.validate 中文 API 名称 返回类型 描述 validate(options) Validator 验证所选的 FORM. valid() Boolean 检查是否验证通过. ...

  9. Sqoop导入HBase,并借助Coprocessor协处理器同步索引到ES

    1.环境 Mysql 5.6 Sqoop 1.4.6 Hadoop 2.5.2 HBase 0.98 Elasticsearch 2.3.5 2.安装(略过) 3.HBase Coprocessor实 ...

  10. git merge和git rebase

    转载于http://blog.csdn.net/wh_19910525/article/details/7554489 git merge是用来合并两个分支的. git merge b # 将b分支合 ...