Go微服务: Prometheus性能监控与Grafana平台的搭建

Prometheus+Grafana监控一网打尽 Prometheus监控 Grafana平台数据展示 服务器监控组件 服务中间件监控组件 阅读详情

Prometheus 概述

  • promethues 是一套开源的监控&报警&时间序列数据库的组合
  • 基本原理是通过http协议周期性抓取被监控组件的状态
  • 适合Docker、Kubernetes环境的监控系统

Promethues 整体架构

一、抓取数据的两种方式

  • 1 )Short-lived jobs 短暂的任务
    • 不会提供长时间的http去为promethues抓取数据
    • 这个服务很短暂, 运行后就会关闭
    • 短暂的服务怎么去监控
    • 它是通过主动推送数据到网关,进而由 promethues server 端 去抓取 PushGateway 上推上来的数据
  • 2 )另一种方式是 ClientLib/Exporters
    • 可以通过不同的 exporters 提供http的方式
    • 来给 promethues server 来抓取数据

二、Promethues Server 端

  • 主要分为三个环节:抓取,存储,查询
  • 在抓取网关的时候,promethues server 端如何知道抓取哪些链接
    • 获取目标的时候,是通过配置文件,文本文件,consul等方式
    • 来存储我们的抓取目标
    • 比较常用的是通过配置文件来记录下抓取的目标
    • Promethues 根据抓取目标,定期采集数据
  • 当 Promethues 抓取完成后,进行存储阶段
  • Promethues 会根据报警规则计算是否满足报警规则
  • 在报警规则中,会提供报警消息,主动推送给报警模块
  • 报警模块在收到消息后进行一系列的处理来进行报警
  • 另外数据存储进来,提供给客户访问的时候
  • Promethues 还有一个简单的web ui, 通过界面的方式查询存储的数据
  • 以上就是 Promethues 整体架构图

三、Promethues 重要组件

  • 基于架构图,可知里面有很多重要组件
  • Prometheus Server
    • 用于收集和存储时间序列数据
    • 客户端存储用的是 时序 数据库
  • Client Library
    • 客户端库生成相应的 metrics 并暴露给 Prometheus Server 去采集
    • 课程里就是 客户端提供http的端口暴露给 Prometheus Server 让它定期采用数据,达到监控能力
  • Push Gateway
    • 主要用于短期的jobs
    • 短期任务,可能5s采集一次,短期任务可能5s内会完成
    • 这样server端可能采集不到
    • 所以,短期任务,可以主动上报到 Push Gateway 上
    • Server 定期采集 Push Gateway 上的数据
  • Exporters
    • 用于暴露已有的第三方服务的metrics 给 Prometheus
    • 第三方服务,比如 mysql, redis, mongodb, 等等已经写好的一些 exporters 拿来用
    • 主动把需要采集的功能暴露出来,server主动来采集
  • Alertmanager
    • 报警模块,从 Prometheus server 端接收到 alerts 后
    • 会进行一些列去除重复,分组,并路由到接受方式,发出报警
    • 通过微信,email, QQ等等,都是可以进行发送的

Promethues 工作流程

  • promethues server 定期从配置好的 jobs/exporters/PushGateway中拉数据
  • promethues server 记录数据并根据报警规则推送 alert 数据
  • alertmanager 根据配置文件,对接收到的警报进行处理,发出告警
  • 在图形界面中,可视化采集数据,提供一个简单的 web ui,也有一个漂亮的ui工具,在后面介绍

Promethues 数据模型

  • 规定方式存储数据就是数据模型
  • promethues 中存储的数据为时间序列
  • 格式上由 metric 的名字和一系列的标签(键值对)唯一标识组成
  • 不同的标签则代表不同的时间序列

promethues 相关概念 - metric(指标)类型

  • Counter 类型
    • 一种累加的指标,如:请求的个数,出现的错误数等
  • Gauge 类型
    • 可以任意加减,如:温度,运行的 goroutines 的个数
  • Histogram 类型
    • 可以对观察结果采样,分组以及统计,如:柱状图
  • Summary 类型
    • 提供观测值的 count 和 sum 功能,如:请求持续时间

Promethues 相关概念 - instance 和 jobs

  • instance: 一个单独监控的目标,一般对应于一个应用进程
  • jobs: 一组同类型的 instances 的组合 (主要用于保证可扩展性和可靠性)
  • 理解:
    • 假设应用程序处理能力不够,横向扩展了3个应用程序
    • 分别调用这3个应用程序进行监控,但是代码上写的包括暴露端口都一样
    • 我们要监控这一块,要通过 instance 和 jobs 来进行组合
    • 它提供 handler,不同的服务,它认为是不同的 instance
    • 它这个服务及时不一样,但类型是一样的,会基于相同类型组成一个 jobs
    • 这样,不管应用程序扩展了多少个,都可以很细粒度来监控我们的程序

微服务监控系统 grafana 看板

  • 拥有丰富的 dashboard 和 图表编辑的指标分析平台
  • 拥有自己的权限管理和用户管理系统
    • 如果要扩展它,可以在基础上进行定制
  • Grafana 更适合用于数据可视化展示
    • 在日常工作中发现,它的数据可视化展示能力非常的强

微服务监控系统 Promethues + Grafana 安装


1 )拉取镜像

  • $ docker pull prom/prometheus
  • $ docker pull grafana/grafana

2 )基于 docker-compose 部署

version: "2"

services:
  prometheus:
    image: prom/prometheus
    # network_mode: "host"
    container_name: prometheus-compose
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml   #prometheus主配置文件
      - ./prometheus/prometheus-data:/prometheus  #数据存储映射
      - ./prometheus/conf:/etc/prometheus/conf   #prometheus子配置文件路径
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'    #加载主配置文件
      - '--storage.tsdb.path=/prometheus'    #启动数据持久存储
    restart: always

  grafana:
    image: grafana/grafana
    # network_mode: "host"
    container_name: grafana-compose
    ports:
      - "3000:3000"
    volumes:
      # - ./grafana/grafana.ini:/etc/grafana/grafana.ini #grafana配置文件
      - ./grafana/grafana_data:/var/lib/grafana   #数据存储映射
    restart: always

下面开始写这个 prometheus.yml

global:
    scrape_interval: 15s # 默认15s采集一次
    external_labels: # 额外的标签 全局的配置
        monitor: 'go-micro-xxx-monitor'
scrape_configs:
    # 监控的服务:按照一个个的job来监控的
    - job_name: 'services-order'
      scrape_interval: 5s # 覆盖默认值
      static_configs:
        - targets: ['192.168.1.7:9092'] # 这个地址是容器能够访问到的地址,写本机地址, 这个地址在容器或k8s中是会变的, 这个端口是 services-order 的端口
  • 运行:$ docker-compose up
  • 运行起来后,进入prometheus UI界面,访问 ip:9090
  • 注意:
    • prometheus 如果运行在K8s中,这个地址就要特别注意
    • 这里只是用本机来进行prometheus的搭建测试
    • 上面9092端口是services-order中暴露出来的
    • 服务自定义的prometheus端口,以此来采集自身服务的信息
  • 在界面上看下它的 targets ,位置 (上导航,Status 下拉 targets)
  • 点进去 ip:9092/metrics 可以看到一些日志
  • 也可以针对一些指标,使用图表查看
  • 监控系统控制台 ip:3000 来访问, 进入 grafana 看板
  • 输入 admin/admin 之后输入新的密码
  • 进入界面后,左侧倒数第二个菜单,第一个 Configuration 点击 Add data source
    • 选择 第一个 Prometheus 作为我们的源
    • 配置url,这就是 Prometheus 在哪台服务器,能访问到 9090,这是本机,本机的ip:9090
  • 之后,点击下面的 Save & test 按钮
  • 出现 Data source is working 的提示就说明成功了
  • 点击导航顶部的 Add penel 图表, 开始配置看板,如上图
    • 在 Query 下选择 Prometheus
    • 在 Metrics 中 选择 go / go_memstats_gc_sys_bytes
    • 在右侧 Panel 下的 Visualization 选择合适的 graphl
  • 在生产环境上配置的需要注意,Prometheus 的地址
    • 开发时,写本机当前的地址
    • 生产时,注意添加正确的地址
《数据监控-Prometheus/Grafana》Prometheus/Grafana详细入门教程 Prometheus是由SoundCloud开源监控告警解决方案,从2012年开始编写代码,到2015年github上开源以来,吸引不少用户以及公司的使用。Prometheus作为新一代的开源解决方案,很多理念与Google SRE的运维之道不谋而合。拓扑图监控目标通过脚本或者其他的程序push日志到pushgateway中,prometheus通过pull的方式拉取pushgateway的日志pushgateway的重要性。 阅读详情

相关推荐

一文读懂Grafana安装和使用【详细步骤截图列出,小白可直接上手】

详细介绍Grafana如何使用。小白也可快速上手。

weixin_42385526的博客 1392

Prometheus+Grafana基础介绍及搭建使用

企业级监控平台,超详细

h16678481的博客 1万+

k6 集成 Prometheus 和 Grafana 实现现代化性能监控

k6 是一款高性能的开源负载测试工具,专为开发者设计,旨在简化性能测试并提升测试效率。它支持可扩展的性能测试,能够帮助开发团队评估应用程序和基础设施的可靠性与性能。通过 k6和CICD的快速集成特性,测试可以提前发现潜在的性能问题,从而构建高可用性和高性能的应用程序。在性能测试领域,有许多工具和框架可供选择,例如常用的和。那么,为什么还要学习和使用呢?以下从和两方面展开说明。从上表可以看出,,适合大型企业级场景;而(如微服务和高并发场景),更贴近开发者的需求。

gto310850806的博客 1612

Prometheus+Grafana (史上最全)

可观测性包括 Metrics、Traces、Logs 3 个维度。可观测能力帮助我们在复杂的分布式系统中快速排查、定位问题,是分布式系统中必不可少的运维工具。• Metrics,监控指标系统性能指标,包括请求成功率、系统吞吐量、响应时长资源性能指标,衡量系统软硬件资源使用情况,配合系统性能指标,观察系统资源水位• Logs,日志施压引擎日志,观察施压引擎是否健康,压测脚本执行是否有报错。

架构师尼恩 6万+

单细胞转录组数据分析全流程:从原始数据到细胞注释

本文详细介绍了单细胞转录组数据分析的全流程,从原始数据读取、环境搭建、数据质控与标准化,到降维聚类、细胞类型注释,以及高级质控与多样本整合。重点阐述了如何利用Seurat等工具进行数据处理,并通过标志基因比对与自动注释方法完成细胞身份鉴定,为研究者提供了一套清晰、可操作的分析指南。

coffee的博客 553

机器人强化学习入门学习笔记

如果你追求高精度动力学仿真、用于强化学习或机器人研究,MuJoCo 是一个非常优秀的选择。如果需要快速实验、使用真实机器人模型,PyBullet 或 Gazebo可能更合适;如果你追求大规模并行训练,Isaac Gym 或 BraX会更高效。legged gym底层是​编辑isaacgym,基于gpu训练可以多环境并行训练,收敛到一个稳定行走的策略快。本视频MuJoCo基于cpu训练很慢。

xiaomu_347的博客 1479

Go微服务: 接入Prometheus性能监控平台与Grafana平台

在 go-micro 生成的模板中, 我们一如既往的完成基础工作之后。进入main.go工作的代码编写,main.go。1 )Prometheus 平台。2 ) Grafana 平台。可见,已经能够正常监控了。选择一项指标后,执行。

Wang的专栏 1259

常见的十大量化投资策略(附源码)

量化投资策略是利用量化的方法,进行金融市场的分析、判断和交易的策略、算法的总称。著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01、海龟交易策略 海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。 海龟交易策略源码:https://www.myquant.cn/docs/python_strategyies/110 0.

小壁虎的春天 2万+

Prometheus client_golang:5分钟为Go应用添加专业监控能力

在当今微服务架构盛行的时代,**应用监控**已成为保障系统稳定性的关键环节。你是否曾为Go应用缺少专业的**监控指标**而烦恼?是否在寻找一个简单易用且功能强大的**监控解决方案**?Prometheus client_golang正是你需要的答案!作为Prometheus官方推出的Go语言客户端库,它让应用监控变得前所未有的简单高效。🎯 ## 1. 项目价值定位:为什么需要Prometheu

gitblog_00213的博客 974

从零到实战:用QCustomPlot在QT中绘制动态曲线图(含OpenGL加速配置)

本文详细介绍了如何在QT中使用QCustomPlot库绘制动态曲线图,并配置OpenGL加速以提升渲染性能。从环境搭建、动态数据可视化到OpenGL加速配置,手把手教你实现工业级动态曲线监控系统,适用于大数据量实时展示场景。

weixin_29019241的博客 352

相控阵多功能雷达工作模式识别技术综述

本文综述了相控阵雷达工作模式识别技术的研究进展。首先介绍了相控阵雷达的典型工作模式分类及其信号特征参数,包括搜索模式(VS、RWS、TWS)、跟踪模式(STT、MTT、TAS)和其他模式(SAM、SAR)等。随后重点阐述了基于信号特征的识别方法,包括时域特征(PRI分析、脉冲幅度包络、数据率)、频域特征(载频变化、调制方式)和混合特征分析方法。最后讨论了当前技术面临的挑战与发展趋势,包括复杂信号环境下的识别难题、新型雷达技术的适应需求以及深度学习技术的应用前景。该领域的研究对电子侦察和威胁评估具有重要意义。

Grow into a more wonderful you 1814

Prometheus+Grafana 搭建属于自己的性能监控平台(上)

性能测试中无法或缺的技能,能否自主搭建性能监控平台是考察性能测试人员的基本功力。我在此选择Prometheus 作为最终目标。来和菜鸟的我一起学习如何搭建一个适合自己的性能监控平台吧。奥利给!!!

Old.Wang的博客 975

083、多帧降噪(MFR)与VST算法:低照度场景下的信噪比提升与鬼影抑制

本文深入探讨了多帧降噪(MFR)和VST算法在低照度场景中的应用与优化。作者从实际项目案例出发,指出单帧降噪的局限性,详细分析了MFR的核心原理与工程实现中的关键环节,包括帧对齐、帧选择、融合策略和鬼影抑制等技术要点。文章特别强调VST变换对噪声均匀化的重要性,并分享了实际开发中的调试经验与参数优化技巧,如"三明治"调试法和性能平衡策略。最后指出,优秀的MFR方案需要在信噪比提升、鬼影抑制和纹理保留之间找到场景化的平衡点,建议开发者通过真实场景测试验证算法效果。全文既有理论分析,又包含丰富的实战经验和技术细

zzfmlxs的博客 123

云原生之运维监控实践-使用Prometheus与Grafana实现对ElasticSearch服务的监测

没有度量就没有改进,实际上,监控系统有以下两个客户:技术,业务。上述内容即是对技术组件的监控,方便技术方面的改进与优化。本文记录了在Docker环境下通过Prometheus和Grafana实现对ElasticSearch服务的监控。具体步骤包括在服务节点上使用docker-compose安装elasticsearch-exporter,配置Prometheus抓取ElasticSearch的监控数据,并在Grafana中配置数据源和导入现成的监控仪表板,以实现对搜索引擎服务的性能监控和可视化。

Heartsuit的博客 1482

Diffusion models代码实战:从零搭建自己的扩散模型

这个系列曾经写过三篇文章专门讲代码,分别从数据集、超参数、loss设计、参数计算、Unet结构、正向过程、逆向过程等部分详细介绍了如何搭建DDPM。Diffusion models领域发展神速,最近半年代表作品有OpenAI的GLIDE、DALL-E 2,Google Brain的ImageGen,海森堡大学的Latent Diffusion。这篇博客针对入门新手讲解一下如何利用已有的资源快速搭建自己的Diffusion models。.........

沉迷单车的追风少年 1万+

华为OD机试真题 新系统【优化充电桩调度算法】

华为OD机试 新系统真题【优化充电桩调度算法】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【优化充电桩调度算法】

qq_45776114的博客 756

从监控盲区到性能透明:go-zero+Grafana构建微服务可观测体系

你是否还在为微服务性能问题排查焦头烂额?当用户抱怨接口响应慢时,你是否只能盲目猜测瓶颈所在?本文将带你基于go-zero框架快速搭建企业级监控系统,通过Grafana可视化大盘实时掌握服务健康状态,让性能问题无所遁形。 读完本文你将获得: - 3分钟完成Prometheus指标埋点的配置方法 - 开箱即用的微服务性能监控看板模板 - 基于真实业务场景的告警规则设计指南 - 从0到1搭建分布式追踪...

gitblog_00567的博客 423

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

WeKnora监控方案:Prometheus+Grafana实现性能监控

本文介绍了如何在星图GPU平台上自动化部署🧠 WeKnora - 知识库问答系统镜像,并为其构建一套基于Prometheus和Grafana的完整性能监控方案。该方案能实时监控问答响应时间、文档解析效率等核心指标,帮助企业快速定位并解决知识库系统性能瓶颈,保障智能问答服务的稳定与高效。

weixin_30356433的博客 101

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

