![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041422564.png#alt=image-20220504142235458)

[Zabbix 产品手册](https://www.zabbix.com/documentation/4.0/zh/manual)

### Zabbix 简介

Zabbix 由 Alexei Vladishev 创建，目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护， 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案。

Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。 Zabbix 使用灵活的告警机制，允许用户为几乎任何事件配置基于邮件的告警。
这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。

Zabbix 支持主动轮询（polling）和被动捕获（trapping）。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。
基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。
适当的配置后，Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织，还是拥有大量服务器的大企业而言，同样适用。

Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的，可供公共使用。
Zabbix公司还为全球用户提供专业的  技术支持服务

**Zabbix版本发布计划——**

**标准版本：**

目前的发布计划周期为六个月，每六个月将有一个新的Zabbix稳定版本发布。

**LTS代表“长期支持版本”**

Zabbix LTS版本每一年半发布一次，且为Zabbix客户提供五年的支持服务。

### Zabbix 架构

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041428065.png#alt=%E5%9B%BE%E7%89%87)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041428880.png#alt=%E5%9B%BE%E7%89%87)

#### 组件

通过以上2张图基本上可以大致了解Zabbix的体系结构和运行流程，产品涉及很多概念和术语，**在这里简单列一下经常接触的组件：**

(一)Zabbix-server  顾名思义：zabbix 监控的server，最核心的部分

(二)Zabbix-database ：zabbix 监控的数据库，可以独立部署

(三)Agent：zabbix监控的的代理或者客户端

(四)Proxy：当监控的规模比较大时，为了降低server的负载的解决方案，一个server可以对接多个proxy，proxy 可以设置缓存监控数据时间，能够在server异常恢复后同步指定时间的数据到server，整体监控不丢失数据。

(五)Zabbix-web：是访问zabbix监控的主要入口，绝大数的配置查看工作都在web界面完成。

还有很多如host，hostgroup, template, action，trigger等，不在此一一详细解释，如有需求请自行百度。

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041433528.png#alt=image-20220504143329381)

#### 环节

**Zabbix 作为一个监控系统以下几个环节是必不可少的：**

**1）监控实现**

**采样：**周期性的获取某个被监测指标的相关数据，大致分为主动模式和被动模式。

**存储：**将采集到的数据存储在指定的存储系统中，Zabbix 数据库是MySQL或者PostgreSQL，新版本支持部署在TimescaleDB。

对于数据的存储可分为两大类：

**历史数据：**可理解为过去某一时间点的数据

**趋势数据：**可理解为过去某一段时间的数据

**展示：**采集完数据后，为了使数据能更直观的展现在用户面前，可将采集到的数据做二次处理，做成各类图形。Zabbix就是使用的PHP程序将采集的数据通过Web GUI直观的展示给用户。

**报警：**当监控的指标出现异常时需要监控系统能自动的发出告警信息，甚至在出现报警后能自动完成修复。

**2）监控方式**

Zabbix主要有Agent，SNMP，JMX，IPMI, Trapper，web及数据库监控方式

1.Agent 主要解决的操作系统的监控

2.SNMP 主要解决网络设备及安全设备的监控，如果操作系统按照了Snmp agent 也可以进行监控

3.JMS 主要是解决各类Java平台和程序的监控

4.IPMI 主要是解决服务器相关硬件类的底层监控。如风扇，温度，电压等

5.Trapper 主要解决自定义监控类需求

6.agentless monitoring主要是解决无agent的监控，如接口，IP等

7.web monitoring主要是解决：监控服务的状态，如监控的页面在不在，页面请求响应时间，页面内数据的下载速度等

8.数据库监控主要是解决通过插件监控各种类型的数据库

**3）分布式部署**

作为一个完整的解决方案，Zabbix是适配多种规模的监控场景，在中大型和超大型的监控场景下，分布式部署必不可少。Zabbix拥有Proxy极大的增强了其扩展能力。特别是在当今混合云和多云的的环境，Zabbix可以统一的监控方案。

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041430576.png#alt=%E5%9B%BE%E7%89%87)

理论情况下Zabbix的分布式解决方案可以无限的扩展，满足任意数量设备监控需求。Zabbix proxy 的部署扩展的zabbix server的能力，同时也降低了网络带宽的压力，一个proxy处理将近100个节点的常规操作系统监控指标下，网络IO只有差不多200Kb，极大的降低了带宽的压力。

Zabbix 可以监控东西太多了，在此不一一列举，这里介绍在以下几个方面使用，且整体使用效果不错。

- 硬件（小型机，PC，存储）
- 操作系统（AIX，Windows，Linux）
- 数据库（oracle）
- 网络设备（交换机，路由器，流量设备，负载均衡，防火墙）
- 虚拟化
- 服务和业务网站监控
- 自定义监控

#### 问题

**1.Agent的部署**

在大量的部署Agent的场景下可以使用zabbix的自动发现及匹配相关规则，也可使用Python或者其他语言写成的工具，调用Zabbix的Api，批量的添加和配置Agent业务场景

**2.数据获取**

zabbix配置完毕后，可能会遇到数据获取不到或者获取数据较少的情况。

**(一)数据获取不到几种可能常见原因：**

1)配置不对：agent和server端配置不对应

2)Agent没有启动：配置完成未启动或未设置开机启动

