Zabbix监控系统完全指南

104 阅读18分钟

​ 本文档是关于Zabbix监控系统的全面指南,涵盖了从基础概念到高级应用的完整知识体系。提供了大量实际配置示例和脚本,适合运维工程师、DevOps实践者以及系统管理员学习和参考,帮助他们构建稳定、高效的监控体系。

zabbix5.0稳定版

1.什么是监控

对我们的操作系统进行不间断的监控

2.为什么要监控

软件生命周期中非常重要的一个环节

能够做到事前告警,事后我们还可以根据监控内容排查问题

金丝雀 监控指标

在有问题的时候 运维(管理) 运维债务

3.如何去监控,监控什么内容:

​ 监控硬件 磁盘 df -h 内存 free 磁盘IO 负载 CPU 网络

​ 软件服务 端口 进程 状态

​ 业务层面 业务数据进行数据 自定义监控 订单量 注册用户 充值用户 日志中 数据库中体现

4.监控有哪些工具

​ zabbix 硬件 服务状态 自定义监控

​ Nagions 网络产品 交换机 路由器

​ Cacti 流量

​ OPen-Falcon 小米公司

​ prometheus kubernetes docker

​ 监控宝等

一. zabbix安装

安装5.0版本
1.配置仓库
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all

2.安装zabbix-server zabbix-agent
yum -y install zabbix-server-mysql zabbix-agent

3.安装scl源 解决版本冲突问题
[root@zabbix ~]# yum -y install centos-release-scl

4.开启前端仓库
[root@zabbix ~]# vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...

5.安装 php apache 前端
[root@zabbix ~]# yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl



6.安装mysql数据库
[root@zabbix ~]# yum -y install mariadb-server

启动数据库
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb

7.创建zabbix库
[root@zabbix ~]# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

8.初始化数据(业务运行前需要依赖数据库中的一些数据表格 需要提前导入)
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix # 需要输入zabbix密码

[root@zabbix ~]# mysql -uroot
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
quit

9.修改zabbix连接数据的信息
[root@zabbix ~]# egrep ^DB /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix   # 将注释打开配置密码

10.修改时区
[root@zabbix ~]# tail -1 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/ShangHai


11.启动服务 server agent httpd php 加入开机自启
[root@zabbix ~]# systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm


12.通过浏览器访问安装页面
http://10.0.0.71/zabbix/

13.修改语言

服务端: 10.0.0.51

客户端: 10.0.0.8 10.0.0.7

