Administrator
Administrator
发布于 2024-08-28 / 3 阅读
0
0

zabbix

zabbix

一.监控软件的作用

作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果和网站的健康状态

利用一个优秀的监控软件,我们可以:

  • 对系统不间断实时监控

  • 实时反馈系统当前状态

  • 保证服务可靠性安全性

  • 保证业务持续稳定运行

二.Zabbix基本介绍

1.Zabbix是什么?

官方网址:Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution

  • zabbix是一个基于Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

  • zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  • zabbix由两部分构成,*zabbix server(端口:10051)与可选组件zabbix agent(端口:10050)*。通过C/S模式采集数据,通过B/S模式在Web端展示和配置。

  • zabbix server 可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。

  • zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

Server

Zabbix Server需运行在LAMP(Linux+Apache+Mysql+PHP)环境下,对硬件要求低

Agent

目前已有的agent基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows等

SNMP

支持各类常见的网络设备

2.Zabbix监控原理

  1. zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server端

  2. zabbix server收到数据后,将数据存储到数据库中

  3. 用户基于 Zabbix WEB 可以看到数据在前端展现图像

  4. 当zabbix监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,包括发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)

3.Zabbix的优点

  • 开源,无软件成本投入

  • Server对设备性能要求低

  • 支持设备多,自带多种监控模板

  • 支持分布式集中管理,有自动发现功能,可以实现自动化监控

  • 开放式接口,扩展性强,插件编写容易

  • 当监控的 item 比较多服务器队列此较大时可以采用主动状态,被监控客户端主动从server端去下载需要监控的item然后取数据上传到server端。这种方式对服务器的负载比较小。

  • Api的支持,方便与其他系统结合

4.Zabbix的缺点

  • 需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。

  • 项目批量修改不方便。

  • 社区虽然成熟,但是中文资料相对较少,服务支持有限。

  • 入门容易,能实现基础的监控,但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发难度较大。

  • 系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;且自定义的项目报警需要自己设置,过程比较繁琐。

  • 缺少数据汇 总功能,如无法查看-组服务器平均值, 需进行二次开发;

5.Zabbix监控系统的监控对象

类型

典型代表服务

安装的服务

数据库

MySQL,MariaDB,Oracle,SQL Server

agent

应用软件

Nginx,Apache, PHP,Tomcat

agent

集群

LVS,Keepalived,HAproxy,RHCS,F5

agent

虚拟化

VMware,KVM,XEN ,docker ,k8s

agent

操作系统

Linux,Unix,Windows性能参数

agent

硬件

服务器,存储,网络设备

IPMI

网络

网络环境(内网环境,外网环境)

SNMP

三.Zabbix的监控架构

在实际监控架构中,zabbix根据网络环境、监控规模等分了三种架构: server-client 、master-node-client、server-proxy-client

1.server-client架构

  • zabbix的最简单的架构

  • 监控机和被监控机之间不经过任何代理 ,直接由zabbix server和zabbix agentd之间进行数据交互

  • 适用于网络比较简单,设备比较少的监控环境

2.server-proxy-client架构

  • 其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后再提交给server

  • 该架构经常是和master-node-client架构做比较的架构 ,一般适用于跨机房、跨网络的中型网络架构的监控

3.master-node-client架构

  • 该架构是zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境 。

  • 每个node同时也是一个server端,node下面可以接proxy,也可以直接接client 。

  • node有自已的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损坏对node其下架构的完整性

四.Zabbix的程序组件

  1. Zabbix agent:客户端守护进程,负责部署在被监控主机上,把被监控主机的数据传送给zabbix server,例如:收集 CPU 负载、内存、硬盘使用情况等;

  2. Zabbix server:服务端守护进程,负责接收agent发送的信息,组织配置信息,统计配置信息和操作数据等

  3. Zabbix database:存储系统,用于存储zabbix的所有配置信息,监控数据的数据库,例如mysql, pgsq|

  4. Zabbix web:GUI图形化界面,zabbix的web界面,管理可以通过zabbix的web界面管理zabbix配置以及查看zabbix的监控信息,可以独一部署在一台服务器上

  5. Zabbix proxy:zabbix分布式代理守护进程,分布式环境中使用,zabbix proxy代表server端管理该区域中的信息收集,最终统一发往zabbix server

  6. Zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令

  7. Zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查

  8. Zabbix_ java_ gateway:java网关