3)网络不通：防火墙未放开

4)版本不兼容：如snmp v1，v2，v3

5)字段类型不匹配：time和string等

6)模板选择不对

Zabbix获取不到数据是初学者经常可能遇到的问题，以上几个步骤可以涵盖大部分此类问题的原因。

**(二)数据获取较少**

此类问题主要可以分为3类：

1)监控agent的版本和Server版本及模板库的不配，获取部分数据，

2)操作系统或网络snmp库版本太低，本身提供的接口信息较少

3)Zabbix模板定义获取数据的范围或者指标太少，导致管理节点智能获取较少数据。

如遇此类问题首先要确认是否是因为受监控对象自身版本太低导致，如不能升级更新客户端的操作系统或者网络设备等监控对象的系统版本，可通过自定义的方式，手工添加相应的监控item或范围。必要的时候更新监控模板，完善相应监控内容。

**3.Maps**

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041435059.png#alt=%E5%9B%BE%E7%89%87)

Maps功能可以方便的基于某一个特点业务场景，通过连接线勾勒出相互之间的关系，并且可以实时更新的。对于整个业务系统的监控就非常的方便。也便于掌握每个节点的相关情况。

**4.告警**

Zabbix成熟的告警体系和集成能力，使得很方便的选择时候直接的监控接收方式。

### 实验环境
| 主机名 | ip | 备注 |
| :---: | :---: | :---: |
| zabbix1 | 192.168.188.90 | LAMP、zabbix |
| zabbix2 | 192.168.188.91 | 用于测试自动发现与自动注册 |
| zabbix3 | 192.168.188.92 | 用于测试自动发现与自动注册 |

**单机基本 LAMP 环境要求  内存 1G以上**

**Linux  + web 服务 +  PHP  + Mysql**

使用本地源即可

1、选择 先前用于  自动化管理的 主机。
2、 在该主机上，构建 基本 LAMP 架构。  Mysql 推荐使用 编译版的 5.7.19

### 数据库安装

```shell
[root@zabbix1 ~]# cd /opt/

# 清除历史环境
[root@zabbix1 opt]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@zabbix1 opt]# yum -y remove mariadb-libs

# 把下载好的包上传到/opt/目录下
[root@zabbix1 opt]# tar xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
[root@zabbix1 opt]# mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/mysql

[root@zabbix1 opt]# useradd mysql -s /sbin/nologin   # 创建用户
[root@zabbix1 opt]# mkdir -p /data/mysql   # 创建数据存储目录
[root@zabbix1 opt]# mkdir -p /var/log/mysql   # 创建日志目录
[root@zabbix1 opt]# mkdir -p /data/binlog/   # 创建binlog日志
# 修改权限
[root@zabbix1 opt]# chmod o+w /data/   
[root@zabbix1 opt]# chown mysql:mysql -R /usr/local/mysql /data/mysql /var/log/mysql /data/binlog/

# 添加环境变量
[root@zabbix1 opt]# echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile && source /etc/profile

# 修改配置文件
[root@zabbix1 opt]# cat > /etc/my.cnf << eof
[mysqld]
user=mysql 
basedir=/usr/local/mysql        
datadir=/data/mysql             
server_id=1                         
port=3306                           
socket=/data/mysql/mysql.sock
log_bin=/data/binlog/mysql-bin
sync_binlog=1
binlog_format=row
        

[mysql]         
socket=/data/mysql/mysql.sock 

[mysqld_safe]
log-error=/var/log/mysql/mysql.log      
pid-file=/data/mysql/mysql.pid
eof


# 复制启动脚本并使用systemctl管理
[root@zabbix1 opt]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@zabbix1 opt]# chmod +x /etc/init.d/mysqld
[root@zabbix1 opt]# chkconfig --add mysqld
	
[root@zabbix1 opt]# yum install libaio libaio-devel -y
	
[root@zabbix1 opt]# mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql   # 无密初始化

[root@zabbix1 opt]# systemctl start mysqld
[root@zabbix1 opt]# systemctl status mysqld
[root@zabbix1 opt]# systemctl enable mysqld
```

```mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';   # 修改密码
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
```

### php与Apache安装

```shell
[root@zabbix1 ~]# cd /opt/
[root@zabbix1 opt]# yum -y install php php-mysql httpd
[root@zabbix1 opt]# httpd -v   # 验证httpd
Server version: Apache/2.4.6 (CentOS)
Server built:   Mar 24 2022 14:57:57
[root@zabbix1 opt]# systemctl start httpd
[root@zabbix1 opt]# systemctl enable httpd
[root@zabbix1 opt]# php -v   # 验证php
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
```

### zabbix应用

