休对故人思故国,且将新火试新茶,诗酒趁年华
环境
zabbix server
ens192:10.127.0.133 ens256:172.168.0.2
windows server2012
ens192:172.168.0.3 gateway:172.168.0.2
配置共享上网以及端口转发
这里的windows server2012环境使用的是esxi虚拟机,由于上公网的ip不够用,这里我做了nat,但esxi不支持nat网络,所以我使用iptables在zabbix server上实现了端口转发以及共享上网
开启zabbix server的路由转发功能
代码语言:javascript复制echo 1 > /proc/sys/net/ipv4/ip_forward
或者
代码语言:javascript复制vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
配置iptables
代码语言:javascript复制iptables -t nat -A POSTROUTING -s 172.168.0.0/24 -o ens192 -j SNAT --to-source 10.127.0.133
iptables -t nat -A PREROUTING -d 10.127.0.133 -p tcp --dport 3389 -i ens192 -j DNAT --to-destination 172.168.0.3:3389
iptables-save
测试网络连通性
进行远程连接测试
由于Windows server2012没有开启远程连接服务,需要在服务器管理器中添加角色和功能,步骤比较简单,这里不再赘述,直接连接zabbix server的3389端口就可以连接内网Windows server的远程桌面了
下载zabbix agent客户端
下载地址:
https://assets.zabbix.com/downloads/4.2.6/zabbix_agent-4.2.6-win-amd64-openssl.msi
开始安装
安装完成之后,zabbix agent会添加到服务中并开始运行
也可以看到10050端口正处于监听状态
在zabbix上添加Windows主机
主机名称写Windows名称就可以了
创建完主机之后遇到一个问题,连接agent一直报104错误,查看了下agent日志,发现网络走的是内网网卡,可能是之前iptables规则有点多,而且iptables规则是从上往下匹配的,导致正确的规则没有匹配到
get value from agent failed: ZBX_TCP_READ() failed;[104] connection reset by peer
将正确的iptables规则放在链的最顶端可以解决
代码语言:javascript复制iptables -t nat -I POSTROUTING -d 172.168.0.0/24 -p tcp -m tcp --dport 10050 -j SNAT --to-source 10.127.0.133
iptables-save
查看日志可以看到agent的状态变为可用
zabbix提供了一个Windows监控的模板,提供了很多系统上的监控,并且可以自动发现并监控服务状态
创建Windows监控项示例
获取IIS进程状态
agent提供了一个proc.num[]的键值用于对进程数量的监控
当进程数量为0时可以配置触发器报警
如果要对IIS进程进行详细的监控,可以使用Windows的性能监视器进行监控
zabbix agent提供了perf_counter[counter,interval]键值对性能监试器采集到的值进行监控,这里以获取windows可用内存为例,首先要添加一个计数器
创建完成之后只需要在zabbix上添加计数器的路径就可以了
当然,这些计数器的路径也可以用数字来表示,路径与数字的映射值存在于注册表中,需要运行regedit,然后找到HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionPerflib 09这个注册表。
比如上面的监控项也可以使用如下方法表示:
如果我们要监控web进程的详细信息,可以在process路径下添加计数器,inetinfo为web运行的软件名称
监控IIS的并发连接数
同样是使用性能监视器,添加一个IIS连接数的计数器来对其进行监控,存在于Web Service路径下,如果要对IIS的其他信息(比如处理的CGI请求数)进行获取,也是在Web Service路径下添加计数器
欢迎各位一起交流,有问题可在下方评论交流