Python:使用prometheus-client提交数据到实现prometheus+ grafana数据监控

news2025/1/22 16:49:51

相关资料

  • prometheus文档:https://prometheus.io/
  • grafana文档:https://grafana.com/
  • grafana github: https://github.com/grafana/grafana
  • Pyhton客户端https://pypi.org/project/prometheus-client/

目录

    • 1、使用Python提供数据源
    • 2、启动 prometheus
    • 3、启动 grafana

1、使用Python提供数据源

安装依赖

pip install prometheus-client

基于flask服务代码示例

随机返回一些数值

# -*- coding: utf-8 -*-
"""
@File    : demo.py
@Date    : 2023-06-30
"""

import random
import prometheus_client
from flask import Flask, Response
from prometheus_client import Gauge
from prometheus_client.core import CollectorRegistry

app = Flask(__name__)


@app.get('/metrics')
def metrics():
    """
    prometheus metrics接口
    :return:
    """
    registry = CollectorRegistry(auto_describe=False)

    gauge = Gauge(
        name="flask_app",
        documentation="this is a flask app data",
        labelnames=["label"],
        registry=registry)

    rows = [
        {
            'label': '张飞',
            'value': random.randint(10, 20)
        },
        {
            'label': '赵云',
            'value': random.randint(10, 20)
        },
        {
            'label': '刘备',
            'value': random.randint(10, 20)
        }
    ]

    for row in rows:
        gauge.labels(row['label']).set(row['value'])

    return Response(prometheus_client.generate_latest(registry), mimetype='text/plain')


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

2、启动 prometheus

From metrics to insight Power your metrics and alerting with the leading open-source monitoring solution.

译文:从度量到洞察力,通过领先的开源监控解决方案。

配置文件 prometheus.yml

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
      - targets: ["192.168.0.101:8000"]

注意:如果是docker方式启动,ip地址需要配置局域网ip,不能使用127.0.0.1

使用docker方式启动 prometheus

docker run \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
prom/prometheus

访问地址:http://localhost:9090/

在这里插入图片描述

3、启动 grafana

The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

译文:开放、可组合的可观测性和数据可视化平台。可视化来自Prometheus、Loki、Elasticsearch、InfluxDB、Postgres等多个来源的指标、日志和跟踪。

使用docker方式启动 grafana

docker run -d \
-p 3000:3000 \
--name grafana \
grafana/grafana

访问地址:http://localhost:3000/

在这里插入图片描述

参考文章

  1. grafana添加prometheus数据源并导入仪表盘展示
  2. 数据采集export使用prometheus_client 和 Flask实现

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

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

相关文章

eDNA暴露人类活动轨迹!你的DNA信息可能随时随地在泄露!

环境DNA&#xff08;environmental DNA, eDNA&#xff09;领域发展迅速&#xff0c;但人类eDNA的应用仍未得到充分利用和重视。eDNA分析的广泛应用将为病原体监测、生物多样性监测、濒危和入侵物种检测以及群体遗传学带来许多公认的好处。 佛罗里达大学野生动物疾病基因组学教…

【pytorch函数笔记】torch.sum()、torch.unsqueeze()

1.torch.sum torch.sum(imgs, dim0) # 按列求和 torch.sum(imgs, dim1) # 按行求和 imgs torch.Tensor([i for i in zip( range(10), range(10))]) print(imgs) s1torch.sum(imgs, dim0) # 按列求和 s2torch.sum(imgs, dim1) # 按行求和 print(s1) print(s2) 2.torch.uns…

在前端开发中使用 Python

推荐给需要鼓捣前端应用又不熟悉 JS 的 Pythoner 简介 在使用 Python 进行数据分析的时候&#xff0c;经常需要创建一些动态、交互式的可视化作品。一般会用到如 Plotly、Pyecharts、Bokeh 等库&#xff0c;这些库都是基于前端技术创建可视化作品。所以在自定义可视化的时候&a…

Python3,有了此库,不需要再为导包顺序而烦恼了,小刀拉屁股,涨知识了。

usort详解 1、引言2、代码实战2.1 usort 安装2.2 代码示例 3、总结 1、引言 小鱼&#xff1a;小屌丝&#xff0c;这段代码是你的写的不&#xff1f; 小屌丝&#xff1a;是我写的啊&#xff0c;咋 鱼哥 小鱼&#xff1a;你看你的导包顺序&#xff0c;挺乱的 小屌丝&#xff1a;…

一些共享资料

大家好&#xff0c;才是真的好。 我们好久没有分享资料了&#xff0c;上次分享还是上次——我也忘记了多久。 本次Engage2023开完之后&#xff0c;从会议上也流出了很多各类技术和主题方面的PPT、PDF资料等&#xff0c;我搜索了一些Domino技术话题有关的共享在这里。 主题涉…

算法----二叉树的最近公共祖先

题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它…

轻量服务器外网访问不了的原因分析