```shell
# 二进制安装
# 偶数版好用
[root@zabbix1 opt]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm
获取https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm
警告：/var/tmp/rpm-tmp.yB84JI: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-release-4.2-2.el7         ################################# [100%]
[root@zabbix1 opt]# ls /etc/yum.repos.d/
bak  CentOS-Base.repo  local.repo  zabbix.repo
[root@zabbix1 opt]# yum makecache

或者

[root@zabbix1 opt]# yum clean all && yum makecache
```

#### 安装 Server/proxy/前端

```shell
[root@zabbix1 opt]# yum install -y zabbix-server-mysql   #安装Zabbix server（适用于RHEL7，在RHEL 6上弃用）并使用MySQL数据库
[root@zabbix1 opt]# yum install -y zabbix-web-mysql   # 安装Zabbix前端（适用于 RHEL 7，在 RHEL 6 上弃用）并使用 MySQL 数据库
```

#### 创建数据库

```shell
[root@zabbix1 opt]# mysql -uroot -p123456
```

```mysql
# 创建数据库，配置数据库连接信息
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
```

#### 导入数据

```shell
[root@zabbix1 opt]# zcat /usr/share/doc/zabbix-server-mysql-4.2.8/create.sql.gz | mysql -uzabbix -pzabbix zabbix
```

```mysql
# 验证
[root@zabbix1 opt]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.30-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
5 rows in set (0.00 sec)

mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
  ……
| widget_field               |
+----------------------------+
146 rows in set (0.00 sec)
```

#### 为 Zabbix server/proxy 配置数据库

```shell
# 修改vi /etc/zabbix/zabbix_server.conf  zabbix-server连接数据库
[root@zabbix1 opt]# cd /etc/zabbix/
[root@zabbix1 zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix1 zabbix]# grep -Ev "#|^$" zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.188.90
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
```

#### 修改前端时区

```shell
[root@zabbix1 zabbix]# vim /etc/httpd/conf.d/zabbix.conf
改:20         # php_value date.timezone Europe/Riga
为:20         php_value date.timezone Asia/Shanghai
[root@zabbix1 zabbix]# systemctl restart httpd
```

#### 启动zabbix

```shell
[root@zabbix1 zabbix]# systemctl start zabbix-server.service
[root@zabbix1 zabbix]# systemctl status zabbix-server.service
[root@zabbix1 zabbix]# systemctl enable zabbix-server.service

# 10051
# 检查10051端口是否启动
[root@zabbix1 zabbix]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      857/sshd            
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      11003/zabbix_server 
tcp6       0      0 :::22                   :::*                    LISTEN      857/sshd            
tcp6       0      0 :::10051                :::*                    LISTEN      11003/zabbix_server 
tcp6       0      0 :::3306                 :::*                    LISTEN      1557/mysqld
```

#### web页面操作

浏览器输入ip/zabbix即可进入，如下图（如没出现，尝试重启zabbix）

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250002772.png#alt=)

检查状态，全部ok即可，如下图

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250003885.png#alt=)

设置数据库连接

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250007249.png#alt=)

设置zabbix服务

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250009572.png#alt=)

显示设置信息与成功提示

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250010038.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250011389.png#alt=)

登陆

默认管理员账号是Admin密码是zabbix

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250012697.png#alt=)

设置中文

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250014836.png#alt=)

#### 安装 Agent

解决报错

主机运行时,会报这个错,所以要先按安装Zabbix agent,Zabbix-server在监控的过程中，发现Web上报错提示zabbix server与agent之间已经失联超过5分钟了。

想在哪台机子上监控就在哪台机子上安装agent，现在安装在zabbix1上

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250023975.png#alt=)

```shell
[root@zabbix1 opt]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm
[root@zabbix1 ~]# cd /etc/zabbix/
[root@zabbix1 zabbix]# ls
web  zabbix_agentd.conf  zabbix_agentd.d  zabbix_server.conf  zabbix_server.conf.bak
[root@zabbix1 zabbix]# cp zabbix_agentd.conf zabbix_agentd.conf.bak
[root@zabbix1 zabbix]# vim zabbix_agentd.conf
改: 98 Server=127.0.0.1   
为: 98 Server=192.168.188.90   # 告诉服务器的服务在哪，往上推送监控数据

改: 106 # ListenPort=10050
为: 106  ListenPort=10050

改: 150 Hostname=Zabbix server
为: 150 Hostname=zabbix-server   # 在zabbix-server端添加主机时使用同样的名称

# zabbix主动的模式才需要开启下面的选项
114 # ListenIP=0.0.0.0
```

##### 启动Agent

```shell
[root@zabbix1 zabbix]# systemctl start zabbix-agent
[root@zabbix1 zabbix]# systemctl status zabbix-agent
[root@zabbix1 zabbix]# systemctl enable zabbix-agent
[root@zabbix1 zabbix]# netstat -lntp   # 10050
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      857/sshd            
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      11204/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      11003/zabbix_server 
tcp6       0      0 :::80                   :::*                    LISTEN      11090/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      857/sshd            
tcp6       0      0 :::10050                :::*                    LISTEN      11204/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      11003/zabbix_server 
tcp6       0      0 :::3306                 :::*                    LISTEN      1557/mysqld

```

#### 配置主机

流程：添加主机群组 ==> 添加主机 ==> 添加模版

##### 主机群组

![image-20220613152857975](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202206131528062.png)

![](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202206131530002.png)

##### 主机

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250049057.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250052351.png#alt=)

##### 模版

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250057396.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250058612.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250101213.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250101061.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250102650.png#alt=)

#### 图形

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250113374.png#alt=)

##### 修改字体

到Windows上的C:\Windows\Fonts这个路径寻找心仪的本地字体上传到指定目录

```shell
[root@zabbix1 zabbix]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix1 fonts]# ls
graphfont.ttf
# 上传
[root@zabbix1 fonts]# ls
graphfont.ttf  STHUPO.TTF
[root@zabbix1 fonts]# mv STHUPO.TTF STHUPO.ttf
# 修改引用字体
[root@zabbix1 fonts]# vim /usr/share/zabbix/include/defines.inc.php
改: 69 define('ZBX_GRAPH_FONT_NAME',           'graphfont'); // font file name
为: 69 define('ZBX_GRAPH_FONT_NAME',           'STHUPO'); // font file name
改: 110 define('ZBX_FONT_NAME', 'graphfont');
为: 110 define('ZBX_FONT_NAME', 'STHUPO');
```

此时回到浏览器刷新发现成功修改字体

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204250127592.png#alt=)

简单配置主机群组(配置==>主机群组)，触发器、主机采集的关闭点击状态那一栏的已启用即可

### 监控远程机子

#### 安装

```shell
[root@zabbix2 ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm
获取https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.8-1.el7.x86_64.rpm
警告：/var/tmp/rpm-tmp.TLjzBu: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-agent-4.2.8-1.el7         ################################# [100%]
[root@zabbix2 ~]# cd /etc/zabbix/
[root@zabbix2 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix2 zabbix]# cp zabbix_agentd.conf zabbix_agentd.conf.bak
[root@zabbix2 zabbix]# vim zabbix_agentd.conf
改: 98 Server=127.0.0.1   
为: 98 Server=192.168.188.90   # 告诉服务器的服务在哪，往上推送监控数据

改: 106 # ListenPort=10050
为: 106  ListenPort=10050

改: 150 Hostname=Zabbix server
为: 150 Hostname=web


[root@zabbix2 zabbix]# systemctl start zabbix-agent
[root@zabbix2 zabbix]# systemctl enable zabbix-agent
```

#### web操作

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204251957635.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204251958634.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204251958562.png#alt=)

#### zabbix2添加监控项与触发器

```shell
[root@zabbix1 zabbix]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-get-4.2.8-1.el7.x86_64.rpm
[root@zabbix1 zabbix]# zabbix_get -V
zabbix_get (Zabbix) 4.2.8
Revision cb5d5b10f4 28 October 2019, compilation time: Oct 28 2019 11:18:18

Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.0.1e-fips 11 Feb 2013
Running with OpenSSL 1.0.1e-fips 11 Feb 2013
```

```shell
[root@zabbix2 ~]# cd /etc/zabbix/
[root@zabbix2 zabbix]# ls
zabbix_agentd.conf  zabbix_agentd.d
[root@zabbix2 zabbix]# vim zabbix_agentd.conf
改: 296 #UserParameter=
为: 296 UserParameter=login.user.num,who | wc -l
[root@zabbix2 zabbix]# systemctl restart zabbix-agent

# 回到zabbix的server端验证
[root@zabbix1 ~]# zabbix_get -s 192.168.188.91 -k login.user.num
2
[root@zabbix1 ~]#
```

```shell
常用的触发器
and 				#并且
or 					#或者
last() 				#比对最新的值
avg() 				#平均值
diff() 				#比对上一次文件的内容
nodata() 			#收不不到数据进行报警nodata(5m)
(5m)			    #表示最近5分钟得到值
(#5)				 #表示最近5次得到的值


	1.单条件触发器
	2.多条件触发器
	3.触发器的表达式   并且与或者
	4.触发器表达式常用的函数
	5.触发器的依赖关系
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252022822.png#alt=2022-04-25_201441)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252023521.png#alt=2022-04-25_201448)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252023198.png#alt=2022-04-25_201602)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252024274.png#alt=2022-04-25_201629)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252022199.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252033763.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252033803.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252033652.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252033897.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252034121.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252034348.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252035048.png#alt=)

```shell
[root@zabbix2 zabbix]# zabbix_agentd -p   # 打印出所有的item
```

### 建立新的用户组和用户

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252124620.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252125875.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252125554.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252130883.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252130840.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252131080.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252131461.png#alt=)

告警方式

钉钉、企业微信、短信、邮件

### 邮箱报警

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252147004.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252203996.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252148617.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252148936.png#alt=)

测试

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252153767.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252204588.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252204050.png#alt=)

用户启用报警媒介

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252208978.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252208199.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252209194.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252209539.png#alt=)

更改报警与恢复邮件模板并启用告警

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252220582.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252220756.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252224269.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252224574.png#alt=)

模板

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252226757.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252228156.png#alt=)

模拟故障

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252229518.png#alt=)

```tex
警告：
故障{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}

