前言:由于公司服务器较多,因此需要对多台主机做监控很麻烦,由此又踩了个坑。
以下环境是Zabbix 2.4版本。
* 一、实现多主机密钥登陆
* 二、使用ansible对多主机进行安装agent
* 三、Zabbix添加自动发现
一、实现多主机密钥登陆
Zabbix server 创建密钥:
[root@test ~]# ssh-keygen -t rsa Generating public/private rsa key pair.Enter file in which to save the key (/home/meihua/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/meihua/.ssh/id_rsa.Your public key has been saved in /home/meihua/.ssh/id_rsa.pub.The key fingerprint is:38:41:a2:fb:a0:1f:d8:4f:97:5c:dd:74:aa:af:c3:dd meihua@mh-test4The key's randomart p_w_picpath is:+--[ RSA 2048]----+| . . || . o || . . . . || . o . o o || o o S . o || + o . + . ||o o o + ... . || . + . o.. E || . . .o. |+-----------------+
使用脚本将密钥传递给每个主机:
由于密码是在TXT中记录好的,新建一个文件导入即可
#!/bin/env bash#source /etc/profilewhile read A;do IP=$(echo $A|awk '{print $1}') * 取出主机IP passwd=$(echo $A|awk '{print $3}') * 取出主机密码 /usr/bin/expect <
二、使用ansible对多主机进行安装agent
# cat /etc/ansible/hosts * 将agent的IP写入hosts文件[zabbix_user]172.16.1.100172.16.2.100172.16.3.100172.16.4.100# tree.├── ansible.cfg├── hosts├── hosts.bak├── roles│ └── zabbix│ ├── files * 将需要安装的软件包及zabbix_agent的配置文件放置files下│ │ ├── zabbix-2.4.7-1.el6.x86_64.rpm│ │ ├── zabbix-agent-2.4.7-1.el6.x86_64.rpm│ │ ├── zabbix_agentd.conf│ │ ├── zabbix-get-2.4.7-1.el6.x86_64.rpm│ │ └── zabbix-sender-2.4.7-1.el6.x86_64.rpm│ ├── handlers│ │ └── main.yml│ └── tasks│ └── main.yml└── zabbix.yml# cat /etc/ansible/roles/zabbix/handles/tasks/main.yml- name: Create file directory * 创建包存放目录 file: path=/packages/zabbix/ state=directory - name: Copy The Zabbix agent packages to destination * 将包复制过去 copy: src={ { item }} dest=/packages/zabbix/ with_items: - zabbix-agent-2.4.7-1.el6.x86_64.rpm - zabbix-2.4.7-1.el6.x86_64.rpm - zabbix-sender-2.4.7-1.el6.x86_64.rpm - zabbix-get-2.4.7-1.el6.x86_64.rpm- name: install local files * 通过yum安装 yum: name={ { item }} state=present with_items: - /packages/zabbix/zabbix-get-2.4.7-1.el6.x86_64.rpm - /packages/zabbix/zabbix-2.4.7-1.el6.x86_64.rpm - /packages/zabbix/zabbix-sender-2.4.7-1.el6.x86_64.rpm - /packages/zabbix/zabbix-agent-2.4.7-1.el6.x86_64.rpm- name: local file synchronization * 将配置文件复制过去 copy: src=zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf notify: - restart local server- name: start local Server * 启动zabbix-agentd service: name=zabbix-agent state=started# cat /etc/ansible/roles/zabbix/handlers/main.yml * 配置文件变更时重启- name: restart local server service: name=zabbix-agent state=restarted# ansible-play /etc/ansible/zabbix.yml * 执行即可
三、Zabbix添加自动发现
坑:由于公司主机较多,因此需要通过Zabbix Discovery进行添加,减少工作量。但此时遇到了第一个 “坑——B类地址自动发现”。
通常都习惯了Zabbix的自动发现是C类的,因此B类地址需要特殊的设置方式,配置方法如下:
自动发现IP添加:
C类添加方式:
192.168.0.1-254
B类添加方式:
192.168.0-16.0-254 (注:地址范围数目大小要小于64K)
掩码添加方式:
192.168.0.0/24 (注:掩码仅支持16-30)
=== 配置自动发现Configuration——》Discovery
=== 选择添加规则
=== 选择添加host操作
=== 完成自动发现
脚本写的比较烂,但是能实现就好,就是自动发现的B类地址要查看以下官方文档,其他还算是正常工作。