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

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

接入Prometheus

  • 在 go-micro 生成的模板中, 我们一如既往的完成基础工作之后

  • 进入main.go工作的代码编写,main.go

    package main
    
    import (
    	"fmt"
    	"log"
    	"strconv"
    
    	"github.com/go-micro/plugins/v4/registry/consul"
    	opentracingTool "github.com/go-micro/plugins/v4/wrapper/trace/opentracing"
    
    	"github.com/go-micro/plugins/v4/wrapper/monitoring/prometheus"
    	"github.com/go-micro/plugins/v4/wrapper/ratelimiter/ratelimit"
    	jujuratelimit "github.com/juju/ratelimit"
    
    	"github.com/opentracing/opentracing-go"
    	"go-micro.dev/v4"
    	"go-micro.dev/v4/registry"
    
    	"gitee.com/go-micro-services/common"
    	"gitee.com/go-micro-services/order/domain/repository"
    	"gitee.com/go-micro-services/order/domain/service"
    	"gitee.com/go-micro-services/order/handler"
    	pborder "gitee.com/go-micro-services/order/proto/order"
    
    	"github.com/jinzhu/gorm"
    	_ "github.com/jinzhu/gorm/dialects/mysql"
    )
    
    var (
    	serviceName     = "go.micro.service.order"
    	version         = "latest"
    	host            = "127.0.0.1"
    	port            = 8500
    	address         = host + ":" + strconv.Itoa(port)
    	mysqlConfigPath = "/micro/config/mysql"
    )
    
    func main() {
    	// 1. 指定注册中心
    	consulReg := consul.NewRegistry(
    		registry.Addrs(address),
    	)
    
    	// 2. 从配置中心获取mysql配置并创建处理
    	mysqlConfig, consulConfigErr := common.GetConsulMysqlConfig(address, mysqlConfigPath)
    	if consulConfigErr != nil {
    		log.Fatal(consulConfigErr)
    	}
    	mysqlUrl := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", mysqlConfig.User, mysqlConfig.Pwd, mysqlConfig.Host, mysqlConfig.Port, mysqlConfig.Database)
    	db, dbErr := gorm.Open("mysql", mysqlUrl)
    	if dbErr != nil {
    		log.Fatal(dbErr)
    	}
    	defer db.Close()
    
    	rp := repository.NewOrderRepository(db)
    	// 数据库表初始化,只执行一次, 如果本来就设计好了,则无需下面
    	// rp.InitTable()
    	// db.SingularTable(false) // true 则 表就是单数
    
    	// 3. 链路追踪配置
    	tracer, closer, tracerErr := common.NewTracer("go.micro.service.order", "localhost:6831")
    	if tracerErr != nil {
    		log.Fatal(tracerErr)
    	}
    	defer closer.Close()
    	opentracing.SetGlobalTracer(tracer)
    
    	// 4. 创建服务实例
    	orderDataService := service.NewOrderDataService(rp)
    	// 5.暴露监控地址
    	common.PrometheusBoot(9092)
    
    	// 6. 创建服务和初始化
    	srv := micro.NewService()
    	srv.Init(
    		micro.Name(serviceName),
    		micro.Version(version),
    		micro.Registry(consulReg),
    		// micro.Address("0.0.0.0:8087"), // 暴露的服务地址 这里可用可不用指定
    		micro.WrapHandler(opentracingTool.NewHandlerWrapper(opentracing.GlobalTracer())),       // 绑定链路追踪
    		micro.WrapHandler(ratelimit.NewHandlerWrapper(jujuratelimit.NewBucket(50, 100), true)), // 添加限流
    		micro.WrapHandler(prometheus.NewHandlerWrapper()),                                      // 添加监控
    	)
    
    	// 7. 注册 handler
    	if handlerErr := pborder.RegisterOrderHandler(srv.Server(), &handler.Order{OrderDataService: orderDataService}); handlerErr != nil {
    		log.Fatal(handlerErr)
    	}
    
    	// 8. 运行服务
    	if runErr := srv.Run(); runErr != nil {
    		log.Fatal(runErr)
    	}
    }
    
  • 注意,这里最重要的一行代码:common.PrometheusBoot(9092), 进入看看

    package common
    
    import (
    	"net/http"
    	"strconv"
    
    	"github.com/prometheus/client_golang/prometheus/promhttp"
    	"github.com/prometheus/common/log"
    )
    
    func PrometheusBoot(port int) {
    	http.Handle("/metrics", promhttp.Handler())
    	//启动web 服务
    	go func() {
    		err := http.ListenAndServe("0.0.0.0:"+strconv.Itoa(port), nil)
    		if err != nil {
    			log.Fatal("启动失败")
    		}
    		log.Info("监控启动,端口为:" + strconv.Itoa(port))
    	}()
    }
    
    • http.Handle("/metrics", promhttp.Handler()):
      • 这行代码注册了一个HTTP处理器到/metrics路径上
      • 当HTTP请求访问/metrics时,promhttp.Handler() 会生成并返回Prometheus格式的指标数据
  • 启动服务 $ sudo go run main.go

