一、Zabbix-3.0.3批量添加主机的配置如下:

0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172.29.8.50是zabbix_server机器的ip地址)

可批量修改zabbix_agentd.conf,如下:
sed -i 's/Server=127.0.0.1/Server=172.29.8.50/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=172.29.8.50/g' /etc/zabbix/zabbix_agentd.conf
grep "Server" /etc/zabbix/zabbix_agentd.conf | grep -v '^#'
service zabbix-agent restart

1)创建自动发现规则。"配置"->"自动发现"->"创建自动发现"

如下“检查”的配置为:选择“Zabbix agent”检测类型、端口10050、Key填写“system.uname”  (ip范围可以多种方式填写,比如:172.29.8.21-27,172.29.33.21-29,172.29.34.34)

2)创建Action动作(事件源是“自动发现”)

上面“操作”里的“默认接收人”和“默认信息”都是默认的配置,不用修改,只需要添加下面的操作即可

3)等一会儿,就会发现已批量添加了上面配置的网段的机器

上面采用"自动发现"批量添加主机后,显示的名称是主机的ip地址。即添加的客户端主机的Host name是以IP地址命名的,不够人性化。
要想实现自定义主机名,方法是:
在zabbix_server主机的/etc/hosts里面做好客户端的主机名和IP映射

[root@IDC-Admin-02 ~]# cat /etc/hosts
......
LX-DB-8_21-172.29.8.21 172.29.8.21
LX-DB-8_21-172.29.8.23 172.29.8.23
LX-DB-8_21-172.29.8.24 172.29.8.24
LX-DB-8_21-172.29.8.25 172.29.8.25
LX-DB-8_21-172.29.8.26 172.29.8.26
LX-DB-8_21-172.29.8.27 172.29.8.27

如上配置后,删除首次"自动发现"批量创建的主机,再次创建后,批量创建的主机的显示名称就是其主机名了。

