使用Prometheus进行服务发现

背景- Background

在添加Prometheus的监视目标时,必须先停止Prometheus的服务,然后添加监视目标。这一过程很麻烦。当我在寻找是否有其他方法时,发现可以使用基于文件的服务发现。以下是我尝试的方法的总结。

Service Discovery指的是服务发现。

由于在Sakura Internet公司的技术博客上有一个简洁明了的解释,我们引用了以下的说明:
https://knowledge.sakura.ad.jp/20489/

在许多云端和容器集群环境中,服务网格的诞生背景之一是由于无法事先知道分配给运行服务的IP地址的限制。因此,需要通过某种方式在服务运行后了解其他服务的IP地址以访问它们(这被称为”服务发现”等)。

基于文件的服务发现是什么?

Prometheus的官方文档中包含以下描述:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config

文件为基础的服务发现提供了一个更通用的方式来配置静态目标,并作为插入自定义服务发现机制的接口。

对于基于文件的服务发现,它提供了一种更常见的方式,即通过设置可扩展的服务发现机制的接口,来管理静态目标和服务。

环境

以下是本次使用的各个服务的版本和文件结构。

# 各バージョン
Prometheus: 2.23.0
node-exporter: 1.0.1
docker-compose: 2.2

# ファイル構成
docker-compose.yaml
prometheus
-- prometheus.yaml
-- service_discovery.yaml
Screen Shot 2021-01-03 at 3.24.01.png

建立

使用以下的docker-compose环境配置Prometheus和node-exporter容器。为了在之后确认服务发现,准备node-exporter1和node-exporter2。同时,也创建docker网络–subnet=172.19.0.0/19 prom_net作为准备。

version: '2.2'
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes: 
       - ./prometheus:/etc/prometheus       
    command: "--config.file=/etc/prometheus/prometheus.yaml"
    ports: 
      - 9090:9090      
    restart: "no"
    networks: 
      prom_net:
        ipv4_address: 172.19.0.2
  node_exporter1:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node_exporter1  
    ports:
      - 9100:9100
    networks: 
      prom_net:
        ipv4_address: 172.19.0.3
  node_exporter2:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node_exporter2   
    ports:
      - 9100:9100
    networks: 
      prom_net:
        ipv4_address: 172.19.0.4

Prometheus的配置文件如下所示。在file_sd_configs中定义一个名为service_discovery.yaml的配置文件作为服务发现的配置。

global:
  scrape_interval:     15s 
  evaluation_interval: 15s 

scrape_configs:        
  - job_name: 'node-exporter'
    file_sd_configs:
      - files:
        - service_discovery.yaml

下面是刚刚定义的service_dicovery.yaml文件的内容。这次我们只将node-exporter1作为目标。

- targets:
  - 172.19.0.3:9100
  labels:
    subsystem: "node-exporter1"

结果 (jié guǒ)

Screen Shot 2021-01-03 at 2.37.53.png
- targets:
  - 172.19.0.3:9100
  labels:
    subsystem: "node-exporter1"
# 新規で追加
- targets: 
  - 172.19.0.4:9100
  labels:
    subsystem: "node-exporter2"
Screen Shot 2021-01-03 at 3.02.25.png

感受

只需更新service_discovery.yaml,即可在保持Prometheus运行的同时添加监视目标。除了基于文件的服务发现,还可以使用Consul等方法,所以我想在有时间的时候尝试一下。

文献资料

广告
将在 10 秒后关闭
bannerAds