一 Prometheus监控介绍

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

  • 是一套开源的监控&报警&时间序列数据库的组合

  • 基本原理是通过HTTP协议周期性抓取被监控组件的状态

  • 适合Docker、 Kubernetes环境的监控系统

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

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

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

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

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

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

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

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

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

  3. Push Gateway:主要用于短期的jobs

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

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

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

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

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

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

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

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

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

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

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

  9. 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()),

七 Prometheus监控图形化界面

  • 运行项目

Prometheus原生看板

Grafana看板

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

八 最后

  • 至此,go-micro微服务Prometheus监控工作就正式完成。

  • 接下来就开始微服务ELK介绍的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击

(17)go-micro微服务Prometheus监控的更多相关文章

  1. 基于 prometheus 的微服务指标监控

    基于prometheus的微服务指标监控 服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等.而通过指标监控能清晰的 ...

  2. Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解

    1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...

  3. 微服务日志监控与查询logstash + kafka + elasticsearch

    使用 logstash + kafka + elasticsearch 实现日志监控 https://blog.csdn.net/github_39939645/article/details/788 ...

  4. go micro 微服务框架温习

    go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...

  5. 使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控

    1. 概述 老话说的好:任何成功都不是轻易得来的,是不断地坚持与面对的结果. 言归正传,之前我们聊了 SpringCloud 开发的微服务是如何部署在  Kubernetes(K8s)集群中的,今天我 ...

  6. 物联网架构成长之路(30)-Spring Boot Admin微服务WebUI监控

    0. 前言 一个完整的微服务解决方案包含了许多微服务,基于我们需要观察各个微服务的运行状态,因此Spring Boot 生态提供了Spring Boot Admin 这个组件来实现微服务管理WEB U ...

  7. SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控

      无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...

  8. 近期业务大量突增微服务性能优化总结-4.增加对于同步微服务的 HTTP 请求等待队列的监控

    最近,业务增长的很迅猛,对于我们后台这块也是一个不小的挑战,这次遇到的核心业务接口的性能瓶颈,并不是单独的一个问题导致的,而是几个问题揉在一起:我们解决一个之后,发上线,之后发现还有另一个的性能瓶颈问 ...

  9. Java微服务监控及与普罗米集成

    一.    背景说明 Java服务级监控用于对每个应用占用的内存.线程池的线程数量.restful调用数量和响应时间.JVM状态.GC信息等进行监控,并可将指标信息同步至普罗米修斯中集中展示和报警.网 ...

  10. SpringCloud微服务(04):Turbine组件,实现微服务集群监控

    本文源码:GitHub·点这里 || GitEE·点这里 写在前面,阅读本文前,你需要了解熔断器相关内容 SpringCloud微服务:Hystrix组件,实现服务熔断 一.聚合监控简介 1.Dash ...

随机推荐

  1. 5.pygame快速入门-精灵和精灵组

    在之前案例中,图像加载.位置变化.绘制图像都需要编写代码分别处理 pygame提供了两个类简化开发步骤 pygame.sprite.Sprite #精灵,存储图像数据image和位置rect的对象 p ...

  2. C++11绑定器bind及function机制

    前言 之前在学muduo网络库时,看到陈硕以基于对象编程的方式,大量使用boost库中的bind和function机制,如今,这些概念都已引入至C++11,包含在头文件<functional&g ...

  3. Maven 聚合工程的创建

    简单场景举例 聚合工程创建示例 说明: 创建 Maven Project:表示创建 maven 项目,new Project 方式创建 创建 Maven Module:表示创建 maven 项目,ne ...

  4. Mysql InnoDB Redo log

    一丶什么是redo innodb是以也为单位来管理存储空间的,增删改查的本质都是在访问页面,在innodb真正访问页面之前,需要将其加载到内存中的buffer pool中之后才可以访问,但是在聊事务的 ...

  5. Redis Cluster 数据分片

    介绍 Redis Cluster Redis 集群是 Redis 提供的分布式数据库方案, 集群通过分片(sharding) 来进行数据共享, 并提供复制和故障转移功能. 节点 一个 Redis 集群 ...

  6. 干货,深入剖析ReentrantLock源码,推荐收藏

    ReentrantLock和Synchronized都是Java开发中最常用的锁,与Synchronized这种JVM内置锁不同的是,ReentrantLock提供了更丰富的语义.可以创建公平锁或非公 ...

  7. golang实现一个简单的http代理

    代理是网络中的一项重要的功能,其功能就是代理网络用户去取得网络信息.形象的说:它是网络信息的中转站,对于客户端来说,代理扮演的是服务器的角色,接收请求报文,返回响应报文:对于web服务器来说,代理扮演 ...

  8. c#使用Bitmap绘图的时候,内存增大问题

    最近碰到一个问题,就是使用Biamap绘图的时候,为了防止闪烁,使用了双缓存绘制的方式,但是会碰到内存急剧增加的情况,而且在XP的工控机和Win10的机器上运行结果不一样,在Win10 上运行的时候, ...

  9. Perl引用

    引用就是C语言中的指针,perl引用是一个标量类型可以指向变量.数组.哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方. 在变量前面加一个\就得到了这个变量的一个引用 #!usr/bin/p ...

  10. Linux Framebuffer 实验

    一.准备 linux虚拟机或ARM开发板 Ubuntu18.04 二.Framebuffer介绍 次笔记主要的目的是实验,所以我不介绍了,有需要的小伙伴可以去看下面博客 Linux LCD Framb ...