Zabbix自动化部署

Posted by fishcried on July 8, 2014

1. 需求

需求 解决
zabbix-agent配置自动化 通过脚本对agent配置文件进行自动化配置
zabbix-agent自动添加到server 可以通过discover的机制来发现主机
  可以通过api,使用脚本来自动添加host
需要为每个主机生成监控screen 可以通过api,根据主机与定义的graph来生成相应的screen

  • 安装虚机之前,应该该制作相应的虚机模板,将通用的配置操作做好。虚拟机模板制作
  • 对所有主机使用统一的监控模板。通过模板的变化,来适应监控项的变更。
  • 因为为每个主机都需要生成screen,那么添加主机也可以使用api来实现。

2. 脚本实现

2.1 文件

|-- conf
|   `-- template.xml	#模板文件
|-- config_agent.sh		#配置agent脚本
|-- config_server.py	#配置server脚本
|-- hostsfile.txt 		#agent列表文件
|-- LICENSE
|-- log				      	#日志目录
|   `-- git.txt
`-- README.md

代码下载

2.2. agent自动配置脚本config_agent.sh

该脚本主要用于安装zabbix-agent服务,配置服务器ip等。

  • 检查是否安装agent,如果没有则自动安装
  • 自动配置服务器ip

该脚本需要在创建虚拟时,通过cloud-init传递。或者在每个虚拟机内执行。

2.3. 屏幕自动生成脚本config_server.py

该脚本主要是自动想server中添加agents,为没一个agents生成监控面板。

  • 自动添加主机到server
  • 对所有主机应用相同的模板template.xml
  • 为每一个主机创建screen,名称为”screen-主机名”

3. 使用举例

例如我需要监控如下agents。服务器ip为192.168.250.5

主机名 ip
ncloud-amqp-2 192.168.250.67
ncloud-amqp-3 192.168.250.51
ncloud-comfig 192.168.250.20
vinder-volume-1 192.168.250.72
ncloud-network-2 192.168.250.16
ncloud-network-1 192.168.250.15

3.1 配置agents

需要将config_agent.sh脚本的serverip改为serverip=192.168.250.5,然后登录以上主机,分别执行config_agent.sh. 以上可以通过管理工具来简便执行,或者ssh。不必手动登录执行,如果有100,1000台需要管理的机器那?

3.2 配置server

1 agent配置好后,需要将agent添加到server。非常简单,你只需要提供一个agent列表文件即可。

cat hostsfile.txt
ncloud-amqp-2  192.168.250.67
ncloud-amqp-3  192.168.250.51
ncloud-comfig  192.168.250.20
vinder-volume-1 192.168.250.72
ncloud-network-2 192.168.250.16
ncloud-network-1 192.168.250.15

2 执行config_server.py脚本

python config_server.py -S 192.168.250.5 -f hostsfile.txt
2014-07-14 16:45:53,245 [__main__] INFO: Get hostgroup "neunn" from conf/template.xml
2014-07-14 16:45:53,271 [__main__] INFO: Get template name "Neunn" from conf/template.xml
2014-07-14 16:45:53,307 [__main__] INFO: Log in http://192.168.250.5/zabbix/api_jsonrpc.php by (Admin: zabbix)success
...
2014-07-14 16:45:54,699 [__main__] INFO: Finish

3.2 查看效果

3.2.1 添加的主机是否成功?

添加的主机

绿色的Z表示,server与agents协商成功。如果不成功会是红色的。

3.2.2 每台主机的监控面板是否有效?

添加的监控面板

监控面板的名称是自动生成的,规则是screen-主机名

3.3 监控面板监控项目

查看一个面板

具体的监控项目,通过模板配置,如果对模板不满意,可以进行修改,然后导出模板,替换掉conf/template.xml即可。 目前提供一下监控图表:

  • Cpu Utilization
    • user
    • system
    • io
    • interupt
  • DIsk RW Operations
    • read ops
    • write ops
  • Disk RW bytes/s
    • read bytes/s
    • write bytes/s
  • Net IN/OUT (bytes/s)
    • in bytes/s
    • out bytes/s

变更记录

Why Who When
创建草稿 fishcried 2014-07-08
完善内容 fishcried 2014-07-09
添加图表 fishcried 2014-07-14