当前位置: 首页 > news >正文

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&#xff0c…...

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的环境变量。如果需要,可以持久化存储数据到本地目录。 以下是一个…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...