前言

最近有小伙伴通过Q联系到我说:公司现在有百多台服务器,想要部署zabbix进行监控,怎么实现自动化全网监控?

本篇博客将讲解一个我工作时做的一个实际项目,现在写出来供大家以后参考使用。

实现自动化全网监控,需要用到脚本,以及zabbix的自动注册或者自动发现的功能。以前也写过一篇关于两者的博客《分布式系统监视zabbix讲解八之自动发现/自动注册--技术流ken》,但是内容可能没有那么详尽,本篇博客将详细完整的演示如何使用zabbix实现百台服务器的自动化监控。

zabbix自动注册

活动的Zabbix agent可以自动注册到服务器进行监控。这种方式无需在服务器上手动配置它们。

当以前未知的active agent要求检查时,会发生自动注册。

该功能可能非常方便自动监控新的节点。一旦在集群中有一个新节点,Zabbix将自动启动主机监控,并进行性能和可用性数据的收集。

Active agent自动注册还支持对被添加的主机进行被动检查的监控。当active agent要求检查时,提供它配置文件中定义的“ListenIP”或“ListenPort”配置参数,这些参数将发送到服务器。(如果指定了多个IP地址,则第一个将被发送到服务器。)

服务器在添加新的自动注册主机时,使用接收到的IP地址和端口配置agent。如果没有接收到IP地址值,则使用传入连接的IP地址。如果没有接收到端口值,则使用10050。

注:自动注册需要把agent运行在主动模式即 serveractive=服务器端地址

zabbix自动发现

自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项。此外,可以配置Zabbix根据定期执行发现后的得到实际结果,来移除不需要的监控项。

自动化分发密钥

本篇博客将会是强调自动化,实现自动化的前提就是实现服务器与从节点的互信。

下面的脚本将会完成密钥的自动化分发。

#!/bin/bash
#author:技术流ken
#date:--
#desc: auto-deliver keys to clients
. /etc/init.d/functions
#下载expect
yum install expect -y &>/dev/null
if [ $? -eq ];then
echo -n "download expect"
success
echo ""
else
echo -n "download expect"
failure
echo ""
exit
fi
#删除保存的秘钥信息
if [ -f id_rsa -o -f id_rsa.pub -o known_hosts ];then
rm -rf /root/.ssh/id*
rm -rf /root/.ssh/known*
fi
#自动生成秘钥对
/usr/bin/expect<<eof
spawn ssh-keygen
expect {
"(/root/.ssh/id_rsa)" {send \r;exp_continue}
"passphrase" {send \r;exp_continue}
"again" {send \r}
}
expect eof
exit
eof
#在各个节点分发秘钥
for i in
do
ken=172.20..$i
/usr/bin/expect<<eof
spawn ssh-copy-id $ken
expect {
"yes/no" {send yes\r;exp_continue}
"password" {send o\r}
}
expect eof
exit
eof
done

自动化配置从节点

现在我们已经为各个节点分发了密钥,如果还一个一个配置从节点真的是台low了。下面我就为大家提供两种解决方案。

第一种:shell脚本

#!/bin/bash
#author:技术流ken
#date:--
#desc:this script for downloading zabbix-agent for clients
ip=172.20.10.
for i in 2 7 8 9 10 11
do
ssh $ip$i yum install zabbix-agent -y &>/dev/null
scp /root/zabbix_agentd.conf $ip$i:/etc/zabbix/zabbix_agentd.conf &>/dev/null
ssh $ip$i systemctl restart zabbix-agent &>/dev/null
done

第二种:ansible剧本

- hosts: all
tasks:
- copy: src=/etc/yum.repos.d/zabbix.repo dest=/etc/yum.repos.d/
- yum: name=zabbix-agent state=present
- copy: src=/etc/zabbix/zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf
- service: name=zabbix-agent state=restarted

zabbix自动注册实现全网监控

第一步:执行分发密钥脚本

[root@server ~]# bash keys.sh
[root@server ~]# cat keys.sh
#!/bin/bash
#author:技术流ken
#date:--
#desc: auto-deliver keys to clients
. /etc/init.d/functions
#下载expect
yum install expect -y &>/dev/null
if [ $? -eq ];then
echo -n "download expect"
success
echo ""
else
echo -n "download expect"
failure
echo ""
exit
fi
#删除保存的秘钥信息
if [ -f id_rsa -o -f id_rsa.pub -o known_hosts ];then
rm -rf /root/.ssh/id*
rm -rf /root/.ssh/known*
fi
#自动生成秘钥对
/usr/bin/expect<<eof
spawn ssh-keygen
expect {
"(/root/.ssh/id_rsa)" {send \r;exp_continue}
"passphrase" {send \r;exp_continue}
"again" {send \r}
}
expect eof
exit
eof
#在各个节点分发秘钥
for i in
do
ken=172.20..$i
/usr/bin/expect<<eof
spawn ssh-copy-id $ken
expect {
"yes/no" {send yes\r;exp_continue}
"password" {send o\r}
}
expect eof
exit
eof
done

