手把手带你用Zabbix进行操作系统监控

VSole2022-05-13 06:49:11

Zabbix默认使用Zabbix agent监控操作系统,其内置的监控项可以满足系统大部分的指标监控,因此,在完成Zabbix agent的安装后,只需在前端页面配置并关联相应的系统监控模板就可以了。如果内置监控项不能满足监控需求,则可以通过system. run[command, ]监控项让Zabbix agent运行想要的命令来获取监控数据。

下面介绍Zabbix对于Linux和Windows的监控。

安装Zabbix agent的过程就不赘述了,主要介绍一些关键的配置和功能。

1操作系统相关监控项的选择及优化

▊ Zabbix agent类型的监控项

在Zabbix官方手册中,可以查看Zabbix agent类型的监控项键值说明,其中不仅列出了所有操作系统可使用的键值,还包括参数和注意事项等信息。对于Windows系统,官方还列出了其特有的监控项,如服务、性能计数器等。

同样,手册中也介绍了上述监控项对不同操作系统的适用情况,明确地指出了不同操作系统中可用及不可用的监控项。

监控项主/被动模式的选择及优化

建议使用Zabbix默认的操作系统模板监控相应的主机,但是需要一些优化来确保达到最好的监控效果,以及最大限度地减少Zabbix系统性能的开销。

下面介绍Zabbix agent(active)和Zabbix agent监控项类型的区别。

前者又名主动模式监控项类型,后者为被动模式监控项类型。这里的主动和被动都是针对Zabbix agent来说的。主动模式监控项,顾名思义,就是Zabbix agent会主动上报监控数据给Zabbix server。而被动模式监控项就是指Zabbix server根据监控项的更新间隔向Zabbix agent拉取监控数据。两者都有各自的适用范围。

在小型环境中,当主机数量为200~500台时,可以将大部分监控项设置为Zabbix agent(被动模式)类型的监控项,这样,监控数据的更新时间不会受被监控对象的系统时间的影响,更新时间都是跟着Zabbix server走的。

在中大型环境中,建议将大部分监控项设置为Zabbix agent(active)(主动模式)类型的监控项,这样,Zabbix agent会主动上报监控数据给Zabbix server,可以大大减小Zabbix系统的压力。但主动模式监控项的监控数据会受到操作系统的时间影响,当被监控对象的系统时间与Zabbix server的系统时间有偏差时,其含有nodata函数的触发器就会产生误告警。

下面以Linux模板Template OS Linux为例进行优化。

经过多年的实践经验,建议将agent ping、Host local time及所有自动发现的规则项(不是监控项原型里的)都设置为被动模式,这样就不会受到系统时间的影响了。将自动发现的监控项设为被动模式,主要是由于间隔时间太长,导致纳管主机的监控数据很久才出来,这个时候,被动模式的监控项就可以使用“check now”的功能了。

监控频率:与主机性能指标有关的监控项,如CPU、内存等,建议将频率调整为1次/分钟;而一些信息指标监控项,如Host name、Version of zabbix_agent(d) running等,建议将频率设置为1次/小时(或更长);对于模板中的自动发现监控项,如Mounted filesystem discovery、Network interface discovery等,也建议将频率设置为1次/小时;对于一些容量指标监控项,如总内存、总文件系统大小等,也都建议将频率设置为1次/小时。

关闭无用的触发器:在默认的模板中,官方提供了很多触发器,在实际使用中,用户可以根据自身需求开启/关闭。

▊ 告警抑制及触发器中宏变量的巧用

Zabbix提供了很多触发器函数,用户可以通过使用这些函数灵活地制定告警规则。下面就简单介绍一下常用在操作系统监控中的触发器函数。

(1)告警抑制。

告警抑制在监控中起到了很大的作用,可以有效减少误告警。但Zabbix没有直接相关的告警抑制选项,可以通过几个常用的触发器函数来达到抑制告警的目的。

告警抑制需求举例:如果CPU iowait连续5min都大于20%,则告警{Template OS Linux:system.cpu.util[,iowait].min(5m)}>20,表示5min内的最小值大于20%就告警,即只有5min内的数据都大于20%才告警。基本上所有的告警都可以用类似的方法进行抑制。

