设为首页 收藏本站
查看: 1106|回复: 0

[经验分享] Zabbix 使用规范和生成报表

[复制链接]

尚未签到

发表于 2019-1-25 08:37:14 | 显示全部楼层 |阅读模式
  一、软件版本
  操作系统:CentOS-6.5-x86_64
  zabbix版本:3.0.3
  
二、zabbix标准:
  
  1、  主机命名规范:
BJ-monitor-h-zabbix-01
**命名规范是,我们看一台主机能够知道主机位于哪里:BJ;做什么的:monitor;虚拟化还是实体机:h;跑什么服务:zabbix  第几台:01
  
  2、  一台主机直接关联多个模板:不用创建多个分组(可以结合CMDB平台)
Memcached :192.168.10.100
Php
Linux:192.168.10.100
多个模板:192.168.10.100  linux,memcached,port,partion

  3、  自定义key开启:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
方便识别服务名和增删key。也方便结合saltstack等批量工具。

  4、  使用模板继承(linux):
比如系统我们创建有,php,nginx,mysql等模板,所有服务都是基于linux服务器,那么这三个模板我们可以继承linux os模板。
  
  三、zabbix os模板报表出图:
  [root@BJ-mail-h-mail-01 alertscripts]# cat zabbix_report.py
  #!/usr/bin/python
  #coding:utf-8
  
  import MySQLdb
  import time,datetime
  
  #zabbix数据库信息:
  zdbhost = 'localhost'
  zdbuser = 'zabbix'
  zdbpass = 'zabbix'
  zdbport = 3306
  zdbname = 'zabbix'
  
  #生成文件名称:
  xlsfilename = 'damo.xls'
  
  #需要查询的key列表 [名称,表名,key值,取值,格式化,数据整除处理]
  keys = [
      ['CPU平均空闲值','trends','system.cpu.util[,idle]','avg','%.2f',1],
      ['CPU最小空闲值','trends','system.cpu.util[,idle]','min','%.2f',1],
      ['CPU5分钟负载','trends','system.cpu.load[percpu,avg5]','avg','%.2f',1],
      ['物理内存大小(单位G)','trends_uint','vm.memory.size[total]','avg','',1048576000],
      ['可用平均内存(单位G)','trends_uint','vm.memory.size[available]','avg','',1048576000],
      ['可用最小内存(单位G)','trends_uint','vm.memory.size[available]','min','',1048576000],
      ['swap总大小(单位G)','trends_uint','system.swap.size[,total]','avg','',1048576000],
      ['swap平均剩余(单位G)','trends_uint','system.swap.size[,free]','avg','',1048576000],
      ['根分区总大小(单位G)','trends_uint','vfs.fs.size[/,total]','avg','',1073741824],
['根分区平均剩余(单位G)','trends_uint','vfs.fs.size[/,free]','avg','',1073741824],
]
  class ReportForm:
  
      def __init__(self):
          '''打开数据库连接'''
          self.conn =MySQLdb.connect(host=zdbhost,user=zdbuser,passwd=zdbpass,port=zdbport,db=zdbname)
          self.cursor =self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
  
          #生成zabbix哪个分组报表
          self.groupname = 'monitor'
  
          #获取IP信息:
          self.IpInfoList =self.getHostList()
  
      def getgroupid(self):
          '''根据zabbix组名获取该组所有IP'''
  
          #查询组ID:
          sql = '''select groupidfrom groups where name = '%s' ''' % self.groupname
          self.cursor.execute(sql)
          groupid =self.cursor.fetchone()['groupid']
          return groupid
  
      def gethostid(self):
          #根据groupid查询该分组下面的所有主机ID(hostid):
          groupid =self.getgroupid()
          sql = '''select hostidfrom hosts_groups where groupid = %s''' % groupid
          self.cursor.execute(sql)
          hostlist = self.cursor.fetchall()
          return hostlist
  
      def getHostList(self):
          #生成IP信息字典:结构为{'119.146.207.19':{'hostid':10086L,},}
          hostlist =self.gethostid()
          IpInfoList = {}
          for i in hostlist:
              hostid = i['hostid']
              sql = '''select hostfrom hosts where status = 0 and hostid = %s''' % hostid
              ret =self.cursor.execute(sql)
              if ret:
                 IpInfoList[self.cursor.fetchone()['host']] = {'hostid':hostid}
          return IpInfoList
  
      def getItemid(self,hostid,itemname):
          '''获取itemid'''
          sql = '''select itemidfrom items where hostid = %s and key_ = '%s' ''' % (hostid, itemname)
          ifself.cursor.execute(sql):
              itemid =self.cursor.fetchone()['itemid']
          else:
              itemid = None
          return itemid
  
      def getTrendsValue(self,type,itemid, start_time, stop_time):
          '''查询trends_uint表的值,type的值为min,max,avg三种'''
          sql = '''select%s(value_%s) as result from trends where itemid = %s and clock >= %s andclock = %sand clock

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667226-1-1.html 上篇帖子: centos6.5编译安装zabbix2.4及微信企业号告警 下篇帖子: zabbix监控crond服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表