• Zabbix-2.4-安装-2


    zabbix自定义报警-动作
     
    打开资产自动接收
     

    这里看到主机资产有数据了,这里的数据,就是来自下面的关联 

    上面的数据就是设置login-user时候设置的关联

     
     有些关联显示的慢,比如下面的OS,原因就是items那里设置的更新时间比较长,原先是3600秒,改成60秒
     
     
     
     
    创建触发器
     

    起个名字,添加个表达式

     

     
     
    下面这里还可以设置时间,次数
    下面意思,就是最后时间大于2次的
    点击Insert
     
    描述可以不写,选择警告级别
     

    查看另一个页面 --依赖
    如果某件事发生了,就别报这个警了。比如如果主机down了就别报警了。先不加这个依赖

     
     
    客户端多复制一个console,触发它报警

    图形里也能看到

     
     
     
    profile里面可以设置报警声音,启用它
     
     仪表板,报警会产生一个事件
     
     
     
     处理告警,点击ack
     
     
    每一个事件最好都ack一下,这是好习惯
     
     
    actions是空的,说明什么也没干
     
     
     
     
     
    配置告警之后的actions
     
    可以配置一些告警短信和邮件等。默认自带了一个actions,打开这个actions
     
     下面是默认短信发送内容

    如果是发短信报警,要把上面的message改的短一些,改成70个字符以内
    国内英文单词按字母算,汉字按个数算
    精简下,最下面是恢复的时候再发个短信,把下面粘贴下放下面即可,生产环境是这么玩的

     
    条件,
    1、你这个机器没在维护里面
    2、你这个触发器故障的时候
    有台机器你不想让他告警,但是又想监控它,可以使用host=
    下面是操作什么
     
    第一分钟到第三分钟,每分钟发一个告警的通知
    如果第3分钟到第5分钟,告警还在可以设置发领导(现网这里悠着点,肯定要尽快解决,也是对自己一个督促)
     
     下面就是假设,假设6分钟到10分钟还没处理,发给你的cto,这就是故障的升级机制
     
     
     
    设置告警的介质
     
    默认是email
    jabber是一个开源的东西,用不上
    sms是短信的,也可以使用gsm的猫,短信猫等都是支持的
    点开邮件,发现比较鸡肋。 没用用户名密码等,一般不使用它
    短信这个除非你有短信猫,一般也不用
    jabber更不用
     模拟触发执行脚本,自己去创建

    你可以写个脚本发邮件,发短信等,或者echo  hehe,一般使用脚本是主流

     
    怎么加脚本呢vim /etc/zabbix/zabbix_server.conf

    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    这里配置了报警脚本的路径
    把你写的脚本放这里就好了,这样它就能找到了

     
    进入如下目录写一个脚本,内容如下。
    一般情况下,我们是执行Zabbix脚本,比如发邮件

    这个zabbix脚本要接收3个参数
    $1,$2,$3
    $1是邮件地址
    $2 邮件主题
    $3 邮件内容

    [root@linux-node1 alertscripts]# pwd
    /usr/lib/zabbix/alertscripts
    [root@linux-node1 alertscripts]# cat Send_Mail.sh 
    echo $1 $2 $3 >>/tmp/test.log
    [root@linux-node1 alertscripts]# 
    

    加上课执行权限

    [root@linux-node1 alertscripts]# chmod +x Send_Mail.sh 
    

    网页这里就可以这么写了

    给它指定个用户,让某用户可以运行这个脚本
    注意,前面是用户组,后面是成员
    点击Members,然后点击Admin,下面这里不用动,点击Media
    报警介质添加
    发给谁,什么时间,什么级别发
    如果这个邮箱是老板的话,可以去掉不重要的告警

    我的选择如下

    Add之后

    权限这里分读写和只读以及拒绝访问,最下面可以看到权限只能分配给组
     模拟故障场景,linux-node2的ssh窗口多复制几个,等待一会看到下面日志有内容了
    [root@linux-node1 alertscripts]# tail -f /tmp/test.log 
    525031638@qq.com PROBLEM linux-node2:login-user): 3
    ^C
    [root@linux-node1 alertscripts]# 
    

    仪表盘里也能看到它自动执行了action 

    尝试把脚本改成如下发邮件的脚本,这个脚本需要把smtpserver,username,password改成发件方的。
    另外这个脚本需要接收3个参数,第一个参数是收件人的邮箱(Zabbix会传给它),第二个参数是邮件主题(Zabbix会传给它),第三个参数是邮件内容(Zabbix也会传给它)
    [root@linux-node1 alertscripts]# pwd
    /usr/lib/zabbix/alertscripts
    [root@linux-node1 alertscripts]# ll
    total 8
    -rwxr-xr-x  1 root root 714 Mar 13 20:16 pymail.py
    -rwxr-xr-x. 1 root root  30 Nov 29 23:20 Send_Mail.sh
    [root@linux-node1 alertscripts]# cat pymail.py 
    #!/usr/bin/python
    #coding: utf-8  
    import smtplib  
    import sys
    from email.mime.text import MIMEText  
    from email.header import Header  
    from email.Utils import COMMASPACE
      
    receiver = sys.argv[1]
    subject = sys.argv[2]
    mailbody =  sys.argv[3]
    smtpserver = 'smtp.exmail.qq.com'  
    username = 'test1@xxxxxx.com'  
    password = '123456'  
    sender = username
      
    msg = MIMEText(mailbody,'html','utf-8')#中文需参数‘utf-8’,单字节字符不需要  
    msg['Subject'] = Header(subject, 'utf-8')  
    msg['From'] = username
    msg['To'] = receiver
      
    smtp = smtplib.SMTP()  
    smtp.connect(smtpserver)  
    smtp.login(username, password)  
    smtp.starttls()
    smtp.sendmail(msg['From'], msg['To'], msg.as_string())  
    smtp.quit() 
    [root@linux-node1 alertscripts]# 
    

      

    QQ邮箱可以收到邮件

    解决告警之后又收到了恢复正常的邮件

    看到邮件内容多了括号和空格,把下面多余的空格和括号删除即可

    Update之后,别扭的括号和空格都没了

    qq邮件可以绑定微信。对于使用微信的用户可以及时看到告警

     
    简单制作一个模板
    制作模板
     
    查看linux自带的模板
    点开进去,可以看到此模板配置情况
    创建自定义模板

    给此模板命名为demo,同时把linux-node2加入到此模板里

    link给一个模板

    点击Update

    点击Update之后,提示模板不能被通过此模板再去link给其它模板(这里不是很明白,有时间再研究下)

     
    去掉link,点击update。模板创建好了,目前什么都是空的。没有application和items
    建立完毕,目前什么都是空的
     
    添加items
     
    把login-user 这个之前创建的item加入到模板里
     
     key这里,要手写,不要选择,因为是自定义的,select是搜索不到的
    还可以给这个模板继续创建Application,起名app1
     
    把之前创建的items加入到app1
     app1里面多了Items,那个login-user
     

    最后demo模板结果如下

    你可以把这个模板链接到任何一台机器上,这样模板里有的监控项,那个机器就有了
    其实你自定义的监控项可以从配置文件里取出来,放下面目录下,然后在客户端主配置文件里include进去

    这里面默认还有个mysql的监控项呢
    [root@linux-node2 zabbix_agentd.d]# cd /etc/zabbix/zabbix_agentd.d/
    [root@linux-node2 zabbix_agentd.d]# ls
    userparameter_mysql.conf
    [root@linux-node2 zabbix_agentd.d]# 
    

    这个agent.conf自带include选项
    生产环境都建议这么干。尽量不要修改原来的配置文件。更专业一点

     
     
    zabbix导入自定义模板--tcp的11种状态监控
     
     获取服务器的tcp的11种状态的模板和脚本(常用于web服务器和反向代理服务器)。
    脚本里采用ss命令取tcp状态,ss命令性能强于netstat
    这里使用2个文件
     
    创建一个用于存放脚本插件的目录
    [root@linux-node2 alertscripts]# cd /etc/zabbix/
    [root@linux-node2 zabbix]# ls
    web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf
    [root@linux-node2 zabbix]# mkdir shells
    [root@linux-node2 zabbix]# cd shells/
    [root@linux-node2 shells]# pwd
    /etc/zabbix/shells
    

    把脚本上传上去

    [root@linux-node2 shells]# rz -E
    rz waiting to receive.
    [root@linux-node2 shells]# 
    [root@linux-node2 shells]# ls
    zabbix_linux_plugin.sh
    [root@linux-node2 shells]# chmod +x zabbix_linux_plugin.sh 
    [root@linux-node2 shells]# ./zabbix_linux_plugin.sh 
    Usage: ./zabbix_linux_plugin.sh {tcp_status key|memcached_status key|redis_status key|nginx_status key}
    [root@linux-node2 shells]# 
    
     
    你要告诉它,你监控什么东西,它的key是什么。
    这里截取模板文件部分内容

    因此,运行此脚本需要给它2个参数

    [root@linux-node2 shells]# ./zabbix_linux_plugin.sh tcp_status LISTEN
    14
    [root@linux-node2 shells]# ./zabbix_linux_plugin.sh tcp_status TIME-WAIT
    52
    [root@linux-node2 shells]# 
    

    在下面目录下,创建一个文件,存放自定义的key和value,而value通过此脚本获取

    key这里是linux_status[*] ,表示它支持列表

    [root@linux-node2 zabbix_agentd.d]# pwd
    /etc/zabbix/zabbix_agentd.d
    [root@linux-node2 zabbix_agentd.d]# ls
    userparameter_mysql.conf  zabbix-linux-plugin.conf
    [root@linux-node2 zabbix_agentd.d]# cat zabbix-linux-plugin.conf 
    UserParameter=linux_status[*],/etc/zabbix/shells/zabbix_linux_plugin.sh "$1" "$2" "$3"
    [root@linux-node2 zabbix_agentd.d]# 
    

    重启linux-node2的Zabbix agent

    [root@linux-node2 zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
    Shutting down Zabbix agent:                                [  OK  ]
    Starting Zabbix agent:                                     [  OK  ]
    [root@linux-node2 zabbix_agentd.d]# cd
    

      

    server端通过zabbix_get获取数据没问题

    [root@linux-node1 zabbix]# zabbix_get -s 10.0.1.162 -k linux_status[tcp_status,ESTAB]
    2
    [root@linux-node1 zabbix]# 
    

      

    注意,zabbix监控的时候,是使用的zabbix用户

    [root@linux-node2 ~]# ll /tmp/netstat.tmp 
    -rw-rw-r-- 1 zabbix zabbix 31 Mar 13 22:09 /tmp/netstat.tmp
    [root@linux-node2 ~]# 
    

      

    接下来你要做的是,创建一种模板,tcp有11个状态,你要创建11个key
    然后做个图,这里有别人做好的
    配置--模板--导入

     选择电脑上的模板文件

     

     模板导入成功
     
     
    点击Items看到11个监控项,name右边是key
     
     
    接下来给一个主机加这个模板
    add

    可以批量更改

     
    改时间间隔为30秒,仅仅出于测试目的,现网不要这么做
     
     

    本来是300的,都变成了30秒

     
     查看图形显示这里
    如果没有数据会返回0,注意0不是空。这里写成0是有意义的。
     
     
     
  • 相关阅读:
    基于AOP实现Ibatis的缓存配置过期策略
    Step by Step构建自己的ORM系列配置管理层
    云计算从基础到应用架构系列云计算的演进
    设计模式系列桥接模式
    云计算从基础到应用架构系列云计算的概念
    云计算从基础到应用架构系列虚拟化的技术(上)
    设计模式系列装饰模式
    typeof和GetType区别
    白话学习MVC(四)URL路由
    五、DirectX编程
  • 原文地址:https://www.cnblogs.com/nmap/p/6542743.html
Copyright © 2020-2023  润新知