第二步:准备zabbix-agent的配置文件

需要修改三处:

1. 主动模式,IP指向监控服务器端

2.server执行服务器端

3.注销掉hostname,修改为主机名自动获取

[root@ken ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.20.10.6
ServerActive=172.20.10.6
# Hostname=
HostnameItem=system.hostname

第三步:配置ansible主机文件

在该文件末行填写如下内容

[7:11]表示7-11即7,8,9,11,12

[root@server ~]# vim /etc/ansible/hosts
[ken]
172.20.10.2
172.20..[:]

第四步:检查ansible剧本

[root@server ~]# ansible-playbook --syntax-check auto_ins.yml 

playbook: auto_ins.yml

第五步:执行剧本

第四步检查无误后即可进行执行

[root@server ~]# ansible-playbook auto_ins.yml 

PLAY [all] **************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************
ok: [172.20.10.9]
ok: [172.20.10.8]
ok: [172.20.10.2]
ok: [172.20.10.10]
ok: [172.20.10.7]
ok: [172.20.10.11] TASK [copy] *************************************************************************************************************
changed: [172.20.10.8]
changed: [172.20.10.7]
changed: [172.20.10.10]
changed: [172.20.10.2]
changed: [172.20.10.9]
changed: [172.20.10.11] TASK [yum] **************************************************************************************************************
ok: [172.20.10.7]
ok: [172.20.10.2]
changed: [172.20.10.8]
changed: [172.20.10.9]
changed: [172.20.10.10]
changed: [172.20.10.11] TASK [copy] *************************************************************************************************************
changed: [172.20.10.9]
ok: [172.20.10.2]
changed: [172.20.10.8]
ok: [172.20.10.7]
changed: [172.20.10.10]
changed: [172.20.10.11] TASK [service] **********************************************************************************************************
changed: [172.20.10.7]
changed: [172.20.10.10]
changed: [172.20.10.2]
changed: [172.20.10.8]
changed: [172.20.10.9]
changed: [172.20.10.11] PLAY RECAP **************************************************************************************************************
172.20.10.10 : ok= changed= unreachable= failed=
172.20.10.11 : ok= changed= unreachable= failed=
172.20.10.2 : ok= changed= unreachable= failed=
172.20.10.7 : ok= changed= unreachable= failed=
172.20.10.8 : ok= changed= unreachable= failed=
172.20.10.9 : ok= changed= unreachable= failed=

第六步:配置zabbix自动注册

点击   配置>动作>自动注册>创建动作

动作中只需填写一个名称

条件中不需要填写任何东西

操作中选择如下三项,然后点击添加即可

这样就创建好了一个自动注册的策略

第七步:查看主机

等待大约十几秒钟之后就可以看到我们想要监控的主机已经自动添加进来了

zabbix自动发现实现全网监控

第一步:修改zabbix-agent的配置文件

自动发现和自动注册客户端配置一样!!

server以及serveractive后面的IP地址都指向zabbix的监控服务器端

[root@ken ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.20.10.6
ServerActive=172.20.10.6
# Hostname=
HostnameItem=system.hostname

第二步:再次执行ansible剧本
剧本无需任何修改
[root@server ~]# ansible-playbook auto_ins.yml 

PLAY [all] **************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************
ok: [172.20.10.2]
ok: [172.20.10.8]
ok: [172.20.10.9]
ok: [172.20.10.10]
ok: [172.20.10.7]
ok: [172.20.10.11] TASK [copy] *************************************************************************************************************
ok: [172.20.10.10]
ok: [172.20.10.8]
ok: [172.20.10.7]
ok: [172.20.10.2]
ok: [172.20.10.9]
ok: [172.20.10.11] TASK [yum] **************************************************************************************************************
ok: [172.20.10.10]
ok: [172.20.10.2]
ok: [172.20.10.7]
ok: [172.20.10.9]
ok: [172.20.10.8]
ok: [172.20.10.11] TASK [copy] *************************************************************************************************************
changed: [172.20.10.7]
changed: [172.20.10.9]
changed: [172.20.10.10]
changed: [172.20.10.8]
changed: [172.20.10.2]
changed: [172.20.10.11] TASK [service] **********************************************************************************************************
changed: [172.20.10.10]
changed: [172.20.10.7]
changed: [172.20.10.9]
changed: [172.20.10.8]
changed: [172.20.10.2]
changed: [172.20.10.11] PLAY RECAP **************************************************************************************************************
172.20.10.10 : ok= changed= unreachable= failed=
172.20.10.11 : ok= changed= unreachable= failed=
172.20.10.2 : ok= changed= unreachable= failed=
172.20.10.7 : ok= changed= unreachable= failed=
172.20.10.8 : ok= changed= unreachable= failed=
172.20.10.9 : ok= changed= unreachable= failed=

第三步:zabbix在web端添加自动发现

点击创建发现规则

输入你想要的名称

需要检测的IP地址范围

检查规则采用icmp ping的方式

第四步:查看发现的主机
点击检测中>自动发现 就可以看到已经检测到的主机了

但是可以发现我们现在仅仅只是检测到了这些主机,还没有真正的进行监控

第四步:配置发现动作
点击配置>动作>自动发现>创建动作

条件这里只需要输入名称即可

条件这里需要输入你的检测的主机的IP范围

操作这里添加如下规则即可。

第五步:查看主机
和自动注册不同,自动发现加入到主机的时间比较长,大概需要十几二十分钟,耐心等待即可。(自动注册只需要十几秒)
可以发现所有的主机都已经被添加进了host里面进行了监控
												

zabbix实现百台服务器的自动化监控--技术流ken的更多相关文章

  1. 分布式系统监视zabbix讲解七之分布式监控--技术流ken

    分布式监控 概述 Zabbix通过Zabbix proxy为IT基础设施提供有效和可用的分布式监控 代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器. Pro ...

  2. 分布式系统监视zabbix讲解二之邮件报警通知--技术流ken

    概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...

  3. 分布式系统监视zabbix讲解五之web监控--技术流ken

    Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...

  4. 分布式系统监视zabbix讲解三之用户和用户组--技术流ken

    概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...

  5. 网站集群架构(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

    前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高 ...

  6. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  7. cobbler单台服务器实现批量自动化安装不同版本系统-技术流ken

    前言 在上一篇博文<cobbler批量安装系统使用详解-技术流ken>中已经详细讲解了cobbler的使用以及安装,本篇博文将会使用单台cobbler实现自动化批量安装不同版本的操作系统. ...

  8. zabbix实现QQ邮件报警通知--技术流ken

    前言 前几天搜了下网上使用zabbix邮件报警通知的文章,大多数还是使用mailx的方法,过程配置起来比较冗余繁琐,这几天想着把自己平时用到的qq邮件报警的方法分享出来供大家参考,以此减少不必要的步骤 ...

  9. k8s集群监控(十一)--技术流ken

    Weave Scope   在我之前的docker监控中<Docker容器监控(十)--技术流ken>就已经提到了weave scope. Weave Scope 是 Docker 和 K ...

随机推荐

  1. ie9上传文件

    兼容ie9文件上传,解决ie9下提示下载或保存 如果不考虑ie9兼容性,实现[上传图片]大致的思路如下: 由于公司是将所有上传的图片都放到[代理服务器]里.所以[上传图片]其实是上传到[代理服务器]. ...

  2. 2000 ASCII码排序

    声明:从今天开始每周至少做七道杭电ACM题,锻炼思考能力. 2000  ASCII码排序 Problem Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符. ...

  3. kali入门

    第一章:入门kalilinux By:鬼尘 第一章基本上就是涵盖以下的主题: ·kali的发展简史 ·kali的一般用途 ·kali的下载与安装 ·kali的配置与更新 在本章结尾部分,我们还会介绍k ...

  4. CentOS开启telnet服务

    原文地址:https://blog.csdn.net/zhujiangm/article/details/4540778 服务器:CentOS-5.1(192.168.1.87)客户机:FC6(192 ...

  5. vb越界

    想起来一个项目当中,遇到了一个问题,就是老是显示数据溢出. 后来查查查,发现是由于vb的特性造成的.例如cbyte()函数.此函数()里面的数据运算也不能超过cbyte的范围,不然就回发生溢出问题.

  6. verilog HDL-参数型数据对像 与‘define

    参数新数据对象是用来定义常量的,它可以提升verilog hdl代码的可读性和维护性. verilog hdl支持参数有两种,普通参数和局部参数.普通参数在模块例化时可以从新赋值,局部参数在模块例化时 ...

  7. python基础自学 第三天

    变量的命名 01.标识符和关键字 标识符 标识符就是程序员定义的变量名.函数名. 标识符可以由字母,下划线,和数字组成. 不能以数字开头 不能与关键字重名 关键字 就是在python内部已经使用的标识 ...

  8. c#项目减少源代码大小

    这次的代码缩减主要通过了这几个方面 1.bin和obj文件的删除(以前真的不知道,只是通过右键属性发现这些文件太大,然后上网搜索才知道,这些文件在源代码备份的时候是建议删掉的) 删掉的好处: 1.减少 ...

  9. day17_雷神_数据库 小全

    # 数据库 1.mysql 介绍 一 数据库管理软件的由来 程序的所有组件不可能只在一个机子上,性能问题和单点故障, 程序分散了,还需要解决数据共享问题, 基于网络访问这台共享的机器,用socket. ...

  10. 笔记本安装win10之后,无线网有问题

    开机后,连接无线网络,过一段时间,就掉线了,然后再连接也连接不上,必须重启电脑才可以. 解决办法如下: 右键无线网络连接,状态,无线属性,安全,高级设置,勾上为此网络启用联邦信息标准兼容.