恢复：
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
故障持续时间: {EVENT.AGE}
恢复时间: {EVENT.RECOVERY.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
```

在子配置文件写多个UserParameter

```shell
[root@zabbix2 ~]# cd /etc/zabbix/zabbix_agentd.d
[root@zabbix2 zabbix_agentd.d]# ls
userparameter_mysql.conf

[root@zabbix2 zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@zabbix2 zabbix_agentd.d]# ls
userparameter_mysql.conf
[root@zabbix2 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.conf
改: 296 UserParameter=login.user.num,who | wc -l
为: 296 # UserParameter=login.user.num,who | wc -l
[root@zabbix2 zabbix_agentd.d]# cat new.conf 
UserParameter=login.user.num,who | wc -l
UserParameter=mem.avg,free -m | awk /^Mem/'{print $NF/$2*100}'
UserParameter=swap.avg,free -m | awk /^Swap/'{print $3/$2*100}'
[root@zabbix2 zabbix_agentd.d]# systemctl restart zabbix-agent

# 回到zabbix的server端验证
[root@zabbix1 fonts]# zabbix_get -s 192.168.188.91 -k mem.avg
84.915
[root@zabbix1 fonts]# zabbix_get -s 192.168.188.91 -k swap.avg
0

# 在zabbix-web主机建立监控项与触发器
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252250389.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252250819.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252256910.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252303070.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252304659.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252304767.png#alt=)

关闭自带的内存监控与触发器(小于20m那个)

通过监控项找到对应的触发器禁止，不截图了

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252254099.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252254955.png#alt=)

### 多条件结合触发

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252310060.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252311209.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252311896.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252311073.png#alt=)

添加动作邮箱报警

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252313800.png#alt=)

模拟故障

```
dd if=/dev/zero of=/opt/test count=10 bs=1750M
```



### 监测端口是否存活

1是存活，0是不存活

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252328621.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252328482.png#alt=)

设置映射值

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252334948.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252335739.png#alt=)

更改监控项

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252338678.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252338297.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204252339882.png#alt=)

```shell
# 模拟端口不存活
[root@zabbix2 zabbix_agentd.d]# systemctl stop httpd
[root@zabbix2 zabbix_agentd.d]# systemctl start httpd
```

```shell
# 网络监听
# UserParameter=net.status.listen,netstat -an | grep -wc LISTEN
# UserParameter=net.status.timewait,netstat -an | grep -wc TIME_WAIT
# UserParameter=net.status.established,netstat -an | grep -wc ESTABLISHED
# 以上三条可以使用shell形式来匹配，UserParameter=net.status.[*],netstat -an | grep -wic $1


[root@zabbix2 zabbix_agentd.d]# vim new.conf
UserParameter=net.status.[*],netstat -an | grep -wic $1
[root@zabbix2 zabbix_agentd.d]# systemctl restart zabbix-agent


# 回到zabbix的server端验证
[root@zabbix1 fonts]# zabbix_get -s 192.168.188.91 -k net.status.[listen]
7
[root@zabbix1 fonts]# zabbix_get -s 192.168.188.91 -k net.status.[LISTEN]
7
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260001785.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260001215.png#alt=)

### 故障自愈

故障尝试自动恢复

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260006370.png#alt=)

使用监听端口的监控项等于0时

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260006965.png#alt=)

更改动作

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260011940.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260011148.png#alt=)

```shell
# 模拟httpd故障
[root@zabbix2 zabbix_agentd.d]# systemctl stop httpd


# 设置自动恢复，如下图
# 设置好过后模拟故障会自动尝试拉起httpd
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204260016021.png#alt=)

### 保留监控项

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262313435.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262314397.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262316503.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262317062.png#alt=)

选择应用集

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262318922.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262319914.png#alt=)

新创的模板 ==> 应用集 ==> 监控项

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262323525.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262323722.png#alt=)

新创的模板 ==> 应用集 ==> 监控项 ==> 触发器

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262326647.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262326175.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262327436.png#alt=)

[图形参考官方产品手册](https://www.zabbix.com/documentation/4.2/zh/manual)

### web监控

监控百度: 创建web场景 ==> 场景 ==> 步骤(记得勾选跟随跳转) ==> 添加 ==> 监测 ==> web监测

```shell
web监测
1.使用curl命令模拟登陆zabbix服务器，获取cookie, 将cookie保存至本地cook文件中
[root@m01 ~]# curl -L -c cook -b cook 'http://10.0.0.61/zabbix/index.php'

2.再次访问时，携带cookie信息，同时使用-d参数携带用户以及密码，模拟登陆
[root@web01 ~]# curl -L -c cook -b cook -d 'name=Admin&password=zabbix&autologin=1&enter=Sign+in' 'http://10.0.0.71/zabbix/index.php'




web场景监测
	1.创建一个场景-->监控zabbix服务器
		1）访问zabbix	
		2）登录zabbix	{会话信息}
		3）检查zabbix	
		4）退出zabbix	
		5）检查是否退出
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262347205.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262348128.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262348184.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204262350744.png#alt=)

监控zabbix: 创建web场景 ==> 步骤(记得勾选跟随跳转)

3.0用<?nowiki>?regex:name ="sid"value ="([0-9a-z] {16})有问题，4.0改过来了

```shell
1.zabbix内部资源结构
	2.zabbixweb监测
			cookie和session    session共享  session复制 
			curl命令模拟登陆网站
			web监测一个网站
				1.打开网站
				2.登陆网站
				3.检查登陆
				4.退出登陆
				5.检查退出
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270019813.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270020800.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270019835.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270020818.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270020399.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270020500.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270021444.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270023481.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270024976.png#alt=)





### zabbix客户端类型

| zabbix客户端           |                                                              |
| ---------------------- | ------------------------------------------------------------ |
| Zabbix-agent（最常用） | 适用于几乎所有情况，linux，windows，android/ios              |
| SNMP客户端             | Simple Network Management Protocal简单网络管理协议监控网络设备 |
| JMX                    | Java-gateway监控java app(tomcat)，未来推荐自定义监控(zabbix_agent+jmap/jstats) |
| IPMI                   | 监控硬件物理服务器，联想(IBMX86架构ThinkServer)，华为，浪潮，Dell，lBM，HP)直接使用自定义监控(ipmitool+megacli) |



#### 1.监控windows

[Windows下安装Zabbix agent - OpsDrip - 博客园 (cnblogs.com)](https://www.cnblogs.com/opsprobe/p/11719198.html)

下载agent

![image-20221102110913173](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021109275.png)

安装windows-agent

![image-20221102215755423](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202211022157507.png)

![image-20221102111151821](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021111873.png)

web端添加主机

![image-20221102215806088](https://ye5201314-1312898079.cos.ap-guangzhou.myqcloud.com/202211022158181.png)

![image-20221102111436121](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021114211.png)



#### 2.snmp监控网络设备

```
·zabbix-server检查网络设备状态

yum install -y net-snmp-utils


COMMUNITY



snmpwalk-c 社区名 -v 2c 192.168.1.1 sysDesc

```



![image-20221102090912656](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211020909749.png)



#### 3.jmx监控

3.1.为Java应用程序启用远程JMX监控

```
[root@tomcat bin]# vim /usr/local/tomcat/bin/catalina.sh
CATALINA_OPTS="$CATALINA_OPTS                           \	#CATALINA_OPTS 开启功能
-Dcom.sun.management.jmxremote                          \
-Dcom.sun.management.jmxremote.port=12345               \	#JMX默认端口
-Dcom.sun.management.jmxremote.authenticate=false       \
-Dcom.sun.management.jmxremote.ssl=false                \
-Djava.rmi.server.hostname=192.168.245.163"			#java程序本身的IP

[root@tomcat bin]# /usr/local/tomcat/bin/catalina.sh start
[root@tomcat bin]# netstat -ntpl |grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      1033/java         
tcp6       0      0 :::34993                :::*                    LISTEN      1033/java           
tcp6       0      0 :::43601                :::*                    LISTEN      1033/java           
tcp6       0      0 :::12345                :::*                    LISTEN      1033/java

注：jmx开启时除了会有默认端口12345以外，还会有生成两个随机端口
```

3.2.配置zabbix_java_gateway

理论上不需要修改，直接启动即可

```shell
[root@zabbix1 zabbix]# systemctl start  zabbix-java-gateway
[root@zabbix1 zabbix]# systemctl status zabbix-java-gateway
● zabbix-java-gateway.service - Zabbix Java Gateway
   Loaded: loaded (/usr/lib/systemd/system/zabbix-java-gateway.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2022-11-02 14:39:28 CST; 2s ago
  Process: 19687 ExecStart=/usr/sbin/zabbix_java_gateway (code=exited, status=0/SUCCESS)
 Main PID: 19690 (java)
   CGroup: /system.slice/zabbix-java-gateway.service
           └─19690 java -server -Dlogback.configurationFile=/etc/zabbix/zabbix_java_gateway_logback.xml -classpath lib:lib/android-...

11月 02 14:39:13 zabbix1 systemd[1]: Starting Zabbix Java Gateway...
11月 02 14:39:28 zabbix1 systemd[1]: Started Zabbix Java Gateway.
[root@zabbix1 zabbix]# netstat -ntpl |grep java
tcp6       0      0 :::10052                :::*                    LISTEN      19690/java
```

3.3.配置zabbix_server

```
[root@zabbix1 zabbix]# vim zabbix_server.conf
改：# JavaGateway=
为：JavaGateway=192.168.245.190			#java Gateway程序IP地址
改：# StartJavaPollers=0
为：StartJavaPollers=5					#并发实例数
JavaGatewayPort=10052
```

3.4.web配置监控类型

![image-20221102150236816](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021502914.png)



![image-20221102150255412](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021502474.png)

![image-20221102150333525](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021503592.png)

小结：jmx监控两种方案

方案1：java程序+zabbix-java-gateway+zabbix-server

方案2：jmap/jstats（命令行）+自定义监控项（了解）



#### 4.IPMI监控

IPMI是计算机系统的远程"关闭"或“带外”管理的标准接口。它可以独立于操作系统直接从所谓的“带外”管理卡监视硬件状态。

Zabbix IPMI监控仅适用于支持IPMI的设备(HP iLO, DELL DRAC, IBM RSA, Sun SSP, 等等).

总得来说：就是监控服务器的硬件设备

![image-20221102152257672](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021522752.png)

小结：IPMI两种监控方案

方案1：直接在zabbix-web上配置

方案2：使用ipmitool工具（命令行）+自定义监控



### 自动发现与自动注册

|          | 共同点                           | 区别                                                         |
| -------- | -------------------------------- | ------------------------------------------------------------ |
| 自动发现 | 自动添加主机并关联模板，启动主机 | 1.客户端被动<br />2.使用简单<br />3.效率或性能较低<br />4.对zabbix-服务端压力较大 |
| 自动注册 | 自动添加主机并关联模板，启动主机 | 1.客户端主动<br />2.配置繁琐一点<br />3.对zabbix服务端压力较低<br />4.高并发注册机器 |
|          |                                  |                                                              |





#### 自动发现

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270030584.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270030157.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270034362.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270034725.png#alt=2022-04-27_003129)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270034719.png#alt=2022-04-27_003230)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270034712.png#alt=2022-04-27_003245)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270034709.png#alt=)

尝试把主机删掉等待发现

#### 自动注册

```shell
# 修改agent的配置文件
# 所有机子都安装agent修改配置文件

cd /etc/zabbix/

grep -Ev "#|^$" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.188.90   # 被动模式 允许的 服务器地址   zabbix-server-ip
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3
ServerActive=192.168.188.90   # 主动模式连接的服务器地址   zabbix-server-ip
Hostname=主机名    # 设置的主机名
HostMetadata=web-01   # 自定义主机元数据
HostMetadataItem=system.uname   # 使用 Key 得到的 元数据， 可以使二者 取并集，避免不必要服务器添加进来
# 这种做法也是一种 安全认证 机制
Include=/etc/zabbix/zabbix_agentd.d/*.conf

systemctl restart zabbix-agent
```

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270053569.png#alt=)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270057953.png#alt=2022-04-27_004902)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270057940.png#alt=2022-04-27_004944)

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202204270057943.png#alt=)

#### 自动化监控

```shell
自动化监控
	网络发现（被动）
		1.配置自动发现规则
		2.如果自动发现规则生效-->触发动作-->条件（）--->添加主机-->主机组--》模板
			如果发生以下情况，动作(action)将被激活:
			“Zabbix agent”服务是“up”
			system.uname(规则中定义的Zabbix agent键值)包含“Linux”
			正常运行时间为1小时（3600秒）或更长
	
	网络发现缺陷：
		1.发现太慢
		2.是轮询扫描网段
		3.如果网段中存在不同的主机-->会出现卡顿-->造成后续新增的服务器无法加入节点
		4.会导致server性能变缓
	

	自动注册（主动）
		1.安装agent
		2.推送所有的脚本以及.conf配置文件至该服务器
		3.在zabbix-server上配置动作（根据不同的主机名称）
	
	Agent主动向Server上报   （agent配置ServerActive以及Hostname）

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
自动化监控
		网络发现（被动模式）
			1.扫描效率低（一个进程扫描一个网段很麻烦）
			2.容易漏扫描（扫描的时候刚好掉线了。）
			3.如果有网段主机hang住，后面的主机容易没有被扫描到，而又开始重新扫描。
		自动注册（主动模式）
			agent自动注册到server   根据不同的主机名称关联不同的模板
			效率高
		
		主动模式和被动模式的区别（监控项）
			被动是由server去轮询查询agent监控项的值，如果有100个监控项，需要100个来回。
			主动是由agent主动发送所有的数据，比如server询问100个监控项的值，agent会一次返回给server。
```

### 主动模式与被动模式

zabbix-agent  两种运行方式    即主动模式和被动模式，默认被动模式.。
两种模式是相对 客户端 角度来说的.

1. 
被动模式：等待server来取数据，可以使用自定义key方式自定义检测数据。server端使用 zabbix_get 来主动获取agent上的数据。

2. 主动模式：agent 将不会打开端口监听， 主动推送数据给server，自定义数据使用 zabbix_sender 向服务端推送。
server使用采集器来采集此类数据.
注意，被动模式下，配置文件的:server= IP
该参数指定agent将允许谁来取数据。如果被设置为127.0.0.1，将只能在本地来获取数据了.


#### 主动模式的流程：

客户端每隔一段时间主动向服务端发起连接请求 –> 服务端收到请求,
查询客户端需要取的item信息,发送给客户端–>客户端收集数据发送服务端 –> 结束。

#### 被动模式的流程：

客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,然后结束。

在某些网络环境中，只能使用 主动或者被动模式，如下：

![](https://figure-bed-1304788733.cos.ap-guangzhou.myqcloud.com/typora/202205041508860.png#alt=image-20220504150834804)



### 分布式环境中使用 Zabbix proxy

应用场景概述：

1.有多个机房/网域/地域进行监控，分布式监控（proxy代为监控）

2.Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程，主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存，然后传输到 proxy 所属的 Zabbix server。

3.部署Zabbix proxy 是可选的，但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据，则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。

4.Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。

5.Zabbix proxy 需要使用独立的数据库。

#### 1.实验环境 

| 主机名  |       ip        |        备注         |
| :-----: | :-------------: | :-----------------: |
| zabbix1 | 192.168.245.190 | LAMP、zabbix-server |
| zabbix2 | 192.168.245.191 |    zabbix-agent     |
| zabbix3 | 192.168.245.192 |    zabbix-agent     |
| tomcat  | 192.168.245.163 |    zabbix-proxy     |

#### 2.下载zabbix-proxy

```
[root@tomcat zabbix]# yum install -y  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-proxy-mysql-4.2.2-1.el7.x86_64.rpm

```

#### 3.安装数据库

略

```
用户授权
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix_proxy@'%' identified by 'zabbix_proxy';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix_proxy@'localhost' identified by 'zabbix_proxy';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

[root@tomcat opt]# rpm -ql zabbix-proxy-mysql|grep sql.gz

/usr/share/doc/zabbix-proxy-mysql-4.2.2/schema.sql.gz

[root@tomcat opt]# zcat /usr/share/doc/zabbix-proxy-mysql-4.2.2/schema.sql.gz | mysql -uzabbix_proxy -pzabbix_proxy zabbix

```

#### 4.修改zabbix-proxy配置文件

```
[root@tomcat zabbix]# egrep -v '^#|^$' zabbix_proxy.conf
Server=192.168.245.190
Hostname=chidao
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=192.168.245.163			
DBName=zabbix
DBUser=zabbix_proxy
DBPassword=zabbix_proxy
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

[root@tomcat zabbix]# systemctl start zabbix-proxy
```

zabbix-proxy能正常启动，但日志会报错

```
[root@tomcat zabbix]# tail -f /var/log/zabbix/zabbix_proxy.log
2374:20221102:170634.714 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170635.715 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170636.718 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170637.719 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170638.721 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170639.722 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found
  2374:20221102:170640.724 cannot send proxy data to server at "192.168.245.190": proxy "chidao" not found


在zabbix-server端查看，也会报错
[root@tomcat zabbix]# tail -f /var/log/zabbix/zabbix_server.log
 20354:20221102:171003.158 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20354:20221102:171004.160 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20355:20221102:171005.162 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20355:20221102:171006.164 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20354:20221102:171007.165 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20354:20221102:171008.166 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20354:20221102:171009.168 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
 20358:20221102:171010.170 cannot parse proxy data from active proxy at "192.168.245.163": proxy "chidao" not found
```



#### 5.zabbix-web上创建代理

![image-20221102170821150](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021708256.png)

![image-20221102171405773](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021714846.png)

#### 6.修改zabbix-agent配置文件，让agent向proxy报告

```
[root@zabbix2 ~]# vim /etc/zabbix/zabbix_agentd.conf
改：Server=192.168.245.190
为：Server=192.168.245.163
若开启主动模式，也要修改，不然会报错
改：ServerActive=192.168.245.190
为：ServerActive=127.0.0.1

重启agent
[root@zabbix2 ~]# systemctl restart zabbix-agent
[root@zabbix3 ~]# systemctl restart zabbix-agent
```

#### 7.修改zabbix-web上的主机代理模式

![image-20221102171956359](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021719449.png)



#### 8.验证

![image-20221102172248566](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021722649.png)

![image-20221102172751637](https://note-1308251438.cos.ap-guangzhou.myqcloud.com/typora/202211021727729.png)





### 拓展

#### 拆分数据库

1.准备一台172.16.1.51的数据库，安装mysql(版本一致)
yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb

2.创建zabbix数据库，授权（网络授权）
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
quit

3.在旧数据库上备份库，然后恢复到新的数据库。
mysqldump -uroot 
--databases zabbix 
--single-transaction > `date +%F%H`-zabbix.sql

#远程导入数据
cat 2019-02-1815-zabbix.sql |mysql -h172.16.1.51 -uzabbix -pzabbix  zabbix

4.修改Zabbix-Server配置文件指向数据库的IP
vim /etc/zabbix/zabbix_server.conf
DBHost=172.16.1.51
systemctl restart zabbix-server

5.修改Zabbix-Web配置文件指向数据库的IP
vim /etc/zabbix/web/zabbix.conf.php
$DB['SERVER']   = '172.16.1.51';
