zabbix高階玩法之通過xml檔案一次性匯入
阿新 • • 發佈:2018-11-10
author:headsen chen
date: 2018-11-10 10:08:38
背景:zabbix的硬體監控架構已經部署完成,接下來就是建立主機這一步,2400臺主機如果採用一臺臺的建立和關聯模板就太慢了。硬體監控不用於agent方式,agent的方式可以採用新增自動發現的規則來自動註冊。
硬體監控採用 server端通過SNMP服務去各個物理機的管理卡上去抓相應的硬體資訊。所以無法通過自動發現規則來新增主機
1,手動新增一臺主機,匯出該主機的xml配置資訊:
<zabbix_export>
<version>
4.0
</version>
<date> 2018
-
11
-09T11:
12
:04Z</date>
<groups>
<group>
<name>Linux servers</name>
</group>
<group>
<name>北京dell伺服器組</name>
</group>
</groups>
<hosts>
<host>
<host>
1.1
.
1.1
</host>
<name>
1.1
.
1.1
</name>
<description/>
<proxy>
<name>
10
-
20
-
42
-
2
</name>
</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>Template Dell iDrac SNMPV2</name>
</template>
</templates>
<groups>
<group>
<name>Linux servers</name>
</group>
</groups>
<interfaces>
<
interface
>
<
default
>
1
</
default
>
<type>
2
</type>
<useip>
1
</useip>
<ip>
1.1
.
1.1
</ip>
<dns/>
<port>
161
</port>
<bulk>
1
</bulk>
<interface_ref>if1</interface_ref>
</
interface
>
</interfaces>
<applications/>
<items/>
<discovery_rules/>
<httptests/>
<macros/>
<inventory/>
</host>
</hosts>
</zabbix_export>
|
2,分析該xml檔案,解析結構分為以下幾個標籤
<zabbix_export>
<version>
4.0
</version>
<date>
2018
-
11
-09T11:
12
:04Z</date>
<groups>
<group> ...
</group>
</groups>
<hosts>
...
</hosts>
</zabbix_export>
|
其中:hosts 標籤就每臺新增的主機的資訊,我們每次新增的主機,都是再寫一個 <hosts> 標籤
3,將2400臺主機的IP寫入dell-ip-list 檔案裡,並放入centos6.8的系統裡,以便通過shell進行操作
4,構思:利用for迴圈實現生成2400臺主機的xml檔案
第一步:檔案頭部不動的部分:
# cat >> dell.xml <<EOF
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<zabbix_export>
<version>
4.0
</version>
<date>
2018
-
11
-09T11:
12
:04Z</date>
<groups>
<group>
<name>Linux servers</name>
</group>
<group>
<name>北京dell伺服器組</name>
</group>
</groups>
<hosts>
EOF
|
第二步:寫一個單 <hosts>標籤的模板檔案:
# cat >> plate.xml <<
<host>
<host>
1.1
.
1.1
</host>
<name>
1.1
.
1.1
</name>
<description/>
<proxy>
<name>
10
-
20
-
42
-
2
</name>
</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>Template Dell iDrac SNMPV2</name>
</template>
</templates>
<groups>
<group>
<name>Linux servers</name>
</group>
</groups>
<interfaces>
<
interface
>
<
default
>
1
</
default
>
<type>
2
</type>
<useip>
1
</useip>
<ip>
1.1
.
1.1
</ip>
<dns/>
<port>
161
</port>
<bulk>
1
</bulk>
<interface_ref>if1</interface_ref>
</
interface
>
</interfaces>
<applications/>
<items/>
<discovery_rules/>
<httptests/>
<macros/>
<inventory/>
</host>
EOF
|
第三步:利用for迴圈生成2400個物理機的hosts標籤檔案的指令碼: xml.sh
#!/bin/bash
for
i in `cat dell-ip-list`
do
cat plate.xml > dd
sed -i
"s/1.1.1.1/$i/g"
dd
cat dd >> dell.xml
done
echo " </hosts>
</zabbix_export>" >> dell.xml
|
第四步:執行該指令碼,生成dell.xml 的檔案
# sh xml.sh
|
5,將dell.xml檔案匯入
靜等15分鐘。之後重新整理頁面,得到如下頁面證明配置成功: