zoukankan      html  css  js  c++  java
  • 第八章 监控系统zabbix深入自定义监控项

    一、自定义监控项-ssh端口

    1.添加自定义监控项

    #1.选择你要监控的主机
    

    #2.创建自定义监控项
    

    #3.创建监控项名称,选择键值,调整更新间隔,创建新的应用集,添加描述。
    

    每个Zabbix事件需要大约170字节的磁盘空间。很难估计Zabbix每天生成的事件数量。最糟糕的情况下,我们可能需要假设Zabbix每秒会生成一个事件。
    
    这意味着,如果我们需要保留3年的事件,需要3365243600 170 = 15GB的磁盘空间。
    
    下表列出了用于计算Zabbix系统所需磁盘空间的计算公式:
    
    zabbix公式计算范围 所需磁盘空间的计算公式 (单位:字节)
    Zabbix配置文件 固定大小。一般10MB或更少。
    历史(History) days(items/refresh rate)243600bytes items : 监控项数量 days : 保留历史数据的天数 refresh rate : 监控项平均轮询时间 bytes : 保留单个值所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
    趋势(Trends) days(items/3600)243600bytes items : 监控项数量 days : 保留趋势数据的天数 bytes : 保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
    事件(Events) daysevents243600bytes events : 每秒事件数。最糟糕的情况下,每秒一(1)个事件。 days : 保留事件数据的天数 bytes : 保留单个事件所需要占用的字节数,依赖于数据库引擎,一般大约90字节。
    #历史数据保留90天
    [root@prd-apm001 ~]$ python
    Python 2.7.5 (default, Apr 11 2018, 07:36:10)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    
    90天*(监控项的数量/取值时间)*24*3600*字节数/1024/1024(转换成MB)
    >>> 90*(100/3)*24*3600*90/1024/1024
    22024
    
    #趋势365天
    365*(100/3600)*24*3600*90/1024/1024
    75.187683105469
    
    #事件
    >>> 365*1*24*3600*90/1024/1024
    2706
    
    # 测试获取值
    [root@prd-apm001 ~]$ zabbix_get -s 139.196.236.164 -k net.tcp.listen[22]
    1
    

    [root@dataxcrm ~]# systemctl stop sshd
    

    2.添加值映射

    从上图可以看出,当端口存活的时候,数据是1,当端口不存在的时候,数据是0,看起来好low而且一般谁会去记1和0,所以此时我们可以给值添加一个映射关系,可以理解为创建一个别名。
    

    此处可以选择系统自带的,也可以自己创建
    
    #1.选择系统自带的
    

    #2.自定义创建值映射
    

    [root@prd-apm001 ~]$ systemctl start sshd
    

    二、自定义监控项-TCP11种状态

    1.TCP11种状态

    LISTEN - 侦听来自远方TCP端口的连接请求;
    SYN-SENT -在发送连接请求后等待匹配的连接请求;
    SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
    ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
    FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
    FIN-WAIT-2 - 从远程TCP等待连接中断请求;
    CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
    CLOSING -等待远程TCP对连接中断的确认;
    LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
    TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
    CLOSED - 没有任何连接状态;
    客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
    服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
    共有的:(1)CLOSED (2)ESTABLISHED 。
    

    2.配置监控

    #进入zabbix客户端子配置文件目录
    [root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/
    
    #编辑子配置文件
    [root@web01 zabbix_agentd.d]# vim tcp_state.conf
    UserParameter=tcp.state[*],netstat -ant|grep -c $1
    
    #重启服务
    [root@web01 zabbix_agentd.d]#  systemctl restart zabbix-agent
    
    #zabbix-server测试
    [root@redis02 ~]# zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN]
    11
    

    3.添加监控项

    因为TCP状态有11种,所以我们需要添加11个监控项,我们可以把所有监控项放入一个模板中,这样我们所有机器在模板中关联即可。
    

    4.模板中创建监控项

    以此类推,使用克隆的方式,创建出来所有模板
    

    5.给主机关联模板

    [root@redis02 ~]# zabbix_get -s 10.0.0.7 -k tcp.state[LISTEN]
    11
    [root@redis02 ~]# zabbix_get -s 10.0.0.7 -k tcp.state[ESTABLISHED]
    25
    

    三、zabbix多条件触发器

    监控内存百分比(取出内存的可用大小 / 总内存大小 = 实际可用的百分比)
    

    1.自定义监控内存百分比

    #在agent端编辑配置[root@redis01 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.d/mem_state.confUserParameter=mem.state,free -m|awk '/^Mem/{print $NF*100/$2}'#在server端获取数据[root@redis02 ~]# zabbix_get -s 10.0.0.7 -k mem.state69.9294
    

    没有单位看不出来69是什么。
    

    #测试一波[root@web01 zabbix_agentd.d]# dd < /dev/zero > /dev/null bs=1024M count=2048
    

    目前属于单条件触发器,因为内存低于20%就报警了,在生产中,我们应该是当内存低于20%并且占用了swap空间,然后再报警。
    

    2.创建swap监控配置

    [root@web01 zabbix_agentd.d]# vim mem_state.conf
    UserParameter=swap.state,free -m|awk '/^Swap/{print $3*100/$2}'
    
    [root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
    

    3.web页面添加swap监控

    4.添加多条件触发器

    5.常用触发器

    and                 #并且
    or              #或者
    last()          #比对最新的值
    avg()           #平均值
    diff()          #比对上一次文件的内容
    nodata()        #收不不到数据进行报警nodata(5m)
    (5m)          #表示最近5分钟得到值
    (#5)                #表示最近5次得到的值
    

    四、zabbix自定义告警方式

    当监控项超过触发器设定的阈值->触发动作->(发消息|执行命令)
    
    1.怎么报警->2.报警怎么发,发什么内容->3.报警发给谁
    
    注意:要使SMTP验证选项可用,zabbix服务器应使用cURL 7.20.0或更高版本
    

    1.配置动作

    2.配置媒介

    3.配置用户

    五、zabbix自愈模式配置

    有些时候,我们的服务宕机了,或者有些服务停掉了,那么我们可以先尝试让他启动,看是否能起的来,为了不影响用户的体验,先把服务起起来,然后再去排查,是什么原因故障的。那么此时我们就需要用到zabbix的自愈模式,这个...叫起来很好听,说白了,就是在让zabbix-server通过远程执行命令的方式,在agent上执行命令,启动服务。
    

    1.web页面配置

    首先添加一个ssh端口监控的触发器
    

    2.配置sudo

    因为远程执行命令需要通过zabbix用户来执行,因为启动zabbix-server的用户是zabbix,所以我们必须给zabbix添加sudo权限,否则无法执行,并且要无密码。
    
    #添加sudo权限
    [root@web01 zabbix_agentd.d]# visudo%zabbix ALL=(ALL)       NOPASSWD:ALL
    
    #测试启动服务
    [root@web01 zabbix_agentd.d]# usermod zabbix -s /bin/bash
    [root@web01 zabbix_agentd.d]# su - zabbix
    -bash-4.2$ sudo systemctl start sshd
    

    3.zabbix开启远程执行命令

    #修改配置文件
    [root@web01 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
    EnableRemoteCommands=1
    
    #重启zabbix
    [root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent
    

    4.停止sshd服务测试

    [root@web01 zabbix_agentd.d]# systemctl stop sshd
    

    六、zabbix报警升级机制

    场景一:在企业中,我们需要把报警设置为升级机制,当有些报警,运维人员没有及时处理的时候,或者没有时间,或者外出,或者陪产在医院,或者...总之身边没有电脑没有网络,在山沟子里的时候,必须有人站出来,解决这个问题。场景二:当zabbix报警服务器出现问题的时候,例如MySQL挂了,运维人员在厕...没有及时处理,那一分钟后这个警告肯定要升级,从警告变成严重故障之类的。所以不管在哪种场景下,我们要有不同的报警人员,比如,一级报警,交给运维,没有及时处理就二级报警,交给运维总监或者运维经理,如果此时报警还没有人处理,那么报警就会升级到CTO或者CEO那里,那么这个时候,也是灾难降临之时,这也是一个很好的对运维人员必须要及时处理告警的一个制约。
    

    1.创建用户组

    2.创建用户

    3.设置报警升级动作

    4.计算方式

    1)开始于 ,这个是相对一但触发监控,则立即发送消息
    2)1-2步骤是给运维组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
    3)3-4步骤是给运维经理组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
    4)4-5步骤是给运维总监组发送消息,每隔5分钟发送一次,总共2个步骤,所以发送2次
    5)每次的开始时间是如何计算的呢,第一个立即开始:1-2,3-4,4-5动作时间间隔是5分钟,所以在触发告警发送时间计算是5m+5m+5m=15m
    

    七、zabbix自定义图形

    1.创建图形

    介绍监控的顺序->应⽤级->监控项->基于监控项创建触发器->基于监控项创建图形
    

    2.基于监控项进行绘图

    3.聚合图形

    将多张图形整合为一张图形, 简称聚合图形
    

    注意,在这里,聚合图形,我们可以分为以下几类,主要还是看公司的需求例如:1.按项目聚合(王者荣耀,LOL,天涯明月刀...)2.按主机聚合(每台主机的聚合...)3.按应用聚合(所有nginx的监控,所有MySQL的监控...)
    

    4.幻灯片

    多张聚合图形可以整合为幻灯⽚
    

    八、自定义图形扩展

    1.安装和配置

    #1.安装graphtree
    cd /usr/share/zabbix
    wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
    
    #2.导⼊入补丁包
    yum install -y patch
    patch -Np0 <graphtree3.0.4.patch 
    chown -R apache.apache oneoaas
    
    #3.修改Apache配置⽂文件
    vim /etc/httpd/conf.d/zabbix.conf 
    Alias /oneoaas /usr/share/zabbix/oneoaas
    
    #4.重启httpd服务 
    systemctl restart httpd
    
    单击->监测中->Graphtree
    单击对应的主机->选择需要查看的图形->点击查询->效果展示
    



    九、Zabbix⾃定义监控模板

    1.模板是⽀支持导⼊入与导出(模板⾥里里⾯面的监控项是有脚本⽀支撑,所以脚本需⼀一起打包) 
    2.conf⽂文件主要⽤用于定义监控项,监控项⽤用来调⽤用脚本或命令,获取监控值。 
    3.如果希望将之前定义的监控项做成模板,找到监控项->全选->复制
    4.自定义使⽤用模板(让监控项可以重复使⽤用)
    5.客户端agent必须要定义监控项,监控项取值需要使⽤用到脚本⽂文件或系统命令 
    6.服务端导⼊入模板 
    7.创建监控主机,链接新导⼊入模板,如果是已存在的监控主机,增加我们刚导⼊入的模板
    
  • 相关阅读:
    html添加注释怎么弄?
    编程语言本身是怎么开发出来的?
    一句话说明Facbook React证书的矛盾点
    XAMPP是什么?
    HTTP解析
    version control
    函数式编程语言
    Servlet之Filter
    Build tool
    container和injection
  • 原文地址:https://www.cnblogs.com/jhno1/p/15715518.html
Copyright © 2011-2022 走看看