1. 程式人生 > >zabbix高階玩法之通過xml檔案一次性匯入

zabbix高階玩法之通過xml檔案一次性匯入

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分鐘。之後重新整理頁面,得到如下頁面證明配置成功: