Zabbix监控服务详解+实战

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一、监控体系概述

1. 为什么需要监控

2. 监控目标与流程

1监控的目标

2 监控的流程

3. 监控的对象

1CPU监控

2磁盘监控

3内存监控

4网络监控

5 系统重要进程监控

6应用服务监控

7硬件设备监控

8安全监控

 9API接口监控

10业务监控 

二、Zabbix 简介

1. 概述

2. Zabbix 的功能

1数据收集

2数据存储

3灵活的阈值定义

4可配置的报警

5实时的而可视化图形展示

3. Zabbix 的工作原理

三、Zabbix 服务的部署与配置

1. 安装基础环境

1安装MySQL

2安装 Apache

3安装 PHP

2. 部署 Zabbix

1安装 Zabbix 存储库

2安装Zabbix服务器前端代理

3安装 Zabbix 前端

4编辑文件 /etc/yum.repos.d/zabbix.repo

5安装 Zabbix 前端包

6初始化数据库

7导入sql数据

8导入数据库架构后禁用log_bin_trust_function_creators选项 

9为 Zabbix 服务器配置数据库

10为 Zabbix 前端配置 PHP

 11启动Zabbix服务器和代理进程

12Web端安装

 四、Zabbix相关组件与概念

1. Zibbx的组件

1Zabbix Server

2Database Storage

3Web interface

4Agent

5Proxy

2. Zabbix 重要概念简介

1主机host

2主机组host group

3监控项item

4触发器trigger

5事件event

6动作action

7媒介media

8模板template

9通知notification

10报警升级escalation

11远程命令remote command

五、Zabbix监控实战操作

1. Agent端的部署与配置

1部署Agent端

2修改配置文件

3启动 Agent 服务

2. Web 端添加被监控主机

1创建主机

2填写主机信息

3选择模板 

4查看主机列表

3. 绘制图形展示

1创建聚合图形

2解决乱码问题

4. 创建自定义监控内容(key)

1命令行创建key

2Web端创建

3配置邮件报警通知

5. 自动发现agent属于被动模式

6. 自动注册agent属于主动模式


一、监控体系概述

1. 为什么需要监控

        服务器系统安装完成部署完所需的服务之后随着数据量、访问量的增大随之带来的就是故障问题为了快速有效、及时的发现问题并第一时间得到报警信息就引入了监控服务。对主机的监控、对系统的监控、对服务的监控都是生产环境的日常需求。

2. 监控目标与流程

1监控的目标

  • 对系统、服务或平台实行不间断监控
  • 实时反映系统、服务或平台的运行状态信息
  • 提前预知可能存在的故障风险
  • 实现故障预警报警功能

2 监控的流程

  • 配置、收集监控数据
  • 存储监控数据
  • 分析、展示监控数据
  • 阈值报警短信报警、微信报警、邮件报警等

3. 监控的对象

1CPU监控

  • 监控CPU整体使用情况用户态与内核态、空闲率等

  • 监控单个CPU的使用情况         

2磁盘监控

  • 监控磁盘容量分区使用量已用和可用

  • 监控磁盘IO

  • 监控磁盘的数据读写 

3内存监控

        监控内存使用量可用、已用

4网络监控

  • 监控内网卡出入流量

  • 监控外网卡出入流量

  • 监控TCP状态 

5 系统重要进程监控

  • 监控系统进程状态

  • 监控系统服务进程开销

6应用服务监控

  • 监控应用的进程状态

  • 监控应用的端口状态

  • 监控一些个性化的需求 

7硬件设备监控

  • 监控网络设备路由器、交换机、网关设备等

  • 监控服务器状态 

8安全监控

        安全监控在生产环境中用的比较多一般会使用第三方监控产品主要监控内容

  • 恶意攻击
  • 程序漏洞
  • 异常流量 

 9API接口监控

        在一些复杂、大型的系统中API的调用非常频繁因此对API接口的监控非常重要重点是监控其GET、POST、PUT等请求的相关指标主要监控内容如下

  • API接口的可用性
  • API接口的正确率
  • API接口的响应时间

