【zabbix详解01】

文章目录

  • 一、监控系统简介
    • 1.监控系统:C/S C/P(代理数据采集)/S
    • 2.监控系统的实现
    • 3.监控系统的时间要求
    • 4.监控系统的告警需求
  • 二、zabbix介绍
    • 1.zabbix功能
    • 2.zabbix优缺点
    • 3.zabbix版本
    • 4.zabbxi监控原理
    • 5.Zabbix 运行条件
    • 6.zabbix监控类型:所有监控范畴,都可以整合到Zabbix中
    • 7.zabbix相关术语
    • 8.zabbix进程构成
  • 三、zabbix安装
    • 注1:设置zabbix字体为中文
  • 四、zabbix部署监控
    • 1. 监控Linux服务器
    • 2.监控windows服务器
    • 3.监控网络设备[华为]SNMP
    • 4.自定义监控nginx当前活动连接数
    • 5.自定义监控php-fpm性能状态
    • 6.使用JMX监控JAVA应用
    • 7.监控web网站性能
    • 8.第三方模板监控MYSQL

一、监控系统简介

1.监控系统:C/S C/P(代理数据采集)/S

监控项:CPU 的利用率、系统的负载、服务的运行、端口的连通、带宽流量、网站访问状态码等信息。而这一切都离不开监控系统。
在监控软件中,开源的解决方案有流量监控(MRTG、Cacti、SmokePing、Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择,并且每种软件都有自己的特点和功能,各自的侧重点和目标不完全相同,在设计理念和实现方法上也大同小异,但都具有共同特征,例如,采集数据、分析展示、告警以及简单的故障自动处理。最终都能达到对IT 系统服务可用性的一个完全展示。

2.监控系统的实现

在一个监控系统中,构成要素为监控服务器端程序、数据存储、被采集节点等相关模块,其告警分析和自动故障处理功能由服务器端执行。
在数据采集完成之后,需要对采集到的数据进行分析和处理,判断是否有异常,是否属于告警条件。告警条件如何设置呢?通常是根据实际的经验值、业务需求来设置告警阈值达到告警条件时,则发送告警信息给管理人员,然而,对于有些故障,我们希望程序能自动处理,减少人工干预,让程序自动修复,只在出现严重故障、程序无法判断的时候,才告警通知管理人员处理。
一个监控系统往往需要集成资产管理,可以从逻辑上展示业务和功能的信息,通过对其进行数据分析,做到对投资与回报的一个反馈展示,为资产的合理规划与使用提供了依据。
从工作模式来看,监控系统的数据采集可以分为两种:主动监控和被动监控
常见的监控系统性能采集指标:

【zabbix详解01】_第1张图片

3.监控系统的时间要求

监控系统需要根据实际应用的需求,实时 /非实时地采集和展示数据。另外,包括历史趋势数据的展示和分析,以及容量报表、可用性报告的生成。

4.监控系统的告警需求

支持多种方式,如短信、邮件、IM 和其他接口
简而言之,监控数据的采集、存储、分析和故障报告是每个监控系统的基本功能,其他复杂的附加功能则是监控系统的增值业务。

二、zabbix介绍

Zabbix 是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。
zabbix是一个基于Web界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案。
zabbix主要由2部分构成zabbix server和zabbix agent,可选组建zabbix proxy zabbix server可以通过SNMP,zabbix agent,fping端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持Linux以及Unix平台,Windows平台只能安装客户端。

1.zabbix功能

①具备常见的商业监控软件所具备的功能:主机的性能监控、网络设备性能监控、数据库性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制
②支持自动发现网络设备和服务器:可以通过配置自动发现服务器规则来实现
③支持自动发现(low discovery)key 实现动态监控项的批量监控:需写脚本
④支持分布式,能集中展示、管理分布式的监控点
⑤扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置。
⑥数据收集
可用和性能检测
支持snmp(包括trapping and polling),IPMI,JMX,SSH,TELNET
自定义的检测
自定义收集数据的频率
服务器/代理和客户端模式
灵活的触发器
可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值
高可定制的报警
发送通知,可定制的报警升级,收件人,媒体类型
通知可以使用宏变量有用的变量
自动操作包括远程命令
实时的绘图功能
监控项实时的将数据绘制在图形上面
WEB 监控能力
ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间

2.zabbix优缺点

优点:
1、开源,无软件成本投入
2、Server 对设备性能要求低
3、支持设备多,自带多种监控模板
4、支持分布式集中管理,有自动发现功能,可以实现自动化监控

5、开放式接口,扩展性强,插件编写容易
6、当监控的item 比较多服务器队列比较大时可以采用被动状态,
被监控客户端主动从
7、server 端去下载需要监控的item 然后取数据上传到server 端。这种方式对服务器的负载比较小。
8、Api 的支持,方便与其他系统结合
缺点:
需在被监控主机上安装agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。

3.zabbix版本

http://repo.zabbix.com/zabbix/

4.zabbxi监控原理

Zabbix 通过C/S 模式采集数据,通过B/S模式在web 端展示和配置。
被监控端:主机通过安装agent 方式采集数据,网络设备通过SNMP 方式采集数据
Server 端:通过收集SNMP 和agent 发送的数据,写入数据库(MySQL,ORACLE 等),再通过php+apache 在web 前端展示。

5.Zabbix 运行条件

Server:Zabbix Server 需运行在LAMP(Linux+Apache+Mysql+PHP)环境下(或者LNMP),对硬件要求低
Agent:目前已有的agent 基本支持市面常见的OS,包含Linux、HPUX、Solaris、Sun、windows
SNMP(简单网络管理协议UDP161):支持各类常见的网络设备

6.zabbix监控类型:所有监控范畴,都可以整合到Zabbix中

硬件监控:Zabbix、IPMI、lnterface
系统监控:Zabbix、Agent、Interface
Java监控:Zabbix、JMX、lnterface
网络设备监控:Zabbix、SNMP、lnterface
应用服务监控:Zabbix、Agent、UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web监控

7.zabbix相关术语

1 、主机(host):要监控的网络设备,可由IP或DNS名称指定;或者说是要监控的设备就叫做主机
2、主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
3、监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
4、触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复
到合理范围,又转变为"OK";
5、事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
6、动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
7、报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
8、媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
9、通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
10、远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
11、模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
12、应用(application):一组item的集合;
13、web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
14、前端(frontend):Zabbix的web接口;

8.zabbix进程构成

默认情况下 zabbix 包含 5 个程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、zabbix_sender、zabbix_server,另外zabbix_java_gateway 是可选,需要另外安装。
zabbix_agentd:客户端守护进程,收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等
zabbix_get:zabbix 工具,单独使用的命令,通常在 server 或者proxy 端执行, 用户获取被监控端数据, 通常用于排错。例如在 server 端获取不到客户端的内存数据,我们可以使用 zabbix_get 获取客户端的内容的方式来做故障排查。
zabbix_sender:zabbix 工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的 check,并且与 trapper 配合使用。 生存环境中,个别非常耗时间 check 经常导致 zabbix 超时。于是我们在脚本执行完毕之后,使用 sender 主动提交数据。
zabbix_server:zabbix 服务端守护进程。
zabbix_proxy:zabbix 代理守护进程。功能类似 server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。 一般跨机房、地区的环境需要用到 proxy。
zabbix_java_gateway:zabbix2.0 之后引入的一个功能。顾名思义: Java 网关,类似 agentd,但是只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者 proxy。

zabbix_agentd、 zabbix_get、 zabbix_sender、 zabbix_proxy、zabbix_java_gateway 的数据最终都是提交到 server
备注:当然不是数据都是主动提交给 zabbix_server,大多数情况下都是 server 主动去取数据。

三、zabbix安装

Zabbix 服务器运行的环境为Linux(UNIX)+PHP+Web Service+DataBase,这里的Web Service 可以为
Nginx、Apache,DataBase 可以为MySQL、Oracle、PostgreSQL 等。本文基于zabbix 4.4.
关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
SELINUX=disabled
setenforce 0

步骤:
1.准备LAMP环境:时间同步设置php时区以及初始化数据库

[root@zabbix-server ~]# yum install httpd mariadb mariadb-server php php-mysqlphp-gd -y
[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]#mysql_secure_installation
Enter current password for root (enter for none): 回车键
Set root password? [Y/n] y
设置密码(123456)
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

2.配置zabbix yum源,安装zabbix server

[root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo 
[zabbix]
name=aliyun - zabbix - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
enabled=1
gpgcheck=0
[root@zabbix-server ~]# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
[root@zabbix-server ~]# rpm -qa | grep zabbix
zabbix-agent-4.4.10-1.el7.x86_64
zabbix-server-mysql-4.4.10-1.el7.x86_64
zabbix-web-4.4.10-1.el7.noarch
zabbix-get-4.4.10-1.el7.x86_64
zabbix-web-mysql-4.4.10-1.el7.noarch

3.创建zabbix数据库及用户,并且将zabbix数据导入数据库

创建zabbix数据库及用户
MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to
    -> zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.704 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

zabbix数据导入数据库
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-*/
[root@zabbix-server zabbix-server-mysql-*]# zcat create.sql.gz | mysql -uzabbix -p zabbix

4.修改zabbix配置文件

[root@zabbix-server ~]# grep ^DB /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

5.启动服务

[root@zabbix-server ~]# systemctl restart zabbix-server.service httpd.service
[root@zabbix-server ~]# systemctl enable zabbix-server.service httpd.service
[root@zabbix-server ~]# netstat -lnupt | egrep '80|10051'
tcp   0   0 0.0.0.0:10051    0.0.0.0:*     LISTEN   11013/zabbix_server
tcp6   0   0 :::80      :::*      LISTEN   11011/httpd  
tcp6   0   0 :::10051     :::*      LISTEN   11013/zabbix_server

6.浏览器进入http://192.168.131.108/zabbix界面进行安装
【zabbix详解01】_第2张图片
【zabbix详解01】_第3张图片
【zabbix详解01】_第4张图片
【zabbix详解01】_第5张图片
【zabbix详解01】_第6张图片
【zabbix详解01】_第7张图片

登录zabbix:默认用户名:Admin,密码:zabbix
【zabbix详解01】_第8张图片
【zabbix详解01】_第9张图片

注1:设置zabbix字体为中文

Administration->user->
【zabbix详解01】_第10张图片
解决中文乱码问题:
1)上传文件到 zabbix 的fonts中
找到本地 C:\Windows\Fonts\simkai.ttf(楷体)上传到服务器 zabbix 网站目录 fonts 目录下。

查找zabbix的fonts目录:
[root@zabbix-server ~]# find / -name *font*
/usr/share/zabbix/assets/fonts/
将windows的simkai.ttf上传到这个目录下:
[root@zabbix-server ~]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix-server fonts]#     #进行上传,并且将之前的字体删除
simkai.ttf

