普罗米修斯java_springboot集成普罗米修斯

普罗米修斯java_springboot集成普罗米修斯点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章Prometheus是一套开源的系统监控报警框架。它由工作在SoundCloud的员工创建,并在2015年正式发布的开源项目。2016年,Prometheus正式加入CloudNativeComputingFoundation,非常的受欢迎。简介Prometheus具有以下特点:一个多维数据模型,其中…

大家好,又见面了,我是你们的朋友全栈君。

点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试文章

0fbad084dc3c3bfa49347c853f56b47f.png

Prometheus 是一套开源的系统监控报警框架。它由工作在 SoundCloud 的 员工创建,并在 2015 年正式发布的开源项目。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,非常的受欢迎。

简介

Prometheus 具有以下特点:

一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据

PromQL,一种灵活的查询语言,可利用此维度

不依赖分布式存储;单服务器节点是自治的

时间序列收集通过HTTP上的拉模型进行

通过中间网关支持推送时间序列

通过服务发现或静态配置发现目标

多种图形和仪表板支持模式

Prometheus 组成及架构

声明:该小节参考了文章[Prometheus 入门与实践]

Prometheus 生态圈中包含了多个组件,其中许多组件是可选的:

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

Client Library: 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。

Push Gateway: 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的 metrics,对于机器层面的 metrices,需要使用 node exporter。

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

Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。

一些其他的工具。

54b99fdf29164c485f2f8f7d6e4d001c.png

其大概的工作流程是:

Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。

Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。

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

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

springboot 集成prometheus

在spring boot工程中引入actuator的起步依赖,以及micrometer-registry-prometheus的依赖。

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-actuator

io.micrometer

micrometer-registry-prometheus

暴露prometheus的接口;暴露metrics.tags,和spring.application.name一致。

server:

port: 8081

spring:

application:

name: my-prometheus

management:

endpoints:

web:

exposure:

include: ‘prometheus’

metrics:

tags:

application: ${spring.application.name}

写一个API接口,用作测试。代码如下:

@RestController

public class TestController {

Logger logger = LoggerFactory.getLogger(TestController.class);

@GetMapping(“/test”)

public String test() {

logger.info(“test”);

return “ok”;

}

@GetMapping(“”)

public String home() {

logger.info(“home”);

return “ok”;

}

}

在浏览器上访问http://localhost:8081/actuator/prometheus,展示的信息如下,这些信息都是actuator的一些监控信息。

# HELP jvm_gc_max_data_size_bytes Max size of old generation memory pool

# TYPE jvm_gc_max_data_size_bytes gauge

jvm_gc_max_data_size_bytes{application=”my-prometheus”,} 2.863661056E9

# HELP http_server_requests_seconds

# TYPE http_server_requests_seconds summary