10业务监控 

        对于一些电商平台业务监控是重中之重。

二、Zabbix 简介

1. 概述

        Zabbix由Alexei Vladishev 创建目前由Zabbix SIA开发与维护。

        Zabbix的功能非常强大能保证服务器系统安全、稳定的运行。Zabbix提供灵活的报警机制可以使系统管理员能够及时得知故障并快速定位。Zabbix还可以提供友好的数据可视化功能使你关心的数据和指标一目了然。

        Zabbix 由两部分组成Zabbix Server 与可选组件 Zabbix Agent。

  • Zabbix Server通过收集Agent传递过来的数据写入数据库MySQL等最终通过PHP+Apache在web页面进行展示。
  • Zabbix Agent通过被监控主机安装Agent的方式来采集数据需要监控的数据。

2. Zabbix 的功能

1数据收集

  • 具有可用性和性能检查功能

  • 支持SNMP捕获和轮询 

2数据存储

  • 可以存储历史数据

  • 可以存储配置数据

  • 可以存储监控数据 

3灵活的阈值定义

        用户可以非常灵活的定义监控阈值Zabbix 也成为触发器。

4可配置的报警

        如短信、微信、邮件报警。 

5实时的而可视化图形展示

  • 使用自带的图形工具实时展示被监控的项目

  • 具有多种Web可视化功能选择

3. Zabbix 的工作原理

        Zabbix 监控系统运行的大概流程如下。

        Zabbix Agent 安装在被监控的主机上负责收集需要的各项数据并将数据发送到Zabbix Server端Zabbix Server 将传递过来的数据存储到数据库中Zabbix Web端根据数据来展示和绘图。

三、Zabbix 服务的部署与配置

1. 安装基础环境

1安装MySQL

将安装包放在 /download 目录下

#解压
[root@zy-host download]# tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

#改名
[root@zy-host local]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql

#创建用户组
[root@zy-host local]# groupadd mysql
[root@zy-host local]# useradd -g mysql mysql

#创建data目录
[root@zy-host msyql]# mkdir data

#修改用户组权限
[root@zy-host local]#  chown -R mysql:mysql ./

#创建my.cnf文件
[root@zy-host local]# touch /etc/my.cnf

#写入内容
[root@zy-host local]# vim /etc/my.cnf
[root@zy-host local]# cat /etc/my.cnf 
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

#创建目录 修改权限
[root@zy-host local]# mkdir /var/lib/mysql
[root@zy-host local]# chmod 777 /var/lib/mysql

