Zabbix踩坑之旅 —— B类地址的自动发现
前言:由于公司服务器较多,因此需要对多台主机做监控很麻烦,由此又踩了个坑。以下环境是Zabbix 2.4版本。
* 一、实现多主机密钥登陆
* 二、使用ansible对多主机进行安装agent
* 三、Zabbix添加自动发现
一、实现多主机密钥登陆
Zabbix server 创建密钥:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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-test4
The key's randomart image is:
+--[ RSA 2048]----+
| . . |
| . o |
|. . . .|
| . o . o o |
|o o S . o |
| + o . + . |
|o o o +... . |
| . + . o.. E|
|. . .o. |
+-----------------+
使用脚本将密钥传递给每个主机:
由于密码是在TXT中记录好的,新建一个文件导入即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/env bash
#
source /etc/profile
while read A;do
IP=$(echo $A|awk '{print $1}') * 取出主机IP
passwd=$(echo $A|awk '{print $3}') * 取出主机密码
/usr/bin/expect <<EOF * expect交互式键入
set timeout -1 * 设置永不超时
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $IP
expect {
# 对从未访问的主机键入yes
-re "Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
exp_continue
}
# 将密码进行键入
-re "password:" {
send "$passwd\r"
exp_continue
}
}
expect eof
EOF
done < user.list
# vim user.list
172.16.1.100root ABCDEFGHIJK
172.16.2.100root ABCDEFGHIJK
172.16.3.100root ABCDEFGHIJK
172.16.4.100root ABCDEFGHIJK
二、使用ansible对多主机进行安装agent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# cat /etc/ansible/hosts * 将agent的IP写入hosts文件
172.16.1.100
172.16.2.100
172.16.3.100
172.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类地址要查看以下官方文档,其他还算是正常工作。
页:
[1]