利用Prometheus做指标统计

这篇具有很好参考价值的文章主要介绍了利用Prometheus做指标统计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:背景与思想

  • 背景:目前公司需要统计一些数据, 而这些数据有些量非常大(千万量级的数据)。
    • 如果在mysql中做统计, 可能会引发慢查询或者造成mysql集群负载过高的问题。
    • 目前业务没有将这些数据同步到ES等数据库, 如果为了统计而调整业务, 这个改造成本比较高。
    • 目前这些指标, 都通过打点, 上报到了Prometheus, 因此尝试利用Prometheus来做一些指标统计工作。
  • 核心思想:
    • 调用Prometheus的HTTP接口, 向接口发送PromQL语句, 解析响应来获取指标信息。

二:相关链接

  • PromQL快速入门: https://blog.csdn.net/tototuzuoquan/article/details/119719591
  • Prometheus源码分析: https://blog.csdn.net/qq_36648860/article/details/115768087
  • 源码:https://github.com/prometheus/prometheus

三:编写Prometheus接口调用工具

import time
import requests
import urllib


prometheus_url = """http://公司Prometheus接口域名/api/v1/query?query={}&dedup=true&partial_response=true&time={}&_={}"""


class PrometheusUtils(object):

    def send(self, promql, timestamp):
        """
        :param promql: 普罗米修斯查询语句
        :param timestamp: 毫秒级时间戳(13位)
        :return: 响应信息
        """
        url = prometheus_url.format(urllib.quote_plus(promql), timestamp / 1000, timestamp)
        print(url)
        resp = requests.get(url=url)
        return resp.json()


if __name__ == '__main__':
    timestamp = time.mktime(time.strptime("2023-06-28 00:00:00", "%Y-%m-%d %H:%M:%S"))
    print(int(timestamp * 1000))
    resp = PrometheusUtils().send(
        promql="""increase(指标名称{product_name="xshl", qulali_status="0"}[1d])""",
        timestamp=int(timestamp * 1000))
    print(resp)

四:问题

  • 这种方式统计的数据不是完全准确的, 目前测试来看, 当数据量过万的时候, 统计数据与实际值, 可能相差个位数。 如果是千万级, 统计数据与真实值, 相差百位数量级的误差。
  • 误差来源。
    这个是因为prometheus是个时间数据库, 取两个时间点, 计算增量的时候。 会选最近的两个点做增量计算, 然后再加上一些预言推测。 
    
    例如:取2023-06-29 00:00:00 到2023-06-30 00:00:00的增量。 但是数据库只有2023-06-29 00:00:01 和2023-06-30 23:59:59 这两个点的数据。 
    
    因此增量 = 2023-06-29 00:00:01 和2023-06-30 23:59:59的差值 + 2023-06-29 00:00:00到2023-06-29 00:00:01的预测 + 2023-06-30 23:59:59 到2023-06-30 00:00:00的预测值。
    
  • 误差分析
    • 请查看相关链接中的Prometheus源码分析。 该大神详解的相当透彻, 我不必赘述了。

文章来源地址https://www.toymoban.com/news/detail-524285.html