#正式安装
[root@zy-host mysql]# cd /usr/local/mysql/
[root@zy-host mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
2023-01-10T05:14:37.706178Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-01-10T05:14:38.817683Z 0 [Warning] InnoDB: New log files created, LSN=45790
2023-01-10T05:14:38.940767Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2023-01-10T05:14:39.013507Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: ae825853-90a5-11ed-aee7-00163e0a8efb.
2023-01-10T05:14:39.026483Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2023-01-10T05:14:39.026961Z 1 [Note] A temporary password is generated for root@localhost: aq4BxwQUat/C

#复制启动脚本到资源目录
[root@zy-host mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld

#修改mysqld内容 修改其 basedir 和 datadir 为实际对应⽬录
[root@zy-host mysql]# vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

#⾸先增加 mysqld 服务控制脚本执⾏权限
[root@zy-host mysql]# chmod +x /etc/init.d/mysqld

#同时将 mysqld 服务加⼊到系统服务
[root@zy-host mysql]# chkconfig --add mysqld

#最后检查 mysqld 服务是否已经⽣效
[root@zy-host mysql]# chkconfig --list mysqld

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off


#启动服务  如果启动不起来 检查是否有已经启动的
[root@zy-host mysql]# service mysqld start
Starting MySQL. SUCCESS! 

#加入环境变量 最后一行
[root@zy-host mysql]# vim ~/.bash_profile 
[root@zy-host mysql]# cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export PATH=$PATH:/usr/local/mysql/bin

#刷新文件
[root@zy-host mysql]# source ~/.bash_profile

#登录MySQL
[root@zy-host mysql]# mysql -u root -p

#修改密码
mysql> alter user user() identified by "123456";
mysql> flush privileges;

[root@zy-host ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper

2安装 Apache

[root@zy-host ~]# yum install httpd -y

3安装 PHP

[root@zy-host ~]# yum install php -y

2. 部署 Zabbix

官方文档下载并安装 Zabbix 5.0 LTS for CentOS 7、MySQL、Apache

1安装 Zabbix 存储库

[root@zy-host ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zy-host ~]# yum clean all

2安装Zabbix服务器前端代理

[root@zy-host ~]# yum install zabbix-server-mysql zabbix-agent

3安装 Zabbix 前端

[root@zy-host ~]# yum install centos-release-scl

4编辑文件 /etc/yum.repos.d/zabbix.repo

[root@zy-host ~]# vim /etc/yum.repos.d/zabbix.repo

5安装 Zabbix 前端包

[root@zy-host ~]# yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

6初始化数据库

#建库创建用户并分配权限刷新权限
# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'Zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

7导入sql数据

[root@zy-host ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

 可以看到表已经导入进去 

8导入数据库架构后禁用log_bin_trust_function_creators选项 

# mysql -uroot -p
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

9为 Zabbix 服务器配置数据库

编辑文件 /etc/zabbix/zabbix_server.conf在最后一行加入

DBPassword=password

10为 Zabbix 前端配置 PHP

编辑文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 取消注释并为您设置正确的时区

 11启动Zabbix服务器和代理进程

[root@zy-host ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@zy-host ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

12Web端安装

1. 打开浏览器访问 http://服务器IP/zabbix  即可进入安装界面

 2. 点击下一步进入依赖组件检测界面

 3. 检测完成后点击下一步 进入数据库信息填写界面

 注意1

这里如果提示连接不上是因为没有在mysql里开启远程主机登录

 需要进入数据库执行以下命令

mysql>  use mysql;
mysql> update user set user.Host='%' where user.User='zabbix';
mysql> flush privileges;

注意2

 如果提示错误The Zabbix database version does not match current requirements. Your database version: 5020000. 

进入数据库执行以下命令

mysql> use zabbix;
mysql> update dbversion set mandatory=4000000;
mysql> flush privileges;

4. 填写完之后继续点击下一步进入Zibbix Server配置界面 

 5. 点击下一步进入安装配置汇总界面

6. 点击下一步进入安装界面

7.  点击完成按钮进入 Zibbx Web 登录界面

默认用户为 Admin密码为 zabbix

将界面改为中文

 至此整个安装过程结束。

 四、Zabbix相关组件与概念

1. Zibbx的组件

1Zabbix Server

        Zabbix Server负责接收Agent发送的数据及报告信息并负责组织所有的配置、统计数据、操作数据。

2Database Storage

        Database Storage用于存储所有的配置信息以及收集的数据信息。

3Web interface

        Web interface 是Zabbix GUI的接口

4Agent

        Agent 安装部署在被监控的主机上负责接收被监控主机的数据并发往 Zabbix Server端或Proxy端。

5Proxy

        Proxy是一个可选组件用在分布式监控环境中负责代理Zabbix Server收集被监控主机的相关监控数据并统一发往 Zabbix Server端。

2. Zabbix 重要概念简介

1主机host

        主机是指被监控的网络设备可以是设备的IP地址也可以是设备的主机名。

2主机组host group

        主机组是主机的逻辑容器包含主机和模板但在同一个组内的主机和模板之间不能互链接主机组通常用于给指定用户或用户组分配指定监控权限。

3监控项item

        监控项是一个指定监控指标的相关数据这些数据来自于被监控的对象。监控项是Zabbix进行数据收集的核心组件对于特定的某个监控对象来讲每个监控项都由“key”标识。

4触发器trigger

        触发器是一个表达式用于评估被监控对象指定的item内接收到的数据是否在指定的合理范围内也就是阈值。当接受的数据值大于指定阈值时触发器的状态将从 OK 变为 Problem。当数据恢复到合理范围状态又会变回 OK。

5事件event

        Agent宕机重新上线自动注册触发器状态改变都属于事件。

6动作action

        动作时对于指定的事件预先定义的处理方法例如发送通知或报警邮件。

7媒介media

        媒介是发送通知或报警信息的介质如短信、微信、邮件。

8模板template

        模板是用于快速配置被监控主机的预设条目的集合通常包括 item、trigger、graph、screen等。

9通知notification

        通知是通过指定的媒介向用户发送相关的事件的信息。

10报警升级escalation

        报警升级是指发送报警或执行远程命令的自定义文案例如每隔30秒发送一次报警信息一共发送5次。

11远程命令remote command

        远程命令是自定义的命令在被监控的主机处于某个特定的条件时执行此命令。

五、Zabbix监控实战操作

1. Agent端的部署与配置

1部署Agent端

[root@node1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@node1 ~]# yum clean all
[root@node1 ~]# yum install zabbix-agent -y

2修改配置文件

 在文件末尾添加以下内容

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=39.107.232.89           #Zabbix服务端IP
ServerActive=39.107.232.89     #Zabbix服务端IP
Hostname=node1                 #客户端主机名

3启动 Agent 服务

[root@node1 ~]# systemctl start zabbix-agent

2. Web 端添加被监控主机

1创建主机

登录Web端页面点击 配置-主机-创建主机

2填写主机信息

填写要监控的主机信息后点击添加 

3选择模板 

 4查看主机列表

3. 绘制图形展示

1创建聚合图形

在Web端界面选择 检测——聚合图形进入创建图形初始界面

点击创建聚合图形

 点击右上角创建聚合图形

 创建好如图所示

2解决乱码问题

[root@zy-host ~]# yum -y install wqy-microhei-fonts
[root@zy-host ~]# \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

 可以看到乱码问题已解决

4. 创建自定义监控内容(key)

需求限制登录人数不超过3个超过3个就发出报警信息。

1命令行创建key

        1服务端安装 zabbix-get

#安装zabbix-get用于服务端查看客户端信息
[root@zy-host ~]# yum install zabbix-get -y

         2自定义key需要执行的 linux 命令

该命令含义是查看登录当前主机的用户有几个

#查看当前有谁登录了这台主机
[root@node1 ~]# who
root     pts/0        2023-01-11 10:08 (116.179.246.116)
root     pts/1        2023-01-11 10:39 (116.179.246.116)
#查看登录这台主机的人数
[root@node1 ~]# who | wc -l
2

        3在node1主机上创建自定义key

[root@node1 ~]# cd /etc/zabbix/zabbix_agentd.d/

#在配置文件中创建自定义key为 login.user
[root@node1 zabbix_agentd.d]# vim user_login.conf
UserParameter=login.user,who | wc -l

#重启agent服务
[root@node1 zabbix_agentd.d]# systemctl restart zabbix-agent

         4在服务端检查key是否可用

[root@zy-host ~]# zabbix_get -s '47.104.160.180' -p 10050 -k 'login.user'
3

2Web端创建

        分为以下几步

        1创建模板

找到创建的模板

        2创建应用集就像是文件夹里面放入一堆监控项

         3创建监控项自定义 item

        4创建触发器

当监控项获取到值时和触发器比较判断是否报警

        5创建图形展示

        6将具体主机与该模板关联

        这里将node1主机与该模板关联

         7查看图形

        查看node1主机的图形

        8触发报警

        在node1主机上登录4个用户查看仪表板是否报警 

        可以看到在仪表盘以及出现提示

 


3配置邮件报警通知

          1登录网易邮箱获取授权码

         2添加报警媒介类型

         3点击用户设置添加报警媒介

         4启用动作

         这样一来如果有问题就会触发这个动作给管理员发送邮件。

5. 自动发现agent属于被动模式

        Zabbix server主动的去发现所有的客户端然后将客户端的信息登记在服务端的机器上。缺点时 server 端压力比较大。

6. 自动注册agent属于主动模式

        Zabbix agent 主动上报自己的信息发给 zabbix-server。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6