------------------------------------批量添加主机到zabbix监控中---------------------------------
将新上线的172.29.32.0/24网段的服务器添加到zabbix监控中,zabbix_agent一键安装脚本为:https://pan.baidu.com/s/1o8wpFpo 提取密码:7qsi 操作步骤记录(下面是在zabbix server端操作的):
[root@zabbix ~]# nmap -sn 172.29.32.0/24 Starting Nmap 5.51 ( http://nmap.org ) at 2017-09-05 09:29 CST
Nmap scan report for 172.29.32.1
Host is up (0.0020s latency).
Nmap scan report for 172.29.32.2
Host is up (0.00071s latency).
Nmap scan report for 172.29.32.3
Host is up (0.00092s latency).
Nmap scan report for usercenter01.WANG.cn (172.29.32.21)
Host is up (0.00064s latency).
Nmap scan report for usercenter02.WANG.cn (172.29.32.22)
Host is up (0.00042s latency).
Nmap scan report for passport01.WANG.cn (172.29.32.23)
Host is up (0.00061s latency).
Nmap scan report for passport02.WANG.cn (172.29.32.24)
Host is up (0.00068s latency).
.......... [root@zabbix ~]# nmap -sn 172.29.32.0/24|grep 172.29.32|awk '{print $6}'|cut -d"(" -f2|cut -d ")" -f1 172.29.32.21
172.29.32.22
172.29.32.23
172.29.32.24
172.29.32.25
172.29.32.26
172.29.32.27
172.29.32.28 172.29.32.30
172.29.32.31
172.29.32.32
172.29.32.33
172.29.32.34
........ 将ip读取到一个列表文件中/mnt/a.txt
[root@zabbix ~]# nmap -sn 172.29.32.0/24|grep 172.29.32|awk '{print $6}'|cut -d"(" -f2|cut -d ")" -f1 > /mnt/a.txt
[root@zabbix ~]# cat /mnt/a.txt
--------------------------------------------------------------------------------------------------------------------
或者这里也可以使用造数命令:
[root@localhost ~]# for i in `seq 21 64`;do echo 172.29.32.$i >> /mnt/a.txt;done
[root@localhost ~]# cat /mnt/a.txt
-------------------------------------------------------------------------------------------------------------------- 参考http://www.cnblogs.com/kevingrace/p/5900303.html,配置到这些被监控主机的信任关系 安装expect步骤这里省略~
[root@zabbix ~]# cd /mnt/
[root@zabbix mnt]# ls
a.txt noscp.exp sshkey.exp sshkey.sh 这些被监控主机的ssh端口都是22222,密码都是默认的WANG-@@@-12345(如果端口和密码是其他的,就按照实际情况进行脚本修改)
[root@zabbix mnt]# cat noscp.exp
#!/usr/bin/expect #noscp.exp if {$argc<4} {
puts stderr "Usage: $argv0 localfile remotefile user passwd "
exit 1
} set localfile [ lindex $argv 0 ]
set remotefile [ lindex $argv 1 ]
set user [ lindex $argv 2 ]
set pwd [ lindex $argv 3 ] set timeout 30 spawn scp -P 22222 ${localfile} ${user}@${remotefile} expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r" }
} expect eof [root@zabbix mnt]# cat sshkey.exp
#!/usr/bin/expect #sshkey.exp if {$argc<3} {
puts stderr "Usage: $argv0 host user passwd "
exit 1
} set host [ lindex $argv 0 ]
set user [ lindex $argv 1 ]
set pwd [ lindex $argv 2 ] set timeout 30 #spawn ssh ${user}@${host} "rm -rf ~/.ssh/id_rsa*"
#
#expect {
# "*yes/no" { send "yes\r"; exp_continue }
# "*password:" { send "$pwd\r"; exp_continue }
#} spawn ssh -p22222 ${user}@${host} "ssh-keygen -t rsa" expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r"; exp_continue }
"Enter file in which to save the key*" { send "\n\r"; exp_continue }
"Overwrite*" { send "y\n"; exp_continue }
"Enter passphrase (empty for no passphrase):" { send "\n\r"; exp_continue }
"Enter same passphrase again:" { send "\n\r" }
} spawn ssh -p22222 ${user}@${host} "cat ~/.ssh/id_rsa.pub" expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$pwd\r" }
} expect eof [root@zabbix mnt]# cat sshkey.sh
#!/bin/bash
for ip in `cat /mnt/a.txt`
do
/mnt/sshkey.exp $ip root WANG-@@@-12345 |grep ssh-rsa >> ~/.ssh/authorized_keys
/mnt/noscp.exp ~/.ssh/authorized_keys $ip:~/.ssh root WANG-@@@-12345
done 接着直接运行脚本进行信任关系设置:
[root@zabbix mnt]# sh -x sshkey.sh 执行完之后,验证下ssh无密码信任关系是否都成功设置了:
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "hostname";done 然后批量进行被监控主机的zabbix_agent安装及设置(使用zabbix_agent一键脚本)。
线上的话,我是把一键安装脚本放到内网下载地址里的
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "wget http://yum.wang-inc.com/software/zabbix_agentd_install.sh && sh -x zabbix_agentd_install.sh";done
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i;ssh -p22222 $i "lsof -i:10050";done 接着就可以在zabbix的web界面里批量添加主机了(自动发现)。为了自动发现后能识别出主机名,先提前在zabbix server端做host。
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do echo $i >> /opt/ip.list;done
[root@zabbix mnt]# for i in `cat /mnt/a.txt`;do ssh -p22222 $i "hostname" >> /opt/hostname.list;done
[root@zabbix mnt]# paste /opt/ip.list /opt/hostname.list >> /etc/hosts 最后就安装上面"自动发现"实现批量添加主机.......

二、Zabbix-3.0.3自动发现端口的配置如下:

1)编写自动发现端口的脚本discovertcpport.sh。配置如下:

