Prometheus

2020-07-27  本文已影响0人  乌鲁木齐001号程序员

Prometheus 架构

Prometheus 架构.png
Prometheus Server
Service Discovery
Pushgateway
Prometheus web UI
Grafna
API Client
PromQL
Alertmanager

Prometheus 安装

docker-compose.yml
version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: 'prometheus'
    volumes:
    - ./prometheus/:/etc/prometheus/
    ports:
    - '9092:9090'
  grafana:
    image: grafana/grafana:5.2.4
    container_name: 'grafana'
    ports:
    - '3000:3000'
    volumes:
    - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini
    - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
    - ./grafana/config.monitoring
    depends_on:
    - prometheus
Prometheus 的配置文件 | monitoring/prometheus/prometheus.yml
global:
  scrape_interval:   15s
  
scrape_configs:
- job_name:       'springboot-app'

  scrape_interval: 10s
  metrics_path: '/actuator/prometheus'

  static_configs:
  - targets: ['172.18.0.1:9082']
    labels:
      application: 'springboot-app'

- job_name: 'prometheus'

  scrape_interval: 5s

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

改造被监控的微服务 | orderApi

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

<!-- 在 actuator 的基础上,暴露一个 prometheus 的端口 -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
application.yml
server:
  port: 9082

management:
  endpoints:
    # 这是 promethus 暴露的端口
    promethus:
      enable: true
    # 这是 actuator 暴露的端口
    web:
      exposure:
        include:
          - prometheus
          - info
          - health
让 promethus 的端点不受安全机制的约束直接访问到
package com.lixinlei.security.order.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;

@Configuration
public class ActuatorSecurityConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                // 所有的监控端点都不受 Spring Security 的约束
                .requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
                .anyRequest().authenticated();
    }

}

微服务给 prometheus 提供的数据

从 prometheus 中看这些数据

prometheus web UI 提供的能力优先,一般会搭配 Grafana 和 Prometheus Server 使用。

上一篇 下一篇

猜你喜欢

热点阅读