zabbix实现百台服务器的自动化监控--技术流ken

前言

最近有小伙伴通过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:2018-12-2
#desc: auto-deliver keys to clients
. /etc/init.d/functions
#下载expect
yum install expect -y &>/dev/null
if [ $? -eq 0 ];then
        echo -n "download expect"
        success
        echo ""
else
        echo -n "download expect"
        failure
        echo ""
        exit 8
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 2 7 8 9 10 11
do
ken=172.20.10.$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:2018-12-2
#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自动注册实现全网监控

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

[[email protected] ~]# bash keys.sh
[[email protected] ~]# cat keys.sh
#!/bin/bash
#author:技术流ken
#date:2018-12-2
#desc: auto-deliver keys to clients
. /etc/init.d/functions
#下载expect
yum install expect -y &>/dev/null
if [ $? -eq 0 ];then
        echo -n "download expect"
        success
        echo ""
else
        echo -n "download expect"
        failure
        echo ""
        exit 8
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 2 7 8 9 10 11
do
ken=172.20.10.$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,修改为主机名自动获取

[[email protected] ~]# 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

[[email protected] ~]# vim /etc/ansible/hosts
[ken]
172.20.10.2
172.20.10.[7:11]

第四步:检查ansible剧本

[[email protected] ~]# ansible-playbook --syntax-check auto_ins.yml 

playbook: auto_ins.yml

第五步:执行剧本

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

[[email protected] ~]# 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=5    changed=4    unreachable=0    failed=0
172.20.10.11               : ok=5    changed=4    unreachable=0    failed=0
172.20.10.2                : ok=5    changed=2    unreachable=0    failed=0
172.20.10.7                : ok=5    changed=2    unreachable=0    failed=0
172.20.10.8                : ok=5    changed=4    unreachable=0    failed=0
172.20.10.9                : ok=5    changed=4    unreachable=0    failed=0   

第六步:配置zabbix自动注册

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

动作中只需填写一个名称

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

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

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

第七步:查看主机

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

zabbix自动发现实现全网监控

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

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

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

[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf
   Server=172.20.10.6
   ServerActive=172.20.10.6
   # Hostname=
   HostnameItem=system.hostname

第二步:再次执行ansible剧本剧本无需任何修改
[[email protected] ~]# 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=5    changed=2    unreachable=0    failed=0
172.20.10.11               : ok=5    changed=2    unreachable=0    failed=0
172.20.10.2                : ok=5    changed=2    unreachable=0    failed=0
172.20.10.7                : ok=5    changed=2    unreachable=0    failed=0
172.20.10.8                : ok=5    changed=2    unreachable=0    failed=0
172.20.10.9                : ok=5    changed=2    unreachable=0    failed=0   

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

点击创建发现规则

输入你想要的名称

需要检测的IP地址范围

检查规则采用icmp ping的方式

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

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

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

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

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

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

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



原文地址:https://www.cnblogs.com/kenken2018/p/10053220.html

时间: 2024-10-13 04:15:23

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

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

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

zabbix实现QQ邮件报警通知(最详细)--技术流ken

前言 前几天搜了下网上使用zabbix邮件报警通知的文章,大多数还是使用mailx的方法,过程配置起来比较冗余繁琐,这几天想着把自己平时用到的qq邮件报警的方法分享出来供大家参考,以此减少不必要的步骤. zabbix监控端添加客户端 关于如何实现添加主机这里就不再赘述,相信大家对于这个已经很熟练了,大家也可以参考我的博客<分布式系统监视zabbix讲解一之zabbix安装--技术流ken> 第一步:添加监控主机 无需添加模版,我们来自定义监控项 第二步:添加监控点 点击你添加的监控项,创建一个

Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个静态的网站. 如果大家可以熟练掌握以上内容,势必会在工作中减轻不小的工作量. 本篇博客将再次使用这四个工具结合freestyle和pipeline来完成动态网站的部署. 为了拓宽知识点,本篇博客将使用jenkins的两种常用方法来进行部署,如果你对pipeline还不熟悉,请参考我之前的博客<Jenki

cobbler批量安装系统使用详解-技术流ken

1.前言 cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 2.系统环境准备及其下载cobbler 一.系统环境 系统版本:CentOS release 6.7 (Final) 内网IP:192.168.232.7/24    #用来对内通信,提供cobbler服务 外网IP:10.220.5.166/24      #连接外网 二. 关闭安全服务 [[email protected] ~

NFS企业级实战应用详解-技术流ken

1.简介 在上一篇博文中讲述了samba的实战应用,samba使得window和linux共享文件成为可能.NFS则实现了linux与linux之间的文件共享. 2.系统环境 系统版本:centos6.7 服务器IP: 10.220.5.166/24 客户端IP: 10.220.5.188/24 3.关闭安全服务 [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 4.下载NFS 当nf

samba企业级实战应用详解-技术流ken

1.简介 Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能. 2.系统环境 系统版本:centos6.7 服务器IP: 10.220.5.166/24 3.关闭安全服务 [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 4. 安装samba

实战!基于lamp安装Discuz论坛-技术流ken

1.简介 我前面的博客已经详细介绍了lamp采用yum安装以及编译安装的方式,这篇博客将基于yum安装的lamp架构来实战安装Discuz论坛,你可以任选其一来完成. 2.系统环境 centos7.5 服务器IP:172.20.10.7/28 客户端IP:172.20.10.4/28 3.关闭安全服务 [[email protected] ~]# setenforce 0 4.安装lamp [[email protected] ~]# yum install httpd php php-mysq

高可用集群之keepalived+lvs实战-技术流ken

1.keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合使用,在实际工作中搭建高可用,高负载,高性能的服务器集群. "Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将

nginx实现反向代理、负载均衡-技术流ken

1.简介 本篇博文是<nginx实现动态/静态文件缓存-技术流ken>的二部曲.将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例. 反向代理--"反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器." 负载均衡--"网络专用术语,负载均衡建立在现有网络结构之