【linux】监控之zabbix


在这里插入图片描述

任务背景

公司的服务器里经常会有CPU很繁忙, 内存不够, 磁盘空间快满了, 网络很卡, 客户端连接不上等各种问题。我们运维工程师不能总是盯着服务器去查看,那样的话就太繁琐了, 而且很可能发现问题不及时。所以我们需要建立一套完善的监控系统,将所有需要监控的服务器及其各种需要的状态数据都实时地收集, 并图形化的展示,并可以进行报警, 让机器主动及时地与人沟通。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEanF5ql-1670808227266)(图片/监控架构图.png)]

任务要求

1, 搭建监控服务器

2, 能够按照思路自定义监控并实现图形展示与报警

任务拆解

1, zabbix服务器搭建

2, 监控本机与远程主机

3, 学会创建监控项

4, 为监控项创建图形

5, 为图形创建触发器

6, 设定报警

学习目标

  • 能够安装zabbix服务器
  • 能够使用zabbix-agent监控本机
  • 能够管理zabbix用户与用户群组
  • 能够使用zabbix-agent监控远程linux机器并加入主机群组
  • 能够添加一个自定义监控项
  • 能够为添加的监控项创建图形
  • 能够为监控主机创建聚合图形
  • 能够为监控项设定简单的触发器

认识监控

为什么要监控?

答: 实时收集数据,通过报警及时发现问题,及时处理。数据为优化也可以提供依据。

生活中的监控:
在这里插入图片描述

那么请问linux系统中的监控主要监控什么?

答: 任何你所想要监控的数据,如cpu负载,cpu的idle时间,内存使用量,内存利用率,io,network等等。

主流的开源监控平台介绍

  • mrtg (Multi Router Traffic Grapher)通过snmp协议得到设备的流量信息,并以包含PNG格式的图形的HTML文档方式显示给用户。
  • cacti (仙人掌) 用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据。官网地址: https://www.cacti.net/
  • ntop 官网地址: https://www.ntop.org/
  • nagios 能够跨平台,插件多,报警功能强大。官网地址: https://www.nagios.org/
  • centreon 底层使用的就是nagios。是一个nagios整合版软件。官网地址:https://www.centreon.com/
  • ganglia 设计用于测量数以千计的节点,资源消耗非常小。官网地址:http://ganglia.info/
  • open-falcon 小米发布的运维监控软件,高效率,高可用。时间较短,用户基数小。官网地址: http://open-falcon.org/
  • zabbix 跨平台,画图,多条件告警,多种API接口。使用基数特别大。官网地址: https://www.zabbix.com/
  • prometheus 是一个基于时间序列的数值数据的容器监控解决方案。官网地址: https://prometheus.io/

zabbix

环境准备:
在这里插入图片描述

  1. 静态ip
  2. 主机名
各自配置好主机名
# hostnamectl set-hostname --static zabbixserver.cluster.com
三台都互相绑定IP与主机名
# vim /etc/hosts			
10.1.1.11  zabbixserver.cluster.com
10.1.1.12  agent1.cluster.com
10.1.1.13  agent2.cluster.com
  1. 时间同步
# systemctl restart ntpd
# systemctl enable ntpd
  1. 关闭防火墙,selinux
# systemctl stop firewalld
# systemctl disable firewalld
# iptables -F

# setenforce 0
setenforce: SELinux is disabled
  1. 配置yum(安装完centos后默认的yum源+下面zabbix源)
所有机器(zabbix服务器和所有被监控端)加上zabbix源
# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/
enabled=1
gpgcheck=0
[zabbix_deps]
name=zabbix_deps
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0

在这里插入图片描述

zabbix服务器安装

在这里插入图片描述

1,安装zabbix和mariadb数据库

[root@zabbixserver ~]# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server

2, 在mysql(mariadb)里建立存放数据的库并授权,然后导入zabbix所需要用的表和数据

[root@zabbixserver ~]# systemctl restart mariadb.service
[root@zabbixserver ~]# systemctl enable mariadb.service

[root@zabbixserver ~]# mysql
MariaDB [(none)]> create database zabbix default charset utf8;		这里一定要用utf8字符集,否则后面zabbix很多中文用不了(比如创建中文名用户就创建不了)
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit

3, 导入表数据

