在实际工作环境中我们一个集群里面可能有十几上百台一摸一样的主机,需要监控的内容也是一摸一样的,这个时候我们就可以使用下面的方式批量导入主机了
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>3.4</version>
<date>2018-10-11T09:54:14Z</date>
<groups>
<group>
<name>Web_Server</name>
</group>
</groups>
<hosts>
<host>
//配置里面的主机名称
<host>web01-7</host>
//配置里面的可见的名称
<name>web01-7</name>
//描述信息
<description>这是一个动态的web服务器</description>
<proxy/>
<status>0</status>
<ipmi_authtype>-1</ipmi_authtype>
<ipmi_privilege>2</ipmi_privilege>
<ipmi_username/>
<ipmi_password/>
<tls_connect>1</tls_connect>
<tls_accept>1</tls_accept>
<tls_issuer/>
<tls_subject/>
<tls_psk_identity/>
<tls_psk/>
<templates>
//引用的模版,我们需要提前给模版定义好
<template>
<name>TCP Status</name>
</template>
//每一个模版是一个</template>标签
<template>
<name>Template OS Linux</name>
</template>
</templates>
<groups>
<group>
//属于的那个群组
<name>Web_Server</name>
</group>
</groups>
<interfaces>
<interface>
<default>1</default>
<type>1</type>
<useip>1</useip>
//agent端的IP地址
<ip>172.16.1.7</ip>
<dns/>
//agent端的端口
<port>10050</port>
<bulk>1</bulk>
<interface_ref>if1</interface_ref>
</interface>
</interfaces>
<applications/>
<items/>
<discovery_rules/>
<httptests/>
<macros/>
<inventory/>
</host>
</hosts>
</zabbix_export>
其实我们只需要更改<host>标签里面的值即可,编写一个脚本
[root@zabbix tmp]# cat test_zbx_host.sh
#!/bin/bash
export PATH=$PATH
cat >> zbx_host_medium.xml <<EOF
<host>
<host>$1</host>
<name>$1</name>
<description>$3</description>
<proxy/>
<status>0</status>
<ipmi_authtype>-1</ipmi_authtype>
<ipmi_privilege>2</ipmi_privilege>
<ipmi_username/>
<ipmi_password/>
<tls_connect>1</tls_connect>
<tls_accept>1</tls_accept>
<tls_issuer/>
<tls_subject/>
<tls_psk_identity/>
<tls_psk/>
<templates>
<template>
<name>TCP Status</name>
</template>
<template>
<name>Template OS Linux</name>
</template>
</templates>
<groups>
<group>
<name>Web_Server</name>
</group>
</groups>
<interfaces>
<interface>
<default>1</default>
<type>1</type>
<useip>1</useip>
<ip>$2</ip>
<dns/>
<port>10050</port>
<bulk>1</bulk>
<interface_ref>if1</interface_ref>
</interface>
</interfaces>
<applications/>
<items/>
<discovery_rules/>
<httptests/>
<macros/>
<inventory/>
</host>
EOF
//脚本执行说明:
// sh test_zbx_host.sh Name Agent_ip comment
// 前两个参数必须有。后面说明信息可以没有
我们只需要把这些host主体追加到一个新的文件里面,然后再给这个文件加上头和尾导入就行
[root@zabbix tmp]# cat host_ip.txt
web01-7 172.16.1.7 这是第一个动态web服务器
web02-8 172.16.1.8 这是第二个动态web服务器
web03-9 172.16.1.9 这是第一个静态web服务器
web04-10 172.16.1.10 这是二个静态web服务器
[root@zabbix tmp]# awk '{print "sh test_zbx_host.sh "$1,$2,$3}' host_ip.txt
sh test_zbx_host.sh web01-7 172.16.1.7 这是第一个动态web服务器
sh test_zbx_host.sh web02-8 172.16.1.8 这是第二个动态web服务器
sh test_zbx_host.sh web03-9 172.16.1.9 这是第一个静态web服务器
sh test_zbx_host.sh web04-10 172.16.1.10 这是二个静态web服务器
[root@zabbix tmp]# awk '{print "sh test_zbx_host.sh "$1,$2,$3}' host_ip.txt | bash
[root@zabbix tmp]# cat zbx_host_head.xml zbx_host_medium.xml zbx_host_tail.xml >> zbx_host_input.xml
//然后把文件导入到客户机上