Prometheus 和 Grafana 监控平台


1 )Prometheus 平台

  • 上面是正常的服务, 如果服务出错,可能如下

选择一项指标后,执行

2 ) Grafana 平台

  • 在已经接入好的 Grafana 监控平台:http://192.168.1.7:3000

可见,已经能够正常监控了

源码地址

46、集中式日志记录与监控:EFK 栈与 Prometheus、Grafana 的应用 本文介绍了在微服务架构中使用EFK栈(Elasticsearch、Fluentd、Kibana)实现集中式日志记录,以及通过Prometheus和Grafana进行系统性能监控的完整方案。涵盖了日志的收集、搜索、根因分析流程,并详细说明了如何在微服务中集成指标采集、构建部署、配置Grafana仪表盘与设置告警规则。结合实际操作示例和架构图,展示了现代云原生环境下日志管理与监控的最佳实践。 阅读详情

相关推荐

基于mediapipe的动作捕捉和unity的人物模型驱动

用到的人体关键点检测的算法是Google开发的基于深度学习的实时多媒体套件,汇集了人体、手部、人脸关键点追踪、物体检测、物体识别等多个流行的视觉任务的成果。整套 Mediapipe正如其名字,专门为便携设备上的多媒体应用设计,模型非常小,在笔记本手机上也能实时跑,跨平台、跨语言。mediapipe实时性是没什么问题。但是是以牺牲了质量为代价的,这种关键点检测一般是用来做动作识别,类似于运动app跳绳计数、判定瑜伽动作标不标准这种。用单目视觉来做人物模型的驱动,总差点意思。

qq_58484580的博客 5727

GORM数据库连接池对接Prometheus

golang的database/sql包定了关于操作数据库的相关接口,但是没有去做对应数据库的实现。这些实现是预留给开发者或者对应厂商进行实现的。其中让我比较关注的是golang的sql包有没有实现连接池pool的机制呢?毕竟golang是静态语言,类似Java我们看到很多连接池的实现例如阿里巴巴的Apache druid。给开发者提供了一个高效的数据库连接池,提高应用的性能,连接池保持与后端数据库的长连接,在需要的时候直接使用即可。使用完毕后,将连接归还到连接池中...

分享不一样的技术,与你一起共同成长! 2233

锐捷交换机配置SSH

锐捷交换机配置ssh 一、组网需求 通过ssh功能可以远程登录管理设备 二、配置步骤 全局开启ssh服务,并且指定ssh版本 Ruijie>enable Ruijie#configure terminal Ruijie(config)#enable service ssh-server ------>开启SSH服务,默认关闭 Ruijie(config)#ip ssh version 2 ------>默认1.99版本,设置为版本2 添加登

Loners_fan的博客 1万+

(17)go-micro微服务Prometheus监控

prometheus是一套开源的监控&报警&时间序列数据库的组合基本原理是通过HTTP协议周期性抓取被监控组件的状态适合Docker、 Kubernetes环境的监控系统至此,go-micro微服务Prometheus监控工作就正式完成。接下来就开始微服务ELK介绍的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。欢迎大家加入夏沫の梦的学习交流进行学习交流经验,点击。

夏沫の梦的博客 2096

