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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: (17)go-micro微服务Prometheus监控

Prometheus监控介绍

1.微服务监控系统promethues介绍

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

7.png

2.微服务监控系统promethues工作流程

Prometheus server定期从配置好的jobs/exporters/Pushgateway中拉数据


Prometheus server记录数据并且根据报警规则推送alert数据


Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。


在图形界面中,可视化采集数据



二 Prometheus监控重要组件和重要概念

1.微服务监控系统promethues重要组件

Prometheus Server:用于收集和存储时间序列数据。


Client Library:客户端库成相应的metrics并暴露给Prometheus server


Push Gateway:主要用于短期的jobs


Exporters: 用于暴露已有的第三方服务的metrics给Prometheus


Alertmanager: 从Prometheus server端接收到alerts后,会进行


2.微服务监控系统promethues重要概念

Prometheus 中存储的数据为时间序列


格式上由metric的名字和一系列的标签(键值对)唯一标识组成


不同的标签则代表不同的时间序列


Counter 类型: - -种累加的指标,如:请求的个数,出现的错误数等


Gauge 类型:可以任意加减,如:温度,运行的goroutines的个数


Histogram 类型:可以对观察结果采样,分组及统计,如:柱状图


Summary 类型:提供观测值的count和sum功能,如:请求持续时间


instance : -个单独监控的目标,一般对应于一 个进程。


jobs:一组同种类型的instances (主要用于保证可扩展性和可靠性)


三 微服务监控系统grafana看板

  • 拥有 丰富dashboard和图表编辑的指标分析平台
  • 拥有自己的权限管理和用户管理系统
  • Grafana 更适合用于数据可视化展示


四 Prometheus监控+Grafana看板安装

1.安装Prometheus监控

  • 拉取镜像:
docker pull bitnami/prometheus
  • 运行:
docker run -d -p 9090:9090 bitnami/prometheus
  • 查看是否运行:
docker ps
  • 图形化界面:


2.安装Grafana看板

  • 拉取镜像:
docker pull grafana/grafana
  • 运行:
docker run -d -p 3000:3000 grafana/grafana

  • 查看是否运行:
docker ps
  • 图形化界面:


五 Prometheus监控使用

  • 在micro目录下新建prometheus.go文件
go get github.com/prometheus/client_golang/prometheus/promhttp
  • 编写以下代码:
package micro
import (
   "github.com/prometheus/client_golang/prometheus/promhttp"
   "log"
   "net/http"
   "strconv"
)
func PrometheusBoot(host string,port int){
   http.Handle("/metrics",promhttp.Handler())
   //启动web服务
   go func() {
      err := http.ListenAndServe(host+":"+strconv.Itoa(port),nil)
      if err!= nil{
         log.Fatal(("监控启动失败"))
      }
      log.Fatal("监控启动,端口为: "+strconv.Itoa(port))
   }()
}

六 Prometheus监控注册服务

  • 导包:
go get github.com/micro/go-plugins/wrapper/monitoring/prometheus/v2


  • 在main.go文件中写入以下代码
// 7.暴露监控地址
micro2.PrometheusBoot(micro2.ConsulInfo.Prometheus.Host, int(micro2.ConsulInfo.Prometheus.Port))
  • 注:传的参数是使用consul导入的,可以换成自定义的
  • 注册服务
//添加监控
micro.WrapHandler(prometheus.NewHandlerWrapper()),

8.png

七 Prometheus监控图形化界面

  • 运行项目

Prometheus原生看板


9.png



Grafana看板

  • 首次登录,账号:admin;密码:admin
  • 10.png

八 最后

  • 至此,go-micro微服务Prometheus监控工作就正式完成。
  • 接下来就开始微服务ELK介绍的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。
相关文章
|
4天前
|
JSON API Go
Go-Zero从0到1实现微服务项目开发(二)
继续更新GoZero微服务实战系列文章:上一篇被GoZero作者万总点赞了,本文将继续使用 Go-zero 提供的工具和组件,从零开始逐步构建一个基本的微服务项目。手把手带你完成:项目初始化+需求分析+表结构设计+api+rpc+goctl+apifox调试+细节处理。带你实现一个完整微服务的开发。
|
14天前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
54 0
|
14天前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
50 0
|
2月前
|
运维 监控 Go
Go语言微服务实战与最佳实践
【2月更文挑战第14天】本文将深入探讨使用Go语言进行微服务实战中的最佳实践,包括服务拆分、API设计、并发处理、错误处理、服务治理与监控等方面。通过实际案例和详细步骤,我们将分享如何在Go语言环境中构建高效、稳定、可扩展的微服务系统。
|
2月前
|
运维 监控 负载均衡
Go语言中微服务架构设计与原则
【2月更文挑战第14天】本文将深入探讨在Go语言环境下,微服务架构的设计原则和实践。我们将讨论如何根据微服务架构的核心概念,如服务拆分、独立部署、容错处理、服务治理等,来构建一个稳定、可扩展、可维护的Go语言微服务系统。
|
2月前
|
运维 Go 开发者
Go语言基础及其在微服务中的应用
【2月更文挑战第14天】本文旨在探讨Go语言的核心特性及其在构建微服务架构中的实际应用。我们将首先简要介绍Go语言的基本概念与特点,然后详细分析Go语言在构建高性能、高可用微服务中的优势,并通过实例展示如何使用Go语言实现微服务的基础组件和通信机制。
|
3月前
|
Go API 开发者
探索Go语言在微服务架构中的应用
本文旨在探讨Go语言(又称Golang)在构建高性能、可扩展微服务架构中的关键作用与优势。不同于传统摘要的概述方式,我们将通过一个实际案例,揭示Go语言如何解决微服务中的并发处理和网络通信问题,以及它在微服务生态系统中的位置。通过对比其他语言,本文强调Go语言的简洁语法、出色的并发支持和高效的性能表现,为开发者提供了一种有效的工具,以应对当今微服务架构的复杂需求。
|
5月前
|
存储 Go 微服务
Go 微服务 以及 DDD 详解
Go 微服务 以及 DDD 详解
71 0
|
5月前
|
Cloud Native 程序员 Go
一文入门Go云原生微服务「爆肝6千字」二
一文入门Go云原生微服务「爆肝6千字」二
|
5月前
|
负载均衡 Cloud Native 机器人
一文入门Go云原生微服务「爆肝6千字」一
一文入门Go云原生微服务「爆肝6千字」一