微服务监控和报警(二)-Prometheus简介及环境搭建

1、Prometheus简介

  Prometheus是具有活跃生态系统的开源系统监视和警报工具包。下图是Prometheus的体系结构及其某些生态系统组件。最核心的位置就是Prometheus server,主要的作用就是根据我们的配置去用于收集和存储时间序列数据。Service discovery服务的发现,通过Service discovery,Prometheus server就会知道去哪里采集数据,有两种方式,一种是静态的,通过文件去配;另外一种是动态的,可以通过zookeeper或者其他的配置中心,当里面的数据变化时,去不同的地方抓取数据。Jobs/exporters,一般是我们的应用提供的,供Prometheus server抓取数据,这里是拉模式,好处是,对于我们的应用来说,不需要知道Prometheus的服务在哪,只需要暴漏我们的数据就可以了。Pushgateway,是用来支持推模式的,因为有些时候,我们的一些数据并不是一直存在的,比如说定时任务的数据,我们把短活的数据推送到Pushgateway,供Prometheus server从Pushgateway拉取数据。到这里数据采集的组件一件介绍完毕了。数据采集来了之后都放到Prometheus server中,通过HTTP server将数据暴漏出来供前端的一些应用通过PromQL来查询使用,进行数据的可视化和导出,推荐使用的组件时Grafana。Alertmanager来做告警,告警的方式有很多种,email、微信、钉钉或者自己写的接口等,可以对Prometheus server中的时间序列数据定制一些规则,出发了规则会推送到Alertmanager,但是它并不会立刻告警,而是会评估几次,防止误报。

2、Prometheus环境搭建

2.1、使用docker安装Prometheus文件结构

  2.1.1、docker-compose.yml

version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: ‘prometheus‘
    volumes:
    - ./prometheus/:/etc/prometheus/
    ports:
    - ‘8999:9090‘

  2.1.2、prometheus.yml

#全局配置
global:
  #间隔多久去拉取一次数据
  scrape_interval:   15s

# 要拉取的目标是哪里
scrape_configs:
# 我们的springboot项目
- job_name:       ‘springboot-app‘
  #间隔10s拉取一次数据,覆盖全局配置
  scrape_interval: 10s
  #请求的路径
  metrics_path: ‘/actuator/prometheus‘

  static_configs:
  #去哪里抓取,因为我们的项目跑在本地电脑,所以配置运行docker的宿主机
  - targets: [‘host.docker.internal:9080‘]
    #把抓取来的数据,添加一个标签
    labels:
      application: ‘springboot-app‘

#prometheus本机的监控
- job_name: ‘prometheus‘

  scrape_interval: 5s

  static_configs:
  - targets: [‘localhost:9090‘]

  2.1.3、启动命令行,进入monitoring目录, 执行 docker-compose -f docker-compose.yml up 命令

  2.1.4、访问http://127.0.0.1:8999/ 可以访问,容器中部署的prometheus,通过Status->Targets可以看到我们配置的两个数据采集目标。Endpoint,代表数据端点、State代表当前状态,Labels代表标签,Last Scrape代表距上次拉去时间,Error代表错误信息。

3、SpringBoot整合Prometheus,我们以order服务为例

3.1、添加SpringBoot Actuator 监控端点依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

3.2、添加micrometer-registry-prometheus依赖,在actuator中增加prometheus端点

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

3.3、application.yml配置对外暴漏端点,这里我们控制只暴露三个

3.4、资源服务配置端点请求,不用身份验证

package cn.caofanqi.security.config;

import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;

/**
 * 资源服务器配置
 *
 * @author caofanqi
 * @date 2020/2/14 14:07
 */
@Configuration
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
                .anyRequest().authenticated();
    }
}

3.5、启动order服务,刷新http://127.0.0.1:8999/targets 页面,可以看到我们配置的端点,状态为up了

3.6、我们可以通过http://order.caofanqi.cn:9080/actuator/prometheus,看到服务为Prometheus提供的数据,都是一个数据名称跟着一个数字,有的数据名称带{},里面是这个数据名称的标签。

3.7、我们可以通过Prometheus的Graph来查看这些数据,这里{}中的标签,比我们项目中的多,那是因为它把prometheus.yml配置文件中一些配置也添加成标签了,job_name -> job、static_configs.labels.application -> application、static_configs.targets -> instance ,有利于我们对数据进行过滤。

3.8、还可以通过标签进行过滤、通过Graph看图分析

但是它自己提供的这个界面属实不太好看,下节我们用grafana来代替

项目源码:https://github.com/caofanqi/study-security/tree/dev-prometheus1