RK3588上从零部署Facenet人脸识别:PyTorch转ONNX再到RKNN的完整避坑指南

本文提供了在RK3588开发板上从零部署Facenet人脸识别模型的完整指南。详细介绍了从PyTorch模型导出、转换为ONNX格式,再通过RKNN-Toolkit2转换为RKNN格式的完整流程,并重点分享了环境配置、算子兼容性处理、量化调优及板端部署中的关键步骤与避坑经验。

river的博客 464

Gorm—Go语言数据库框架

Go语言最流行的数据库ORM【对象关系映射】框架。

追求幸福,探索未知的博客 7245

解决ArcGIS-OpenStreetMap Toolbox-Load OSM File错误

在安装成功OpenStreetMap Toolbox后,首次运行Load OSM File工具,出现以下错误

Zjf的博客 8820

go-restful接入prometheus笔记

go-restful接入prometheus,附demo

铁柱的博客 1478

【Unity实战】实现最完美最简单的UI适配方案,背景压缩或者拉伸变形解决方案,手机刘海屏适配,适配不同分辨率,不同尺寸,不同设备。

这期来讲一个简单的UI设计方案,很多同学可能搞不懂锚点、轴心这些概念,导致做好的UI在别人的设备上,乱跑或者是重叠,或者是参加游戏老发时间比较紧来不及做适配,都可以来试试这个方法,通过填充边框来保持游戏画面的原始比例,所以它的缺点也很明显,在一些移动设备上会浪费比较大的显示面积。 unity不同设备UI变形? UI在不同设备上如何适配?

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3654

GEE APP:基于Sentinel-2遥感影像的植被指数(NDVI)和水体指数(NDWI)可视化应用

本文介绍了利用Google Earth Engine(GEE)平台处理Sentinel-2卫星数据的方法,重点讲解NDVI(归一化植被指数)和NDWI(归一化水体指数)的计算与应用。内容包括环境准备、数据加载与处理、指数计算原理、可视化方法以及实际应用案例。教程详细展示了如何定义研究区域、加载影像数据、进行指数运算,并生成专业统计报告和图例。文章还提供了常见问题解答和最佳实践建议,为生态环境监测、农业评估和水资源管理等场景提供了实用工具。通过JavaScript代码示例,读者可以快速掌握GEE平台的遥感影像

此星光明博客 273

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

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

Wang的专栏 1871

Transformer实战——Transformer自编码模型

自编码模型依赖于原始 Transformer 编码器,并且在解决分类问题时非常高效。除了 BERT 外,还有许多流行的自编码模型,在本节中,我们将一些除 BERT 外的自编码模型,这些模型的目标是通过优化预训练过程、增加层数或头数、改善数据质量、设计更好的目标函数等,来在下游任务上取得更好的表现。这些改进大致可以分为两个方面,更好的架构设计选择和预训练控制。

盼小辉丶的博客 9355

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

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

gitblog_00213的博客 974

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

Old.Wang的博客 975

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

Heartsuit的博客 1482

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

weixin_30356433的博客 101

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

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

gitblog_00070的博客 914

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-zero+Grafana构建微服务可观测体系

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

gitblog_00567的博客 423

第六课 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

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

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

gitblog_00237的博客 489

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

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

✦ 一个爱折腾服务器、沉迷写 Shell 脚本的 Linux 爱好者。 ✦ 每一篇教程都来自亲手搭建 + 反复验证,只为让你“一次成功”。 ✦ 相信技术的价值在于分享,也相信善意会传递。 ✦ 欢迎留言交流,有问必答(只要我会) 2114

Golang实战速成:从零构建高并发微服务

本文详细介绍了如何使用Golang从零构建高并发微服务,涵盖goroutine并发模型、HTTP服务搭建、数据库集成及性能优化等核心内容。通过实战案例展示Golang在高并发场景下的卓越表现,帮助开发者快速掌握微服务开发技巧,提升系统吞吐量和响应速度。

weixin_29290963的博客 352
上一篇: Go微服务: Gin框架搭建网关, 接入熔断器,链路追踪以及服务端接入限流和链路追踪
下一篇: Go微服务: 日志系统ELK核心架构设计
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、付费专栏及课程。

余额充值