2)修改 zabbix php 配置文件

[root@zabbix-server ~]# sed -i 's/graphfont/simkai/g' /usr/share/zabbix/include/defines.inc.php

四、zabbix部署监控

Zabbix的监控流程可以简单描述为:数据采集–>数据存储–>数据分析–>数据展示–>监控报警
数据采集:Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等进行数据采集
数据存储:Zabbix存储在MySQL上,也可以存储在其他数据库
数据展示:web界面展示、(移动APP、java_php开发一个web界面也可以)
数据报警:邮件报警、微信报警、短信报警、报警升级机制

1. 监控Linux服务器

步骤:
1.Linux服务器安装agent代理程序

[root@linux-server1 ~]# vim /etc/yum.repos.d/zabbix.repo 
[zabbix]
name=aliyun - zabbix - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
enabled=1
gpgcheck=0
[root@linux-server1 ~]# yum install -y zabbix-agent -y

2.修改zabbbix-agent配置文件:添加zabbix服务器地址

[root@linux-server1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.95.100 #主动模式,配置的都是zabbix服务器地址
ServerActive=192.168.95.100 #被动模式
Hostname=linux-server1

zabbix-server和linux-server1都配置hosts解析:

[root@linux-server1 ~]# vim /etc/hosts
192.168.131.108 zabbix-server
192.168.131.107 linux-server1

3.启动zabbix-agent服务

[root@linux-server1 ~]# systemctl start zabbix-agent.service
[root@linux-server1 ~]# systemctl enable zabbix-agent.service
[root@linux-server1 ~]# netstat -lnupt | grep 10050
tcp   0   0 0.0.0.0:10050    0.0.0.0:*    LISTEN   10747/zabbix_agentd
tcp6   0   0 :::10050     :::*      LISTEN   10747/zabbix_agentd

4.在zabbix-server192.168.131.107上安装zabbix-get用于主动获取客户端数据

[root@zabbix-server ~]# yum install zabbix-get.x86_64 -y

5.测试Zabbix客户端与Zabbix服务端通信是否正常:

在zabbix-server192.168.131.107上进行测试:
[root@zabbix-server ~]# zabbix_get -s 192.168.131.108 -k system.uptime
44567
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k system.uname
Linux node1 3.10.0-1127.18.2.el7.x86_64 #1 SMP Sun Jul 26 15:27:06 UTC 2020 x86_64
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k system.hostname
linux-server1

6.在zabbix的web界面完成:添加主机、嵌套模板监控/手动为主机添加监控项item、为监控创建图形、为监控创建聚合图形screen
6.1添加主机:配置->主机->创建主机
【zabbix详解01】_第11张图片
6.2嵌套模板监控:
【zabbix详解01】_第12张图片
第一台主机以及模板添加完成之后,我们便可以查到最新的数据,例如 cpu、内存、硬盘等情况,查看最新监测数据
在这里插入图片描述
6.3手动为主机添加监控项item: key+参数组成
【zabbix详解01】_第13张图片
【zabbix详解01】_第14张图片
在这里插入图片描述
6.4为监控创建图形
【zabbix详解01】_第15张图片
可以预览图形:
【zabbix详解01】_第16张图片
6.5为监控创建聚合图形screen
【zabbix详解01】_第17张图片
然后点击构造函数:
在这里插入图片描述
然后点击更改:
在这里插入图片描述
【zabbix详解01】_第18张图片
【zabbix详解01】_第19张图片

2.监控windows服务器

3.监控网络设备[华为]SNMP

【zabbix详解01】_第20张图片
点击cloud1设置进行配置:
【zabbix详解01】_第21张图片
进入route进行配置IP地址和配置snmp:

<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]interface Ethernet 0/0/0
[Huawei-Ethernet0/0/0]ip address 192.168.131.104 24

