zabbix监控业务数据
前言
监控系统除了监控os和数据库性能相关的指标外,业务数据也是重点监控的对象。
一线驻场的运维同学应该深有体会,每天需要向甲方或者公司反馈现场的数据情况,正常情况下一天巡检两次,早上上班后和下午下班前各一次。监控项目多而杂,如果每次都手动拷贝脚本到数据库中查询,不仅麻烦,而且效率极低,因此有必要配置一个监控系统辅助业务数据的巡检工作。
监控基本方式是通过sql查询数据库相关内容状态和信息来实现,这里以监控示例业务表为例,讲解此监控项建立的过程,希望能有一定的指导作用,方便各位根据自己的实际情况,建立监控内容。
0 环境准备
zabbix部署教程
1 业务场景模拟
示例数据:
- 数据库:sakila
- 下载地址:https://dev.mysql.com/doc/index-other.html,下载后导入数据库即可完成创建。

- EER图:

- 假设业务监控指标的需求为:获取Lethbridge城市当前的累计营业额。
sql如下:
mysql>
select sum(p.amount) amountfrom sakila.customer c,sakila.payment p,sakila.store s,sakila.address a,sakila.city ct where c.customer_id = p.customer_idand c.store_id = s.store_id and s.address_id = a.address_id and a.city_id = ct.city_id and ct.city = 'Lethbridge';+----------+
| amount |
+----------+
| 36997.53 |
+----------+
1 row in set (0.02 sec)
2 创建监控项脚本文件
此文件用于添加监控脚本。
[root@mysql001 scripts]# touch /var/lib/zabbix/percona/scripts/business_data.sh
[root@mysql001 scripts]# chmod +x /var/lib/zabbix/percona/scripts/business_data.sh
[root@mysql001 scripts]# ll /var/lib/zabbix/percona/scripts/business_data.sh
-rwxr-xr-x 1 root root 587 Feb 25 18:15 /var/lib/zabbix/percona/scripts/business_data.sh
3 修改zabbix agent配置文件
将监控项脚本文件添加到配置文件中。
[root@mysql001 scripts]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf
#添加
UserParameter=business_data[*],/var/lib/zabbix/percona/scripts/business_data.sh $1
4 监控用户赋权
给监控用户赋予sakila数据库的查询权限。
mysql> grant select on sakila.* to pmp@localhost;
Query OK, 0 rows affected (0.01 sec)mysql> show grants for pmp@localhost;
+---------------------------------------------------------------+
| Grants for pmp@localhost |
+---------------------------------------------------------------+
| GRANT PROCESS, REPLICATION CLIENT ON *.* TO `pmp`@`localhost` |
| GRANT SELECT ON `sakila`.* TO `pmp`@`localhost` |
+---------------------------------------------------------------+
2 rows in set (0.00 sec)
5 测试监控脚本
过滤前:
[mysql@mysql001 ~]$ mysql -upmp -pPmp123456. -e "select sum(p.amount) amount from sakila.customer c, sakila.payment p, sakila.store s, sakila.address a, sakila.city ct where c.customer_id = p.customer_id and c.store_id = s.store_id and s.address_id = a.address_id and a.city_id = ct.city_id and ct.city = 'Lethbridge'\G"
mysql: [Warning] Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
amount: 36997.53
过滤后:
[mysql@mysql001 ~]$ mysql -upmp -pPmp123456. -e "select sum(p.amount) amount from sakila.customer c, sakila.payment p, sakila.store s, sakila.address a, sakila.city ct where c.customer_id = p.customer_id and c.store_id = s.store_id and s.address_id = a.address_id and a.city_id = ct.city_id and ct.city = 'Lethbridge'\G" 2>/dev/null | awk 'NR==2 {print $2}'
36997.53
过滤后的结果一定要为一个数值或字符串,不能包含间隔或多列,要不然监控项不好配置。
count()等这种聚合函数无脑在脚本后加 2>/dev/null | awk ‘NR==2 {print $2}’ 就行。
命令解析:
- 2>/dev/null:去除MySQL命令行直接输入密码警告;
- awk ‘NR==2’:取第二行数据;
- awk ‘{print $2}’:取第二列数值。
6 配置监控项脚本
[root@mysql001 scripts]# vim /var/lib/zabbix/percona/scripts/business_data.sh
#添加:#!/bin/bash
#定义一个本地用户登录mysql数据库的变量
case $1 in#case1: Lethbridge_AmountLethbridge_Amount)mysql -upmp -pPmp123456. -e "select sum(p.amount) amount from sakila.customer c, sakila.payment p, sakila.store s, sakila.address a, sakila.city ct where c.customer_id = p.customer_id and c.store_id = s.store_id and s.address_id = a.address_id and a.city_id = ct.city_id and ct.city = 'Lethbridge'\G" 2>/dev/null | awk 'NR==2 {print $2}';;#case2: number of actorsNumber_of_Actors)mysql -upmp -pPmp123456. -e "select count(*) from sakila.actor\G" 2>/dev/null | awk 'NR==2 {print $2}';;
esac
此脚本不仅可以添加mysql数据库的监控,os和oracle等其他服务的监控都是可以添加的,只需要往下添加case选项就可以。
7 重启zabbix代理
[root@mysql001 scripts]# systemctl restart zabbix_agentd
[root@mysql001 scripts]# systemctl status zabbix_agentd
● zabbix_agentd.service - SYSV: Zabbix Monitoring AgentLoaded: loaded (/etc/rc.d/init.d/zabbix_agentd; bad; vendor preset: disabled)Active: active (running) since Sun 2024-02-25 21:04:38 CST; 9s agoDocs: man:systemd-sysv-generator(8)Process: 12525 ExecStop=/etc/rc.d/init.d/zabbix_agentd stop (code=exited, status=0/SUCCESS)Process: 12539 ExecStart=/etc/rc.d/init.d/zabbix_agentd start (code=exited, status=0/SUCCESS)Main PID: 12548 (zabbix_agentd)CGroup: /system.slice/zabbix_agentd.service├─12548 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf├─12549 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]├─12550 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]├─12551 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]├─12552 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]└─12553 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]Feb 25 21:04:38 mysql001 systemd[1]: Starting SYSV: Zabbix Monitoring Agent...
Feb 25 21:04:38 mysql001 zabbix_agentd[12539]: Starting Zabbix Agent: [ OK ]
Feb 25 21:04:38 mysql001 systemd[1]: Started SYSV: Zabbix Monitoring Agent.
只需要重启一次即可,以后脚本文件business_data.sh添加监控项不需要再重启zabbix代理。
8 测试
到zabbix server的bin目录下执行zabbix_get测试:
[root@zabbix6 bin]# ./zabbix_get -s 192.168.131.99 -k business_data[Lethbridge_Amount]
36997.53
测试成功!!
9 创建主机
登录zabbix server Web页面,在配置->主机->创建主机下添加主机:

配置主机名、群组和zabbix代理端ip。
10 添加监控项
配置监控项名称、键值、数据类型和更新间隔。

注意:此处设置更新间隔为1s,如果配置的监控项目比较多,且数据库的压力比较大,可以根据实际环境适当调大更新间隔。
监控项报错,错误信息:

数据为浮点型,监控项配置了数值型。
修改监控项配置:

10 结果呈现

至此,完成此监控项添加。
【关联文章】
(1)zabbix部署教程
(2)zabbix监控MySQL
(3)PMP自定义监控项
(4)zabbix监控业务数据
相关文章:
zabbix监控业务数据
前言 监控系统除了监控os和数据库性能相关的指标外,业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会,每天需要向甲方或者公司反馈现场的数据情况,正常情况下一天巡检两次,早上上班后和下午下班前各一次。监控项目…...
access数据库泄露与IIS短文件名利用
access数据库 Microsoft Office Access是微软把 数据库引擎 的图形用户界面和 软件开发工具 结合在一起的一个 数据库管理系统 它的数据库是没有库名的,都是表名。 (借用别的up的图)是不是感觉有点像excel access数据库的后缀是.mdb access数据库泄露漏洞 如果…...
MySQL 篇-深入了解 DDL 语言(一)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 MySQL 说明 2.0 DDL 语言 2.1 DDL 语言 - 定义数据库 2.1.1 创建数据库操作 2.1.2 查看数据库操作 2.1.3 使用数据库操作 2.1.4 删除数据库操作 2.2 DDL 语言 …...
MT8788|MTK8788安卓核心板参数_4G联发科MTK模块
MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台,具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器,包括4个Cortex A73和4个Coretex A53,主频最高可达2.0GHZ。标配内存为4GB64GB,…...
EXCEL 在列不同单元格之间插入N个空行
1、第一步数据,要求在每个数字之间之间插入3个空格 2、拿数据个数*(要插入空格数1) 19*4 3、填充 4、复制数据到D列 5、下拉数据,选择复制填充这样1-19就会重复4次 6、全选数据D列排序,这样即完成了插入空格 以…...
Linux快速修改ip地址
Linux修改IP配置 一 、查找ip配置文件 ifcfg-ens33二、编辑 vi ifcfg-ens33文件三、重启网络或者重启系统 一 、查找ip配置文件 ifcfg-ens33 cd /etc/sysconfig/network-scripts/ls //查看network-scripts文件夹下面的文件二、编辑 vi ifcfg-ens33文件 vi ifcfg-ens33注意&…...
采用遗传算法搜索MAC效率最高的矩阵乘规模
如何采用遗传算法搜索MAC效率最高的矩阵乘规模 具体实现MAC效率评估代码(eval.py)遗传算法实现 本文介绍了采用遗传算法搜索MAC效率最高的矩阵乘规模 需求背景: 一些AI加速卡在做矩阵乘时,因硬件或软件的约束,并不是规模越大MAC效率越高在测试AI加卡的实际算力时,采用MAC效率最…...
流计算之Flink
文章目录 概要有界无界流集群JobManagerTaskManagersTasks 和算子链Task Slots 和资源 小结 概要 Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模…...
【Linux基础】Linux自动化构建工具make/makefile
背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后…...
问题慢慢解决-通过android emulator调试android kernel-内核条件断点遇到的问题和临时解决方案
起因 在摸索到这个方案之后,mac m1调试aarch64 android kernel最终方案,就准备调试内核了,预备下断点的地方是 b binder_poll b ep_ptable_queue_proc b remove_wait_queue但是由于是android系统,上面三个函数会被频繁的触发&am…...
社区发现之标签传播算法(LPA)
在Graph领域,社区发现(Community detection)是一个非常热门且广泛的话题,后面会写一个系列,该问题实际上是从子图分割的问题演变而来,在真实的社交网络中,有些用户之间连接非常紧密,有些用户之间的连接较为稀疏,连接紧密的用户群体可以看做一个社区,在风控问题中,可…...
【前端素材】推荐优质后台管理系统Dashy平台模板(附源码)
一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…...
MFC 配置Halcon
1.新建一个MFC 工程,Halcon 为64位,所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…...
xss-跨站脚本攻击漏洞
前备知识: Cookie和Session是Web开发中用于维持用户状态、跟踪用户会话的核心技术,它们的主要目的是在无状态的HTTP协议基础上实现有状态的用户交互。 **Cookie**: - Cookie是一种由服务器发送到客户端(通常是用户的浏览器&#x…...
在MFC对话框中嵌入web网页时事件失效问题
2010-04-20 日志 在MFC对话框中嵌入web网页时,网页初始化中添加事件无效 document.body.onkeydown function () {//onkeydown"keydownbody()" 不能激发alert(event.keyCode);if(event.keyCode 27)//VK_ESCAPE //String.fromcharcode(A);{if (external…...
【Leetcode】235. 二叉搜索树的最近公共祖先
文章目录 题目思路代码结果 题目 题目链接 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度…...
python 基础语法及保留字
编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*-上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语…...
Parade Series - NVR Stat
获取文件夹占用空间信息 DIR %NVRHOME% /W /SDIR %NVRHOME% /s | tail -n2 | sed s/,//g | awk {if(NR1){key"Used";}else{key"Free";};sum$3/(1024*1024);unit"MB";if(sum^>1024){sumsum/1024;unit"GB";}printf("{\"Ty…...
【shell脚本实战学习笔记】#2
场景描述 你负责一个Web应用的运维工作,该应用部署在一组Linux服务器上。你需要编写一个Shell脚本来自动化以下任务: 检查Web服务器进程: 确保Web服务器(例如Apache或Nginx)正常运行。如果没有运行,则尝试…...
docker 安装nacos 一脚shell脚本
要创建一个用于安装Nacos的Docker的Shell脚本,你可以按照以下步骤进行。这个脚本会执行以下操作: 拉取Nacos的Docker镜像。创建一个Docker容器并映射必要的端口。设置Nacos的环境变量。如果需要,可以持久化存储数据到本地目录。 以下是一个…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