[root@IDC-Admin-02 ~]# cd /data/zabbix/monitor_scripts/
[root@IDC-Admin-02 monitor_scripts]# cat discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n" 脚本说明:
使用netstat命令输出端口号;-tnlp=Tcp协议+不显示别名+listen状态+显示程序名称;$1~$9表示输出的第几个参数;
awk {'print $4'}表示输出第4个参数(如0.0.0.0:80);awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}
表示截取冒号后面的值,且只能是0~9的数字;|sort|uniq表示排序和去重。 [root@IDC-Admin-02 monitor_scripts]# chmod 755 discovertcpport.sh
[root@IDC-Admin-02 monitor_scripts]# cd /data/zabbix/etc/zabbix_agentd.conf.d/
[root@IDC-Admin-02 zabbix_agentd.conf.d]# cat discovertcp.conf
UserParameter=tcpportlisten,/bin/bash /data/zabbix/monitor_scripts/discovertcpport.sh "$1" [root@IDC-Admin-02 zabbix_agentd.conf.d]# /etc/init.d/zabbix_agentd restart

==========在端口自动发现脚本中,也可以自定义发现哪些应用端口,如下===========

[root@IDC-Admin-02 monitor_scripts]# cat discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "tns|java|php|httpd|xen|mysqld"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"

===============================================================

2)服务端测试,如下测试的返回结果是正常的

[root@zabbix_server ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.22 -p10050 -k "tcpportlisten"     //其中的172.20.16.22是被监控机的ip
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"22222"},
{"{#TCP_PORT}":"3306"},
{"{#TCP_PORT}":"443"},
{"{#TCP_PORT}":"80"}
]
}

3)在zabbix监控界面中创建端口自动发现规则

注意下面的“键值”要和被监控主机里的监控脚本定义的一致!

接着创建Item监控项原型

接着创建触发器原型:

注意上面“添加”里面的选择项如下

最后就是创建图像原型

查看自动发现的端口监控情况

到此,自动发现端口的监控设置已经完成。下面说下可能遇到的问题:
添加完自动发现规则之后,发现在对应主机的监控图里没有显示端口的监控项,然后发现自动发现规则的后面有问题提示:Value should be a JSON object
这个错误的解决办法如下:
解决办法是 vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: ALL
#Defaults requiretty                                                                //如果有这个配置项,那么就注释掉这个。如果没有,就忽略

-----------------------------------------------------------------------------------------------------------------------------

顺便说下开启zabbix监控界面里报警声音的功能

--------------------------------------------------------------------------定制化自动发现端口-----------------------------------------------------------------
上面在自动发现端口的时候,都是默认发现被监控机上所有开启的端口。如果我们要对端口进行过滤发现,即只发现我们想要的端口,配置如下:

如下,只发现mysql、java、php-fpm、httpd、redis、mongo、oracle、node、zookeeper这些程序端口