下面这条命令不要乱复制粘贴,如果你版本不一样(或者官网yum源版本升级),3.4.15就要改成对应版本
[root@zabbixserver ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz |mysql -u zabbix -p123 zabbix

4, 配置zabbix主配置文件,并启动服务,确认端口

找到并确认如下参数(默认值正确的不用打开注释.默认值不对的,要修改正确并打开注释)

我这里只需要改连接数据的密码和socket
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=123						--这里要对应上面第2步的授权进行修改
DBSocket=/var/lib/mysql/mysql.sock 	--这里默认的socket路径不对,改成我这个路径
ListenIP=0.0.0.0

[root@zabbixserver ~]# systemctl restart zabbix-server
[root@zabbixserver ~]# systemctl enable zabbix-server

[root@zabbixserver ~]# lsof -i:10051	

5, 配置zabbix的httpd子配置文件,并启动httpd

打开第20行注释,并修改成你的时区
[root@zabbixserver ~]# vim /etc/httpd/conf.d/zabbix.conf

20 php_value date.timezone Asia/Shanghai

[root@zabbixserver ~]# systemctl restart httpd 
[root@zabbixserver ~]# systemctl enable httpd

6, 使用浏览器访问http://10.1.1.11/zabbix,并按提示进行安装

按照图示过程安装
1,welcome
2,Check of pre-requisites
3,Configure DB connection
数据库用户名填zabbix,密码填123(前面授权过的)
4,Zabbix server details
在name选项填上你zabbix服务器的IP或者主机名
5,Pre-Installation summary
6,install

完成后
登陆用户名为:admin
登陆密码为:zabbix

7,右上角点一个类似小人的图标 --》 语言选 chinese zh-cn --》 点 update后换成中文件界面
在这里插入图片描述

监控本机

1.在master上安装zabbix-agent

[root@zabbixserver ~]# yum install zabbix-agent

2,启动zabbix-agent服务

[root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf	
下面两个常见选项都为默认值,不用配置
Server=127.0.0.1		--zabbix服务器的IP,这里是本机
ListenPort=10050		--监控服务器连接被监控客户端的端口

[root@zabbixserver ~]# systemctl restart zabbix-agent
[root@zabbixserver ~]# systemctl enable  zabbix-agent

[root@zabbixserver ~]# lsof -i:10050

3,回到web管理界面 --》点配置--》点主机--》默认看到叫Zabbix server的本机,但状态是停用的--》点击并启用

在这里插入图片描述

4,点zabbix server里的图形--》任意选一张图后点预览--》看到图上有乱码
在这里插入图片描述

5, 解决乱码方法: 换一个字体

下载我共享的ttf-arphic-ukai.tar.gz软件包,并做如下修改
# tar xf ttf-arphic-ukai.tar.gz -C /usr/share/zabbix/fonts/
# mv /usr/share/zabbix/fonts/ukai.ttc /usr/share/zabbix/fonts/ukai.ttf
# vim /usr/share/zabbix/include/defines.inc.php

54 define('ZBX_GRAPH_FONT_NAME',           'ukai');   --修改原来的graphfont字体改成ukai

6, 做完后,不用重启服务,回到zabbix的web界面刷新查看图形就会发现没有乱码了
在这里插入图片描述

通过zabbix-agent监控远程机器

1,在agent1上安装zabbix-agent包

[root@agent1 ~]# yum install zabbix-agent

2,配置zabbix-agent端的配置文件,启动服务并做成开机自动启动

[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf

97 Server=10.1.1.11				修改成zabbix监控服务器的IP

[root@agent1 ~]# systemctl restart zabbix-agent
[root@agent1 ~]# systemctl enable zabbix-agent

[root@agent1 ~]# lsof -i:10050

3, 回到web管理界面--》点配置--》点主机 --》 点创建主机
在这里插入图片描述

4,为主机添加要监控的模板--》点模板--》点选择--》把 Template OS Linux 前面打勾(其它模板视随意加)--》点选择 --》点添加 --》最后点右下角的添加
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5,确认
在这里插入图片描述

zabbix用户与用户群组

用户(user):zabbix提供多用户管理,不同的用户可以设置不同的权限,不同的语言,不同的报警方式等。

web管理界面--》管理 --》用户
在这里插入图片描述
在这里插入图片描述

用户群组(group): 对用户进行分组管理.

web管理界面--》管理 --》用户群组
在这里插入图片描述在这里插入图片描述

练习:

  1. 添加一个用户群组叫usergroup1
  2. 再添加一个用户叫张三,加入usergroup1组和Zabbix administrators组

主机和主机群组

主机(host): 指被监控的一个设备(服务器,交换机等)

web管理界面--》管理 --》主机

前面监控本机和远程机器时操作过,这里不再截图

主机群组(hostgroup): 指被监控的一组主机(主要应用在有特别多主机的情况,方便分组区分)

web管理界面--》管理 --》主机群组
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aUouXkyt-1670808227280)(图片/zabbix主机群组管理2.png)]

练习: 把前面做的agent1这个被监控端加入一个新的组,组名为webservers,也保留agent1属于原来的Linux servers组。

监控项与应用集(重点)

监控项(item): 是从主机收集的数据信息,代表收集数据或监控的一个最小单位

应用集(applications): 代表多个监控项目合成的组。

创建监控项

web管理界面--》配置--》主机--》监控项(这里我选的agent1的主机的监控项;也就是说每个主机都是各自的监控项,选谁的就是配置谁的)--》右上角点创建监控项
在这里插入图片描述

在这里插入图片描述

上面创建的agent.hostname默认就在Template OS Linux模板里,也就是说已经被使用了,就不允许你创建了。

注意: 监控项的键值写法是难点,如果不知道应该怎么传参数,可以参考模板里已经有的监控项。

练习: 把agent1已经链接的模板取消(因为cpu负载的监控项在Template OS Linux模板里也已经存在了),然后参考下图为agent1创建以下几个监控项

  1. cpu负载(1分钟)
  2. cpu负载(5分钟)
  3. cpu负载(15分钟)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qzg93IxX-1670808227282)(图片/cpu负载键值传参.png)]