[Huawei]snmp-agent community read zabbix    #设置zabbix团体名具有只读权限
[Huawei]snmp-agent sys-info version all     #设置SNMP所有版本支持
[Huawei]snmp-agent target-host trap address udp-domain 192.168.131.108 udp-port 161 params securityname zabbix #设置zabbix-server地址
[Huawei]snmp-agent trap enable  #开启设备trap告警开关
Warning: All switches of SNMP trap/notification will be open. Continue? [Y/N]:y

测试该设备的地址是否与zabbix-server是否相通:

[Huawei]ping 192.168.131.108
  PING 192.168.131.108: 56  data bytes, press CTRL_C to break
    Reply from 192.168.131.108: bytes=56 Sequence=1 ttl=64 time=30 ms
    Reply from 192.168.131.108: bytes=56 Sequence=2 ttl=64 time=20 ms
    Reply from 192.168.131.108: bytes=56 Sequence=3 ttl=64 time=1 ms
    Reply from 192.168.131.108: bytes=56 Sequence=4 ttl=64 time=30 ms
    Reply from 192.168.131.108: bytes=56 Sequence=5 ttl=64 time=1 ms

  --- 192.168.131.108 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 1/16/30 ms

[root@zabbix-server ~]# ping 192.168.131.104
PING 192.168.131.104 (192.168.131.104) 56(84) bytes of data.
64 bytes from 192.168.131.104: icmp_seq=1 ttl=255 time=118 ms
64 bytes from 192.168.131.104: icmp_seq=2 ttl=255 time=22.2 ms
^C
--- 192.168.131.104 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 22.242/70.368/118.495/48.127 ms

