ZABBIX在windows下面的问题汇总

2017/4/14 posted in  云计算和大数据

ZABBIX 客户端和ZABBIX proxy

当服务器不多的时候,使用ZABBIX server直接收集是没有问题的,但是当服务器数量到达一定量级的时候,可能会导致zabbix出现性能问题,导致的情况有:

  • Web操作很卡,容易出现502
  • 图层断裂
  • 开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题

同时ZABBIX还可以同时实现集中、分布式监控,包括场景:

  • 监控远程区域设备
  • 监控本地网络不稳定区域
  • 当 Zabbix 监控上千设备时,使用它来减轻 Server 的压力
  • 简化 Zabbix 的维护

架构图

参考 zabbix proxy分布式监控配置(45) - 运维生存时间

104AF831-24CD-47F0-BE39-655F9A3

这样可以将不同段的交给不同的ZABBIX proxy,保证ZABBIX server的单一性,也减少性能消耗。

ZABBIX监控windows日志需要采用主动式的方推送日志信息。 ZABBIX的客户端监控分为几种类型,zabbix客户端、zabbix客户端(主动式)。

Zabbix Proxy 仅仅需要一条 TCP 连接到 Zabbix Server,所以防火墙上仅仅需要加上一条规则即可。
Zabbix Proxy 数据库必须和 Zabbix Server 分开,否则数据会被破坏,毕竟这两个数据库的表大部分都相同。
总之记住,数据库分开即可。
Zabbix Proxy 收集到数据之后,首先将数据缓存在本地,然后在一定的时间之后传递给 Zabbix Server。
这个时间由 Zabbix Proxy 配置文件中参数 ProxyLocalBuffer and ProxyOfflineBuffer 决定。

Zabbix Proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警。

安装

参考 Zabbix 配置 Proxy 代理监控 - Jamin Zhang

1. 安装 Zabbix Proxy

yum install mariadb-server zabbix-proxy-mysql

2. 创建及初始化数据库

3. 启动数据库

systemctl start mariadb

创建配置 Zabbix Proxy 数据库及用户

create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by ‘zabbix_proxy’;
flush privileges;

导入 sql

cd /usr/share/doc/zabbix-proxy-mysql-3.0.3
zcat schema.sql.gz | mysql -uroot zabbix_proxy

配置 zabbix_proxy.conf

配置如下:

[root@linux-node2 ~]# grep “^[a-Z]” /etc/zabbix/zabbix_proxy.conf 
Server=192.168.56.11
Hostname=Zabbix proxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000

启动 Zabbix Proxy 服务

systemctl start zabbix-proxy

在 Zabbix Web 界面中配置 Zabbix Proxy

定位到 Administration -> Proxies -> Create proxy 主要配置如下选项:

Proxy name: 即 Zabbix Proxy 的 hostname
Proxy mode: 即 Zabbix Proxy 的工作模式,默认为主动模式
Hosts Proxy hosts: 选择哪些机器处于 Proxy 模式

添加 Proxy 架构的主机监控

添加主机的方式和正常模式一样,唯一不同的是 Monitored by proxy 选择对应的 Proxy 节点。

注意
如果是已经存在的没有被 Proxy 监控的节点,修改成被 Proxy 代理监控时,
需要修改 Zabbix Agent 配置文件,将 Server/ServerActive 配置成 Proxy 的 IP

ZABBIX proxy的主动模式和被动模式

参考 zabbix主动被动模式说明/区别 – 酷喃|coolnull|

说明:
使用zabbix代理有很多好处,一方面可以监控不可达的远程区域;另一方面当监控项目数以万计的时候使用代理可以有效分担zabbix server压力,也简化分布式监控的维护。

具体:
主动、被动模式都是相对于proxy来说的。proxy主动发送数据就是主动模式;proxy等待server的请求,再发送数据就是被动模式。因为主动模式可以有效减轻zabbix server压力,需要监控的东西很多时一定要把监控模式更改为主动监控

被动模式流程,被动模式一定要记得设置Server = ServerIP
被动模式工作流程:
Server 打开一个TCP连接
Server发送一个key 为agent.ping
Agent接受这个请求,然后响应< HEADER >< DATALEN >
Server对接受到的数据进行处理
TCP连接关闭