(2)宏变量。

Zabbix有一个特性,就是模板关联主机之后,主机中继承自模板的监控项和触发器的配置很多都是不能改的,这就导致使用者很难定制化一些告警阈值。但Zabbix提供了宏变量来解决这一问题。下面同样以CPU iowait监控项的触发器举例。

对于{Template OS Linux:system.cpu.util[,iowait].avg(5m)}>20,其中的20为固定的值,现在有一种场景:有20台主机,都套用了Linux的模板,但其中两台主机需要将CPU iowait的阈值调整成10%,其他不变。此时如果设置成固定的20,那么对于特定机器的阈值调整很难做到。解决方案如下:将模板中的触发器写成{Template OS Linux:system.cpu. util[,iowait].avg(5m)}>{$CPUIOWAIT},然后在模板的“宏”选项卡中添加一个模板宏“{$CPUIOWAIT}”,值为“20”,如图1所示。

图1

这是模板宏,此时将那两台需要修改阈值的主机的宏改为10就可以了,因为在主机中,主机宏的优先级是高于模板宏的优先级的。

(3)LLD宏变量。

LLD的宏变量解决了在自动发现中单个监控项宏的问题。例如,有以下场景:一台主机中有很多文件系统,整个文件系统的告警阈值宏变量为85%,此时,有一个文件系统/opt,它的阈值需要设置为95%。为了解决这个问题,Zabbix也提供了LLD宏变量,书写方式为:

