[toc]
Zabbix 的架构配置选项(二)
一, 添加自定义监控项目
Zabbix 的特色: 我们有时候会根据业务需求配置一些个性化的需求服务去监控某台 web 的 80 端口连接数,
并整出监控状态图:
[ ] zabbix 监控中心创建监控项目;
[ ] 针对该监控项目以图形展现;
1.1 需要到客户端定义脚本:
- # vim /usr/local/sbin/estab.sh
- // 内容如下
- #!/bin/bash
- ## 获取 80 端口并发连接数
netstat -ant |grep ':80' |grep -c ESTABLISHED
1.2 给脚本授权, 编辑配置文件
自定义监控项的 key 为 my.estab.count(也就是在监控项中需要填写的键值), 后面的 [*] 里面写脚本的参数
- # chmod 755 /usr/local/sbin/estab.sh
- # vim /etc/zabbix/zabbix_agentd.conf
- // 增加
- UnsafeUserParameters=1 // 表示使用自定义脚本
- UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
- // 自定义监控项的 key 为 my.estab.count(也就是在监控项中需要填写的键值), 后面的 [*] 里面写脚本的参数, 如果没有参数则可以省略, 如果有需要用逗号分隔, 脚本为 / usr/local/sbin/estab.sh
1.3 重启客户端的 zabbix 服务:
[root@xavi-002 ~]# systemctl restart zabbix-agent
1.4 到服务端验证, 执行命令:
- [root@xavi ~]# zabbix_get -s 192.168.72.133 -p 10050 -k 'my.estab.count'
- 0
-s: 源地址
-p: 端口
-k: 键值
如上显示 0 即为没有任何连接.
1.5 但是这不是我们需要的效果, 效果是我们需要在 web 页面去随时查看:
配置 主机 监控项 创建监控项
其它项默认即可, 如有需求按照现场需求定制.
1.6 配置一个监控图形:
"配置""主机" "图形" 创建图形 "
1.7 创建触发器
二, 配置邮件告警
配置告警是目前绝大多数企业必须要有的一个状态, 遇到问题第一时间获得警告大大提升了运维的高效性, 如果没有配置任何告警, 等待客户反应, 这是一个非常不明智的选择.
2.1 在开始前, 一定要把这两项开启:
2.2 将授权码开通并定义
2.3 编辑报警媒介
登录 web 管理界面:
管理 报警媒介类型 创建媒体类型(不建议用自带的, 不好用)
脚本名称一定要用自己自定义的!!!
脚本参数(不然不可以发邮件):
- {ALERT.SENDTO} // 发给谁
- {ALERT.SUBJECT} // 主题
- {ALERT.MESSAGE} // 邮件内容
2.4 写一个报警的邮件脚本:
在服务端配置:
[root@xavi ~]# vim /usr/lib/zabbix/alertscripts/Sendmail.py
脚本为什么放在这边呢? 因为咱们在配置文件中 = vim /etc/zabbix/zabbix_server.conf 有个参数 AlertScriptsPath=/usr/lib/zabbix/alertscripts 定义了位置
vim Sendmail.py
- import os,sys
- reload(sys)
- sys.setdefaultencoding('utf8')
- import getopt
- import smtplib
- from email.MIMEText import MIMEText
- from email.MIMEMultipart import MIMEMultipart
- from subprocess import *
- def sendqqmail(username,password,mailfrom,mailto,subject,content):
- gserver = 'smtp.163.com' #编写服务地址
- gport = 25
- try:
- msg = MIMEText(unicode(content).encode('utf-8'))
- msg['from'] = mailfrom
- msg['to'] = mailto
- msg['Reply-To'] = mailfrom
- msg['Subject'] = subject
- smtp = smtplib.SMTP(gserver, gport)
- smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
- smtp.close()
- except Exception,err:
- print "Send mail failed. Error: %s" % err
- def main():
- to=sys.argv[1]
- subject=sys.argv[2]
- content=sys.argv[3]
- ## 定义邮箱的账号和密码, 你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开, 否则你会死的很惨)
- sendqqmail('xxxxxx@163.com','Password','xxxxxx@163.com',to,subject,content)
- // 注意这里的 password 是刚才在 163 邮箱设置的授权码
赋权限, 测试邮件运行结果
[root@xavi alertscripts]# chmod 755 /usr/lib/zabbix/alertscripts/Sendmail.py
[root@xavi alertscripts]# python Sendmail.py dsf1626@163.com 'torreicdmailcn' 'datatime20180417'
2.5 创建运维人员的邮箱, 接受报警邮件
管理 -> 用户 -> 创建用户
创建一个接受告警邮件的用户,"管理","用户","创建用户","报警媒介", 类型选择 "baojing", 注意用户的权限, 如果没有需要到用户组去设置权限
给创建的用户, 赋予权限
关于权限选项, 我们先保存当前的配置, 然后进入用户群组 Zabbix administrators 权限
为了防止发生错误, 暂时先选择全部用户. 千万不要忘记点击添加
授权成功后更新, 检查下用户权限
2.6 权限设定成功, 下一步设定报警动作
"配置","动作","创建动作",
设置动作,"配置","动作","创建动作", 名称写 "sendmail"(自定义),"操作" 页面, 内容如下
增加一个触发动作
新的触发条件 ",A 维护状态 非在 维护, B 触发器示警度>= 未分类
针对动作的操作部分进行优化修改
"操作", 选择发送的用户为刚创建的用户, 仅送到选择 "baojing"
- HOST:{HOST.NAME} {HOST.IP}
- TIME:{EVENT.DATE} {EVENT.TIME}
- LEVEL:{TRIGGER.SEVERITY}
- NAME:{TRIGGER.NAME}
- messages:{ITEM.NAME}:{ITEM.VALUE}
- ID:{EVENT.ID}
对恢复操作部分修改
"恢复操作", 把信息改成如下:
- HOST:{HOST.NAME} {HOST.IP}
- TIME:{EVENT.DATE} {EVENT.TIME}
- LEVEL:{TRIGGER.SEVERITY}
- NAME:{TRIGGER.NAME}
- messages:{ITEM.NAME}:{ITEM.VALUE}
- ID:{EVENT.ID}
点击 "新的","操作", 选择发送的用户为刚创建的用户, 仅送到选择 "baojing"
点击添加后查看
三, 验证配置:
配置 主机 触发器 创建触发器
条件是, 并发数小于 1, 咱们的虚拟机压根就没有任何人去访问, 所以必然报警.
在邮箱里查收
修改参数, 查看恢复邮件
Zabbix 的架构配置选项(二)
来源: http://www.bubuko.com/infodetail-2566276.html