Zabbix监控服务详解+实战

目录

一、监控体系概述

1. 为什么需要监控

2. 监控目标与流程

(1)监控的目标

(2) 监控的流程

3. 监控的对象

(1)CPU监控

(2)磁盘监控

(3)内存监控

(4)网络监控

(5) 系统重要进程监控

(6)应用服务监控

(7)硬件设备监控

(8)安全监控

 (9)API接口监控

(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服务器和代理进程

(12)Web端安装

 四、Zabbix相关组件与概念

1. Zibbx的组件

(1)Zabbix Server

(2)Database Storage

(3)Web interface

(4)Agent

(5)Proxy

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

(2)Web端创建

(3)配置邮件报警通知

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

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


一、监控体系概述

1. 为什么需要监控

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

2. 监控目标与流程

(1)监控的目标

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

(2) 监控的流程

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

3. 监控的对象

(1)CPU监控

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

  • 监控单个CPU的使用情况         

(2)磁盘监控

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

  • 监控磁盘IO

  • 监控磁盘的数据读写 

(3)内存监控

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

(4)网络监控

  • 监控内网卡出入流量

  • 监控外网卡出入流量

  • 监控TCP状态 

(5) 系统重要进程监控

  • 监控系统进程状态

  • 监控系统服务进程开销

(6)应用服务监控

  • 监控应用的进程状态

  • 监控应用的端口状态

  • 监控一些个性化的需求 

(7)硬件设备监控

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

  • 监控服务器状态 

(8)安全监控

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

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

 (9)API接口监控

        在一些复杂、大型的系统中,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

(12)Web端安装

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的组件

(1)Zabbix Server

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

(2)Database Storage

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

(3)Web interface

        Web interface 是Zabbix GUI的接口

(4)Agent

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

(5)Proxy

        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

(2)Web端创建

        分为以下几步:

        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。

Zabbix是一种开源的监控系统,可以监控服务器、网络设备、应用程序等。它支持多种监控方式,包括SNMP、JMX、IPMI等,同时也支持自定义监控项。以下是一些基本的步骤来使用Zabbix监控服务器: 1. 安装Zabbix Server和Zabbix Agent 首先需要在服务器上安装Zabbix Server和Zabbix Agent。Zabbix Server是负责收集监控数据、存储数据并提供图形化界面的组件,而Zabbix Agent则是运行在被监控设备上,负责收集设备的监控数据并将其发送给Zabbix Server。 2. 配置Zabbix Server 安装完Zabbix Server后,需要进行一些基本的配置。可以通过编辑Zabbix Server的配置文件来指定数据库、Web服务器等信息。 3. 配置Zabbix Agent 安装完Zabbix Agent后,需要配置Agent以便与Zabbix Server进行通信。可以通过编辑Agent的配置文件来指定Zabbix Server的IP地址、端口号等信息。 4. 创建主机 在Zabbix Server的图形化界面中,需要创建一个主机,该主机对应被监控服务器。在创建主机时需要指定主机的名称、IP地址、监控方式等信息。 5. 创建监控项 在创建主机后,需要创建监控项来监控该主机。监控项可以是CPU使用率、内存使用率、磁盘使用率等。可以通过Zabbix Server的图形化界面来创建监控项。 6. 创建触发器 触发器是用来检测监控项的值是否达到某个阈值的。当监控项的值达到阈值时,触发器会触发一个报警。可以通过Zabbix Server的图形化界面来创建触发器。 7. 创建报警 当触发器触发时,需要发送一个报警通知。可以通过Zabbix Server的图形化界面来创建报警通知,例如发送邮件、发送短信等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小印z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值