答案:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KT97ihNL-1670808227282)(图片/取消模板链接.png)]

按下图所示创建三个监控项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6VVJU74j-1670808227282)(图片/创建cpu负载监控项.png)]

为监控项创建图形

web管理界面--》配置--》主机--》图形(选agent1主机的图形)--》右上角点创建图形--》选择图形名称,并在下面添加刚才定义好的监控项--》添加后,预览图形

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDsHjnAd-1670808227283)(图片/为cpu负载创建图形.png)]

过一段时间后的图形效果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MP73d5cH-1670808227283)(图片/cpu负载图形.png)]

自定义监控项

自带的键值用得还是不习惯,或者有些想监控的却没有相关的键值,我们还可以自定义键值

下面我们就来创建一个自定义的监控项:

监控agent1上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)

1, 在被监控端agent1上,随意多打开几个终端,模拟多个登录用户

[root@agent1 ~]# who |wc -l
14						我这里确认登录用户数为14

2, 在被监控端agent1上,定义用户参数

[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf 

295 UserParameter=loginusers,who | wc -l

说明: loginusers是我自定义的一个键值名称(会在创建监控项时用到),后面的who |wc -l就要被监控的命令


[root@agent1 ~]# systemctl restart zabbix-agent

3, 在zabbix server服务器上先测试是否能得到被监控端agent1的结果

需要zabbix官方yum源来安装zabbix-get命令
[root@zabbixserver ~]# yum install zabbix-get

使用此命令就可以得到被监控端的结果,则测试ok
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k loginusers
14					--可以确认得到的值确实为agent1的

4,web管理界面--》配置--》主机--》监控项(选agent1的监控项)--》右上角点创建监控项
在这里插入图片描述

5, 点添加后确认是否添加成功
在这里插入图片描述

为自定义监控项创建图形

6,web管理界面--》配置--》主机--》图形(还是选的agent1的主机的图形)--》右上角点创建图形--》选择图形名称,并在下面添加刚才定义好的监控项--》添加后,预览图形
在这里插入图片描述
在这里插入图片描述

聚合图形

在上面监控项的配置里,我们定义了图形。而聚合图形就是把多个重要常用的数据整合一起来显示,方便查看.

假设我觉得agent1上cpu负载和远程linux登录用户数这2个图形非常重要,经常要查看,我现在想把它们聚合到一起。
在这里插入图片描述
在这里插入图片描述

点 agent1重要图 - -》点右上角编辑聚合图形 - -》点更改
在这里插入图片描述
在这里插入图片描述

另一张图同理,最终效果如下:
在这里插入图片描述

在这里插入图片描述

触发器(重点)

触发器(trigger): 定义监控项到达一个临界值(阈值)或者满足一个条件,就会发现状态变化(OK变为Problem,Problem变为OK)

下面我把监控agent1的登录用户数做一个触发器(大于20个登录用户就警告)

1, web管理界面--》配置--》主机--》触发器(选远程agent1的触发器)--》右上角点创建触发器
在这里插入图片描述
在这里插入图片描述

2,创建完触发器后,可以尝试去agent1上再多开几个终端,让其登录用户数超过20个,然后就可以去下面两图显示的地方去查看确认效果了。
在这里插入图片描述
在这里插入图片描述

监控nginx(拓展)

nginx有一个状态页,通过查看状态页信息可以连接到nginx服务负载情况.

下面我们假设监控agent1的nginx

1,在agent1上安装nginx

[root@agent1 ~]# yum install epel-release
[root@agent1 ~]# yum install nginx

2,在nginx里的server{}配置段里加上下面一段,然后重启服务

[root@agent1 ~]# vim /etc/nginx/nginx.conf

		location /status {
                stub_status on;
                allow 10.1.1.11; # 必须要允许zabbix server访问(或zabbix_proxy)
                allow 127.0.0.1; # 允许本机访问
                allow 10.1.1.1;	 # 加这个IP是为了windows宿主机访问用的
                deny all;
                access_log off;
        } 
        
[root@agent1 ~]# systemctl restart nginx
[root@agent1 ~]# systemctl enable nginx

3, 通过浏览器访问http://10.1.1.12/status就能看到如下nginx状态信息

Active connections: 1 
server accepts handled requests
 59 59 115 
Reading: 0 Writing: 1 Waiting: 0 

Active  connections:当前所有处于打开状态的活动连接数
accepts :已经接收连接数
handled : 已经处理过的连接数
requests : 已经处理过的请求数,在保持连接模式下,请求数量可能会大于连接数量

Reading: 正处于接收请求的连接数
Writing: 请求已经接收完成,处于响应过程的连接数
Waiting : 保持连接模式,处于活动状态的连接数

4, 在agent1上准备一个脚本,并给执行权限

[root@agent1 ~]# vim /opt/nginx_status.sh
#!/bin/bash

HOST="127.0.0.1"
PORT="80"

function ping {						# 这个不是ping,是判断nginx进程是否存在
    /sbin/pidof nginx | wc -l
}

function active {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function accepts {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
function reading {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
$1

[root@agent1 ~]# chmod 755 /opt/nginx_status.sh 

5, 在agent1上定义UserParameter,并重启服务

在配置文件里加上下面一句
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=nginx_status[*],/opt/nginx_status.sh $1

[root@agent1 ~]# systemctl restart zabbix-agent

6, 在zabbix_server上(如果使用了使用zabbix_proxy则这里就在zabbix_proxy上操作)zabbix_get测试

[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx._tatus[ping]
1
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx_status[handled]
76

7,测试能成功监控取到值,说明监控OK。

图形上定义监控项的过程请自行练习完成。

课后练习

  1. 自定义监控agent1所有进程数量,并设定触发器(当大于200就警告,当大于300就严重警告,超过400个就灾难)
UserParameter=total_proc,ps -ef | wc -l
  1. 自定义监控agent1上mariadb的当前登录用户数, 并设定触发器(当大于50个就警告,当大于100就严重警告,超过150个就灾难)

方法一:

[root@agent1 ~]# yum install mariadb-server -y
[root@agent1 ~]# systemctl restart mariadb
下面这条命令就可以得到当前登录用户数,然后自定义一个UserParameter就可以了
[root@agent1 ~]# mysqladmin extended-status |grep Threads_connected |awk '{print $4}'

方法二:

在agent端的下面这个子配置文件里已经有mysql的用户参数定义了
[root@agent1 ~]# /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

直接在后面的mysql.status[]的中括号里传相应的参数就OK了,如:

监控远程mariadb当前登录用户数
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k mysql.status[Threads_connected]
监控远程mariadb运行时间
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k mysql.status[uptime]

3, 自定义监控agent1上的tcp连接数量, 并自定义触发器

# netstat -nt | awk 'NR>2 {print $0} |wc -l

4, 监控某分区磁盘使用率,并自定义触发器

# df -h |awk -F'[ %]*' '$NF=="/" {print $5}'

5, 监控可用内存,并自定义触发器

# free |awk 'NR==2 {print $NF}'

web监测

学习目标:

  • 能够实现一个web页面的监测
  • 能够实现自动发现远程linux主机
  • 能够通过动作在发现主机后自动添加主机并链接模板
  • 能够创建一个模版并添加相应的元素(监控项,图形,触发器等)
  • 能够将主机或模板的配置实现导出和导入
  • 能够实现至少一种报警方式(邮件,微信等)
  • 能够通过zabbix_proxy来实现监控

web监测:类似一个监控项,可以对一个url页面进行监测(监测它的状态码,页面匹配的字符串,响应时间,下载速度等)

web监测可以创建一个场景,并包含几个步骤

下面来做个例子(监测agent1的httpd的主页)

1, web管理界面--》配置--》主机--》web监测(选agent1的web监测)--》右上角点创建web场景
在这里插入图片描述

2,再点步骤,填上名称与监测的URL(你可以添加多个步骤,我这里只加这一个)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3T7t6Gk-1670809394365)(图片/web监测2.png)]

3,继续在步骤界面的最下面填上200状态码,然后点添加,出来后再点添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k3hXFPHY-1670809394366)(图片/web监测3.png)]

4,创建完后,去下图中查看验证

  • 如果看到是连接失败,则表示agent1的httpd没有启动
  • 如果是404错误,则表示服务启动了,但找不到主页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kua5yJsx-1670809394366)(图片/web监测4.png)]