1.添加 Zabbix 软件仓库
[root@zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
2.安装 Zabbix server 并使用 MySQL 数据库:
[root@zabbix ~]#  yum -y install zabbix-server-mysql zabbix-web-mysql mariadb-server zabbix-agent httpd
3.启动数据库并配置
[root@zabbix ~]# systemctl start mariadb
[root@zabbix ~]# systemctl enable mariadb

在企业中数据库:

开发给我们的产品用到数据: 里面的数据 可能是我们按照zabbix的方式进行创建库

直接通过产品的安装选项来自动创建数据库 在产品配置文件中需要数据库的连接方式 用户名密码等

直接发给我们一个sql文件 让我们直接导入到数据库中

[root@zabbix ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)
4.导入zabbix数据
[root@zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
5.配置zabbix连接数据库信息
[root@zabbix ~]# grep ^DB /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
6.启动zabbix并加入开机自动运行
[root@zabbix ~]# systemctl start zabbix-server httpd
[root@zabbix ~]# systemctl enable zabbix-server httpd
7.访问zabbix页面 10.0.0.51/zabbix

在这里插入图片描述

8.修改时区 去掉注释修改为亚洲上海 并重启httpd服务
[root@zabbix ~]# grep Asia/Shanghai /etc/httpd/conf.d/zabbix.conf 
php_value date.timezone Asia/Shanghai
重启httpd
[root@zabbix ~]# systemctl restart httpd
9.zabbix安装完成

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

10.调整为中文重新配置字体

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查找windows字体复制到zabbix的字体目录下

windows字体位置

在这里插入图片描述

上传其中一个字体到/usr/share/fonts/dejavu/ 并改名

[root@zabbix ~]# cd /usr/share/fonts/dejavu/
[root@zabbix dejavu]# ll
total 5288
-rw-r--r-- 1 root root 611212 Feb 27  2011 DejaVuSans-BoldOblique.ttf
-rw-r--r-- 1 root root 672300 Feb 27  2011 DejaVuSans-Bold.ttf
-rw-r--r-- 1 root root 580168 Feb 27  2011 DejaVuSansCondensed-BoldOblique.ttf
-rw-r--r-- 1 root root 631992 Feb 27  2011 DejaVuSansCondensed-Bold.ttf
-rw-r--r-- 1 root root 576004 Feb 27  2011 DejaVuSansCondensed-Oblique.ttf
-rw-r--r-- 1 root root 643852 Feb 27  2011 DejaVuSansCondensed.ttf
-rw-r--r-- 1 root root 345204 Feb 27  2011 DejaVuSans-ExtraLight.ttf
-rw-r--r-- 1 root root 611556 Feb 27  2011 DejaVuSans-Oblique.ttf
-rw-r--r-- 1 root root 720012 Feb 27  2011 DejaVuSans.ttf
[root@zabbix dejavu]# rz -E
rz waiting to receive.
[root@zabbix dejavu]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix dejavu]# mv STXIHEI.TTF DejaVuSans.ttf

在这里插入图片描述

二. Zabbix监控服务器信息

1.安装zabbix-agent客户端 准备一台服务器10.0.0.8
[root@web02 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm

安装5.0客户端:

配置仓库:
[root@web02 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.34-1.el7.x86_64.rpm
或者:
[root@web02 ~]#  rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

如果安装提示软件冲突:
[root@web02 ~]# yum -y install centos-release-scl

安装客户端agent
[root@web02 ~]# yum -y install zabbix-agent


2.配置zabbix客户端服务器信息 启动客户端
[root@web02 ~]# yum -y install zabbix-agent
[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.conf 
Server=172.16.1.51
[root@web02 ~]# systemctl start zabbix-agent
3.zabbix监控web02

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.WEB02服务器完成监控操作

在这里插入图片描述

在这里插入图片描述

三、拆分数据库

企业zabbix高并发场景使用

1.准备一台数据库服务器10.0.0.52安装mariadb
[root@db ~]# yum -y install mariadb-server
[root@db ~]# systemctl start mariadb
[root@db ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user 'zabbix'@'%' identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'%';
Query OK, 0 rows affected (0.00 sec)
2.导出zabbix服务器zabbix数据库、导入到新的数据库
[root@zabbix ~]# mysqldump -uroot -B zabbix > zabbix.sql
[root@zabbix ~]# cat zabbix.sql |mysql -h 172.16.1.52 -uzabbix -pzabbix zabbix
3.配置WEB连接数据库信息
[root@zabbix ~]# systemctl stop mariadb
[root@zabbix ~]# cat /etc/zabbix/web/zabbix.conf.php 
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = '172.16.1.52';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

[root@zabbix ~]# grep ^DB /etc/zabbix/zabbix_server.conf 
DBHost=172.16.1.52
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
3.重启服务
[root@zabbix ~]# systemctl restart zabbix-server httpd

四、自定义监控

通过获取系统信息来定义zabbix的监控项、配置zabbix触发器发送告警通知

案例: 系统登陆数超过2个,则发送告警信息

1.获取用户登录信息

2.如何配置让zabbix可以拿到这个数据

3.zabbix页面配置

4.配置触发器

zabbix客户端自定义监控的语法结构

UserParameter=,

UserParameter= 固定语法

变量名称

后面的逗号是固定写法

取值 取到的值会赋值给变量名称

在zabbixserver端我们只要获取到变量名称 就能拿到对应的值

1.获取系统的登陆用户数
[root@web02 ~]# w
 11:41:22 up  2:20,  2 users,  load average: 0.02, 0.07, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      09May21 184days  0.56s  0.56s -bash
root     pts/0    10.0.0.1         09:26    2.00s  0.74s  0.15s w
[root@web02 ~]# w|awk 'NR==1{print $4}'
2
2.定义为zabbix的监控项
[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf 
UserParameter=login_number,w|awk 'NR==1{print $4}'

# 查看监控项 zabbix_agentd -p 有语法检测功能
[root@web02 ~]# zabbix_agentd -p|grep login_number
login_number                                  [t|3]

# 重启客户端
[root@web02 ~]# systemctl restart zabbix-agent.service
3.使用zabbix服务器端进行采集监控

服务端通过命令行测试是否通过监控项来获取用户自定义的值

# 安装zabbix-get命令
[root@zabbix ~]# yum -y install zabbix-get

在web页面添加监控项

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看监控项

在这里插入图片描述

在这里插入图片描述

4.监控tcp 22端口是否存活

键值在选择中选取需要监控的信息

检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听

注意: zabbix5.0版本不支持netstat命令需要加s权限
[root@web02 ~]# chmod +s /bin/netstat 

在这里插入图片描述

在这里插入图片描述

停止web02 sshd服务

[root@web02 ~]# systemctl stop sshd

在这里插入图片描述

5.自定义配置展示值映射

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调用值映射

在这里插入图片描述

在这里插入图片描述

6.自定义监控服务器内存百分比

第一步: 自定义监控项 获取可用百分比

[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf
UserParameter=login_number,w|awk 'NR==1{print $4}'
UserParameter=mem_free,free|awk 'NR==2{print $NF/$2*100}'
[root@web02 ~]# systemctl restart zabbix-agent.service 
[root@web02 ~]# zabbix_agentd -p|grep mem_free
mem_free                                      [t|72.0469]

第二步: 服务端测试获取key值 并添加监控

[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k mem_free
72.2032

在这里插入图片描述

在这里插入图片描述

7.为可用内存设置触发器

当内存可用百分比小于20% 则触发报警规则

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试: 关闭swap分区

[root@web02 ~]# swapoff  -a

使用dd压测消耗内存

[root@web02 ~]# dd if=/dev/zero of=/dev/null bs=600M count=1024

在这里插入图片描述

8.配置多条件触发器

同时满足两个条件触发告警

添加swap可用百分比

[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/system.conf
UserParameter=login_number,w|awk 'NR==1{print $4}'
UserParameter=mem_free,free|awk 'NR==2{print $NF/$2*100}'
UserParameter=swap_free,free -m|awk 'NR==3{print $3/$2*100}'

在这里插入图片描述

在这里插入图片描述

修改触发器配置

在这里插入图片描述

完成后在使用dd压测查看结果

五、自定义报警

1.配置发件人

awbzmztfmrhnbdga

在这里插入图片描述

2.开启动作

在这里插入图片描述

3.配置收件人

在这里插入图片描述

4.测试内存使用率查看信息
[root@web02 ~]# dd if=/dev/zero of=/dev/null bs=700M count=1024
5.自定义告警内容
默认标题:
故障: {EVENT.NAME}
消息内容:
报警主机: {HOST.NAME1}
报警服务: {ITEM.NAME}
报警key1: {ITEM.KEY1}: {ITEM.VALUE1}
报警key2: {ITEM.KEY2}: {ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}

恢复操作
默认标题:
恢复: {EVENT.NAME}
消息内容:
恢复主机: {HOST.NAME1}
恢复服务: {ITEM.NAME}
恢复key1: {ITEM.KEY1}: {ITEM.VALUE1}
恢复key2: {ITEM.KEY2}: {ITEM.VALUE2}

在这里插入图片描述

在这里插入图片描述

6.远程执行命令

因为zabbix服务启动用户为zabbix所有在远程执行命令时需要使用sudo提权

[root@web02 ~]# grep zabbix /etc/sudoers
zabbix  ALL=(ALL)	NOPASSWD: ALL

测试客户端执行systemctl restart sshd
[root@web02 ~]# su - zabbix - /bin/bash
-sh-4.2$ sudo systemctl restart sshd

开启客户端支持远程执行命令
[root@web02 ~]# grep EnableRemoteCommands /etc/zabbix/zabbix_agentd.conf
### Option: EnableRemoteCommands
EnableRemoteCommands=1
重启客户端
[root@web02 ~]# systemctl restart zabbix-agent.service

添加到动作中

在这里插入图片描述

在这里插入图片描述

停止WEB01的SSHD服务测试是否可以执行远程命令

7.微信报警

1.配置脚本文件

下载weixin.py脚本
注册企业微信
创建应用获取信息
vim weixin.py
#修改三行,具体信息,参考自己的企业微信
corpid='wxd074861951c67ba6'
appsecret='QtraZrI936DZ0jZ3aSWTZ_F633mNTeyrkkYvNa88gh0'
agentid=1
安装pip需要epel仓库
[root@zabbix ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@zabbix ~]# yum install python-pip -y &>/dev/null
[root@zabbix ~]# pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
python weixin.py 'LiZhenYa' '下雨了!' '回家收衣服'

[root@zabbix ~]# mv weixin.py /usr/lib/zabbix/alertscripts/
[root@zabbix ~]# chmod +x /usr/lib/zabbix/alertscripts/weixin.py

2.配置报警媒介类型

{ALERT.SENDTO}  #发给谁
{ALERT.SUBJECT} #报警标题
{ALERT.MESSAGE} #报警内容

在这里插入图片描述

3.配置动作发送邮件修改为微信媒介进行告警

在这里插入图片描述

在这里插入图片描述

六、自定义图形

1.给自定义监控项创建图形

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.创建聚合图形

多图形组合成一张图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.幻灯片演示

在这里插入图片描述

在这里插入图片描述

七、自定义模板

1.创建模板

创建模板的作用,主机和模板分离,多台服务器监控相同项目只调用同一个模板即可,修改监控项只修改模板即可对所有服务器完成操作

在这里插入图片描述

2.复制自定义监控项配置为模板

在这里插入图片描述

在这里插入图片描述

3.复制触发器

在这里插入图片描述

在这里插入图片描述

4.复制图形

在这里插入图片描述

注意: 应用集根据需求也可以进行复制

查看自定义配置模板信息

在这里插入图片描述

5.新建一台服务器关联自定义模板linux-server
将自定义key拷贝至目标服务器 将server作为客户端进行测试
[root@web02 ~]# scp /etc/zabbix/zabbix_agentd.d/system.conf 10.0.0.51:/etc/zabbix/zabbix_agentd.d/
重启客户端
[root@zabbix ~]# systemctl restart zabbix-agent

关联模板

在这里插入图片描述

检查server的监控项是否监控成功

在这里插入图片描述

图形也正常被监控到

在这里插入图片描述

八、监控Nginx状态

监控Nginx7种状态

1.开启nginx状态模块

2.取出7种状态设置为监控项

3.创建模板进行关联

4.配置触发器

1.开启Nginx状态模块
[root@web02 ~]# cat /etc/nginx/conf.d/status.conf 
server {
	listen 88;
	location /nginx_status {
	   stub_status;
	}
}
[root@web02 ~]# systemctl restart nginx
2.配置监控项
[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.active,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}'

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

服务端测试取值
[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k nginx.active

创建模板 基于模板创建监控项 注意: 也可以先添加监控项然后在复制到模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.添加触发器监控88状态端口

在这里插入图片描述

4.基于模板创建图形

在这里插入图片描述

5.模板创建完成后关联到被监控的主机

在这里插入图片描述

查看效果

在这里插入图片描述

扩展监控web01做模板关联

1.web01开启status状态模块

2.自定义key配置文件拷贝到web01

3.关联模板

九、监控PHP服务状态

1.安装PHP服务配置

上传PHP RPM包安装

2.打开PHP状态信息配置
[root@web02 php]# vim /etc/php-fpm.d/www.conf
pm.status_path = /status
[root@web02 php]# systemctl restart php-fpm


3.修改Nginx配置文件
[root@web02 ~]# 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@web02 ~]# systemctl restart nginx
测试是否获取PHP状态信息
[root@web02 ~]# curl 127.0.0.1:88/status
pool:                 www					      # pool的名称
process manager:      dynamic					  # 进程管理方式,现今大多都为dynamic,不要使用static
start time:           11/Nov/2021:10:11:53 +0800  # php-fpm上次启动的时间
start since:          282					 	  # php-fpm已运行了多少秒
accepted conn:        2							  # 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	# 当pm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数
slow requests:        0 # 当启用了php-fpm slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查询会触发这个值
4.自定义监控项
[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.d/php.conf
UserParameter=fpm.accepted,curl -s 127.0.0.1:88/status|awk '/^accepted/{print $NF}'
UserParameter=fpm.idle,curl -s 127.0.0.1:88/status|awk '/^idle/{print $NF}'
UserParameter=fpm.active,curl -s 127.0.0.1:88/status|awk '/^active/{print $NF}'
UserParameter=fpm.total,curl -s 127.0.0.1:88/status|awk '/^total/{print $NF}'
UserParameter=fpm.children,curl -s 127.0.0.1:88/status|awk '/children/{print $NF}'

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

客户端查看是否正常获取值
fpm.accepted                                  [t|11]
fpm.idle                                      [t|4]
fpm.active                                    [t|1]
fpm.total                                     [t|5]
fpm.children                                  [t|0]

客户端查看是否正常获取自定义值
[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k fpm.active
1
5.创建自定义PHP模板

在这里插入图片描述

基于模板添加监控项

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加完成

在这里插入图片描述

配置触发器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置图形

在这里插入图片描述

6.关联模板到被监控主机

在这里插入图片描述

查看状态

在这里插入图片描述

测试PHP访问

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

十、使用脚本方式自定义监控项

1.书写脚本进行取值
[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.sh
#!/bin/sh
case $1 in
	active)
	curl -s 127.0.0.1:88/nginx_status|awk 'NR==1{print $NF}'
	;;
	accepts)
	curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $1}'
	;;
	handled)
	curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $2}'
	;;
	requests)
	curl -s 127.0.0.1:88/nginx_status|awk 'NR==3{print $3}'
	;;
	*)
	 echo "Usage: $0 [active|accepts|handled|requests]"
esac

增加执行权限
[root@web02 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/nginx.sh
2.修改zabbix客户端配置文件
[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=nginx.[*],/etc/zabbix/zabbix_agentd.d/nginx.sh $1
3.zabbix创建模板及监控项

在这里插入图片描述

在这里插入图片描述

4.关联至被监控主机

在这里插入图片描述

在这里插入图片描述

十一、监控数据库MySQL

1.监控MySQL进程
2.监控MySQL端口
3.监控MySQL状态信息

通过命令查看MySQL状态信息: show global status

通过awk取值进行监控

[root@web02 ~]# mysql -uroot -e 'show global status;'
+------------------------------------------+-------------+
| Variable_name                            | Value       |
+------------------------------------------+-------------+
| Aborted_clients                          | 0           |
| Aborted_connects                         | 0           |
| Access_denied_errors                     | 0           |
| Aria_pagecache_blocks_not_flushed        | 0           |
| Aria_pagecache_blocks_unused             | 15737       |
| Aria_pagecache_blocks_used               | 0           |
| Aria_pagecache_read_requests             | 0           |
| Aria_pagecache_reads                     | 0           |
| Aria_pagecache_write_requests            | 0           |
| Aria_pagecache_writes                    | 0           |



Threads_connected			# 连接数
Com_select			        # 查询总量
Com_insert				    # 插入总量
Com_update				    # 更新总量
Com_delete					# 删除总量
Bytes_received				# 流入总流量
Bytes_sent					# 流出总流量
Slow_queries			    # 慢查询总量

4.使用脚本定义监控项

[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.sh
mysql -uroot -e 'show global status;'|grep -w $1|awk '{print $NF}'
[root@web02 ~]# chmod +x /etc/zabbix/zabbix_agentd.d/mysql.sh
[root@web02 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf
UserParameter=mysql.[*],/etc/zabbix/zabbix_agentd.d/mysql.sh $1

服务端测试
[root@zabbix ~]# zabbix_get -s 172.16.1.8 -k mysql.[Threads_connected]
Threads_connected	1
5.服务端创建MySQL监控模板

在这里插入图片描述

在这里插入图片描述

其他值添加过程省略请自行根据需求添加。。。。

在这里插入图片描述

完成添加

在这里插入图片描述

6.添加触发器

在这里插入图片描述

7.配置图形

在这里插入图片描述

8.关联至被监控主机

生成数据

[root@web02 ~]# cat mysql.sh 
for i in `seq 100`
do
	mysql -uroot -e "create database IF NOT EXISTS db;
	use db;
	DROP TABLE IF EXISTS test${i};
	create table test${i}(id int);
	insert into db.test${i} values (123456);
	select * from db.test${i};
	delete from test${i} where id=123456;"
done

十二、SNMP监控

简单网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点服务器工作站路由器交换机及HUBS等)的一种标准协议,它是一种应用层协议。

SNMP: OID和MIB介绍 扩展了解

blog.csdn.net/u011857683/…

SNMP监控的网络设备 里面的状态都有一个唯一值来表示 这个唯一值就是OID或MIB方式来表示

这个值以树状结构来展示

在这里插入图片描述

SNMP三种版本

SNMP v1 最早的SNMP协议 不支持加密算法

SNMP v2 兼容v1版本支持更多数据类型和错误代码 常用版本

SNMP v3 增加了认证和加密功能,避免非法访问 验证效率低

1.安装SNMP服务
[root@web02 ~]# yum -y install net-snmp
2.修改配置文件
[root@web02 ~]# vim /etc/snmp/snmpd.conf 
com2sec notConfigUser  default       public		# 团体名称 可自定义 连接使用
view    systemview    included   .1 		    # 从/开始检查取值
3.启动服务
[root@web02 ~]# systemctl start snmpd
[root@web02 ~]# systemctl enable snmpd

在zabbix安装snmp客户端进行取值测试

OID

blog.csdn.net/qq_28657577…

-v 指定SNMP版本

2c 指定SNMP版本为V2

-c 指定团体名称

[root@zabbix ~]# yum -y install net-snmp-utils
[root@zabbix ~]# snmpwalk -v2c -c public 172.16.1.8 .1.3.6.1.4.1.2021.11.9.0
UCD-SNMP-MIB::ssCpuUser.0 = INTEGER: 0
[root@zabbix ~]# snmpwalk -v2c -c public 172.16.1.8 .1.3.6.1.2.1.25.2.2.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 997956 KBytes
[root@zabbix ~]# snmpwalk -v2c -c public 172.16.1.8 HOST-RESOURCES-MIB::hrMemorySize.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 997956 KBytes
4.通过SNMP监控客户端

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十三、zabbix自动化监控

1.zabbix自动发现

zabbix服务端通过扫描地址段的方式自动发现存活的服务器

发现服务器后进行动作处理 添加主机 关联模板 关联报警等

缺点1: 扫描速度慢 server压力较大

缺点2: 所有扫描到的客户端只能使用统一模板 比如web和数据库使用模板是不同的 还需要手动进行配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

配置动作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

重启测试
[root@zabbix ~]# systemctl restart zabbix-server.service
[root@web02 ~]# systemctl restart zabbix-agent.service

在这里插入图片描述

2.zabbix自动注册

客户端主动将自身信息上传给服务端用来减少服务端的压力

根据需求调整自动还是被动模式

​ 例如: 当服务器超过300-500+台以上

​ 当网络较复杂的情况

​ 当服务器配置一般的情况

修改监控项为主动上报模式

1.将客户端配置为主动模式

[root@web02 ~]# vim /etc/zabbix/zabbix_agentd.conf 
ServerActive=172.16.1.51			# 主动注册服务器地址
Hostname=web02					    # 必须设置为主机名称
[root@web02 ~]# systemctl restart zabbix-agent

2.配置自动注册的动作

注意: 先删除自动发现功能防止冲突

在这里插入图片描述

在这里插入图片描述

添加动作 动作---> 右上角选择 --> 自动注册

在这里插入图片描述

在这里插入图片描述

修改监控项目被动为主动 减小服务器压力

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

十四、zabbix分布式监控

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.安装zabbix-proxy代理
[root@web02 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@web02 ~]# yum -y install zabbix-proxy-mysql
[root@web02 ~]# yum -y install mariadb-server
[root@web02 ~]# systemctl start mariadb
[root@web02 ~]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; 
MariaDB [(none)]> 
导入数据库
[root@web02 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.35/schema.sql.gz |mysql -uzabbix -pzabbix zabbix
检查数据导入是否正常
[root@web02 ~]# mysql -uroot -e "use zabbix;show tables;"
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |
| application_template       |
| applications               |
......
2.配置zabbix-proxy代理
[root@web02 ~]# egrep '^[DH]|^Server' /etc/zabbix/zabbix_proxy.conf
Server=10.0.0.51
Hostname=sz_proxy
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
3.启动zabbix-proxy代理
[root@web02 ~]# systemctl start zabbix-proxy.service 
[root@web02 ~]# netstat -tnulp|grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      119590/zabbix_proxy 
tcp6   
4.配置客户指向zabbxi-proxy
客户端: 172.16.1.8 自身也作为客户端来测试
客户端: 172.16.1.5
[root@web02 ~]# egrep '172.16.1.8|^Hostname' /etc/zabbix/zabbix_agentd.conf 
Server=172.16.1.8
ServerActive=172.16.1.8
Hostname=web02
[root@web02 ~]# systemctl restart zabbix-agent.service 

[root@lb01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@lb01 ~]# yum -y install zabbix-agent
[root@lb01 ~]# egrep '172.16.1.8|^Hostname' /etc/zabbix/zabbix_agentd.conf 
Server=172.16.1.8
ServerActive=172.16.1.8
Hostname=lb01
[root@lb01 ~]# systemctl restart zabbix-agent.service 
5.server端添加主机

清空原监控客户端及自动注册发现功能

在这里插入图片描述

基于代理添加主机

在这里插入图片描述

在这里插入图片描述

继续将proxy作为客户端监控

在这里插入图片描述

在这里插入图片描述

十五、zabbix监控java

zabbix通过zabbix-java-gateway实现对java进行监控

监控java使用jmx协议

服务端: 10.0.0.51

zabbix-java-gateway: 10.0.0.8

tomcat: 10.0.0.5

1.安装Tomcat服务并开启jmx协议和取值页面
安装JDK
[root@lb01 ~]# rpm -ivh jdk-8u181-linux-x64.rpm
安装Tomcat
[root@lb01 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.55/bin/apache-tomcat-9.0.55.tar.gz --no-check-certificate
[root@lb01 ~]# tar xf apache-tomcat-8.5.72.tar.gz -C /usr/local/
[root@lb01 ~]# mv /usr/local/apache-tomcat-8.5.72/ /usr/local/tomcat

注释: hostname 为自己本机ip
[root@lb01 ~]# cat /usr/local/tomcat/bin/catalina.sh
#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Djava.rmi.server.hostname=172.16.1.5 \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"

启动tomcat
[root@lb01 ~]# /usr/local/tomcat/bin/startup.sh
[root@lb01 ~]# netstat -tnulp|grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      14213/java  
2.安装zabbix-java-gateway

在10.0.0.8服务器上安装

[root@web02 ~]# yum -y install zabbix-java-gateway
[root@web02 ~]# systemctl start zabbix-java-gateway.service 
[root@web02 ~]# systemctl enable zabbix-java-gateway.service
[root@web02 ~]# netstat -tnulp|grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      121398/java 
3.配置服务器连接java-gateway
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf 
JavaGateway=172.16.1.8
JavaGatewayPort=10052
StartJavaPollers=3
4.通过jmx进行监控

删除原主机进行后添加测试

在这里插入图片描述

十六、zabbix优化

1.高并发需要对MySQL进行拆分

2.zabbix-agent被动上传修改为主动上报模式

3.地区较多情况尽量使用proxy代理模式

4.系统自带监控项优化

5.进程优化

6.缓存优化

【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)_zabbix进阶_我是koten的博客-CSDN博客

十七、zabbix+ansible自动注册

1.配置好自动注册规则

2.写ansible playbook

[root@zabbix ansible]# cat zabbix.yml 
- hosts: all
  vars:
    - SERVER_IP: 172.16.1.51
  tasks:
    - name: Install Zabbix-Agent
      yum:
        name: https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
        state: present
    - name: Config Zabbix-Agent
      template:
        src: zabbix_agentd.conf.j2
        dest: /etc/zabbix/zabbix_agentd.conf
      notify: Restart Zabbix Agent

    - name: Scp Zabbix Agent Configure
      copy:
        src: ./zabbix_agentd.d/
        dest: /etc/zabbix/zabbix_agentd./

    - name: Start Zabbix Agent
      systemd:
        name: zabbix-agent
        state: started
        enabled: yes
  handlers:
    - name: Restart Zabbix Agent
      systemd:
        name: zabbix-agent
        state: restarted

[root@zabbix ansible]# vim zabbix_agentd.conf.j2
Server={{ SERVER_IP }}
Hostname={{ ansible_hostname }}
ServerActive={{ SERVER_IP }}

十八、grafana

1.安装grafana
[root@zabbix ~]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.2.4-1.x86_64.rpm
[root@zabbix ~]# yum -y localinstall grafana-enterprise-8.2.4-1.x86_64.rpm
[root@zabbix ~]# systemctl start grafana-server.service 
[root@zabbix ~]# systemctl enable grafana-server.service 

查看grafana监听端口号
[root@zabbix ~]# netstat -tnulp|grep grafana
tcp6       0      0 :::3000                 :::*                    LISTEN      17716/grafana-serve 

在这里插入图片描述

在这里插入图片描述

2.安装zabbix插件
[root@zabbix ~]# grafana-cli plugins list-remote|grep zabbix
id: alexanderzobnin-zabbix-app version: 4.0.1
[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
如果从github下载较慢 建议先下载然后安装
通过windows下载安装包 然后上传到/var/lib/grafana/plugins/
[root@zabbix plugins]# ll
total 16196
-rw-r--r-- 1 root root 16584375 Nov 16 11:56 alexanderzobnin-zabbix-app-4.0.1.zip
[root@zabbix plugins]# unzip alexanderzobnin-zabbix-app-4.0.1.zip
[root@zabbix plugins]# systemctl restart grafana-server.service

http://10.0.0.61/zabbix/api_jsonrpc.php

在页面查看是否安装成功

在这里插入图片描述

开启zabbix插件功能

在这里插入图片描述

3.添加数据源

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

导入模板

在这里插入图片描述

在这里插入图片描述

修改模板信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.grafana直接连接数据库取值

在这里插入图片描述

zabbix插件处选择mysql

在这里插入图片描述

十九、总结

​ Zabbix作为一款成熟的企业级监控解决方案,凭借其强大的功能、灵活的扩展性和活跃的社区支持,已成为IT监控领域的标准工具之一。通过本指南的学习,您应该能够掌握Zabbix的核心概念和实际应用技巧,构建适合自己业务需求的监控体系。

​ 监控系统的建设是一个持续优化的过程,建议在实践中不断调整和优化监控项、告警阈值和可视化展示。随着业务的发展和技术栈的变化,监控策略也需要相应调整,以确保持续提供有效的监控覆盖。