​  轻量服务器外网访问不了原因的分析。很多用户在选择轻量服务器的时候都没考虑&#xff0c;直接就购买了&#xff0c;导致在使用的时候遇见了很多问题&#xff0c;下面我们就简单的聊聊关于轻量服务器外网无法访问的原因。 这里我们按照标题的意思可以解读为两种情况&…

2023最新互联网公司时长排行榜出炉

今天给大家分享一个对于选择公司来说另一个非常重要的参考指标&#xff1a;“互联网时长”。 我们在选择一个公司的时候&#xff0c;除了需要关注总收入package 以外&#xff0c;还需要考虑这家公司的加班时长是否人性化。 我们的工作时长是周工作小时数。法定工作时间是40小…

这8种Python加速运行技巧真棒

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 Python 是一种脚本语言&#xff0c;相比 C/C 这样的编译语言&#xff0c;在效率和性能方面存在一些不足。但是&#xff0c;有很多时候&#xff0c;Python 的效率并没有想象…

使用wpf做得计算器

最近在学习wpf&#xff0c;使用wpf做得计算器练手&#xff0c;实现功能增删改查&#xff0c;求平方根&#xff0c;倒数&#xff0c;取反&#xff0c;模拟实体计算器的M,MS,MC,MR功能 上面截图相关的计算为 8乘5加-2加3.2加&#xff08;9除以3的余数&#xff09;

一路乱飙,从手工测试进阶测试开发岗,“我“的测试之路不简单

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试人员的职能 …

StrSubstitutor和StrUtil占位符字符串替换

目录 一、commons-lang包下的StrSubstitutor1、使用场景一2、使用场景二 二、hutoo包下的StrUtil1、使用场景一2、使用场景二3、使用场景三 三、原生的三种方式 一、commons-lang包下的StrSubstitutor StrSubstitutor是commons-lang包提供的一个字符串替换类&#xff0c;整体使…

Redis实战——短信登录(二)

Redis代替session redis中设计key 在使用session时&#xff0c;每个用户都会有自己的session&#xff0c;这样虽然验证码的键都是“code”&#xff0c;但是相互不影响&#xff0c;从而确保每个用户获取到的验证码只能够自己使用&#xff0c;当使用redis时&#xff0c;redis的ke…

MCU单片机智能控制落地扇解决方案

随着科技进步和消费升级&#xff0c;消费者对电风扇的智能化需求日趋强烈。为了快速响应市场需求&#xff0c;以更低的成本打造智能电风扇。 MCU单片机智能控制落地扇解决方案以灵动微MM32SPIN040C主控。 方案采用的主控MM32SPIN040工作频率可达48MHz&#xff0c;内置16KB Fl…

虹科分享 | 拒绝自燃和爆炸,AGV电池如何进行实时监控和预测性维护?

Automated Guided Vehicle简称AGV&#xff0c;通常也称为AGV小车、自动导引运输车或无人搬运车等&#xff0c;指装备有电磁或光学等自动导引装置&#xff0c;能够沿规定的导引路径行驶&#xff0c;具有安全保护以及各种移载功能的运输车&#xff0c;通常用可充电的蓄电池来作为…

JumpServer开源堡垒机安装配置

JumpServer开源堡垒机安装与配置 一、简介二、下载与安装2.1、下载2.2、安装2.3、其他 一、简介 JumpServer 堡垒机帮助企业以更安全的方式管控和登录各种类型的资产。 支持 官网地址&#xff1a;https://www.jumpserver.org/index.html JumpServer 采用分层架构&#xff0c;…

【SNMP服务】网络杂谈(11)之什么是SNMP服务?

#2023 博客之星评选已开启–成为城市领跑者# 涉及知识点 什么是 SNMP&#xff0c;SNMP的特点&#xff0c;SNMP的服务&#xff0c;SNMP服务运行。深入了解SNMP技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感…

Vue启用unity3D的exe

&#x1f430;个人主页&#xff1a;张清悠 &#x1f466;个人简介&#xff1a;张清悠&#xff0c;字澄澈&#xff0c;号寻梦客&#xff0c;爱好旅行、运动&#xff0c;主攻前端方向技术研发&#xff0c;副攻Unity 3D、C、Python人工智能等 &#x1f4dd;个人寄语&#xff1a;学…

parcel运行终端报错Uncaught ReferenceError: parcelRequire is not defined解决方案

我们通过指令 npm install parcel-bundler安装的parcel 运行起来会有一个报错 换个版本就好了 打开项目终端 我们先执行 npm uninstall parcel-bundler将错误的版本给他干掉 然后执行 npm install parcel安装正确的版本 然后运行项目 在浏览器中访问地址就一切正常了

如何预防DDOS和CC攻击

在当今数字化世界中&#xff0c;网络安全成为各行各业亟需解决的重要问题。最近&#xff0c;由于DDoS&#xff08;分布式拒绝服务&#xff09;和CC&#xff08;恶意咨询&#xff09;攻击事件的频繁发生&#xff0c;网络安全进一步引起了人们的关注。 据可靠消息源透露&#xff…