5, 去agent1上安装httpd,并做一个主页,再重启服务

[root@agent1 ~]# yum install httpd httpd-devel
[root@agent1 ~]# echo "agent1 主页" > /var/www/html/index.html
[root@agent1 ~]# systemctl restart httpd
[root@agent1 ~]# systemctl enable httpd

6,再去查看验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFUtFlRY-1670809394367)(图片/web监测5.png)]

练习:

  1. 为上面的web监测创建一个图形
  2. 为上面的web监测创建一个触发器,状态码不为200就触发(选监控项的时候要注意看清楚,一个web监测会产生好几个小的监控项,选状态码的那一个)

自动发现与动作

发现:假设我现在需要添加监控100台主机,这个工作量有点大。所以我可以把这100台连好网络,配置并启动好zabbix-agent服务。然后在zabbix server上配置一个自动发现规则,自动发现这100台主机。

自动发现是由服务端主动发起,Zabbix Server开启发现进程,定时扫描网络中符合条件的主机。

动作:自动发现了这100台主机,但是还要添加监控主机和链接模板啊。这时可以通过动作来达到此目的。

咱们前面早就准备了一台agent2,一直还没使用,这里就尝试自动发现这台agent2。

1,在agent2上安装zabbix-agent包

[root@agent2 ~]# yum install zabbix-agent