{host:vfs.fs.size[{#FSNAME},pfree].last()}<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

此时,在主机宏中添加“{$LOW_SPACE_LIMIT:"/opt "}”,值为“95”就可以了,如图2所示。

图2

2Linux

本节主要介绍Linux系统中CPU、内存、文件系统相关Zabbix监控指标的使用及优化。

1.CPU使用率

Zabbix默认的CPU使用率相关的监控项共有15个,但是没有可以表示主机总体CPU使用率的监控项。可以通过创建可计算类型的监控项来监控总体的CPU使用率指标,计算逻辑为“100-system.cpu.util[,idle]”,意思是用100减去CPU的空闲值,可以比较准确地表示总体CPU的使用率。

2.内存使用率

Zabbix默认的内存键值vm.memory.size中有很多参数。

  • total:总物理内存。
  • free:可用内存。
  • active:RAM中当前或最近使用的内存。
  • inactive:未使用内存。
  • wired:被标记为始终驻留在RAM中的内存,不会移动到磁盘中。
  • pinned:和wired一样。
  • anon:与文件无关的内存(不能重新读取)。
  • exec:可执行代码,通常来自一个(程序)文件。
  • file:缓存最近访问文件的目录。
  • buffers:缓存文件系统元数据。
  • cached:缓存。
  • shared:可以同时被多个进程访问的内存。
  • used:active + wired 内存。
  • pused:active + wired 总内存的百分比。
  • available:inactive + cached + free memory内存。
  • pavailable:inactive + cached + free memory占total的百分比。

可以看到,available、pavailable是inactive + cached + free memory的可用内存,而used、pused则不是,更建议给pavailable参数的内存监控项设置告警阈值。

3.文件系统

默认模板中关于文件系统的监控项共有5个。

  • Free disk space on {#FSNAME}。
  • Free disk space on {#FSNAME} (percentage)。
  • Free inodes on {#FSNAME} (percentage)。
  • Total disk space on {#FSNAME}。
  • Used disk space on {#FSNAME}。

建议将文件系统的监控项改为3个,分别为总容量、已使用大小、已使用的百分比大小,这样也可以减小Zabbix的压力。

3Windows

本节主要介绍Windows系统中服务、性能计数器、事件日志相关Zabbix监控指标的使用及优化。

1.Windows服务的自动发现

在大部分情况下,用户不会去关心所有Windows系统的服务,但默认模板会将所有的服务都发现出来并添加告警。对此,建议将模板中的Windows service discovery关闭,当有主机需要监控服务时,在主机上开启,并添加过滤条件来找到需要监控的服务,如图3所示。

图3

2.Windows性能计数器监控

Zabbix提供了一个很重要的且专属于Windows的监控项键值perf_counter [counter, ],通过这个键值,就可以监控性能计数器中的数据了,如监控项Average disk read queue length的键值为perf_counter[\234(_Total)\1402]。具体使用方法在官方手册中有介绍。

3.Windows event log

在Windows中有一个重要的组件,就是event log。Zabbix同样提供了相应的专属键值来监控它,即eventlog[name,,,, ,,]。可以看到,这个键值中有非常多的参数,可以很准确地监控用户需要的日志。

打开Windows中的事件查看器,选择一个事件,如图4所示。

图4

可以看到,键值中的参数在图4中都有出现。

  • name:日志名称。
  • 级别。
  • 来源。
  • 事件ID。

需要注意的是,上述参数都需要填写英文。

zabbix触发器
本作品采用《CC 协议》,转载必须注明作者和本文链接
主动模式监控项,顾名思义,就是Zabbix agent会主动上报监控数据给Zabbix server。而被动模式监控项就是指Zabbix server根据监控项的更新间隔向Zabbix agent拉取监控数据。
DevOps以敏捷见长,因此保护这些组织的能力必须同样迅速,对于无法阻止的情况必须快速响应。这有助于使安全成为每个人的工作。自从第一个安全事件和入侵检测工具发出警报以来,安全与运营团队就收到了大量警报。它查询Elasticsearch并根据一组规则对数据进行比较。
痛苦的纯文本日志管理日子一去不复返了。虽然纯文本数据在某些情况下仍然很有用,但是在进行扩展分析以收集有洞察力的基础设施数据并改进代码质量时,寻找一个可靠的日志管理解决方案是值得的,该解决方案可以增强业务工作流的能力。 日志不是一件容易处理的事情,但无论如何都是任何生产系统的一个重要方面。当您面临一个困难的问题时,使用日志管理解决方案要比在遍布系统环境的无休止的文本文件循环中穿梭容易得多。
基于Zabbix的漏洞复现
2022-06-21 14:45:36
STATEMENT声明由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
在公司搭建系统级别的监控,由于ELK对流量监控存在局限——现有的工具只记录了累计的流量,而无法计算每时每刻的流量。所以决定最后用zabbix来对网络做监控和报警,下面会从零开始记录zabbix搭建过程中的所有步骤,希望可以给你带来帮助。 安装前准备工作 安装必要的软件,禁用SELINUX,安装必备软件
web服务器经常需要从别的服务器获取数据,如果获取数据的服务器地址可控,攻击者就可以通过web服务器自定义向别的服务器发出请求,本期我们聊一下ssrf漏洞原理和利用.快来一起看看吧
例如,采集数据、分析显示、报警、简单故障自动处理等。Cacti通过snmpget检索数据并使用RRDtool进行绘图,但用户不需要知道RRDtool的复杂参数。NagiosNagios是一个企业级监控系统,可以监控服务运行状态和网络信息,监控指定的本地或远程主机参数和服务,并提供异常告警通知功能。
Tomcat的一种利用方式
2022-12-12 10:05:47
访问/manager/html输入用户名和密码,自动在里面上传war进行部署显然这不归Tomcat负责,应该由用户保证自己的账号和密码安全TomcatManager为的管理采用了作者名作HTTP Basic认证,也就是用户名作认证后的Base64保护。这Tomcat也是官方拒绝该漏洞的原因之一,他们认为基于JMXProxy实现的RCE攻击和类似的,由用户负责安全public class LockOutRealm extends CombinedRealm { /** * 用户连续认证失败的次数 * 被锁定。
信息搜集:开源情报信息收集、创建企业密码字典进入内网:基于企业弱账号漏洞、基于系统漏洞进入、网站应用程序渗透隐匿攻击:Command and Control、代理内网跨边界应用:内网跨边界转发、内网跨边界代理穿透、shell反弹等
VSole
网络安全专家