码迷,mamicode.com
首页 > 其他好文 > 详细

Zabbix批量导入主机

时间:2018-10-11 21:48:44      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:blog   ons   esc   集群   issue   auth   inux   管理   image   

Zabbix批量导入主机

在实际工作环境中我们一个集群里面可能有十几上百台一摸一样的主机,需要监控的内容也是一摸一样的,这个时候我们就可以使用下面的方式批量导入主机了

1,我们先在Zabbix-web里面配置好一台主机,然后把配置的结果导出来,我们通过脚本批量替换一下就行

<?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>

2,但是我们如何更改的。

其实我们只需要更改<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主体追加到一个新的文件里面,然后再给这个文件加上头和尾导入就行

3,如果我们一条一条的执行命令还是很累,我们写一个批量执行的命令,先生存一个需要管理的agent端,和名称

[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服务器

4,然后命令拼接一下

[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服务器

5,真正的执行,然后拼接头部尾部

[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
//然后把文件导入到客户机上

技术分享图片
技术分享图片
技术分享图片

目前自己编写的能掌握的,后期应该有更方便的方法

Zabbix批量导入主机

标签:blog   ons   esc   集群   issue   auth   inux   管理   image   

原文地址:http://blog.51cto.com/13447608/2298945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!