五.Zabbix的监控模式

1. 主动模式

  • 主动检测: 由agent端主动收集信息发送给server端 工具是zabbix_sender

  • 相对于agent而言; agent(active),agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;

  • 主动监控能极大节约监控server的资源。

2. 被动模式

  • 被动检测:由server端主动拉取信息 工具是zabbix_get

  • 相对于agent而言 ; agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;

六.Zabbix监控有哪些?

  1. 硬件监控:通过 SNMP 来进行路由器交换机的监控

  2. 系统监控:如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点

  3. 服务监控:比如公司用 LNMP nginx 自带 Status 模块、 PHP 也有相关的 Status 、 MySQL 的话可以通过 ODBC协议 来进行监控

  4. 网络监控:如果是云主机又不是跨机房,那么可以选择不监控网络

  5. 安全监控:如果是云主机可以考虑使用自带的安全防护。当然也可以Zabbix监控 iptables 如果是硬件,那么推荐以Zabbix监控硬件防火墙

  6. Web 监控:web 监控的话题其实还是很多。比如可以使用自带的 web 监控来监控页面相关的延迟、 js 响应时间、下载时间、等等

  7. 日志监控:如果是 web 的话可以使用监控 Nginx 的 500x 日志。PHP 的 ERROR 日志

  8. 流量分析:平时我们分析日志都是拿 awk sed xxx 一堆工具来实现。这样对我们统计 ip 、 pv 、 uv 不是很方便。那么可以使用百度统计、 google 统计、商业,让开发嵌入代码即可 (不想关建议去掉)

  9. 可视化:通过 screen 以及引入一 些第三方的库来美化界面,同时我们也需要知道、订单量突然增加、 突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平台来梳理各个系统之间的业务关系

  10. 自动化监控:如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现

七:zabbix的部署

可以通过官方文档yum进行安装!

或者 ps:本文使用下面方式进行安装!

可以使用yum安装zabbix+编译lnmp方式安装

lnmp安装参考其他文档安装完成时候创建用户数据库

ps:如果使用上面lnmp文档安装,请注意mysql5.7的sock文件位置,以及php8有的的版本不行,建议需要换成7.2版本以上的!!!

#创建zabbix数据库
create database zabbix charset utf8 collate utf8_bin;
​
#创建zabbix用户并指定字符集
​
grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123.com';
​
​

部署zabbix-server使用的是清华源进行安装的

#下载清华源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#虽然是从清华源下载的,但是里面还是从zabbix官方下载安装,需要对里面地址改成清华的地址
sed -i 's#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo
#安装
yum -y install zabbix-server-mysql zabbix-agent2
#zabbix数据导入数据库中
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uzabbix -p123.com zabbix
#修改zabbix-server配置文件让zabbix能够连接mysql数据库
[root@localhost ~]# grep '^DB' /etc/zabbix/zabbix_server.conf 
DBHost=localhost    #数据库位置在本地
DBName=zabbix       #数据库库名 
DBUser=zabbix       #数据库用户名
DBPassword=zabbix   #数据库用户的密码
​
#启动
[root@localhost ~]# systemctl start zabbix-server
[root@localhost ~]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
​

部署zabbix-server前端