2,配置zabbix-agent端的配置文件,启动服务并做成开机自动启动

[root@agent2 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=10.1.1.11							修改成zabbix监控服务器的IP


[root@agent2 ~]# systemctl restart zabbix-agent
[root@agent2 ~]# systemctl enable zabbix-agent


[root@agent2 ~]# lsof -i:10050

思考: 如果100台服务器都要装系统,然后再做上面两步,也挺累的。用什么方法来做更高效?

答: 安装系统可以使用pxe(kickstart)或cobbler.安装软件,修改配置可以使用cobbler的postscript,再或者使用ansible,saltstack这种软件。

3, web管理界面--》配置--》自动发现
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Td2rBPXp-1670809394368)(图片/自动发现2.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WW8pzWo-1670809394369)(图片/自动发现3.png)]

4, 自动发现规则启用后,按下图显示的去验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZ15Qw6E-1670809394370)(图片/自动发现4.png)]

5,发现了agent2,但有一个问题,并没有把agent添加到监控的主机列表中,如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoHfOIOu-1670809394370)(图片/自动发现5.png)]

6,通过动作,将发现的主机添加到监控主机列表,并加上监控模板。

web管理界面--》配置--》动作--》右上角事件源选自动发现--》有一个叫Auto discovery. Linux servers的动作,直接启用就好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zTefPUnp-1670809394371)(图片/自动发现6.png)]

