(17)go-micro微服务Prometheus监控
一 Prometheus监控介绍
1.微服务监控系统promethues介绍
是一套开源的监控&报警&时间序列数据库的组合
基本原理是通过HTTP协议周期性抓取被监控组件的状态
适合Docker、 Kubernetes环境的监控系统
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
- 图形化界面:
- 浏览器访问 http://127.0.0.1:9090/
2.安装Grafana看板
- 拉取镜像:
docker pull grafana/grafana
- 运行:
docker run -d -p 3000:3000 grafana/grafana
- 查看是否运行:
docker ps
- 图形化界面:
- 浏览器访问 http://127.0.0.1:3000/
五 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监控的更多相关文章
- 基于 prometheus 的微服务指标监控
基于prometheus的微服务指标监控 服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等.而通过指标监控能清晰的 ...
- Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解
1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...
- 微服务日志监控与查询logstash + kafka + elasticsearch
使用 logstash + kafka + elasticsearch 实现日志监控 https://blog.csdn.net/github_39939645/article/details/788 ...
- go micro 微服务框架温习
go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...
- 使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控
1. 概述 老话说的好:任何成功都不是轻易得来的,是不断地坚持与面对的结果. 言归正传,之前我们聊了 SpringCloud 开发的微服务是如何部署在 Kubernetes(K8s)集群中的,今天我 ...
- 物联网架构成长之路(30)-Spring Boot Admin微服务WebUI监控
0. 前言 一个完整的微服务解决方案包含了许多微服务,基于我们需要观察各个微服务的运行状态,因此Spring Boot 生态提供了Spring Boot Admin 这个组件来实现微服务管理WEB U ...
- SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator.提到Actuator,又不得不提Micrometer ...
- 近期业务大量突增微服务性能优化总结-4.增加对于同步微服务的 HTTP 请求等待队列的监控
最近,业务增长的很迅猛,对于我们后台这块也是一个不小的挑战,这次遇到的核心业务接口的性能瓶颈,并不是单独的一个问题导致的,而是几个问题揉在一起:我们解决一个之后,发上线,之后发现还有另一个的性能瓶颈问 ...
- Java微服务监控及与普罗米集成
一. 背景说明 Java服务级监控用于对每个应用占用的内存.线程池的线程数量.restful调用数量和响应时间.JVM状态.GC信息等进行监控,并可将指标信息同步至普罗米修斯中集中展示和报警.网 ...
- SpringCloud微服务(04):Turbine组件,实现微服务集群监控
本文源码:GitHub·点这里 || GitEE·点这里 写在前面,阅读本文前,你需要了解熔断器相关内容 SpringCloud微服务:Hystrix组件,实现服务熔断 一.聚合监控简介 1.Dash ...
随机推荐
- 知识图谱顶会论文(SIGIR-2022) MorsE:归纳知识图嵌入的元知识迁移
MorsE:归纳知识图嵌入的元知识迁移 论文题目: Meta-Knowledge Transfer for Inductive Knowledge Graph Embedding 论文地址: http ...
- Python--网络编程学习笔记系列01 附实战:udp聊天器
Python--网络编程学习系列笔记01 网络编程基本目标: 不同的电脑上的软件能够实现数据传输 网络编程基础知识: IP地址: 用来在网络中标记一台电脑 网络号+主机号(按网络号和主机号占位分类A ...
- CodeTON Round 3 (Div. 1 + Div. 2, Rated, Prizes!) A-D
比赛链接 A 题解 知识点:贪心. 注意到 \(a[1] \neq 1\) , \(1\) 永远不可能换到前面:\(a[1] = 1\) 可以交换后面任意元素. 时间复杂度 \(O(n)\) 空间复杂 ...
- freeswitch的mod_curl模块
概述 有时候,我们需要在呼叫的过程中,或过程后调用web api接口. freeswitch的mod_curl模块可以很方便的实现web api的接口调用. mod_curl模块默认不安装,需要进入模 ...
- 嵌入式-C语言基础:字符串拼接函数strcat
#include<stdio.h> #include <string.h> //实现字符串拼接 char * mystrcat(char * dest,char * src) ...
- CB利用链及无依赖打Shiro
前言 前面已经学习了CC1到CC7的利用链,其中在CC2中认识了java.util.PriorityQueue ,它在Java中是一个优先队列,队列中每一个元素有自己的优先级.在反序列化这个对象时,为 ...
- Java:String、StringBuilder、StringJoiner学习笔记
String创建的俩种方式 1.直接赋值 String str = "Hello World!"; 当使用直接赋值的方式去创建字符串的时候,虚拟机会去串池里去检查字符串是否存在,如 ...
- Destination folder must be accessible
问题 Ecplise拖入文件夹项目时提示错误:Destination folder must be accessible 解决 导入的时候包不能直接拖入,要使用import导入,选择File-> ...
- Java网络编程:Socket 通信
client----发送数据(输出流)------------(输入)-[管道流处理数据]-(输出)------接收数据(输入流)------server URL:协议+IP+端口+资源位置 客户端: ...
- combobox 只能选择第一个
在使用combobox时有时对于特定的下拉框内容我们一般不需要去请求url获得值,我们只用在js里面控制就好了,昨天遇到的问题是在js里面按照api给的方法写进去,显示是正常的 但是当我去选择的时候发 ...