主动模式流程,主动模式一定要记得设置ServerActive=ServerIP
Agent向Server建立一个TCP连接
Agent请求需要检测的数据列表
Server响应Agent,发送一个Items列表
Agent允许响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据

zabbix agentd主动和被动模式的区别

zabbix proxy 解决代替Server端监控的问题,ZABBIX anget作为服务器上的监控代理,同样也有不同模式的监控方式。同时agentd这种由客户端自动上报的方式,也可以部分解决性能的问题.

可参考Zabbix优化二:Agentd主动模式

1. Agentd的配置调整:

LogFile=/tmp/zabbix_agentd.log
Server=14.18.xxx.xxx
ServerActive=14.18.xxx.xx
Hostname=119.146.xxx.xx
RefreshActiveChecks=60
BufferSize=10000
MaxLinesPerSecond=200
Timeout=30

比较重要的参数是ServerActive和Hostname,ServerActive是指定Agentd收集的数据往哪里发送,Hostname是必须要和Server端添加主机时的主机名对应起来,这样Server端接收到数据才能找到对应关系,我这里为了兼容被动模式,没有把StartAgents设为0,如果一开始就是使用主动模式的话建议把StartAgents设为0,关闭被动模式

二、Server的配置调整:

StartPollers=100
首先把这个主动收集数据进程减少,原来开到700多,囧
StartTrappers=200
然后把这个负责处理Agentd推送过来的数据的进程开大一些,就可以了

三、调整模板

建议完整克隆一个Template OS Linux 模板来改,需要调整的地方就是:

wKiom1Q48kiA3gVIAAI9T4EdOKk715.jpg把所有的item的类型由原来的“zabbix代理”改成“zabbix端点代理程序(主动式)”

zabbix 监控windows下面的事件日志

1. 监控项配置

zabbix 日志使用zabbix客户端(主动式)来进行收集,如果使用其他的模式是没有办法收集到的,配置完成后会报错。

89A5896E-3983-4FB2-8239-AE78BA1B0704

记得一定要使用ZABBIX客户端(主动式)和信息类型为日志型的才可以抓取到相关日志

使用eventlog就可以获取相应的日志信息,其他更多函数可以参考如下ZABBIX文档

Windows-specific item keys Zabbix Documentation 3.2
这个里面收录了一些windows的单独的文档。如果需要调windows的内容需要在这里来找,可以发现很多监控项实际上是不支持的。

2. 触发器配置

监控项配置完了之后可以对日志进行触发器配置,可以

977AAAAE-5E64-40A7-A8EA-F9151D671425

表达式中可以采取另外的几种写法,来抓取不同的事件

3. 配置动作

配置动作其实跟这个没关,主要解决了几个事情,也大概的总结一下

ZABBIX动作主要在操作中设置,其中可以定义集中操作模式。在每个动作里面可以执行多条操作步骤,建议每天操作步骤只写一条语句,在写多条的时候总是会发现有时候只会执行其中的一条。所以尽量的使用多条操作命令,这样另外的一点好处是在操作步骤的时候可以定义多个步骤,以及多个步骤的执行顺序和关系。

4A0EC158-D8EA-41CB-9B20-519EBEC3BB5

几个选项也请记住,如步骤持续时间、操作类型、目标列表、类型。 如果是windows的脚本请选择自定义脚本。

在命令中可以执行命令也可以使用bat文件去执行bat批处理,一些操作用bat来处理

zabbix windows的远程命令的原理

由于应用场景想用ZABBIX从远程拉起一些需要界面交互的软件,所以试着用ZABBIX去处理,但是都会有问题。

  1. 模式一:用ZABBIX的命令里面配置直接启动,以及使用bat启动。
    1. 在这种模式下,都会以system 用户去启动window的EXE文件,所以此时是不会出现administrator的界面交互框的。
    2. 尝试使用工具进行以admin用户启动,测试后发现也是以system用户去实现的。
  2. 模式二:将EXE文件转成服务来启动
    1. 转换为服务之后使用服务启动,不管是用本地用户还是admin用户,启动后都不会有窗口弹出。

原理解析:

大概的想法就是使用远程命令的时候,实际和linux类似,是在命令下面执行的,此时是不能和桌面进行交互的,所以会一直使用System,这两边是没有办法关联到一起的。

解决方法:

暂时还是使用zabbix来停止程序,有admin下面的控制程序来监控如果进程没有了,自动拉起来,这样就可以拉起交互软件。