使用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

  1. 下载并安装 Grafana,你可以从 Grafana 官方网站(https://grafana.com)获取适合你操作系统的安装程序。
  2. 启动 Grafana 服务。
  3. 在 Web 浏览器中访问 Grafana 的地址(默认为 http://localhost:3000)。
  4. 使用默认的用户名和密码(admin/admin)登录 Grafana。
  5. 在首次登录时,将提示修改密码。按照指示进行操作。

步骤2:配置 Grafana 数据源

  1. 在 Grafana 中,点击左侧导航栏中的 “Configuration”(配置)图标,然后选择 “Data Sources”(数据源)。
  2. 点击 “Add data source”(添加数据源)按钮。
  3. 选择适合你的数据库类型(如 MySQL)作为数据源类型。
  4. 根据你的数据库配置填写相关字段,如主机地址、用户名、密码和数据库名。
  5. 点击 “Save & Test”(保存并测试)按钮,确保连接成功。

步骤3:创建 Grafana 仪表盘

  1. 在 Grafana 中,点击左侧导航栏中的 “Create”(创建)图标,然后选择 “Dashboard”(仪表盘)。
  2. 点击 “Add new panel”(添加新面板)按钮。
  3. 在 “Visualization”(可视化)选项卡中,选择适当的图表类型,如折线图或仪表盘。
  4. 在 “Queries”(查询)选项卡中,选择之前配置的数据源,并编写查询语句以获取所需的数据。
  5. 在 “Panel”(面板)选项卡中,根据你的需求设置图表的标题、样式和其他属性。
  6. 点击 “Apply”(应用)按钮,保存仪表盘设置。

步骤4:将 Grafana 仪表盘嵌入到博客中

  1. 在 Grafana 中打开你创建的仪表盘。
  2. 点击右上角的 “Share”(分享)按钮。
  3. 在 “Share panel”(分享面板)选项卡中,选择适当的分享选项,如 “Direct link with time range”(带有时间范围的直接链接)。
  4. 复制生成的链接地址。
  5. 在你的博客文章中插入该链接地址,以嵌入 Grafana 仪表盘。

完成上述步骤后,你将能够在 Grafana 中创建自定义的仪表盘,并将其嵌入到博客文章中,以便读者可以直接查看监控结果的可视化图表。

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

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

相关文章

基于springboot实现智慧外贸平台系统【项目源码+论文说明】计算机毕业设计

基于springboot实现智慧外贸平台系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合,利用java技术建设智慧外贸平台,实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展,丰富智慧外贸管理经验能…

Java进阶篇--Executors类创建常见线程池

目录 线程池架构 newSingleThreadExecutor newFixedThreadPool newCachedThreadPool newScheduledThreadPool Executors和ThreaPoolExecutor创建线程池的区别 两种提交任务的方法 线程池架构 线程池是一种线程管理的机制,用于维护和复用线程,以…

Leetcode2834. 找出美丽数组的最小和

Every day a Leetcode 题目来源:2834. 找出美丽数组的最小和 解法1:贪心 从最小正整数 1 开始枚举,设当前数为 num,如果 nums 里没有 target - num,就说明可以添加 num,依次填满直到有 n 个数即可。 用…

【k8s-1】基于docker Desktop一键式搭建k8s环境

在docker desktop中一键启动k8s环境很简单。 下面介绍如何启动dashboard,dashboard仪表盘是新手学习k8s至关重要的一个工具。 1、配置控制台 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml 2、开…

k8s的安装部署,详细过程展示(保姆级安装教程)

k8s应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用…

Java面向对象(进阶)-- 面向对象特征之三:多态性

文章目录 一、多态的形式和体现(1)为什么需要多态性(polymorphism)?(2) 对象的多态性 二、 多态的理解(1)如何理解多态性(2)Java中多态性的体现(3&#xff09…

数据分析实战 | KNN算法——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型改进 十一、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接:https://dow…

说说 React 性能优化的手段有哪些?

一、是什么 React凭借virtual DOM和diff算法拥有高效的性能,但是某些情况下,性能明显可以进一步提高 在前面文章中,我们了解到类组件通过调用setState方法, 就会导致render,父组件一旦发生render渲染,子组…

LeetCode146.LRU缓存

写了一个小时,终于把示例跑过了,没想到啊提交之后第19/22个测试用例没过 我把测试用例的输出复制在word上看看和我的有什么不同,没想到有18页的word,然后我一直检查终于找出了问题,而且这个bug真的太活该了&#xff0c…

Rocky Linux 配置邮件发送

Rocky Linux 配置邮件发送 使用自己的有邮箱发送 第一步-开启STMP授权 首先要开启STMP授权码,以QQ邮箱为例 第二步-下载安装包 说明一点不用命令行安装也可以,在命令行中输入会提示你是否安装s-nail,一直y即可 mail下载必须要的安装包 …

在ubuntu sudo apt-get update 更新报错

sudo apt-get update 更新报错 解决办法: 用你自己的key 根据上图自己找 sudo gpg --keyserver keyserver.ubuntu.com --recv-keys **********运行完成有一个ok 见下图 运行命令,中间的还是上面的key复制下来即可 sudo gpg --export --armor **********…

【华为OD机试AB高分必刷题目】拆分(Python-贪心算法实现)

🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,高分通过! 文章目录 【华为OD机试AB高分必刷题目】拆分(Python-贪心算法实现)题目描述解题思路Python题解代码代码OJ评判结果代码讲解寄语【华为OD机试AB高分必刷…

Android 多点触控

三种类型 :接力型 /配合型 /单独型 单点触控 package com.example.myapplication.viewimport android.content.Context import android.graphics.Canvas import android.graphics.Paint import android.util.AttributeSet import android.view.MotionEvent import android.vi…

HTTPS 的工作原理是什么?

HTTPS(HyperText Transfer Protocol Secure)是一种通过加密和认证保护数据传输安全的通信协议。它是基于传统的 HTTP 协议,通过使用 SSL(Secure Sockets Layer)或 TLS(Transport Layer Security&#xff09…

mysql explain extra值枚举

Extra 值说明Using index仅使用索引进行数据查询Using where在取得所需数据前使用了 WHERE 子句进行过滤Using temporary使用了临时表来保存中间结果Using filesort查询中使用了文件排序Using join buffer告诉MySQL在内存中建立了一个表连接缓冲区以容纳连接类型为索引的行。Im…

CHATGPT----自然辩证法分析

CHATGPT----自然辩证法的要素,结构与功能 Chatgpt的要素组成: ChatGPT的构成主要包括语言模型、对话管理、知识库和用户接口等几个方面。 语言模型:ChatGPT的核心是语言模型,它是一种基于深度学习技术的自然语言处理模型&#…

IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录

本心、输入输出、结果 文章目录 IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何找回被 Drop Commit 的提交记录前言查询 reflog 日志通过 Git Reset HEAD (hard) 找回已经 Drop Commit 的提交记录Git Reset HEAD (hard) 模式和 mixed 模式有啥区别git reset --h…

10 # 手写 every 方法

every 使用 every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 8];var result arr.ever…

win 命令替代鼠标的操作

操作方式都是在 winR 输入框输入或者终端输入 1、快速打开 控制面板 运行control 2、快速打开 电源选项 运行powercfg.cpl 3、快速打开 网络连接 运行ncpa.cpl 4、快速打开 程序和功能 运行appwiz.cpl 5、快速打开 Windows Defender防火墙 运行Firewall.cpl 6、快速打开 鼠标 …

Matlab的多项式留数与极点的计算

Matlab的多项式留数与极点的计算 以下面的多项式为例&#xff1a; 运算代码&#xff1a; clc clear closesyms p % 定义多项式 Zp(5*p^571*p^370*p)/(2*p^635*p^4117*p^236); % 提取分子与分母 [I,D]numden(Zp); Idouble(coeffs(I,p,"All"));%分子 Ddouble(coeffs…