7, 再次验证就OK了(这里等待比较久,你也可以尝试把自动发现规则关闭一下,再次打开)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LfJ7plZP-1670809394371)(图片/自动发现7.png)]

课外拓展: 自动注册

自动注册: 与自动发现实现的功能相同,区别在于自动发现是由zabbixserver去发现被监控机器。而自动注册是由被监控机器去找zabbixserver注册。

请问: 如果有大量的被监控机器,哪一种方式性能更好?

小结: 生产环境的自动化思路

  • cobbler自动安装系统和系统初始化
  • ansible实现配置自动化
  • 自动发现加动作实现自动监控与模板链接

模板

模板(template): 就是包括监控项,应用集,触发器,图形,聚合图形,自动发现规则,web监测等的一组实体。

使用模板可以方便链接到主机,更改模板也会将更改应用到所有链接的主机。

参考: https://www.zabbix.com/documentation/3.4/zh/manual/config/templates

web管理界面--》配置--》模板--》创建模板
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

导入导出

辛辛苦苦配置了一个模板或一个主机,我想给另一台zabbix服务器使用或者我想保存下来,如何实现?

导入导出可以帮你轻松实现,导出的是xml格式文件.

目的:

  • 备份防止误删除
  • 将一台zabbix的模板配置迁移到另一台zabbix服务器

配置--》主机--》选取要导出的主机(前面打勾)--》下面选择导出
在这里插入图片描述
在这里插入图片描述

配置--》模版--》选取要导出的模版(前面打勾)--》下面选择导出
在这里插入图片描述

配置--》主机--》右上角导入
在这里插入图片描述

配置--》模板--》右上角导入
在这里插入图片描述

练习: 导入导出练习

  1. 把本机的一个模版删除
  2. 然后从同桌的zabbix服务器那导出成xml文件,并拷贝过来导入(里面有IP参数的要记得修改相应的IP)

报警

zabbix的报警媒介支持email,jabber,sms(短信),微信,电话语音等。
在这里插入图片描述

告警平台申请

自己配置报警比较复杂,而且邮件容易被拒或当做垃圾邮件。有些专业的报警平台就可以帮你简单实现。

如:onealeart 参考:http://www.onealert.com/

请先申请一个账号,绑定邮箱,手机,微信等。

登录进去后,按如下图示操作
在这里插入图片描述

告警平台增加zabbix应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在zabbixserver安装告警平台agent

在这里插入图片描述