在zabbix的web界面创建网络设备的主机和监控项等:
创建主机群组和主机以及模板:
【zabbix详解01】_第22张图片
【zabbix详解01】_第23张图片
【zabbix详解01】_第24张图片
【zabbix详解01】_第25张图片

在这里插入图片描述

4.自定义监控nginx当前活动连接数

添加自定义监控项小结:
1、添加用户自定义参数(在/etc/zabbix/zabbix.agent.d/定义了一个nginx.conf步骤如上)
2、重启zabbix-agent
3、在Server端使用zabbix_get测试获取
4、在web界面创建item(监控项),并且为之创建图形

步骤:
1.客户端安装nginx,并且编辑配置文件:状态模块配置

[root@linux-server1 ~]# yum install nginx -y
Nginx状态模块配置:
[root@node1 ~]# cat /etc/nginx/conf.d/default.conf
server {
	listen   80;
	server_name localhost;
	location /status {
		stub_status on;
		access_log off;
		allow 192.168.131.0/24;
		deny all;
	}
}
[root@node1 ~]# systemctl restart nginx

测试:使用zabbix来监控活动连接数,通过status状态模块为前提

[root@zabbix-server ~]# curl 192.168.131.107/status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0
[root@zabbix-server ~]# curl -s 192.168.131.107/status | awk '/Active/ {print $3}'
1