终极微服务调试指南:GoogleCloudPlatform/microservices-demo全链路问题排查实战

GoogleCloudPlatform/microservices-demo是一个基于云原生架构的微服务示例项目,包含10个微服务组件,全面展示了Kubernetes、Istio和gRPC等技术的实战应用。本文将带你掌握这个微服务项目的全链路问题排查技巧,轻松应对复杂分布式系统中的调试挑战。 ## 微服务架构概览:理解系统拓扑是调试的基础 在开始调试前,首先需要清晰了解整个微服务架构的组成和交

gitblog_00070的博客 914

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

imaginary监控告警配置:Prometheus与Grafana集成

imaginary是一款快速、简单、可扩展的Docker就绪HTTP微服务,专为高级图像处理而设计。本文将详细介绍如何为imaginary配置全面的监控告警系统,通过Prometheus和Grafana实现实时性能监控、指标收集和告警通知,确保您的图像处理服务稳定运行。 ## 📊 为什么需要监控imaginary服务? 在图像处理场景中,imaginary承担着重要的计算任务。通过监控系统,

gitblog_00119的博客 1012

Go-Zero 项目开发44:集成 Kibana 日志可视化与 Prometheus 性能监控

微服务监控与日志可视化实践:基于Go-Zero、ELK与Prometheus 本文介绍了一套完整的微服务监控解决方案,结合Go-Zero框架、ELK日志收集系统和Prometheus性能监控工具。系统架构分为日志通道(Filebeat→Elasticsearch→Kibana)和监控通道(Prometheus Exporter→Prometheus Server→Grafana/Alertmanager)两个部分。 在日志可视化方面,详细展示了如何配置Filebeat采集Go-Zero服务日志,通过Kiba

Wang的专栏 379

第六课 Go容器化微服务系统实战-性能监控能力完善

第六课 Go容器化微服务系统实战-性能监控能力完善 tags: GO 慕课网 categories: 监控系统 Docker-compose promethues 文章目录第六课 Go容器化微服务系统实战-性能监控能力完善第一节 监控系统介绍1.1 promethues 基本介绍1.2 promethues重要组件1.3 promethues工作流程1.4 promethues相关概念第二节 订单领域开发环境2.1 Docker-Compose安装使用2.2 订单领域开发目录生成2.3 订单领域pr

QnHyn 454

基于Prometheus和Grafana的监控平台 - 环境搭建

相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说的ELK就是基于Logging。 Metrics - 用于记录可聚合的数据。例如,队列的当前深度可被定义为一个度量值,在元素入队或出队时被更新;HTTP 请求个数可被定义为一个计数器...

聚娃科技开发者博客 206

go-zero集成Prometheus监控:打造可视化的微服务监控体系

在微服务架构中,实时监控系统运行状态是保障服务稳定性的关键。你是否还在为微服务性能瓶颈难以定位而困扰?是否希望通过直观的可视化图表掌握服务运行全貌?本文将详细介绍如何使用go-zero快速集成Prometheus监控,从零构建完整的微服务监控体系,让你轻松实现服务指标的采集、存储与可视化分析。读完本文,你将能够:配置go-zero服务监控参数、集成Prometheus指标采集、设置Grafana可...

gitblog_00237的博客 489

Java + Grafana配置实战(从0到1搭建企业级监控平台)

掌握Java应用监控难题?本文详解Java + Grafana配置实战,从0到1搭建企业级监控平台。涵盖Micrometer、Prometheus与Grafana集成方法,实现高性能可视化监控。适用微服务架构,助力运维提效,值得收藏。

LogicNest的博客 919

Ubuntu 系统安装 Prometheus+Grafana(附shell脚本一键部署↓)

创建一个 systemd 服务来管理 Node Exporter。打开浏览器访问:http://<IP>:9090。打开浏览器访问:http://<IP>:3000。首次登录后会提示修改密码,请立即设置新密码。

✦ 一个爱折腾服务器、沉迷写 Shell 脚本的 Linux 爱好者。 ✦ 每一篇教程都来自亲手搭建 + 反复验证,只为让你“一次成功”。 ✦ 相信技术的价值在于分享,也相信善意会传递。 ✦ 欢迎留言交流,有问必答(只要我会) 2114
上一篇: Typescript高级: 详解 any、object、Object、Record<any, any> 和泛型 T
下一篇: Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪
Wang's Blog
博客等级 码龄12年 7433粉丝 2418原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值