原文地址:https://www.cnblogs.com/caofanqi/p/12307635.html

时间: 2024-11-05 20:34:02

微服务监控和报警(二)-Prometheus简介及环境搭建的相关文章

微服务监控和报警(四)-自定义metrics指标监控

1.Metrics类型 prometheus中定义了四种metrics类型: 1.1.Counter:只增不减的计数器,其值只能在重新启动时递增或重置为零.例如,可以使用计数器表示已服务的请求数.已完成的任务数或错误数. 1.2.Gauge:是一种度量,它表示一个可以任意上下移动的数值.例如,温度或当前内存使用量. 1.3.Histogram:直方图对观察结果(通常是请求持续时间或响应大小)进行采样,并在可配置的存储桶中对其进行计数.它还提供了所有观测值的总和. 1.4.Summary:与His

深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署

前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring.MyBatis.Dubbo 等框架以及Log4j 等结合,支持PHP.C++.Go等多语言应用,基本接入了美团点评上海侧所有核心应用.目前在中间件(MVC.RPC.数据库.缓存等)框架中得到广泛应用,为美团点评各业务线提供系统的性能指标.健康状况.监控告警等,在微服务监控领域也是非常有用的一套组件.支撑这美团每天450亿的消息,50TB的数据监控,应用于 700

微服务监控zipkin+asp.net core

0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 监控目录:微服务监控zipkin.skywalking以及日志ELK监控系列 一.zipkin介绍 zipkin是一种分布式跟踪系统,有助于收集微服务架构中的延迟问题所需要的时序数据(收集查找),收集微服务之间的调用情况,然后处理调用之间数据延迟等问题. 如下图:微服务调用情况深度.(官方文档图) 以及依赖图分析,会展示出微服务之间的调用关系.当然下图展示的是我案例中的图片 二.zipkin作用 1.全链路追踪工具(查看依赖关

微服务监控案例之一

     首先,您需要了解什么是微服务架构设计,同时了解相关微服务与Docker介绍, 微服务架构的本质,是把整体的业务拆分成很多有特定明确功能的服务,通过很多分散的小服务之间的配合,去解决更大,更复杂的问题.对被拆分后的服务进行分类和管理,彼此之间使用统一的接口来进行交互.      微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题,但是在微服务的架构下,大部分功能模块都是单独部

微服务迁移记(五):WEB层搭建(3)-简单的权限管理

一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 四.SpringSecurity集成 参考:<微服务迁移记(五):WEB层搭建(2)-SpringSecurity集成> 五.FreeMarker集成 参考:<微服务迁移记(五):WEB层搭建(3)-FreeMarker集成> 六.简单权限管理 实现一个简单的到按钮级权限管理,基于数据库扩展.不支持数据级权限,菜单只到二级(可以扩展至

Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串

一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系统,其所有的数据结构,都以唯一的key(字符串)作为名称,然后通过key来获取对应的数据. 二..Net开发环境搭建 这个版本,暂时不考虑并发问题,后续的文章会说!第一步:安装StackExchange.Redis包,我用的是2.0.519版本的. 第二步:编写代码,采用扩展方法的链式编程模式+as

android快速上手(二)android开发环境搭建及hello world

基本了解了java语法,下一步,我们一起开启hello world的神秘之旅. (一)android开发环境搭建 之前搭建android开发环境是件非常费力的事情,下载Eclipse,安装ADT等,如今android官方给我们提供了全套配置. https://developer.android.com/sdk/index.html 搭建android开发环境之前记得先安装jdk (二)开启Hello World之旅 (1)创建Hello World项目 安装完带ADT的Eclipse,打开Ecl

【读书笔记-《Android游戏编程之从零开始》】1.Android 平台简介与环境搭建

简单的记录下笔记,具体可百度! Android SDK (Software Development Kit)- Android 软件开发工具包,用于辅助Android 操作系统软件开发,是开发Android 软件.文档.范例.工具的一个集合.Android NDK (Native Development Kit) - 类似 Android SDK,可用C/C++语言编写Android程序. developer.android.com - 可查阅到 Android SDK. 开发指南.API说明等

嵌入式linux QT开发(二)——QT开发环境搭建

嵌入式linux QT开发(二)--QT开发环境搭建 一.Windows系统QT开发环境搭建 操作系统:Windows 7 QT Creator:qt-creator-win-opensource-2.4.1 QT SDK:qt-win-opensource-4.7.4-mingw 1.安装QT Creator 点击qt-creator-win-opensource-2.4.1源程序安装. 2.安装QT SDK 点击qt-win-opensource-4.7.4-mingw源程序安装. 选择mi