[test@ ~]$ cat /data/zabbix/monitor_scripts/discovertcpport.sh
#!/bin/bash
portarray=(`sudo netstat -tnlp|egrep -i "mysql|java|php-fpm|httpd|redis|mongo|oracle|node|zookeeper"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n" [test@ ~]$ cat /data/zabbix/etc/zabbix_agentd.conf.d/discovertcp.conf
UserParameter=tcpportlisten[*],/data/zabbix/monitor_scripts/discovertcpport.sh "$1" 在zabbix server端进行检查(192.168.1.30是被监控机)。
如下说明该被监控机在定制的自动发现端口中只有3829和3830端口在其中
[root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 192.168.1.30 -p10050 -k "tcpportlisten"
{
"data":[
{"{#TCP_PORT}":"3829"},
{"{#TCP_PORT}":"3830"}
]
} 然后在zabbix 的web界面里添加监控配置,配置和上面一模一样!这样就能按照我们自己定制的端口进行自动发现了!

分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口的更多相关文章

  1. 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  2. 分布式监控系统Zabbix--完整安装记录 -添加web页面监控

    通过zabbix做web监控,不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码或响应时间做报警设置,比如说对某个url进行监控,当访问返回的状态码是非200状态时都报警(创建触发器即可).下 ...

  3. 分布式监控系统Zabbix-完整安装记录 -添加端口监控

    对于进程和端口的监控,可以使用zabbix自带的key进行监控,只需要在server端维护就可以了,相比于nagios使用插件去监控的方式更为简单.下面简单介绍配置:监控端口zabbix监控端口使用如 ...

  4. 分布式监控系统Zabbix--完整安装记录 -添加apache监控

    前面介绍了zabbix3.0.3环境及相关监控项的添加,下面介绍下针对apache的监控配置:1)在apache配置文件中打开server-status状态访问功能(自带的) [root@IDC-Ad ...

  5. 企业级分布式监控系统-Zabbix基础

    1.基础分部 1.1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 1.2监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/ ...

  6. 分布式监控系统--zabbix

    1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 2.监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/代理端/服务器端/, ...

  7. 企业级分布式监控系统--zabbix

    目录 1.Zabbix简介 2.zabbix安装 3.工作原理 4.监控功能 5.监控系统架构 6.Zabbix系统架构 7.Zabbix组件构成 8.zabbix监控环境中基本概念 正文 回到顶部 ...

  8. 【Zabbix】分布式监控系统Zabbix【一】

    一.Zabbix功能及特性简介 Zabbix可以获取cpu,内存,网卡,磁盘,日志等信息 1.Zabbix数据收集方式: a.Agent客户端(Agent客户端支持多平台部署) b.如果是无法安装客户 ...

  9. 【Zabbix】分布式监控系统Zabbix【二】

    一.Zabbix基本操作 1.主机群组.主机.模板.触发器 a.创建主机群组和主机的过程比较简单,不再介绍 b.配置模板: 创建一个模板,将其分组到Template组,添加配置应用: 给应用创建监控项 ...

随机推荐

  1. python第三十五天-----作业完成--学校选课系统

    选课系统:角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含, ...

  2. IDEA 如何查看一个类里面的所有方法

    快捷键:Alt+7

  3. UGUI 文字效果实现(Shadow\Gradient\Outline)

    NGUI直接在UILabel组件中接入了Shadow.Gradient和outline选项,但在UGUI中是通过另外的组件单独提供,比如outline.shader等.这篇文章主要记录这几个文字效果实 ...

  4. 关于plist文件的那些事

    今天遇到新生问一个问题,就是用自己定义了一个plist文件,然后可以往里面写东西,但是写过再次运行的时候里面的数据总是最后一次写入的数据.后来就专门研究了一下plist文件. 大家都知道当你创建一个项 ...

  5. Android Studio打开SDK更新对话框

    再进行android自动化时,有时需要用到android的一些api,但苦于找不到 api文档,各种论坛查看是否有自己所需要的api,甚是麻烦.下面介绍如何通过 android studio将 and ...

  6. web笔试

    类型判断用到哪些方法? typeof和instanceof 值类型和引用类型的区别? 根据 JavaScript中的变量类型传递方式,又分为值类型和引用类型,在参数传递方式上,值类型是按值传递,引用类 ...

  7. 【洛谷】【搜索(dfs)】P3956 棋盘

    题目传送门:戳 题目描述: 有一个 \(m * m\) 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色 ...

  8. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  9. layui前端框架之分页

    框架环境:SSM框架 为了保证效果,此次演示也用到了jQuery ui框架,大家最好也引入进来 一.去layui官网下载包,解压后,然后导入文件中,最好放再main/webapp文件夹下 官网地址如下 ...

  10. Qt中静态变量使用方法

    静态变量可以在各个页面之前使用 先定义一个用于存放静态变量的类 例如datavar 在datavar.h中添加如下代码 #ifndef DATAVAR_H #define DATAVAR_H #inc ...