SECURITY DAY06
案例1:实现Zabbix报警功能案例2:Zabbix自动发现
案例3:Zabbix主动监控
案例4:拓扑图与聚合图形
案例5:自定义监控案例
1 案例1:实现Zabbix报警功能
1.1 问题
沿用第5天Zabbix练习,使用Zabbix实现报警功能,实现以下目标:
- 监控Linux服务器系统账户
- 创建Media,设置邮件服务器及收件人邮箱
- 当系统账户数量超过26人时发送报警邮件
1.2 方案
自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发器与报警动作才可以自定报警。
什么是触发器(trigger)?
表达式,如内存不足300M,用户超过30个等
当出发条件发生后,会导致一个触发事件
触发事件会执行某个动作
什么是动作(action)?
动作是触发器的条件被触发后所执行的行为
可以是发送邮件、也可以是重启某个服务等
参考如下操作步骤:
- 创建触发器并设置标记
- 设置邮箱
- 创建Action动作
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:创建触发器规则
1)创建触发器
创建触发器时强烈建议使用英文的语言环境,通过Configuration–> Templates,找到我们之前创建的count.line.passwd模板,点击模板后面的triggers,如图-1所示。
图-1
2)触发器表达式
创建触发器时需要定义表达式,触发器表达式(Expression)是触发异常的条件,触发器表达式格式如下:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{主机:key.函数(参数)}<表达式>常数
在如图-2所示的蓝色方框中编写触发器表达式,可以直接手写,也可以通过add选择表达式模板。
图-2
下面,我们看几个表达式的案例:
{web1:system.cpu.load[all,avg1].last(0)}>5 //0为最新数据
如果web1主机最新的CPU平均负载值大于5,则触发器状态Problem
{vfs.fs.size[/,free].max(5m)}<10G //5m为最近5分钟
根分区,最近5分钟的最大容量小于10G,则状态进入Problem
{vfs.file.cksum[/etc/passwd].diff(0)}>0 //0为最新数据
最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem
大多数函数使用秒作为参数,可以使用#来表示其他含义(具体参考表-1)。
avg, count, last, min and max 等函数支持额外的第二个参数time_shift(时间偏移量),这个参数允许从过去一段时间内引用数据。
3)配置触发器
设置触发器名称,如图-3所示,点击add添加表达式,填写表达式:监控项为账户数量,最近300秒账户数量大于26(根据系统账户数量实际填写),效果如图-4所示。
图-3
图-4
选择触发器报警级别,如图-5所示,Add创建该触发器,如图-6所示。
图-5
图-6
步骤二:设置邮件
1)创建Media
通过Administration(管理)–>Media Type(报警媒体类型)–>选择Email(邮件),如图-7所示。
图-7
设置邮件服务器信息,设置邮件服务器及邮件账户信息,如图-8所示。
图-8
2)为用户添加Media
在Administration(管理)–>Users(用户)中找到选择admin账户,如图-9所示。
图-9
点击Admin账户后,在弹出的界面中选择Media(报警媒介)菜单–>点击Add(添加)报警媒介,如图-10所示。
图-10
点击Add(添加)后,在Meida Type中填写报警类型,收件人,时间等信息,如图-11所示。
图-11
步骤三:创建Action动作
1)Action动作
Action(动作)是定义当触发器被触发时的时候,执行什么行为。
通过Configuration(配置)–>Actions(动作)–>Create action(创建动作),如图-12所示。
图-12
2)配置Action动作的触发条件
填写Action动作的名称,配置什么触发器被触发时会执行本Action动作(账户数量大于26),如图-13所示。
图-13
3)配置Action动作的具体行为
配置动作的具体操作行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户,如图-14和图-15所示。
图-14
图-15
4)测试效果
在被监控主机创建账户(让账户数量大于26),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间),如图-16所示。
图-16
查看报警邮件,在监控服务器上使用mail命令查收报警邮件,如图-17所示。
图-17
2 案例2:Zabbix自动发现
2.1 问题
沿用前面的练习,配置Zabbix的自动发现机制,实现以下目标:
- 创建自动发现规则
- 创建自动发现后的动作,添加主机、为主机链接模板
2.2 方案
什么是自动发现(Discovery)?
当Zabbix需要监控的设备越来越多,手动添加监控设备越来越有挑战,此时,可以考虑使用自动发现功能,自动添加被监控主机,实现自动批量添加一组监控主机功能。
自动发现可以实现:
- 自动发现、添加主机,自动添加主机到组;
- 自动连接模板到主机,自动创建监控项目与图形等。
自动发现(Discovery)流程:
- 创建自动发现规则
- 创建Action动作,说明发现主机后自动执行什么动作
- 通过动作,执行添加主机,链接模板到主机等操作
2.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:自动发现规则
1)创建自动发现规则
通过Configuration(配置)–>Discovery(自动发现)–>Create discovery rule(创建发现规则),如图-18所示。
图-18
2)填写规则
填写自动发现的IP范围(逗号隔开可以写多个),多久做一次自动发现(默认为1小时,仅实验修改为1m),如图-19所示。配置检查的方式:HTTP、FTP、Agent的自定义key等检查,如图-20所示。
图-19
图-20
步骤二:创建动作
1)创建Action动作
通过Configuration(配置)–> Actions Event source(事件源):自动发现(Discovery)–>Create action(创建动作),如图-21所示。
图-21
2)配置Action动作具体行为
配置动作,添加动作名称,添加触发动作的条件,如图-22所示。
图-22
点击操作(触发动作后要执行的操作指令),操作细节:添加主机到组,与模板链接(HTTP模板),如图-23所示。
图-23
步骤二:添加新的虚拟机
1)创建新的虚拟机
创建一台新的主机,验证zabbix是否可以自动发现该主机,可以重新部署一台新的虚拟机(注意前面的课程,我们已经创建了虚拟机zabbixclient_web2,并且已经安装部署了Zabbix agent,如果没有该虚拟机或没有安装Agent,则需要前在zabbixclient_web2部署Agent),也可以将旧虚拟机的IP地址,临时修改为其他IP。
2)验证结果
登陆Zabbix服务器的Web页面,查看主机列表,确认新添加的主机是否被自动加入监控主机列表,是否自动绑定了监控模板。
3 案例3:Zabbix主动监控
3.1 问题
沿用前面的练习,配置Zabbix主动监控,实现以下目标:
- 修改被监控主机agent为主动监控模式
- 克隆模板,修改模板为主动监控模板
- 添加监控主机,并链接主动监控模板
3.2 方案
默认zabbix采用的是被动监控,主动和被动都是对被监控端主机而言的!
被动监控:Server向Agent发起连接,发送监控key,Agent接受请求,响应监控数据。
主动监控:Agent向Server发起连接,Agent请求需要检测的监控项目列表,Server响应Agent发送一个items列表,Agent确认收到监控列表,TCP连接完成,会话关闭,Agent开始周期性地收集数据。
区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可。
当监控主机达到一定量级后,Zabbix服务器会越来越慢,此时,可以考虑使用主动监控,释放服务器的压力。
另外,Zabbix也支持分布式监控,也是可以考虑的方案。
3.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:添加被监控主机
1)为被监控主机安装部署zabbix agent
注