2.Nginx客户端安装zabbix agent,并且编写用户自定义监控

[root@linux-server1 ~]# yum install -y zabbix-agent -y
[root@linux-server1 ~]# cd /etc/zabbix/zabbix_agentd.d/ 
方法一:
[root@linux-server1 zabbix_agentd.d]# vim nginx.conf
UserParameter=nginx.active,/usr/bin/curl -s http://192.168.131.107/status | awk '/Active/ {print $3}'
方法二:在自定义监控时使用脚本(我们这里使用方法二)
[root@linux-server1 ~]# vim /scripts/check_nginx.sh 
HOST=192.168.131.107
RT="80"
# 检测 nginx 进程是否存
function ping {
/sbin/pidof nginx | wc -l
}
# 检测 nginx 性能
function active {
/usr/bin/curl -s http://$HOST/status | awk '/Active/ {print $3}'
}
function reading {
/usr/bin/curl -s http://$HOST/status | awk '/Reading/ {print $2}'
}
function writing {
/usr/bin/curl -s http://$HOST/status | awk '/Writing/ {print $4}'
}
function waiting {
/usr/bin/curl -s http://$HOST/status | awk '/Waiting/ {print $6}'
}
function accepts {
/usr/bin/curl -s http://$HOST/status | awk 'NR==3 {print $1}'
}
function handled {
/usr/bin/curl -s http://$HOST/status | awk 'NR==3 {print $2}'
}
function requests {
/usr/bin/curl -s http://$HOST/status | awk 'NR==3 {print $3}'
}
#调用函数
$1
[root@linux-server1 ~]# chmod +x /scripts/check_nginx.sh
[root@linux-server1 zabbix_agentd.d]# vim nginx.conf
UserParameter=nginx.status[*],/scripts/check_nginx.sh $1

重启zabbix-agent
[root@linux-server1 zabbix_agentd.d]# systemctl restart zabbix-agent.service

3.在Server端使用zabbix_get测试