按照它的提示,进行安装
[root@zabbixserver ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbixserver alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_relea                       se-2.1.0.tar.gz

[root@zabbixserver alertscripts]# tar xf ca_zabbix_release-2.1.0.tar.gz
[root@zabbixserver alertscripts]# cd cloudalert/bin/

[root@zabbixserver bin]# bash install.sh 2842d6d7-f7a1-fb97-254d-9be972403dd0
start to create config file...
Zabbix管理地址: http://10.1.1.11/zabbix
Zabbix管理员账号: admin
Zabbix管理员密码: 
......

验证安装

配置完onealert后,我们可以验证下它安装后到底对zabbix做了啥。简单来说,它做了三件事:

  1. 增加了一个报警媒介类型
  2. 增加了一个用户和一个用户组用于报警
  3. 增加了一个报警动作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

配置通知策略

在这里插入图片描述

触发器触发告警

我们这里以前面都定义过的"agent1远程登录用户数"来测试报警,当agent1远程登录用户数大于20个就会触发器,然后报警。(注意:请在测试前先把agent1的登录用户数调整到20个以下)

验证: 将agent1远程登录用户数调整成大于20个,让触发器触发,也会触发报警。
在这里插入图片描述

zabbix proxy

参考网址: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitoring/proxies

zabbix proxy的应用场景

应用场景1: 跨内外网监控

当zabbix server与被监控机器不在同一个机房时,跨公网监控会很麻烦, 也会带来安全隐患(比如有防火墙的情况,需要防火墙开放的端口增多。而且像mysql数据库这类应用是不适合直接被公网连接的)

在这里插入图片描述

应用场景2: 分布式监控

当监控机主机特别多,甚至分散在不同的地域机房。这个时候zabbix server压力很大,所以可以通过增加zabbix proxy来代理收集每个机房里的主机信息,再统一给zabbix server.
在这里插入图片描述

zabbix proxy的两个主要应用场景总结:

  1. 分布式监控,为zabbix server分担压力
  2. zabbix server监控有防火墙的内网各服务器时,需要防火墙开放各个端口。使用zabbix proxy在内网统一监控,然后与zabbix server通过公网连接,此时防火墙只需要开放zabbix server与zabbix proxy的连接就可以了。

案例环境准备

我这里把原来的agent2用来模拟zabbixproxy

  1. 先在zabbix的web管理界面把agent2的配置删除(并把先前做的自动发现规则禁用,报警也禁用)
  2. 把agent2主机名改成zabbixproxy.cluster.com并且三台重新绑定/etc/hosts
# hostnamectl set-hostname --static zabbixproxy.cluster.com
# vim /etc/hosts
10.1.1.11       zabbixserver.cluster.com
10.1.1.12       agent1.cluster.com
10.1.1.13       zabbixproxy.cluster.com
  1. 把zabbixproxy上的zabbix-agent服务先停一下
[root@zabbixproxy ~]# systemctl stop zabbix-agent

在这里插入图片描述

案例实现过程

  1. 在zabbixproxy上安装相关软件包
[root@zabbixproxy ~]# yum install mariadb-server zabbix-proxy-mysql zabbix-agent

2,启动数据库,授权并导入数据

[root@zabbixproxy ~]# systemctl restart mariadb
[root@zabbixproxy ~]# systemctl enable mariadb

[root@zabbixproxy ~]# mysql

MariaDB [(none)]> create database zabbix_proxy default charset utf8;
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123';
MariaDB [(none)]> flush privileges;

[root@zabbixproxy ~]# zcat /usr/share/doc/zabbix-proxy-mysql-3.4.15/schema.sql.gz |mysql zabbix_proxy -u zabbix -p123

3, 修改zabbix_proxy上的配置文件,并重启服务

[root@zabbixproxy ~]# vim /etc/zabbix/zabbix_proxy.conf
13 ProxyMode=0						  主动模式
24 Server=10.1.1.11			  		  zabbix_server的ip
43 Hostname=zabbixproxy.cluster.com   这个名字和你的主机名还有后面在web界面配置代理的名字保持一致  
156 DBHost=localhost				
167 DBName=zabbix_proxy
182 DBUser=zabbix
190 DBPassword=123			打开注释,并写上密码(与前面授权一致)
244 ConfigFrequency=60	主动模式下zabbix_proxy多久从zabbix_server接收一次配置数据
253 DataSenderFrequency=5 主动模式下zabbix_proxy多久发送一次收集的数据给zabbixserver

[root@zabbixproxy ~]# systemctl restart zabbix-proxy

[root@zabbixproxy ~]# systemctl enable zabbix-proxy

4, 如果zabbix_server也要监控zabbix_proxy的话,那么可以使用zabbix_proxy来代理自己(可选步骤)

[root@zabbixproxy ~]# vim /etc/zabbix/zabbix_agentd.conf							
97 Server=10.1.1.13
138 ServerActive=10.1.1.13					自己代理自己,所以IP为zabbix_proxy的ip
149 Hostname=zabbixproxy.cluster.com

[root@zabbixproxy ~]# systemctl restart zabbix-agent
[root@zabbixproxy ~]# systemctl enable zabbix-agent

5, 修改agent1上的服务并重启服务

把服务器的ip改成zabbix_proxy的ip,而不是zabbix_server的ip
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
97 Server=10.1.1.13								agent的被动模式
138 ServerActive=10.1.1.13						agent的主动模式
149 Hostname=agent1.cluster.com					agent的主动模式必须要加主机名

[root@agent1 ~]# systemctl restart zabbix-agent

6, 回到zabbix server的web管理界面创建主机,添加代理服务器为一台主机
在这里插入图片描述

7, 增加代理, 代理自己和agent1
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8, 验证测试

在agent1上找一个监控项做改变(比如登录用户数),然后在zabbix_server的图形界面能看到这个改变,说明proxy成功.

主动监控和被动监控(拓展)

在这里插入图片描述

agent被动模式

相对于agent的被动,也就是表示是server或proxy去找agent拿数据(这也是zabbix server的默认模式)

配置方法如下:

agent端配置被动模式的参数如下
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=10.1.1.13	IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip)
[root@agent1 ~]# systemctl restart zabbix-agent

