批量导入主机
导出两台已有主机,默认导出文件为xml
根据XML文件进行分割,有用的标签是hosts
vim zbx_host_head.xml #文件开头
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>4.2</version>
<date>2021-12-28T08:37:44Z</date>
<groups>
<group>
<name>SGM-Ali</name>
</group>
</groups>
<hosts>
vim zbx_host_tail.xml #文件结尾
</hosts>
</zabbix_export>
配置标签hosts脚本
vim test_zbxhost.sh
#!/bin/bash
export PATH=$PATH
#本脚本目的是批量导入主机
#把需要添加的主机添加到host_ip.txt
#rm -rf zbx_host_medium.xml zbx_host_input.xml
#awk '{print "sh test_zbxhost.sh "$1,$2}' host_ip.txt | bash
#cat zbx_host_head.xml zbx_host_medium.xml zbx_host_tail.xml >> zbx_host_input.xml
#导出zbx_host_input.xml文件上传到zabbix
cat >> zbx_host_medium.xml <<EOF
<host>
<host>$1</host>
<name>(SGM-Ali)$1</name>
<description/>
<proxy>
<name>alishgm-zbxproxy</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>Yungoal.Agent.Linux.SGM.P2</name>
</template>
</templates>
<groups>
<group>
<name>SGM</name>
</group>
<group>
<name>SGM-Ali</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>
<inventory_mode>-1</inventory_mode>
</inventory>
<tags/>
</host>
EOF
配置hosts文件
vim host_ip.txt
hostname1 IP
hostname2 IP
生成导入文件
awk '{print "sh test_zbxhost.sh "$1,$2}' host_ip.txt | bash
cat zbx_host_head.xml zbx_host_medium.xml zbx_host_tail.xml >> zbx_host_input.xml
批量导入主机
多次执行需要删除之前生成的文件
rm -rf zbx_host_input.xml zbx_host_medium.xml
从数据库获取zabbix 当前主机状态(监控的服务器或者监控项很多时一定不要操作下面的sql语句)
因为我们主机比较多,我这里是筛选的proxy=11795代理下的所有主机
mysql -uzabbix -p'zabbix' -e "select host,hostid,proxy_hostid,available,status from zabbix.hosts where proxy_hostid="11795";" >> /tmp/sql.txt
下载或复制sql.txt到excel表格,因为数据是一列的,分列进行查看
status(0-enable/1-disable)
available(0-not install agent/1-normal/2-abnormal)
从zabbix控制台导出监控的主机
从每页选中所有主机,看选中的主机数是否和右下角总共主机数是否一致,一致后导出xml文件
把xml文件导入到linux服务器,进行切割,得出自己想要的数据
touch host #创建个host文件
cat zbx | grep "<host>" | grep "</host>" |awk -F "</" '{print $1}' | awk -F ">" '{print $2}' |wc-l #查询主机数量是否与zabbix web端一致
cat zbx | grep "<host>" | grep "</host>" |awk -F "</" '{print $1}' | awk -F ">" '{print $2}' >host #根据xml导出的文件,筛选出主机名,IP的话同理