[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k nginx.active
1
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k nginx.status[ping]1
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k nginx.status[reading]
0
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k nginx.status[active]
1

4.1在web界面为主机创建nginx.active监控项:此时的web界面的键值为自定义在zabbix-agent子配置文件时配置的key名
【zabbix详解01】_第26张图片
监测->最新数据->linux-server1
在这里插入图片描述

4.2为主机导入模板,此模板对应的是自定义监控的脚本中的内容
配置->模板->导入模板
【zabbix详解01】_第27张图片
配置->主机->模板->进行选择模板
【zabbix详解01】_第28张图片
监测->最新数据->linux-server1
【zabbix详解01】_第29张图片
############【接下来我们了解自定义监控】############:
在客户端配置文件zabbix_angentd.conf里面配置UserParameter
/etc/zabbix/zabbix_agentd.conf,/etc/zabbix/zabbix_agentd.d/*.conf 【工作时最好写在这个子目录下】
语法:UserParameter=key,command
用户自定义参数包含一个key和一个命令(或者也可以是一个脚本),key必须整个系统唯一,配置好之后,重启客户端。然后创建item监控项,在key的位置填上我们自定义的key即可。
示例1:监控Linux服务器根分区磁盘使用百分比

[root@linux-server1 ~]#vim /etc/zabbix/zabbix_agentd.conf
UserParameter=Per_of_root,/bin/df -Th | awk '/\/$/ {print +$(NF-1)}'
UserParameter=mysql.ping[*],/mysqladmin -u$1 -p$2 ping | grep -c alive 
[root@linux-server1 ~]# systemctl restart zabbix-agent.service 
Zabbix服务器端测试:
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k Per_of_root
39

注意:和shell脚本不同的是,名称执行成功返回1,失败返回0
如下为灵活的用户自定义参数:UserParameter=key[*],command,大概意思就是命令中需要的值以key中的参数来传递,这样的话使得自定义参数更加灵活。

参数 描述
Key 唯一. [*]表示里面可以传递多个参数
Command 需要执行的脚本, key 的[]里面的参数一一对应$1 到$9,一共 9 个参数。 $0 表示脚本命令.

【注意事项】:

  1. 如果需要使用命令行里面输出$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。
  2. zabbix禁止使用一些不安全的参数,如下: \ ’ ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
  3. 从zabbix 2.0开始,zabbix返回文本数据可以是空格。

示例2:获取内存空间大小示例:

[root@linux-server1 ~]#vim /etc/zabbix/zabbix_agentd.conf
UserParameter=memory.usage[*],awk '/^$1:/ {print$$2}' /proc/meminfo 
[root@linux-server1 ~]# systemctl restart zabbix-agent.service 
Zabbix服务器端测试:
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k memory.usage[Cached]
890220
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k memory.usage[MemTotal]
1863012

5.自定义监控php-fpm性能状态

php-fpm和nginx一样内建了一个状态页。
步骤:
1.linux客户端安装php-fpm,并且编辑nginx.conf添加ngx_status模块和php-fpm.d/用于启用php-fpm状态ngx_status功能

[root@linux-server1 ~]# vim /etc/nginx/nginx.conf
server {
        server_name  localhost;
        root /usr/share/nginx/html;
        index index.html index.htm index.php;
        location ~ ^/(ngx_status|ping)$ {
            include fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            allow 192.168.131.0/24;
            deny all;
        }
    }
[root@linux-server1 ~]# vim /etc/php-fpm.d/www.conf
pm.status_path=/ngx_status

重启nginx/php-fpm:测试在zabbix-server是否访问到ngx_status

[root@linux-server1 ~]# systemctl restart nginx php-fpm
[root@zabbix-server ~]# curl -s 192.168.131.107/ngx_status?xml
<?xml version="1.0" ?>
<status>
<pool>www</pool>
<process-manager>dynamic</process-manager>
<start-time>1597466755</start-time>
<start-since>61</start-since>
<accepted-conn>2</accepted-conn>
<listen-queue>0</listen-queue>
<max-listen-queue>0</max-listen-queue>
<listen-queue-len>128</listen-queue-len>
<idle-processes>4</idle-processes>
<active-processes>1</active-processes>
<total-processes>5</total-processes>
<max-active-processes>1</max-active-processes>
<max-children-reached>0</max-children-reached>
<slow-requests>0</slow-requests>
</status>

2.linux客户端安装zabbix-agent,并且自定义php-fpm监控

[root@linux-server1 ~]# vim /etc/zabbix/zabbix_agentd.d/UserParameter.conf 
UserParameter=php-fpm.status[*],/usr/bin/curl -s http://$1/ngx_status?xml |grep $2 | awk -F"[<>]" '{print $$3}'

3.重启zabbix-agent服务,在zabbix-server使用zabbix_get测试

[root@linux-server1 zabbix_agentd.d]# systemctl restart nginx
[root@zabbix-server ~]# zabbix_get -s 192.168.131.107 -k php-fpm.status[192.168.131.107,accepted-conn]
6

4.为linux-server1导入模板,观察最新数据
配置->模板->导入
配置->主机->模板->选择
在这里插入图片描述
监测->最新数据->linux-server1
【zabbix详解01】_第30张图片
php-fpm状态开启详解

6.使用JMX监控JAVA应用

Zabbix 默认提供了一个监控JMX,通过java gateway来监控java。
JAVA GATEWAY需要独立安装,相当于一个网关,因为zabbix_server和zabbix-agent不可以直接获取java信息。所以需要一个代理来获取。

准备环境:
• Zabbix Server 4.4 (ip: 192.168.131.108)
• 运行Java应用的主机 以下简称Server-A (已被Zabbix监控) (ip:192.168.131.107)

步骤:
1.Zabbix Server通过Zabbix Java gateway收集JMX监控数据,因此首先需要安装Zabbix-Java-gateway然后启动,同时修改zabbix server配置文件,重启。

[root@zabbix-server ~]# yum install zabbix-java-gateway -y
[root@zabbix-server ~]# systemctl enable --now zabbix-java-gateway
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-java-gateway.service to /usr/lib/systemd/system/zabbix-java-gateway.service.
[root@zabbix-server ~]# netstat -lnupt | grep 1005
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      12496/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      12496/zabbix_server 
tcp6       0      0 :::10052                :::*                    LISTEN      83677/java
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=192.168.131.108
JavaGatewayPort=10052
StartJavaPollers=5            #根据客户端数来写
[root@zabbix-server ~]# systemctl restart zabbix-server
[root@zabbix-server ~]# ps -ef | grep java
zabbix    83677      1  4 11:40 ?        00:00:08 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-json-4.3_r3.1.jar:lib/logback-classic-0.9.27.jar:lib/logback-core-0.9.27.jar:lib/slf4j-api-1.6.1.jar:bin/zabbix-java-gateway-4.4.10.jar -Dzabbix.pidFile=/var/run/zabbix/zabbix_java.pid -Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
zabbix    83886  83875  0 11:43 ?        00:00:00 /usr/sbin/zabbix_server: java poller #1 [got 0 values in 0.000013 sec, idle 5 sec]
zabbix    83887  83875  0 11:43 ?        00:00:00 /usr/sbin/zabbix_server: java poller #2 [got 0 values in 0.000035 sec, idle 5 sec]
zabbix    83889  83875  0 11:43 ?        00:00:00 /usr/sbin/zabbix_server: java poller #3 [got 0 values in 0.000075 sec, idle 5 sec]
zabbix    83890  83875  0 11:43 ?        00:00:00 /usr/sbin/zabbix_server: java poller #4 [got 0 values in 0.000033 sec, idle 5 sec]
zabbix    83891  83875  1 11:43 ?        00:00:00 /usr/sbin/zabbix_server: java poller #5 [got 0 values in 0.000038 sec, idle 5 sec]
root      83956  81778  0 11:43 pts/0    00:00:00 grep --color=auto java

2.在Server-A安装jDk,tomcat;并且开启JMX远程监控,设置无密码认证然后重启tomcat

[root@Server-A ~]# yum install -y jdk-8u261-linux-x64.rpm
[root@Server-A ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
[root@linux-server1 ~]# tar -zxf apache-tomcat-8.5.20.tar.gz -C /usr/local/
[root@linux-server1 ~]# cd /usr/local/apache-tomcat-8.5.20/
[root@linux-server1 apache-tomcat-8.5.20]# vim bin/catalina.sh 
#监控的主机VA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.131.107"          #监控的主机               
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"        	#监控的端口
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"   #关闭用户名密码认证
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"			关闭ssl认证
[root@linux-server1 apache-tomcat-8.5.20]# ./bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_60
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@linux-server1 apache-tomcat-8.5.20]# netstat -lnupt | egrep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      111887/java

我们可以在 windows上面安装jdk ,使用jconsole.exe文件运行,进行jdk自带的JAVA监控和管理控制台。我的jconsole.exe存放在D:\jdk\bin下
在这里插入图片描述
双击jconsole.exe:
【zabbix详解01】_第31张图片
【zabbix详解01】_第32张图片
点击不安全的连接就可以看见相关信息:
【zabbix详解01】_第33张图片
3.在zabbix web界面配置JMX:创建主机使用模板监控,或者自定义监控项,再或者导入模板获得监控项
服务启动后,需要在zabbix界面为Server-A主机上增加JMX监控。
点击【配置】-【主机】-选择【Server-A】
【zabbix详解01】_第34张图片
实际上Zabbix 4.4自带了两个JMX模板Template App Apache Tomcat JMX和Template App Generic Java JMX模板一个可以监控Tomcat应用、一个可以监控普通Java应用。
本文采用自定义的方式创建JMX监控项:堆内内存监控项、JVM线程总数监控、Tomcat请求总数监控等
【zabbix详解01】_第35张图片
检测->最新数据->server-A:
在这里插入图片描述
创建聚合图形:
【zabbix详解01】_第36张图片
导入模板:
【zabbix详解01】_第37张图片
套用模板:
在这里插入图片描述
监测->最新数据:
【zabbix详解01】_第38张图片

7.监控web网站性能

监控Web 不依赖于agent,是server直接发送请求的
1.Zabbix监控web服务器访问性能
zabbix 对 web 性能的监控,通过它可以了解 web 站点的可用性以及性能。最终将各项指标绘制到图形中,这样我们可以了解到一个站点的下载速度、响应速度等。
需要注意的是在安装 zabbix server 需要增加 libcurl 的支持。

1)web 检测数据搜集说明:
web 整个检测中会收集如下数据:
整个 web 监控规则中的页面平均下载速度,秒为单位
检测阶段发生的错误次数
最后一个错误消息

web 检测的任何一个阶段都会收集如下数据:
每秒的下载速度
响应时间
响应代码(http code,如 200、 301 等)

8.第三方模板监控MYSQL

你可能感兴趣的:(zabbix)