#下载源码包并不是安装它,而是获取里面的前端页面
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.42.tar.gz --no-check-certificate
#解压
tar -zxvf zabbix-5.0.42.tar.gz
#复制里面ui目录的文件到nginx访问位置
cp -a /root/zabbix-5.0.42/ui/* /usr/local/nginx/html
chown -R nginx.nginx /usr/local/nginx/html

八:zabbix中文字符乱码问题

#从windows10中下载一个认识的字体   比如微软雅黑
C:\Windows\Fonts
#备份原有的
cp /usr/local/nginx/html/assets/fonts/DejaVuSans.ttf /usr/local/nginx/html/assets/fonts/DejaVuSans.ttf.bak
#替换
mv MSYH.TTC /usr/local/nginx/html/assets/fonts/DejaVuSans.ttf

九:添加一台主机并监控

首先准备一台同zabbix-server网段 的客户机并安装同版本的zabbix-agent2

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.42-1.el7.x86_64.rpm
##默认文件
[root@anygts ~]# grep -vE '^#|^$' /etc/zabbix/zabbix_agent2.conf 
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.10.13              #指定zabbix-server主机ip     默认被动模式
ServerActive=127.0.0.1            #主动模式下填写,向谁发送数据
Hostname=web1                     #本机的hostname,此值必须与zabbix的网页上创建的主机名一致即可
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
​
[root@anygts ~]# systemctl start zabbix-agent2
[root@anygts ~]# systemctl enable zabbix-agent2

然后在server端web页面上点击 配置-主机-右上角创建主机

名字于zabbix_agent2.conf文件中指定的hostname要一样的

十:zabbix自定义监控项

先明确获取监控项指标数据的命令或脚本

在被监控主机配置文件子目录(/etc/zabbix/zabbix_agent.d/)中创建以.conf为后缀的监控项配置文件,自定义获取监控指标数据的键值

#格式:
UserParameter=键值名,获取值的命令或脚本路径


#比如我要监控客户机的root是否被远程登录
[root@anygts ~]# cat /etc/zabbix/zabbix_agent2.d/web.conf
UserParameter=root.ssh,who | awk '$1=="root"' | wc -l
#重新启动zabbix-agent2
systemctl restart zabbix-agent2
#验证server端是否能获取数据
zabbix_get -s 192.168.10.10 -k root.ssh      -s指定客户机的ip   -k指定配置的键   如果没有zabbix_get命令就yum安装

在zabbix-server的web页面配置

右上角点击创建监控项

十一:添加触发器

创建触发器

当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警。

点击右上角触发器

十二:创建图形

十三:创建模板并关联

从web1主机里面把原先创建的监控项,图形,触发器复制过来。

都是相同操作

然后还需要把取值web.conf文件也得拷贝过去,不然用不来了

scp /etc/zabbix/zabbix_agent2.d/web.conf root@192.168.10.13:/etc/zabbix/zabbix_agent2.d/

十四:邮件报警

配置发件人

下面这个消息格式请使用文本

先不添加,再点击消息模板

Zabbix___检测服务器异常故障,服务器故障,服务器故障!!!

告警机器:  {HOST.DESCRIPTION}
服务器IP:  {HOST.IP}
故障报警:  {TRIGGER.NAME} {TRIGGER.STATUS} !!!
故障状态:  {TRIGGER.STATUS} !!!

**************************************************************
故障报警:  {TRIGGER.NAME} {TRIGGER.STATUS} !!!
告警时间:  {EVENT.DATE}__{EVENT.TIME}
告警等级:  {TRIGGER.SEVERITY}:{TRIGGER.NSEVERITY}
告警信息:  {TRIGGER.NAME}...!!!
告警项目:  Zabbix[process,unreachable poller,avg,busy]
问题详情:  {ITEM.NAME1}...{EVENT.VALUE}...
当前状态:  {TRIGGER.STATUS}
事件ID:    {EVENT.ID} 
**************************************************************
敬请及时核查确认!!!
恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复信息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

配置收件人以及动作

配置动作

十五:监控Windows

十六:监控java服务-Tomcat

客户机:

在客户机上安装jdk和tomcat

[root@www ~]# java -version
java version "11.0.23" 2024-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.23+7-LTS-222)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.23+7-LTS-222, mixed mode)
[root@www ~]# ./tomcat/bin/version.sh 
Using CATALINA_BASE:   /root/tomcat
Using CATALINA_HOME:   /root/tomcat
Using CATALINA_TMPDIR: /root/tomcat/temp
Using JRE_HOME:        /root/jdk
Using CLASSPATH:       /root/tomcat/bin/bootstrap.jar:/root/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/10.1.24
Server built:   May 9 2024 17:41:23 UTC
Server number:  10.1.24.0
OS Name:        Linux
OS Version:     3.10.0-1160.el7.x86_64
Architecture:   amd64
JVM Version:    11.0.23+7-LTS-222
JVM Vendor:     Oracle Corporation

开启tomcat的远程端口

vim tomcat/bin/catalina.sh                          ##配置tomcat远程端口、加密
  
CATALINA_OPTS="$CATALINA_OPTS \
  -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=12345 \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Djava.rmi.server.hostname=客户机的ip \
  -Dcom.sun.management.jmxremote.authenticate=false"
  
  重新启动tomcat
  
  [root@www ~]# netstat -antp | grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      2512/java 

zabbix-server配置

安装Zabbix Java gateway

yum install zabbix-java-gateway.x86_64 -y

修改Zabbix Java gateway配置文件

vim /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"  						#监听地址
LISTEN_PORT=10052  							#Java gateway默认监听10052端口
PID_FILE="/var/run/zabbix/zabbix_java.pid"  #PID_FILE文件
START_POLLERS=5  							#开启的工作线程数
TIMEOUT=30  								#超时时间

grep "^[a-Z]" /etc/zabbix/zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=30

启动并验证Zabbix Java gateway服务

systemctl enable --now zabbix-java-gateway.service

systemctl status zabbix-java-gateway.service

lsof -i:10052

配置zabbix server调用java gateway

vim /etc/zabbix/zabbix_server.conf
JavaGateway=127.0.0.1  		#JavaGateway的所在服务器IP地址
JavaGatewayPort=10052  		#JavaGateway的服务端口
StartJavaPollers=5 			#从javaGateway采集数据的进程数
#建议让StartJavaPollers选项的值小于或等于START_POLLERS

systemctl restart zabbix-server.service

web操作:

十七:自动发现

zabbix自动发现(对于 agent2 是被动模式)

  • zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。

  • 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。

自动发现主要是希望通过发现网络中的主机,并自动把主机添加到监控中,并关联特定的模板,实现自动监控。例如在办公网络中,希望通过Zabbix Agent监控所有工作电脑,只需要把新安装的电脑开放防火墙10050端口,那么电脑就可以自动通过发现新机器,并开始监控。如果网络中可能存在Windows和Linux系统,就需要通过Zabbix Agent判断自动添加的主机是Windows还是Linux。 以上这个过程需要分为两个步骤:

  1. 通过网络扫描制定的服务,本例为Zabbix Agent是否可以访问system.uname指标

  2. 发现主机之后需要执行添加的动作,这个过程由动作(Action)完成

先不更新,然后在点击操作

十八:自动注册

zabbix 自动注册(对于 agent2 是主动模式)

  • zabbix agent2 会主动上报自己的信息,发给 zabbix server。

  • 缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server

实现自动注册之前需要将自动发现关闭掉

客户端:

ServerActive=server端的IP #指定serverIP,主动注册
#Hostname=主机名  #手动指定主机名,用于区分操作系统
HostnameItem=system.hostname   #使用客户机自己的主机名
HostMetadataItem=system.uname    #标识元数据 system.uname 是不是Linux,如果是就添加

重启agent2

systemctl restart zabbix-agent2

server端:

十九:监控Nginx服务状态信息

通过Nginx监控模块,监控Nginx的7种状态

Nginx 的状态模块展示了七种不同的状态(四种计数器和三种状态)。以下是这七种状态的含义:



1. active:当前 Nginx 正在处理的连接数,包括等待请求处理或正在响应请求的连接数。



2. accepts:Nginx 启动后已经接受的连接总数。



3. handled:Nginx 工作进程已成功处理的连接总数。与 accepts 计数器不同,此计数器可能会多个小于 accepts 数量,在某些情况下,客户端可能已经断开了连接而无法正常处理。



4. requests:已经接收到、处理并响应的请求数量,该值通常应与 handled 值相等。



5. reading:当前正在读取客户端请求头部字段的连接数。



6. writing:当前正在向客户端发送响应数据的连接数。



7. waiting:空闲 keep-alive 连接,既没有读也没有写。可以处理下一个请求的连接。



通过理解这些状态可以帮助我们了解 Nginx 正在处理哪些连接,并且在调试和优化性能时非常有用。 当 active 连接数随着来自客户端的请求增加而增加时,可能需要考虑优化配置以确保足够的性能水平和稳定性。

一、开启Nginx状态模块

[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf



server {



	listen 88;



        location /nginx_status {



        	stub_status;



	}



}



[root@Web01 ~]# systemctl restart nginx

二、配置监控项

[root@Web01 ~]# curl -s 127.0.0.1:88/nginx_status



Active connections: 1 



server accepts handled requests



 4 4 3 



Reading: 0 Writing: 1 Waiting: 0

用awk以此取值,并设置为key

[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf



UserParameter=nginx.connections,curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'



UserParameter=nginx.accepts,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'



UserParameter=nginx.handled,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'



UserParameter=nginx.requests,curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'



UserParameter=nginx.Reading,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $2}'



UserParameter=nginx.Writing,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $4}'



UserParameter=nginx.Waiting,curl -s 127.0.0.1:88/nginx_status|awk 'NR==4{print $6}'



[root@Web01 ~]# systemctl restart zabbix-agent.service

测试取值

[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k nginx.connections



1

三、创建模板

基于模板创建监控项,也可以先添加监控项在复制到模板

其他六项也同理,不再截图

四、用默认键值添加Nginx-status端口监控项,并配置触发器

配置触发器

五、基于模板创建图形

六、模板创建完毕后关联被监控的主机

Web02同理

二十:监控PHP服务状态信息

一、安装PHP服务配置

上传PHP RPM包,安装

二、配置PHP状态信息

[root@Web01 ~]# cat /etc/php-fpm.d/www.conf|grep pm.status_path



pm.status_path = /status



[root@Web01 ~]# systemctl restart php-fpm

三、修改Nginx配置文件

[root@Web01 ~]# cat /etc/nginx/conf.d/status.conf



server {



	listen 88;



	location /nginx_status {



		stub_status;



	}



	location /status {



		fastcgi_pass 127.0.0.1:9000;



		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;



		include fastcgi_params;



	}



}



[root@Web01 ~]# systemctl restart nginx



[root@Web01 ~]# curl 127.0.0.1:88/status



pool:                 www                        #pool的名称



process manager:      dynamic                    #进程管理方式,现今大多都为dynamic,不要使用static



start time:           16/May/2023:21:30:31 +0800 #php-fpm上次启动的时间



start since:          133                        #php-fpm已运行了多少秒



accepted conn:        1                          #pool接受到的请求数



listen queue:         0                          #处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数



max listen queue:     0                          #从php-fpm启动到现在处于等待连接的最大数量



listen queue len:     128                        #处于等待连接队列的套接字大小



idle processes:       4                          #处于空闲状态的进程数



active processes:     1                          #处于活动状态的进程数



total processes:      5                          #进程总数



max active processes: 1                          #从php-fpm启动到现在最多有几个进程处于活动状态



max children reached: 0                          #当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数



slow requests:        0                          #当启用了php-fpm slow-log功能时,如果出现了php-fpm慢请求,这个计数器会增加,一般不当的mysql查询会触发这个值

四、自定义监控项

[root@Web01 ~]# cat /etc/zabbix/zabbix_agentd.d/php.conf



UserParameter=fpm.accepted,curl -s 127.0.0.1:88/status|grep accepted|awk '{print $NF}'



UserParameter=fpm.idle,curl -s 127.0.0.1:88/status|grep idle|awk '{print $NF}'



UserParameter=fpm.active,curl -s 127.0.0.1:88/status|grep ^active|awk '{print $NF}'



UserParameter=fpm.total,curl -s 127.0.0.1:88/status|grep total|awk '{print $NF}'



UserParameter=fpm.children,curl -s 127.0.0.1:88/status|grep children|awk '{print $NF}'



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



[root@Web01 ~]# zabbix_agentd -p | grep ^fpm    #客户端查看能否正常获取值



zabbix_agentd [7902]: Warning: EnableRemoteCommands parameter is deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead



fpm.accepted                                  [t|56]



fpm.idle                                      [t|5]



fpm.active                                    [t|1]



fpm.total                                     [t|6]



fpm.children                                  [t|0]



 



[root@Zabbix ~]# zabbix_get -s 172.16.1.7 -k fpm.accepted    #服务端查看能否正常获取客户端的值



62

五、创建自定义PHP模板(监控项+触发器+图形)

1)基于模板添加监控项

依次添加其他配置项,除自定义的外再多添加个端口监控,zabbix自带的

2)基于模板配置触发器

3分钟之内受到限制次数的最大数等于5则报警

3)基于模板配置图形

六、关联模板到监控主机

七、测试PHP访问

[root@Web02 ~]# for i in `seq 100`;do ab -n2000 -c20 127.0.0.1:88/status;done

发现fpm连接数上涨

二十一:zabbix-proxy

Zabbix-proxy是Zabbix监控系统中的一个重要组成部分,它在大型或分布式网络环境中扮演着关键角色。以下是关于Zabbix-proxy的详细介绍:

  1. 定义和主要功能

  • 定义:Zabbix-proxy是一个数据收集器,用于代替Zabbix Server收集性能和可用性数据,然后将这些数据汇报给Zabbix Server。

  • 主要功能

    1. 分担服务器压力:通过收集并转发数据,Zabbix-proxy能够显著减轻Zabbix Server的工作负载,提高监控系统的整体性能和稳定性。

    2. 提高监控效率:在低带宽、高延迟的网络环境下,Zabbix-proxy能够有效地避免数据传输的瓶颈,提高监控效率。

    3. 跨网络或防火墙监控:Zabbix-proxy有助于解决跨网络或防火墙等限制的监控问题,使监控系统更加灵活和可靠。

2. 使用场景

  • 监控远程区域设备:当需要监控位于远程区域的设备时,可以在这些区域部署Zabbix-proxy,以收集并转发监控数据。

  • 监控本地网络不稳定区域:对于本地网络中可能存在的不稳定区域,Zabbix-proxy可以作为一个数据缓冲区,确保在网络不稳定时仍能够收集和转发数据。

  • 大型环境监控:在大型环境中,使用Zabbix-proxy可以显著减轻Zabbix Server的压力,提高监控系统的可扩展性和性能。

3. 工作原理

  • 数据收集:Zabbix-proxy负责收集被监控设备的性能和可用性数据。

  • 数据缓存:收集到的数据首先会被缓存在Zabbix-proxy的本地存储中。

  • 数据转发:在一定时间间隔后,Zabbix-proxy会将缓存的数据转发给Zabbix Server进行进一步的处理和存储。

4. 配置

  • 部署位置:Zabbix-proxy通常部署在局域网内的节点上,以便与被监控设备直接通信。

  • 配置要求:Zabbix-proxy需要配置与Zabbix Server的通信参数、数据缓存策略等。

  • 数据库:为了防止数据库被破坏,通常情况下Zabbix-proxy的数据库与Zabbix Server的数据库是分开的。

5. 注意事项

  • 数据流向:由于Zabbix-proxy仅负责数据采集和转发,不具备数据处理和存储的能力,因此需要确保Zabbix Server能够正常接收和处理来自Zabbix-proxy的数据。

  • 网络要求:在部署Zabbix-proxy时,需要考虑网络带宽和稳定性,以确保数据能够顺利传输。

综上所述,Zabbix-proxy是Zabbix监控系统中不可或缺的一部分,它在大型或分布式网络环境中发挥着重要作用,通过分担服务器压力、提高监控效率以及解决跨网络或防火墙等限制的监控问题,使得监控系统更加灵活、可靠和高效。

安装

zabbix-proxy主机上:

#安装zabbix-proxy
yum -y install https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-proxy-mysql-5.0.42-1.el7.x86_64.rpm
#安装数据库
yum install -y mariadb-server mariadb
mysql_secure_installation         #初始化数据库,并设置密码,如 abc123
mysql -u root -p123.com
#添加数据库用户,以及 zabbix 所需的数据库信息
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix_proxy'@'%' IDENTIFIED BY '123.com';
flush privileges;

#导入数据库信息
rpm -ql zabbix-proxy-mysql 		#查询 sql 文件的位置
 
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.42/schema.sql.gz | mysql -uroot -p123.com zabbix_proxy

#修改 zabbix-proxy 配置文件
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.10.13                   #30行,指定 zabbix 服务端的 IP 地址
DBUser=zabbix_proxy
Hostname=zbx-proxy					#49行,指定当前 zabbix 代理服务器的主机名
DBPassword=123.com				#196行,指定当前数据库 zabbix 用户的密码

#启动 zabbix-proxy
systemctl start zabbix-proxy
systemctl enable zabbix-proxy

server 配置

StartProxyPollers=5   #说明:启用多少子进程与代理端通信,进行收集数据,若代理端较多可考虑加大此数值
systemctl restart zabbix-server

Web 页面配置 agent 代理

点击左边菜单栏【配置】中的【动作】,勾选自动注册规则,点击 禁用
点击左边菜单栏【配置】中的【主机】,勾选原有的客户端主机,点击 删除
点击左边菜单栏【管理】中的【agent代理程序】,点击【创建代理】
【agent代理程序名称】设置为 zbx-proxy                            #这里的名字要和proxy配置文件中hostname要一样
【系统代理程序模式】选择 主动式
【代理地址】设置为 192.168.10.15            #proxy的IP地址
点击 【添加】

配置 agent 使用 proxy

8.1在客户端修改 agent2 配置文件

rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.42-1.el7.x86_64.rpm


vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.91.102			#80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=192.168.91.102	#120行,指定 zabbix 代理服务器的 IP 地址
      
systemctl restart zabbix-agent2

在 Web 页面配置

点击左边菜单栏【配置】中的【主机】,点击【创建主机】

【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.10.16
【由agent代理程序监测】选择 zbx-proxy
再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】

二十二:grafana

Grafana 是什么

开始前首先要问一个问题,Grafana 到底是什么。

Grafana 读音:/grəˈfɑːnˌɑː/, 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。

Grafana 不对数据源作假设,它支持以下各种数据,也就是说如果你的数据源是以下任意一种,它都可以帮助生成仪表。同时在市面上,如果 Grafana 称第二,那么应该没有敢称第一的仪表可视化工具了。因此,如果你搞定了 Grafana,它几乎是一个会陪伴你到各个公司的一件称心应手的兵器。

Grafana 支持的数据源

  • Prometheus 本文中的例子,你没听过也没关系不影响阅读,把它想象成带时间戳的 MySQL 就好

  • Graphite

  • OpenTSDB

  • InfluxDB

  • MySQL/PostgreSQL

  • Microsoft SQL Server

  • 等等

安装: #版本选择建议不要太高,有的东西就不兼容了

#下载rpm包进行安装,可以使用清华源或阿里源或者官方的,这里用的阿里源
wget https://mirrors.aliyun.com/grafana/yum/rpm/Packages/grafana-7.3.5-1.x86_64.rpm
yum -y localinstall grafana-7.3.5-1.x86_64.rpm
systemctl start grafana-server
##访问
http://192.168.10.13:3000
user:admin
passwd:admin

grafana安装数据源zabbix

[root@zabbix-server opt]# grafana-cli plugins  list-remote  | grep zabbix
id: alexanderzobnin-zabbix-app version: 4.1.5
[root@zabbix-server opt]# grafana-cli plugins  install alexanderzobnin-zabbix-app
systemctl restart grafana-server

启动zabbix插件

获取zabbix的数据

查看


评论