agent主动模式

相对于agent的主动,也就是表示是agent主动把数据传给server或proxy

agent主动模式的优点是: 当agent太多的情况下,server或proxy去找这么多agent搜集数据,压力负载过大。用主动模式就可以缓解server或proxy的压力。

但用主动模式的问题是: 监控项也要转为主动式才行,而且很多zabbix自带模板里的监控项不支持转为主动式.

agent端配置主动模式的参数如下
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Serveractive=10.1.1.13	 IP为zabbix_proxy的ip(如果没有proxy,则直接为zabbix_server的ip)
[root@agent1 ~]# systemctl restart zabbix-agent

在这里插入图片描述

在这里插入图片描述

验证测试:

在agent1上把登录用户数再次调整,然后在zabbix_server的图形界面能看到这个改变,说明主动监控成功.

proxy主动模式

zabbix_proxy主动发数据给zabbix_server(proxy的默认模式)

# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0							--此参数为0表示proxy主动模式	

proxy被动模式

zabbix_server找zabbix_proxy为收集数据

# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=1						   --此参数为1表示proxy主动模式			  

场景

场景: 公司大概十几台服务器(主要是lnmp环境),现在需要你来设计并使用zabbix监控它们,并且要考虑以后的扩展,尽量使用自动的方式实现.

传智要做一个宣传网站–》1台–> 架构(高可用,负载均衡)–》监控(安装监控软件并连接) --》按需求设置监控模板–》 因公司发展,业务增长,服务器增加,我们得基础扩展监控模板 -----》公司再发展,有多个机房,我们要实现分布式监控+自动注册+主动被动模式的优化

操作的大概步骤:

  1. 创建管理用户并配置报警策略
  2. 创建模版
  3. 在模版里加应用集与监控项
  4. 自定义配置每一个监控项(如要监测cpu,mem,io,disk use等等)
  5. 为相应的监控项创建图形,有些监控项可以多个合成一个图形,也有些监控项(如返回的字符串这种)无法创建图形
  6. 为相应的监控项设置触发器
  7. 完成基本模版的创建(可考虑创建更多模版,也可考虑将模版导出备份)
  8. 配置自动发现或自动注册规则
  9. 配置动作(指定监控符合哪些条件的主机,并为他们加入哪个组和链接哪些模版)
  10. 使用ansible这种配置自动化工具,把所有需要被监控的机器从zabbix-agent安装,配置,启动服务一体化完成
  11. 实现自动发现或自动注册,让所有被监控的机器自动被监控
  12. 增加分布式监控或调整主动被动模式进行优化
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zabbix是一个功能强大的开源监控解决方案,可以用于监控Linux和Windows系统。它提供了丰富的功能,可以监控各种指标和参数,如CPU利用率、内存使用情况、硬盘空间、网络流量等。用户可以通过配置Zabbix,即可实时获取系统的监控数据,并进行可视化展示和报表生成。 对于Linux系统,Zabbix可以通过安装Zabbix Agent来监控,Agent会在被监控主机上运行,并收集相关的性能数据,然后将数据传输给Zabbix Server。Zabbix Server会对这些数据进行处理并生成监控报告。用户可以通过Zabbix的Web界面,配置各种监控项目、设定阈值以及报警机制等。 对于Windows系统,Zabbix同样可以通过安装Zabbix Agent来进行监控。安装Agent后,Zabbix Server可以通过Agent获取Windows系统的性能数据。用户可以配置监控项目,比如CPU利用率、内存使用情况、进程状态等。与Linux系统类似,Zabbix会根据用户的设定监控参数,并在达到预设阈值时进行报警。 Zabbix还支持远程监控,可以通过网络连接到被监控主机,获取远程主机的性能数据。这在分布式部署环境中非常有用,可以集中管理和监控多个服务器。 总之,Zabbix是一个功能强大且灵活的监控系统,能够监控Linux和Windows系统的各种性能指标和参数。它提供了直观的用户界面和丰富的功能,使得监控任务变得简单而高效。无论是小型企业还是大型组织,Zabbix都是一个理想的监控解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值