十一、自动化批量监控
我们要监控的服务器数量很大的情况下,如何批量操作:
系统使用cobbler批量安装zabbix-agent安装与配置可以使用cobbler的postscript脚本实现,或者使用ansible来实现监控主机元素:监控项,图形,触发器等,统一使用模板
因为创建监控主机和添加模板都需要web界面操作,如何自动批量做?
答案:自动发现或自动注册。
自动发现或自动注册
自动发现:由ZabbixServer开启发现进程,每隔一段时间扫描网络中符合条件的主机。
自动注册:与自动发现相反由Zabbixagent去找Server注册。
所以大家看到,和前面提过的主动监控与被动监控的概念很类似。
自动发现案例:
前面早就准备了一台agent2,一直还没使用,这里就尝试自动发现这台agent2,并通过动作将其创建为监控主机并添加模板。
1,agent2上安装zabbix-agent
[root
agent2~]#yuminstallzabbix-agent2,配置agent端并启动服务
配置
/etc/zabbix/zabbix_agentd.conf
配置文件,配置结果如下:
[root
agent2~]#egrep-vn^#^$/etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=10.1.1.11
:ServerActive=10.1.1.11
:Hostname=agent2
:Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root
agent2~]#systemctlrestartzabbix-agent[root
agent2~]#systemctlenablezabbix-agent[root
agent2~]#netstat-ntlupgrep:
tcp.0.0.0:0.0.0.0:*LISTEN/zabbix_agentd
tcp::::::*LISTEN/zabbix_agentd
再次说明:在自动化运维体系里可以使用cobbler的postscript脚本或ansible来批量做以上2步
3,配置并启用自动发现规则
4,确认自动发现到主机
5,配置动作实现自动监控
6,确认动作更新并启用
7,验证最终效果
确认时间同步,需要耐心等待一段时间。(可能几分钟到十几分钟)
最终效果如下:
问题:agent2上的登录用户数这个监控项的图形上没有数据,为什么?如何解决?
自动注册就不再演示了,仅了解即可。
批量操作
把大量的服务器实现了自动监控后,后续还可能会做一些相关的批量操作,如:
批量启用主机批量禁用主机批量删除主机
说明:
因为我们建议使用模板来管理监控,所以批量更新功能也可以直接更新模板即可导出功能在当前版本经测试只能导出单个主机的配置信息为.xml格式文件导入导出
辛苦配置好的模板或主机,如果被误删除了怎么办?或者我想搭建多个zabbix服务器,那么又要辛苦再配置一遍?
解决方法就是把配置的模板或主机导出成.xml格式文件,主要有两大好处:
备份(防止误删除)迁移(导出后,导入到另一个服务器)
十二、zabbix代理
zabbixproxy应用场景
应用场景1:跨内外网监控
当zabbixserver与被监控机器不在同一个机房时,跨公网监控会很麻烦,也会带来安全隐患
比如有防火墙的情况,需要防火墙开放的端口增多像mysql数据库这类应用是不适合直接被公网连接的
应用场景2:分布式监控
当监控机主机特别多,甚至分散在不同的地域机房。这个时候zabbixserver压力很大,所以可以通过增加zabbixproxy来代理收集每个机房里的主机信息,再统一给zabbixserver.
zabbixproxy案例
环境准备:
1,新增一台全新环境的服务器做proxy,修改主机名
[root
proxy~]#hostnamectlset-hostname--staticproxy2,重新绑定主机名
#vim/etc/hosts
.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
10.1.1.11server
10.1.1.12agent1
10.1.1.13agent2
10.1.1.14proxy
3,确认关闭防火墙,selinux
4,确认时间同步
5,proxy上添加zabbix源
#vim/etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=file:///root/zabbix_soft
enabled=1
gpgcheck=0
说明:上面是将共享的软件包目录拷贝到所有机器上做的本地源,如果需要使用公网源可以去清华源搜索
操作步骤:
1,在proxy上安装软件包
[root
proxy~]#yuminstallmariadb-serverzabbix-proxy-mysqlzabbix-agent-y2,启动数据库并建库授权
[root
proxy~]#systemctlrestartmariadb[root
proxy~]#systemctlenablemariadb[root
proxy~]#mysqlMariaDB[(none)]createdatabasezabbix_proxydefaultcharsetutf8;
MariaDB[(none)]grantallprivilegesonzabbix_proxy.*tozabbix
localhostidentifiedby;MariaDB[(none)]flushprivileges;
MariaDB[(none)]quit
3,导入proxy数据并验证
[root
proxy~]#zcat/usr/share/doc/zabbix-proxy-mysql-4.4.4/schema.sql.gzmysqlzabbix_proxy-uzabbix-p
[root
proxy~]#mysql-eusezabbix_proxy;showtables4,修改proxy端配置并启动服务
[root
proxy~]#egrep-vn^#^$/etc/zabbix/zabbix_proxy.conf
30:Server=10.1.1.11修改为zabbix服务器的ip
49:Hostname=proxy修改为本代理服务器的主机名
91:LogFile=/var/log/zabbix/zabbix_proxy.log
:LogFileSize=0
:PidFile=/var/run/zabbix/zabbix_proxy.pid
:SocketDir=/var/run/zabbix
:DBName=zabbix_proxy
:DBUser=zabbix
:DBPassword=打开注释并修改为连接数据库的密码,和上面授权对应
:ConfigFrequency=60proxy多久从server接收一次配置数据(打开注释并修改)
:DataSenderFrequency=5proxy多久发送一次收集的数据给server(打开注释并修改)
:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
:Timeout=4
:ExternalScripts=/usr/lib/zabbix/externalscripts
:LogSlowQueries=3
:StatsAllowedIP=.0.0.1
[root
proxy~]#systemctlrestartzabbix-proxy[root
proxy~]#systemctlenablezabbix-proxyConfigFrequency=60
和
DataSenderFrequency=5
这两个参数需要配置,否则最终结果会很久都看不到数据。
5,配置agent端
除了agent1和agent2之外,server和proxy也可以被监控,也就是说一共4台都可以被监控。
这4台都可以被proxy监控,也可以被server监控。本实验我选择以下方案:
server监控自己(默认不变),proxy,agent1,agent2都被proxy监控,然后将数据给server所以:
#egrep-vn^#
^$/etc/zabbix/zabbix_agentd.conf
98:Server=10.1.1.14修改为proxy的IP,而不是server的IP
:ServerActive=10.1.1.14修改为proxy的IP,而不是server的IP
:Hostname=XXX主机名分别为proxy,agent1,agent2
:UserParameter=loginusers,who
wc-l都加上此自定义监控项
#systemctlrestartzabbix-agent
6,创建proxy为被监控主机
7,为3台被代理机添加模板
8,创建proxy为代理
批量更新代理
验证:
在被代理监控机上(agent1,agent2,proxy)做信息的改变,比如改变登录用户数,然后在web管理界面的图形上能查看到相应变化,则表示代理一切OK。
过程省略,请自行验证.