使用Grafana与MySQL监控监控网络延迟
文章目录
- 前言
- python程序
- 使用Grafana
- 步骤1:安装和配置 Grafana
- 步骤2:配置 Grafana 数据源
- 步骤3:创建 Grafana 仪表盘
- 步骤4:将 Grafana 仪表盘嵌入到博客中
前言
在网络应用中,网络延迟是一个重要的指标,它影响着用户体验和系统性能。本文将介绍如何使用Python编写一个程序来监控网络延迟(Ping)并将结果存储到MySQL数据库中。然后,我们将使用Grafana来创建仪表盘,实时展示网络延迟的数据。
当监控网络连接并将数据存储到数据库后,我们可以使用 Grafana 这样的工具来可视化数据并创建仪表盘,以便更直观地查看和分析监控结果。以下是将 Grafana 与上述代码结合使用的步骤:
python程序
当我们需要监控网络连接并记录 Ping 响应时间、丢包率和抖动等指标时,可以使用 Python 编程语言和一些相关库来实现。下面是一个示例代码,用于监控 Ping 并将数据存储到数据库中。
首先,确保已安装以下库:
- ping3:用于执行 Ping 操作并获取响应时间。
- pymysql:用于与 MySQL 数据库建立连接和执行 SQL 操作。
- pytz:用于处理时区转换。
然后,创建一个配置文件 ping_config.ini,其中包含以下内容:
[ping]
target_address = 目标地址
将 target_address 替换为要 Ping 的目标地址。
接下来,将以下代码保存为 Python 脚本文件(例如,ping_monitor.py):
import ping3
import time
import statistics
from configparser import ConfigParser
import pymysql
from datetime import datetime
import pytz# 计算平均绝对偏差(Mean Absolute Deviation)
def calculate_mad(data):mean = sum(data) / len(data)deviations = [abs(x - mean) for x in data]mad = sum(deviations) / len(deviations)return mad# 监控 Ping 并将数据存储到数据库
def monitor_ping(config_file):# 读取配置文件config = ConfigParser()config.read(config_file)target_address = config.get('ping', 'target_address')# 建立与数据库的连接conn = pymysql.connect(user='用户名', password='密码', host='数据库主机', database='数据库名')cursor = conn.cursor()min_rtt = float('inf')max_rtt = 0total_rtt = 0rtt_values = []sent_packets = 0received_packets = 0while True:result = ping3.ping(target_address, size=64)sent_packets += 1if result is not None:result = result * 1000print(f"往返时间: {result}ms")min_rtt = min(min_rtt, result)max_rtt = max(max_rtt, result)total_rtt += resultreceived_packets += 1# 抖动rtt_values.append(result)else:print("请求超时")if received_packets > 0:avg_rtt = total_rtt / received_packetsprint(f"最小值: {min_rtt}ms || 最大值: {max_rtt}ms || 平均值: {avg_rtt}ms")packet_loss = (sent_packets - received_packets) / sent_packets * 100print(f"丢包率: {packet_loss}%")jitter = calculate_mad(rtt_values)print(f"抖动: {jitter}ms")# 将指标插入数据库表insert_query = "INSERT INTO ping_data (timestamp, target_address, min_rtt, max_rtt, avg_rtt, jitter, packet_loss, rtt) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"# 获取中国上海的时区对象shanghai_tz = pytz.timezone('Asia/Shanghai')# 获取当前时间current_time = datetime.now(shanghai_tz)# 将时间格式化为字符串,并应用于插入语句中的 timestamp 值insert_values = (current_time.strftime('%Y-%m-%d %H:%M:%S'), target_address, min_rtt, max_rtt, avg_rtt, jitter, packet_loss, result)# 执行插入操作cursor.execute(insert_query, insert_values)conn.commit()time.sleep(1) # 每秒执行一次 Ping 操作# 配置文件路径
config_file = 'ping_config.ini'# 开始监控 Ping
monitor_ping(config_file)
使用时,确保将以下内容替换为正确的值:
用户名:数据库用户名。密码:数据库密码。数据库主机:数据库主机地址。数据库名:要使用的数据库名称。
运行脚本后,它将每秒执行一次 Ping 操作,并将结果记录到数据库表 ping_data 中。表结构可以根据你的需求进行创建,包含以下字段:
timestamp:时间戳,记录插入数据的时间。target_address:目标地址,记录 Ping 的目标地址。min_rtt:最小往返时间。max_rtt:最大往返时间。avg_rtt:平均往返时间。jitter:抖动。packet_loss:丢包率。rtt:Ping 的往返时间。
通过运行该脚本,你将获得每次 Ping 的往返时间、最小值、最大值、平均值、抖动和丢包率等信息,并将其存储在数据库中。你可以根据需要自定义数据库表的结构,
使用Grafana
步骤1:安装和配置 Grafana
- 下载并安装 Grafana,你可以从 Grafana 官方网站(https://grafana.com)获取适合你操作系统的安装程序。
- 启动 Grafana 服务。
- 在 Web 浏览器中访问 Grafana 的地址(默认为 http://localhost:3000)。
- 使用默认的用户名和密码(admin/admin)登录 Grafana。
- 在首次登录时,将提示修改密码。按照指示进行操作。
步骤2:配置 Grafana 数据源
- 在 Grafana 中,点击左侧导航栏中的 “Configuration”(配置)图标,然后选择 “Data Sources”(数据源)。
- 点击 “Add data source”(添加数据源)按钮。
- 选择适合你的数据库类型(如 MySQL)作为数据源类型。
- 根据你的数据库配置填写相关字段,如主机地址、用户名、密码和数据库名。
- 点击 “Save & Test”(保存并测试)按钮,确保连接成功。
步骤3:创建 Grafana 仪表盘
- 在 Grafana 中,点击左侧导航栏中的 “Create”(创建)图标,然后选择 “Dashboard”(仪表盘)。
- 点击 “Add new panel”(添加新面板)按钮。
- 在 “Visualization”(可视化)选项卡中,选择适当的图表类型,如折线图或仪表盘。
- 在 “Queries”(查询)选项卡中,选择之前配置的数据源,并编写查询语句以获取所需的数据。
- 在 “Panel”(面板)选项卡中,根据你的需求设置图表的标题、样式和其他属性。
- 点击 “Apply”(应用)按钮,保存仪表盘设置。
步骤4:将 Grafana 仪表盘嵌入到博客中
- 在 Grafana 中打开你创建的仪表盘。
- 点击右上角的 “Share”(分享)按钮。
- 在 “Share panel”(分享面板)选项卡中,选择适当的分享选项,如 “Direct link with time range”(带有时间范围的直接链接)。
- 复制生成的链接地址。
- 在你的博客文章中插入该链接地址,以嵌入 Grafana 仪表盘。
完成上述步骤后,你将能够在 Grafana 中创建自定义的仪表盘,并将其嵌入到博客文章中,以便读者可以直接查看监控结果的可视化图表。
相关文章:
使用Grafana与MySQL监控监控网络延迟
文章目录 前言python程序使用Grafana步骤1:安装和配置 Grafana步骤2:配置 Grafana 数据源步骤3:创建 Grafana 仪表盘步骤4:将 Grafana 仪表盘嵌入到博客中 前言 在网络应用中,网络延迟是一个重要的指标,它…...
互联网常见职称
1、管理层 CEO – Chief Executive Officer 首席执行官 VP – Vice President 副总裁 HRD – Humen Resource Director 人力资源总监 OD – Operations Director 运营总监 MD – Marketing Director 市场总监 GM – General Manager 总经理 PM – Production Manager 产品…...
UI设计软件有哪些好用和免费的吗?
在我们分享五个有用的原型工具之前,完成原型,将优化界面,这次是UI设计师的任务,UI设计软件对设计师非常重要,UI设计工具是否使用直接影响最终结果,然后有人会问:UI界面设计使用什么软件…...
Linux开发工具之编译器gcc/g++
文章目录 1.查看版本2.程序的翻译3.gcc指令3.1gcc hello.c -o hello3.2gcc -E hello.c -o hello.i3.3gcc -S hello.c -o hello.s3.4gcc -c hello.c -o hello.o3.5gcc hello.o -o hello 4.动静态库[详讲链接阶段]4.1初步认识4.2动态链接4.3静态链接 1.查看版本 gcc -v. 2.程序…...
【Kurbernetes资源管理】陈述式资源管理方式
陈述式 一、 理论部分1.1 管理K8s资源的基本方法1.1.1 陈述式资源管理方式1.1.2声明式资源管理方式1.1.3 GUI式资源管理方法 1.2 陈述式资源管理方式1.2.1 Kubelet工具简介1.2.2 kubectl 的基本语法1.2.3 Kubectl工具的自动补全功能 1.3 Kubernetes Service1.4 Service 的类型(…...
flink测试map转换函数和process函数
背景 在flink中,我们需要对我们写的map转换函数,process处理函数进行单元测试,测试的内容包括查看函数的输出结果是否符合以及函数内的状态是否正确更新,本文就记录几个测试过程中的要点 flink中测试函数 首先我们根据我们要测…...
【跟小嘉学习JavaWeb开发】第一章 开发环境搭建
系列文章目录 【跟小嘉学习JavaWeb开发】第一章 开发环境搭建 文章目录 系列文章目录[TOC](文章目录) 前言一、JDK的下载与安装1.1、关于JDK的版本问题 二、环境变量配置2.1、配置 JAVA_HOME、CLASSPATH2.2、配置path2.3、启动 cmd 三、编写代码、编译并执行3.1、编写代码&…...
CSS语法、选择器、属性
1.css语法 * 格式:选择器 {属性名1:属性值1;属性名2:属性值2;...}* 选择器:筛选具有相似特征的元素* 注意:* 每一对属性需要使用;隔开,最后一对属性可以不加 2.选择器:筛选具有相似特征的元素 * 分类:1. 基…...
深度学习读取txt训练数据绘制参数曲线图的方法
有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图,有很多训练形成了一个训练log文件,于是需要读取log文件中的内容并绘制成曲线图。 如下实例,有一个log文件的部分截图,需要将其读取出来并绘制曲线图 废话不多说&…...
VB.NET—DataGridView控件教程详解
目录 前言: 过程: 第一步: 第二步: 第三步: 第四步: 第五步: 番外篇: 总结: 前言: DataGridView是.NET FormK中的一个Windows窗体控件,它提供了一个可视化的表格控件,允许用户以表格形式显示和编辑数据。它通常用于显示和编辑数据库…...
MCU测试科普|如何进行MCU芯片测试,具体流程是什么?
MCU芯片测试系统是一种专门用于检测MCU芯片性能和质量的综合性设备。它通常由硬件和软件两部分组成,硬件包括测试仪器、适配器、测试夹具等,用于连接被测MCU芯片和测试机,实现高效高精度的测试。软件部分通常包括测试程序、测试管理软件等&am…...
单向循环代码实现cpp
// 单向循环链表 class CircleLink { public:CircleLink(){head_ new Node();tail_ head_;head_->next_ head_;}~CircleLink(){Node* p head_->next_;while (p ! head_){head_->next_ p->next_;delete p;p head_->next_;}delete head_;}public:// 尾插法 …...
【原创】java+jsp+servlet简单图书管理系统设计与实现
摘要: 图书管理系统是一个专门针对图书馆管理而设计的系统,它可以帮助图书管理员有效的对图书进行管理,在图书管理系统的设计中,首先要考虑的是系统的需求分析,该系统的设计与实现涉及多个方面,包括数据库…...
JVM之jinfo虚拟机配置信息工具
jinfo虚拟机配置信息工具 1、jinfo jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机的各项参数。 使用jps -v 可以查看虚拟机启动时显示指定的参数列表,但是如果想知道未被显示指定的参数的系统默认值,除 …...
软件测试|PO设计模式在 UI 自动化中的实践
PO的思想最早是2013年由IT大佬Martin Flower提出的:https://martinfowler.com/bliki/PageObject.html 没错,就是他 — 没错,就是他 — 在他的文章里有这样一张经典样图,图片中展示了测试代码中直接操作HTML元素和使用PO模式将page对象封装成…...
如何上传自己的Jar到Maven中央仓库
在项目开发过程中,我们常常会使用 Maven 从仓库拉取开源的第三方 Jar 包。本文将带领大家将自己写好的代码或开源项目发布到 Maven中央仓库中,让其他人可以直接依赖你的 Jar 包,而不需要先下载你的代码后 install 到本地。 注册帐号 点击以…...
智能井盖传感器功能,万宾科技产品介绍
在国家治理方面,对社会的治理是一个重要的领域,一定要在推进社会治理现代化过程中提高市政府的管理和工作能力,推动社会拥有稳定有序的发展。在管理过程中对全市井盖进行统一化管理,可能是市政府比较头疼的难题,如果想…...
洛谷P4185 离线+并查集
好题,发现没有强制在线,可以离线操作 排序之后带集合点数的并查集就好了 #include<bits/stdc.h> using namespace std; const int N 1e510; int n,m; int p[N],sz[N];int find(int x){if(x!p[x])p[x] find(p[x]);return p[x]; } struct Node{in…...
遇到java.security.AccessControlException:access denied怎么办?
今天工作中遇到了如下报错,记录一下解决方案。 目录 问题 分析 结论 问题 这个问题出现在openjdk8启动网页端Java应用。 Java Exception:java.security.AccessControlException:access denied("java.net.SocketPermission""22.188.130.11:9000…...
c++对接CAT1400
最近工作中遇到需要对接1400协议,网上搜索不到c/c++的实现,所以记录一下自己的实现。 第一步注册: 1400是在http摘要认证的基础上做的,所以要去了解http摘要认证的流程 说明: 1.视图库通过用户分配,手动分配username,password给三方对接程序 2.三方对接程序第一次请求由…...
Windhawk终极指南:如何像搭积木一样定制你的Windows系统
Windhawk终极指南:如何像搭积木一样定制你的Windows系统 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 厌倦了Windows系统千篇一律的界面和…...
华硕笔记本优化工具G-Helper:10个实用技巧提升系统性能管理效率
华硕笔记本优化工具G-Helper:10个实用技巧提升系统性能管理效率 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, …...
Java Stream API 并行处理的底层实现
Java Stream API 并行处理的底层实现探秘 Java Stream API 是Java 8引入的强大特性,它允许开发者以声明式风格处理数据集合。其中,并行处理能力是其核心亮点之一,能够充分利用多核CPU提升性能。但它的底层实现究竟如何?本文将深入…...
Ultralytics YOLOv11多光谱目标检测深度解析:三步实现高效跨通道视觉识别
Ultralytics YOLOv11多光谱目标检测深度解析:三步实现高效跨通道视觉识别 【免费下载链接】ultralytics Ultralytics YOLO 🚀 项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics 在农业遥感监测、夜间安防监控、医疗影像分析等场景中…...
GLM-OCR跨平台数据流转:解析结果一键导入Typora进行知识管理
GLM-OCR跨平台数据流转:解析结果一键导入Typora进行知识管理 不知道你有没有这样的经历:读了一本好书,拍下了几页关键内容;参加了一场有价值的会议,白板上密密麻麻的笔记拍了照;或者看到一篇论文里的重要图…...
5个超实用技巧:轻松掌握哔哩下载姬批量下载秘诀
5个超实用技巧:轻松掌握哔哩下载姬批量下载秘诀 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)…...
告别玄学选型:用Python自动化测试英飞凌硅麦IM68A1308的动态范围与电压曲线
告别玄学选型:用Python自动化测试英飞凌硅麦IM68A1308的动态范围与电压曲线 在硬件开发中,模拟麦克风的选型常常陷入"玄学"困境——依赖零星的手动测试数据、模糊的厂商规格书解读,以及难以复现的"经验值"。以英飞凌IM68…...
Fan Control终极指南:Windows风扇控制软件的完整使用教程
Fan Control终极指南:Windows风扇控制软件的完整使用教程 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…...
PPTX2HTML技术深度解析:纯前端PPTX转HTML的架构设计与实现
PPTX2HTML技术深度解析:纯前端PPTX转HTML的架构设计与实现 【免费下载链接】PPTX2HTML Convert pptx file to HTML by using pure javascript 项目地址: https://gitcode.com/gh_mirrors/pp/PPTX2HTML PPTX2HTML是一款基于纯JavaScript技术栈的开源工具&…...
免费复古字体终极指南:EB Garamond 12快速上手完整教程 [特殊字符]
免费复古字体终极指南:EB Garamond 12快速上手完整教程 🎨 【免费下载链接】EBGaramond12 项目地址: https://gitcode.com/gh_mirrors/eb/EBGaramond12 你是否在为设计项目寻找一款既有历史底蕴又完全免费的开源字体?EB Garamond 12正…...
