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监控业务数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702746.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】指针初阶

正文开始之前,我们要记住一个东西就是:地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

数据结构:链表的冒泡排序

法一:修改指针指向 //法二 void maopao_link(link_p H){if(HNULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tailNULL;while(H->next->next!tail){link_p pH;link_p qH->next;while(q…

mysql的隔离级别,和实现

参考链接 https://xiaolincoding.com/mysql/transaction/mvcc.html#%E4%BA%8B%E5%8A%A1%E7%9A%84%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB%E6%9C%89%E5%93%AA%E4%BA%9B 事务特性(ACID) 原子性(Atomicity): 事务是原子的&…

CUDA C:核函数、主机函数、设备函数

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 核函数(Kernel Function)指的是在主机(CPU)调用(某些情况下也可以在设备调用),在设备(GPU)上执行的函数,使用__global__…

YOLOv8改进 | Conv篇 | 全新的SOATA轻量化下采样操作ADown(参数量下降百分之二十,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的YOLOv8的项目,经过实验我发现该卷积模块(作为下采样模块)…

CentOS 6.5安装配置SVN服务器

​项目要用SVN来管理,所以需要给服务器安装SVN服务器端。 这里仅使用svn://协议来访问SVN服务器,不启用sasl。 客户端系统都是Windows,使用起来很简单,这里就不用说了。 本文仅针对1.6.11版本。在1.7.14版本上测试时,…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

Open3D 点云法向量计算与可视化 (25)

Open3D 点云法向量计算与可视化 (25) 一、算法原理二、算法实现三、可视化显示和长度调节一、算法原理 通常计算点云的法向量可以使用以下两种常见的方法: 最小二乘法(Least Squares Method):该方法通过拟合局部表面的平面来计算法向量。对于给定点周围的邻域,可以通过…

故障排除:Failed to load SQL Modules into database Cluster

PostgreSQL 安装和故障排除 重新安装前的准备工作 在重新安装 PostgreSQL 之前,确保完成以下步骤: 重新卸载 PostgreSQL 并重启电脑。 删除以下目录: C:\Program Files\PostgreSQL\13C:\Users\admin\AppData\Roaming\pgadmin 重启安装过…

Vue2:router-link的replace属性

一、情景说明 我们在用浏览器访问网站的时候 知道浏览器会记录访问的历史路径,从而,可以退回到之前的页面 那么,Vue项目中的路由组件,通过router-link跳转,也是可以退回的 这里,我们用replace来屏蔽退回的…

【计算机网络】传输层——TCP和UDP详解

文章目录 一. TCP和UDP简介二. UDP 协议详解1. UDP报文格式2. UDP的使用场景 三. TCP 协议详解1. TCP报文格式2. TCP协议的重要机制确认应答(保证可靠传输的最核心机制)超时重传连接管理(三次握手、四次挥手)!&#xf…

内网设备如何在互联网上能访问

应用场景 设备安装到了客户现场,如果要调试设备,当前的处理方式是技术人员出差到客户现场、让客户开通VPN、让客户安装远程工具,远程到客户计算机上进行调试等方法。人不在家里想远程家里的电脑,当前处理方式就是在家里电脑上安装…

【信息提取】FindSomething 浏览器插件

下载地址 FindSomething 浏览器插件 概述 在网页的源代码或js中找到一些有趣的东西 FindSomething 用于快速在网页的html源码或js代码中提取一些有趣的信息,包括可能请求的资源、接口的url,可能请求的ip和域名,泄漏的证件号、手机号、邮箱…

Java多线程面试题(一)

Java多线程面试题(一) 前言1、在 Java 中守护线程和本地线程区别?2、线程与进程的区别?3、什么是多线程中的上下文切换?4、死锁与活锁的区别,死锁与饥饿的区别?5、Java 中用到的线程调度算法是什…

【Android12】Monkey压力测试源码执行流程分析

Monkey压力测试源码执行流程分析 Monkey是Android提供的用于应用程序自动化测试、压力测试的测试工具。 其源码路径(Android12)位于 /development/cmds/monkey/部署形式为Java Binary # development/cmds/monkey/Android.bp // Copyright 2008 The Android Open Source Proj…

Leetcoder Day21| 回溯理论基础+组合

语言:Java/Go 回溯理论基础 回溯函数也就是递归函数; 所有回溯法的问题都可以抽象为树形结构; 回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。 适用的题…

深度学习基础(一)神经网络基本原理

之前的章节我们初步介绍了机器学习相关基础知识,目录如下: 机器学习基础(一)理解机器学习的本质-CSDN博客 机器学习基础(二)监督与非监督学习-CSDN博客 机器学习基础(四)非监督学…

深入理解计算机系统学习笔记

2.3整数运算 有时候会发现两个正数相加会得出一个负数&#xff0c;而比较表达式x<y和比较表达式x-y<0会产生不同的结果。这些属性是由于计算机运算的有限性造成的。理解计算机运算的细微之处能够帮助程序员编写更可靠的代码。 2 .3. 1 无符号加法 原理&#xff1a; 在正…

前端学习---- 前端HTML基本元素的介绍

一&#xff1a;显示相关的HTML基础知识 1. 推荐的前端编写工具 2. VScode的html速写规则&#xff08;从a标签开始再用&#xff09; ①、&#xff01;&#xff1a;代表生成html的基本框架元素 ②、html元素&#xff1a;直接书写html,不需要加<>,按回车会自动生成 ③、{}…

Java之线程池:线程池常用类、接口;线程池执行流程,配置参数,分类

线程池 什么是线程池&#xff1f; 线程池&#xff1a;一种基于池化思想管理和使用线程的机制 线程池常用类和接口 ExecutorService接口&#xff1a;进行线程池的操作访问Executors类&#xff1a;创建线程池的工具类ThreadPoolExecutor及其子类&#xff1a;封装线程池的核心参…