目录

一、监控体系概述

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 mysqldNote: This output shows SysV services only and does not include nativesystemd services. SysV configuration data might be overridden by nativesystemd 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 programsPATH=$PATH:$HOME/binexport 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监控服务详解+实战相关推荐

  1. zabbix 监控过程详解

    监控过程详解 1.修改密码及中文版 按如上操作即可,选择中文以后,点击下面的update即可更新成功 为了安全起见修改密码 修改完成后同样点击更新即可. 2.创建主机及主机群组 1.定义一个主机群组 ...

  2. Zabbix监控配置详解

    文章目录 一.Zabbix简介 1.Zabbix架构 1.1.server-client架构 1.2.server-proxy-client架构 2.Zabbix的优缺点 3.Zabbix组件 4.Z ...

  3. Zabbix监控理论详解

    Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. 一.监控介绍 你用过哪些监控软件? 1.Cacti Cacti 是一套基于 PHP.MySQL.SNMP ...

  4. Zabbix监控系统详解及配置

    前言 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态.利用一个优秀的监控软件,我们可以: 通过一个友好的界面进行浏览整个网站所 ...

  5. Zabbix监控系统详解

    一.监控软件选型 1.Cacti Cacti是一套基于PHP,mysql,snmp,RRD tools开发的检测图形分析工具.Cacti是使用轮询的方式由 主服务器向设备发送数据请求来获取设备上转台数 ...

  6. pyzabbix 删除触发器_zabbix设置邮件报警, Zabbix常用Key值, zabbix触发器表达式详解, zabbix制作自己模板...

    zabbix设置邮件报警 方法一:说明此方法,会产生中文乱码问题 第一步:首先安装mailx组件并配置好能够通过三方邮箱发送邮件 yum -y install mailx 然后编辑mailx的配置文件 ...

  7. Zabbix5.0监控系统安装详解

    Zabbix5.0监控系统安装详解 一.Zabbix介绍 二.Zbbix的LAMP环境安装 1.防火墙和SElinux配置 2.安装LAMP环境 三.安装Zabbix软件 四.Zabbix的Mysql ...

  8. Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)

    转自:http://blog.csdn.net/jj198981/article/details/7605558 acpid ACPI(全称 Advanced Configuration and Po ...

  9. Windows7 个人服务详解及优化

    Windows7 个人服务详解及优化! 这是我个人根据网上提供的服务优化说明来修改的([]号里就是我自己设定的),我是以安装了卡巴斯基和金山网镖的前提下关闭一些系统自带的防火墙和安全的服务,家庭电脑使 ...

最新文章

  1. php执行dmidecode,Python:Dmidecode系统信息
  2. JAVA15.JDK15新特性.4 TextBlock
  3. java nextintln_java – 从lambda表达式引用的局部变量必须是final或者有效的final
  4. Android WebView 使用漏洞问题
  5. 如何扩大C盘空间,转帖至百度空间
  6. Linux解决忘记密码的方法
  7. 深度卷积神经网络结构演变
  8. 爬取Google Play中app的用户评论(1)
  9. 金蝶产品虚拟化解决方案
  10. BZOJ3168: [Heoi2013]钙铁锌硒维生素
  11. 我和王争学设计模式|原型模式
  12. 4 看电影--贪心算法
  13. 今日头条最新signature
  14. Java Web框架简介
  15. 怎样由标准正态分布得到任意正态分布
  16. win10搜索框不能用的解决方案
  17. ThreadLocal如何保证获取到想要线程变量
  18. MySQL数据库实验五 触发器和存储过程
  19. 贯标企业注意了!申报两化融合需要具备这八个条件!
  20. 计算机技术在数学教学中的应用,计算机技术在数学教学中的应用

热门文章

  1. 6个线上视频音频转换网站
  2. 应用程序初始化失败 0x0000142
  3. i5 11320h和i5 1135g7性能差距 i511320h和酷睿i51135g7区别
  4. 今日头条屏幕适配方案
  5. **《彩色宝石项链》
  6. efi shell的英文介绍_产品介绍英文
  7. 清华教授解密AIOps:智能运维如何落地?
  8. C/C++反三角函数使用注意事项
  9. 查看K8S集群基本信息
  10. 数组与集合有什么不同之处