http_server_requests_seconds_count{application=”my-prometheus”,exception=”None”,method=”GET”,outcome=”CLIENT_ERROR”,status=”404″,uri=”/**”,} 1.0

http_server_requests_seconds_sum{application=”my-prometheus”,exception=”None”,method=”GET”,outcome=”CLIENT_ERROR”,status=”404″,uri=”/**”,} 0.018082327

# HELP http_server_requests_seconds_max

# TYPE http_server_requests_seconds_max gauge

http_server_requests_seconds_max{application=”my-prometheus”,exception=”None”,method=”GET”,outcome=”CLIENT_ERROR”,status=”404″,uri=”/**”,} 0.018082327

# HELP jvm_threads_states_threads The current number of threads having NEW state

# TYPE jvm_threads_states_threads gauge

jvm_threads_states_threads{application=”my-prometheus”,state=”waiting”,} 12.0

jvm_threads_states_threads{application=”my-prometheus”,state=”runnable”,} 8.0

jvm_threads_states_threads{application=”my-prometheus”,state=”timed-waiting”,} 2.0

jvm_threads_states_threads{application=”my-prometheus”,state=”terminated”,} 0.0

jvm_threads_states_threads{application=”my-prometheus”,state=”blocked”,} 0.0

jvm_threads_states_threads{application=”my-prometheus”,state=”new”,} 0.0

# HELP process_files_open_files The open file descriptor count

# TYPE process_files_open_files gauge

…省略更多

安装Prometheus

安装Prometheus很简单,在linux系统上安装,执行以下的安装命令。其他的操作系统,比如windows、mac等在官网上(https://prometheus.io/download/)下载并安装。

wget https://github.com/prometheus/prometheus/releases/download/v2.19.2/prometheus-2.19.2.darwin-amd64.tar.gz

tar xvfz prometheus-*.tar.gz

cd prometheus-*

修改Prometheus的配置文件prometheus.yml,代码如下:

global:

scrape_interval:     15s # By default, scrape targets every 15 seconds.

# Attach these labels to any time series or alerts when communicating with

# external systems (federation, remote storage, Alertmanager).

external_labels:

monitor: ‘codelab-monitor’

# A scrape configuration containing exactly one endpoint to scrape:

# Here it’s Prometheus itself.

scrape_configs:

# The job name is added as a label `job=` to any timeseries scraped from this config.

– job_name: ‘prometheus’

# Override the global default and scrape targets from this job every 5 seconds.

scrape_interval: 5s

static_configs:

– targets: [‘localhost:9090’]

– job_name: ‘springboot_prometheus’

scrape_interval: 5s

metrics_path: ‘/actuator/prometheus’

static_configs:

– targets: [‘127.0.0.1:8081’]

config.job_name,配置job的名称

config.scrape_interval,配置多久抓一次监控信息

config.metrics_path,获取监控信息的接口

config.static_configs.targets配置获取监控信息的地址。

使用以下的命令启动prometheus,并通过–config.file指定配置文件

./prometheus –config.file=prometheus.yml

多次请求springboot项目的接口http://localhost:8081/test , 并访问prometheus的控制台http://localhost:9090/,展示的界面如下:

7e26f06e6538c8ac617e988d7958ae80.png

prometheus提供了一些可视化图,比如使用柱状图来展示每秒请求数:

b23861eab6036024a617921f7662001b.png

安装grafana

grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。使用grafana去展示prometheus上的数据。先安装,安装命令如下:

wget https://dl.grafana.com/oss/release/grafana-7.0.4.darwin-amd64.tar.gz

tar -zxvf grafana-7.0.4.darwin-amd64.tar.gz

./grafana-server

访问http://localhost:3000/,初始密码:admin/admin。

配置数据源,如图:

520793111c667864f6f6649d47339f21.png

配置prometheus的地址:http://localhost:9090 ,如图所示:

c5f1aa360af126dbf025b34b5fe83377.png

在dashboard界面新建panel,展示的metrics为http_server_request_seconds_count,即展示了以时间为横轴,请求数为纵轴的请求曲线,如图所示:

f655418b6b683ded24d93f6705a9d053.png

参考资料

[Prometheus 入门与实践]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161775.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件项目工作流程图[通俗易懂]

    软件项目工作流程图

    2022年1月29日
    51
  • 自动编码器(Autoencoder)

    自动编码器(Autoencoder)autoencoder是一种无监督的学习算法。在深度学习中,autoencoder用于在训练阶段开始前,确定权重矩阵WW的初始值。神经网络中的权重矩阵WW可看作是对输入的数据进行特征转换,即先将数据编码为另一种形式,然后在此基础上进行一系列学习。然而,在对权重初始化时,我们并不知道初始的权重值在训练时会起到怎样的作用,也不知道在训练过程中权重会怎样的变化。因此一种较好的思

    2022年6月10日
    29
  • node+express操作cookie「建议收藏」

    node+express操作cookie「建议收藏」Cookie:有时也用其复数形式Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。用node操作cookie我们需要cookie-parser模块npmicookie-parser-s接下来在我们的文件中引入此模块//引入express模块constexpress=require(‘express’)//实例化expressconstapp=

    2022年7月11日
    14
  • 贝塞尔方程与贝塞尔函数学习笔记

    贝塞尔方程与贝塞尔函数学习笔记《数学物理方法(顾樵)》第13章学习笔记第一节几个微分方程的引入三维波动方程:∂2v∂t2=a2(∂2v∂x2+∂2v∂y2+∂2v∂z2)≡a2∇2v\frac{\partial^2v}{\partialt^2}=a^2(\frac{\partial^2v}{\partialx^2}+\frac{\partial^2v}{\partialy^2}+\frac{\partial^2v}{\partialz^2})\equiva^2\nabla^2v∂t2.

    2022年10月26日
    0
  • linux安装anaconda及配置pytorch环境

    文章目录下载anaconda使用conda创建新环境判断是否安装成功判断pytorch是否安装成功检验是否可以使用GPU下载anaconda这里有多种方法,可以下载到windows然后通过xftp传到linux服务器上,也可以使用wget命令直接在linux上下载我这里使用的是第二种方法,下载源使用的是官网的官网,如果觉得速度太慢可以使用清华镜像源,选择自己需要的版本就行wgethttps://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_

    2022年4月14日
    167
  • eXtremeDB XML[通俗易懂]

    eXtremeDB XML[通俗易懂]ForC/C++applicationstheeXtremeDBschemacompileroption“–x”causes mcocomptogenerateinterfacefunctionstoretrieve,createandreplace(update) thecontentsofanobjectwiththecontent

    2022年10月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号