到了这里,关于利用Prometheus做指标统计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Prometheus实现自定义指标监控

    前面我们已经通过 Prometheus+Grafana 实现了监控,可以在 Grafana 上看到对应的 SpringBoot 应用信息了, 通过这些信息我们可以对 SpringBoot 应用有更全面的监控。 但是如果我们需要对一些业务指标做监控,我们应该怎么做呢?这篇文章就带你一步步实现一个模拟的订单业务指 标监

    2024年02月12日
    浏览(44)
  • Prometheus相关的主机监控指标

    CPU负载指标 node_load1 node_load5 node_load15 以上三个指标为主机CPU平均负载,分别对应一分钟、五分钟和十五分钟的时间间隔。CPU负载是指某段时间内占用CPU时间的进程和等待CPU时间的进程数之和。一般来说,cpu负载数/cpu核数如果超过0.7,应该开始关注机器性能情况 ,如果超过

    2023年04月17日
    浏览(34)
  • Prometheus监控报警-web,域名,端口, 钉钉版本

    采用文章 在企业中,如果企业要求使用钉钉进行工作交流,那我们也可以使用钉钉接收报警消息; 钉钉会有群,我们可以创建1个云计算团队的钉钉群,在群里创建1个报警机器人; 这个机器人只要报警,在群里的云计算/运维人员都能看见 流程:创建群聊-群设置-智能群助手

    2024年02月04日
    浏览(48)
  • Prometheus之rabbitmq监控指标详解

    rabbitmq_channels 用于显示RabbitMQ服务器上当前打开的通道数量。 通过监控这个指标,您可以了解到RabbitMQ服务器打开的通道数随时间变化的情况,以及通道数量是否很高或者非常低。 rabbitmq_connections 用于显示与RabbitMQ服务器的连接总数。 该指标可以帮助您跟踪RabbitMQ服务器的连

    2024年02月14日
    浏览(36)
  • Prometheus监控运维实战十: 主机监控指标

    1、CPU指标 CPU负载 以上三个指标为主机的CPU平均负载,分别对应一分钟、五分钟和十五分钟的时间间隔。CPU负载是指某段时间内占用CPU时间的进程和等待CPU时间的进程数之和。一般来说,cpu负载数/cpu核数如果超过0.7,应该开始关注机器性能情况 ,如果超过1的话,运维人员应

    2024年02月06日
    浏览(47)
  • Prometheus常用exporter及其常用监控指标

    CPU相关指标: node_cpu_seconds_total{mode=\\\"idle\\\"} :CPU空闲时间(秒)的总和。这是评估CPU使用率的重要指标之一。 node_cpu_seconds_total{mode=\\\"system\\\"} 、 node_cpu_seconds_total{mode=\\\"user\\\"} 等:分别表示CPU在内核态和用户态的运行时间。 内存相关指标: node_memory_MemTotal_bytes :内存总量(以字节为

    2024年03月11日
    浏览(64)
  • K8s部署Prometheus+grafana+alertmanager报警监控系统(持续更新)

    自行准备一套k8s集群,如果不知道怎么搭建,可以参考一下我之前的博客 https://blog.csdn.net/qq_46902467/article/details/126660847 我的k8s集群地址是: k8s-master1 10.0.0.10 k8s-node1 10.0.0.11 k8s-node2 10.0.0.12 一、安装nfs服务 二、安装nfs客户端 三、部署Prometheus 四、部署grafana 五、部署alertmanage

    2023年04月24日
    浏览(59)
  • k8s集群监控及报警(Prometheus+AlertManager+Grafana+prometheusAlert+Dingding)

    k8s集群部署后,急需可靠稳定低延时的集群监控报警系统,报警k8s集群正常有序运行,经过不断调研和测试,最终选择Prometheus+AlertManager+Grafana+prometheusAlert的部署方案,故障信息报警至钉钉群和邮件,如需要额外监控可部署pushgateway主动推送数据到Prometheus进行数据采集 Promet

    2024年02月08日
    浏览(52)
  • 项目04-基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台

    1.流程图 2.拓扑图 3.详细介绍 项目名称:基于Docker的Prometheus+Grafana+AlertManager的飞书监控报警平台 项目环境:CentOS7.9,Docker24.0.5,Prometheus2.47,Grafana10.1.2,AlertManager0.23,Nginx1.25.2,MySQL5.7.43、ansible 2.9.27等 项目描述:旨在构建一个高可用的监控和报警系统,基于Docker技术,结合

    2024年02月04日
    浏览(43)
  • 统一观测丨使用 Prometheus 监控 SNMP,我们该关注哪些指标?

    简单网络管理协议SNMP(Simple Network Management Protocol)用于网络设备的管理。网络设备种类多种多样、不同厂商提供的管理接口(如命令行接口)又不相同,这使得网络管理变得愈发复杂。为解决这一问题,SNMP应运而生。SNMP作为广泛应用于TCP/IP网络的标准网络管理协议,提供了

    2024年01月24日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包