Skip to content

1. 服务发现

1.1 静态方式

直接手动添加,机器量少还能接受,机器量大,此方法不可取

1.2 动态方式

https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config

1.文件服务发现

添加的配置可以是json或者yaml格式的,推荐使用yaml格式的

  • 默认配置文件
yaml
# Patterns for files from which target groups are extracted.
files:
  [ - <filename_pattern> ... ]

# Refresh interval to re-read the files.
[ refresh_interval: <duration> | default = 5m ]
# Patterns for files from which target groups are extracted.
files:
  [ - <filename_pattern> ... ]

# Refresh interval to re-read the files.
[ refresh_interval: <duration> | default = 5m ]
  • 创建targets目录
bash
mkdir /data/apps/prometheus/targets/ -p
mkdir /data/apps/prometheus/targets/ -p
  • 创建black_export.yml
yaml
- targets:
  - 192.168.5.254
- targets:
  - 192.168.5.254
  • 完整配置
yaml
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
scrape_configs:
- job_name: 'black_export'
  file_sd_configs:
  - refresh_interval: 10s
    files:
    - targets/black_export.yml
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
scrape_configs:
- job_name: 'black_export'
  file_sd_configs:
  - refresh_interval: 10s
    files:
    - targets/black_export.yml

node_exporter

  • 创建targets文件targets.yml
yaml
- targets:['node_exporter:9100']
  labels:
    instance:Prometheus服务器
    job:node-exporter
- targets:['node_exporter:9100']
  labels:
    instance:Prometheus服务器
    job:node-exporter

依次往下添加即可

  • 完整配置
yaml
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
scrape_configs:
- job_name : 'file_sd_targets'
  file_sd_configs:
  - refresh_interval: 10s
    files:
    - targets/targets.yml
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
scrape_configs:
- job_name : 'file_sd_targets'
  file_sd_configs:
  - refresh_interval: 10s
    files:
    - targets/targets.yml

blackbox

icmp
  • 配置prometheus
yaml
  - job_name: 'blackbox-icmp'
    metrics_path: /probe
    params:
      module: [icmp_ipv4]
    static_configs:
      - targets:
        - 192.168.0.1
        - 192.168.0.3
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115
  - job_name: 'blackbox-icmp'
    metrics_path: /probe
    params:
      module: [icmp_ipv4]
    static_configs:
      - targets:
        - 192.168.0.1
        - 192.168.0.3
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9115
  • 配置blackbox
yaml
  ## ----------- ICMP 检测配置 -----------
  icmp:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4" # 默认是 ip6
  ## ----------- ICMP 检测配置 -----------
  icmp:
    prober: icmp
    timeout: 5s
    icmp:
      preferred_ip_protocol: "ip4" # 默认是 ip6
tcp
  • 配置prometheus
yaml
- job_name: 'blackbox-tcp'
  scrape_timeout: 15s
  scrape_interval: 15s
  metrics_path: /probe
  params:
    module: [tcp_connect]
  static_configs:
   - targets:
      - <my_tcp_server>:<my_tcp_server_port>
  relabel_configs:
   - source_labels: [__address__]
     target_label: __param_target
   - source_labels: [__param_target]
     target_label: instance
   - target_label: __address__
     replacement: prometheus-blackbox-exporter:9115
- job_name: 'blackbox-tcp'
  scrape_timeout: 15s
  scrape_interval: 15s
  metrics_path: /probe
  params:
    module: [tcp_connect]
  static_configs:
   - targets:
      - <my_tcp_server>:<my_tcp_server_port>
  relabel_configs:
   - source_labels: [__address__]
     target_label: __param_target
   - source_labels: [__param_target]
     target_label: instance
   - target_label: __address__
     replacement: prometheus-blackbox-exporter:9115
  • 配置blackbox
yaml
  ## ----------- TCP 检测模块配置 -----------
  tcp_connect:
    prober: tcp
    tcp:
      ip_protocol_fallback: false
      preferred_ip_protocol: ip4
    timeout: 5s
  ## ----------- TCP 检测模块配置 -----------
  tcp_connect:
    prober: tcp
    tcp:
      ip_protocol_fallback: false
      preferred_ip_protocol: ip4
    timeout: 5s
https
  • 配置prometheus
yaml
- job_name: 'blackbox-https'
  scrape_timeout: 15s
  scrape_interval: 15s
  metrics_path: /probe
  params:
    module: [http_2xx]
  static_configs:
   - targets:
      - https://example.com
  relabel_configs:
   - source_labels: [__address__]
     target_label: __param_target
   - source_labels: [__param_target]
     target_label: instance
   - target_label: __address__
     replacement: prometheus-blackbox-exporter:9115
- job_name: 'blackbox-https'
  scrape_timeout: 15s
  scrape_interval: 15s
  metrics_path: /probe
  params:
    module: [http_2xx]
  static_configs:
   - targets:
      - https://example.com
  relabel_configs:
   - source_labels: [__address__]
     target_label: __param_target
   - source_labels: [__param_target]
     target_label: instance
   - target_label: __address__
     replacement: prometheus-blackbox-exporter:9115
  • 配置blackbox
yaml
modules:
  ## ----------- HTTP GET 2xx 检测模块配置 -----------
modules:
  ## ----------- HTTP GET 2xx 检测模块配置 -----------
  http_get_2xx:
    prober: http
    timeout: 10s
    http:
      method: GET
      fail_if_ssl: false
      tls_config:
        insecure_skip_verify: true
      ip_protocol_fallback: false
      no_follow_redirects: false
      preferred_ip_protocol: ip4
      valid_http_versions:
        - HTTP/1.1
        - HTTP/2.0
      valid_status_codes:
        - 200
        - 204
modules:
  ## ----------- HTTP GET 2xx 检测模块配置 -----------
modules:
  ## ----------- HTTP GET 2xx 检测模块配置 -----------
  http_get_2xx:
    prober: http
    timeout: 10s
    http:
      method: GET
      fail_if_ssl: false
      tls_config:
        insecure_skip_verify: true
      ip_protocol_fallback: false
      no_follow_redirects: false
      preferred_ip_protocol: ip4
      valid_http_versions:
        - HTTP/1.1
        - HTTP/2.0
      valid_status_codes:
        - 200
        - 204

2.consul服务发现(推荐)

Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。通过 Prometheus 实现监控,当新增一个 Target 时,需要变更服务器上的配置文件,即使使用 file_sd_configs 配置,也需要登录服务器修改对应 Json 文件,会非常麻烦。不过 Prometheus 官方支持多种自动服务发现的类型,其中就支持 Consul。

部署

看consul章节

配置prometheus

yaml
cat > /data/monitor/prometheus/config <<EOF
global:
  scrape_interval:     15s # 每15s采集一次数据
  scrape_timeout: 10s   # 超时时间
  evaluation_interval: 15s # 每15s做一次告警检测

############ 告警配置 ###################
alerting:
  alertmanagers:
  - static_configs:
    - targets: []
    scheme: http
    timeout: 10s

scrape_configs:
  # 配置prometheus服务本身
  - job_name: prometheus
    honor_timestamps: true
    metrics_path: /prometheus/metrics/
    scheme: http
    static_configs:
      - targets: ['10.103.236.199:19090']
        labels:
          instance: prometheus
  ############ consul ###################
  - job_name: 'consul-node-exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500' #ip根据自己环境进行修改
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
EOF
cat > /data/monitor/prometheus/config <<EOF
global:
  scrape_interval:     15s # 每15s采集一次数据
  scrape_timeout: 10s   # 超时时间
  evaluation_interval: 15s # 每15s做一次告警检测

############ 告警配置 ###################
alerting:
  alertmanagers:
  - static_configs:
    - targets: []
    scheme: http
    timeout: 10s

scrape_configs:
  # 配置prometheus服务本身
  - job_name: prometheus
    honor_timestamps: true
    metrics_path: /prometheus/metrics/
    scheme: http
    static_configs:
      - targets: ['10.103.236.199:19090']
        labels:
          instance: prometheus
  ############ consul ###################
  - job_name: 'consul-node-exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500' #ip根据自己环境进行修改
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
EOF
  • 热更新服务
bash
#查看语法
/usr/local/prometheus/promtool   check config /data/monitor/prometheus/prometheus.yml
#查看语法
/usr/local/prometheus/promtool   check config /data/monitor/prometheus/prometheus.yml
bash
curl -v --request  POST 'http://10.103.236.199:19090/prometheus/-/reload'
curl -v --request  POST 'http://10.103.236.199:19090/prometheus/-/reload'

prometheus 多个这个的原因,我要用同一个域名代理多个后端,默认是没有prometheus

注册服务

node-export
  • 配置prometheus
yaml
  - job_name: 'consul_node_exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []  #代表所有服务
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
  - job_name: 'consul_node_exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []  #代表所有服务
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
  • 注入consul服务
bash
curl -X PUT -d '{"id": "node-exporter","name": "node-exporter-10.103.236.199","address": "10.103.236.199","port": 9100,"tags": ["node-exporter"],"Meta":{"app": "linux-node","project": "yewu"},"checks": [{"http": "http://10.103.236.199:9100/metrics", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
curl -X PUT -d '{"id": "node-exporter","name": "node-exporter-10.103.236.199","address": "10.103.236.199","port": 9100,"tags": ["node-exporter"],"Meta":{"app": "linux-node","project": "yewu"},"checks": [{"http": "http://10.103.236.199:9100/metrics", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register

❌ 注意

  • ID 指定实例的唯一ID名称;
  • Name 指定服务名,可以多个实例共用服务名;(相当于在prometheus展示job)
  • Tags 指定服务的标签列表,这些标签可用于过滤服务,并通过API进行公开;
  • Address 指定服务的实例地址;(相当于instance)
  • Port 指定实例的端口号;
  • Meta 指定服务的元数据,格式为key:value,此处用于保存我们的标签信息;
  • EnableTagOverride 此处禁用服务标签的反熵功能;
  • Check 服务的检查列表,Consul会根据配置信息定时发起检查,确定服务是否正常;
  • 效果

consul中

image-20241219154503027

prometheus中

image-20241219154528231

blackbox_export
  • 配置prometheus
bash
  ############ consul blackbox_exporter ###################
  - job_name: 'blackbox-exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
  ############ consul blackbox_exporter ###################
  - job_name: 'blackbox-exporter'
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox-exporter.*
        action: keep
      - source_labels: ['__meta_consul_service']
        regex: '(.*)'
        target_label: 'job'
        replacement: '$1'
      - source_labels: ['__meta_consul_service_address']
        regex: '(.*)'
        target_label: 'instance'
        replacement: '$1'
  • 注入服务
bash
curl -X PUT -d '{"id": "blackbox-exporter","name": "blackbox-exporter-10.103.236.199","address": "10.103.236.199","port": 9100,"tags": ["blackbox-exporter"],"Meta":{"app": "linux-node"},"checks": [{"http": "http://10.103.236.199:9100/metrics", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
curl -X PUT -d '{"id": "blackbox-exporter","name": "blackbox-exporter-10.103.236.199","address": "10.103.236.199","port": 9100,"tags": ["blackbox-exporter"],"Meta":{"app": "linux-node"},"checks": [{"http": "http://10.103.236.199:9100/metrics", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
backbox_http_200
  • 配置prometheus
yaml
  ############ consul domain ###################
  - job_name: 'consul_blackbox_domain'
    scrape_interval: 10s
    scrape_timeout: 5s
    metrics_path: /probe
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []
    params:
      module:
      - http_get_2xx
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox_domain.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: [__meta_consul_service_address]
        target_label: __param_target
      - target_label: __address__
        replacement: 10.103.236.199:19115
  ############ consul domain ###################
  - job_name: 'consul_blackbox_domain'
    scrape_interval: 10s
    scrape_timeout: 5s
    metrics_path: /probe
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        services: []
    params:
      module:
      - http_get_2xx
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox_domain.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: [__meta_consul_service_address]
        target_label: __param_target
      - target_label: __address__
        replacement: 10.103.236.199:19115

或者

yaml
  ############ consul http_get_2xx ###################
  - job_name: 'consul-blackbox-http_get_2xx'
    scrape_interval: 30s
    scrape_timeout: 15s
    scheme: http
    metrics_path: /probe
    params:
      module:
      - http_get_2xx
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services:
        - http_get_2xx
    relabel_configs:
      - source_labels: ['__meta_consul_service_address']
        target_label: __param_target
      - source_labels: ['__meta_consul_service_address']
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
  ############ consul http_get_2xx ###################
  - job_name: 'consul-blackbox-http_get_2xx'
    scrape_interval: 30s
    scrape_timeout: 15s
    scheme: http
    metrics_path: /probe
    params:
      module:
      - http_get_2xx
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services:
        - http_get_2xx
    relabel_configs:
      - source_labels: ['__meta_consul_service_address']
        target_label: __param_target
      - source_labels: ['__meta_consul_service_address']
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115
      - source_labels: ['__meta_consul_service_metadata_project']
        regex: '(.*)'
        target_label: 'project'
        replacement: '$1'
  • 注入服务
bash
curl -X PUT -d '{"id": "blackbox-http","name": "http_get_2xx","address": "https://www.baidu.com","port": 443,"tags": ["blackbox-http"],"Meta":{"app": "linux-node","project": "web"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
curl -X PUT -d '{"id": "blackbox-http","name": "http_get_2xx","address": "https://www.baidu.com","port": 443,"tags": ["blackbox-http"],"Meta":{"app": "linux-node","project": "web"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register

image-20241219180753764

image-20241219180817571

blackbox_icmp
  • 配置prometheus
yaml
  - job_name: consul_blackbox_icmp
    params:
      module:
      - icmp
    scrape_interval: 2s
    scrape_timeout: 2s
    metrics_path: /probe
    consul_sd_configs:
      # consul 服务地址
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services: [] # 代表所有服务
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox_icmp.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: ['__meta_consul_service_address']
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115
  - job_name: consul_blackbox_icmp
    params:
      module:
      - icmp
    scrape_interval: 2s
    scrape_timeout: 2s
    metrics_path: /probe
    consul_sd_configs:
      # consul 服务地址
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services: [] # 代表所有服务
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox_icmp.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: ['__meta_consul_service_address']
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115
  • 注入服务
bash
curl -X PUT -d '{"id": "blackbox-icmp","name": "blackbox_icmp","address": "10.103.236.199","port": 19115,"tags": ["blackbox-icmp"],"Meta":{"app": "linux-node","project": "yewu"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
curl -X PUT -d '{"id": "blackbox-icmp","name": "blackbox_icmp","address": "10.103.236.199","port": 19115,"tags": ["blackbox-icmp"],"Meta":{"app": "linux-node","project": "yewu"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register

image-20241220173515444

image-20241220173445708

blackbox_tcp
yaml
  ############ consul tcp_connect ###################
  - job_name: 'consul_blackbox_tcp_connect'
    scrape_interval: 10s
    scrape_timeout: 5s
    scheme: http
    params:
      module: [tcp_connect]
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox-tcp.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: [__meta_consul_service_address]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115 #根据环境进行修改
  ############ consul tcp_connect ###################
  - job_name: 'consul_blackbox_tcp_connect'
    scrape_interval: 10s
    scrape_timeout: 5s
    scheme: http
    params:
      module: [tcp_connect]
    consul_sd_configs:
      - server: '10.103.236.199:8500'
        tag_separator: ','
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*blackbox-tcp.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - source_labels: [__meta_consul_service_address]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 10.103.236.199:19115 #根据环境进行修改
  • 添加ssh服务
bash
curl -X PUT -d '{"id": "blackbox-tcp","name": "blackbox-tcp","address": "10.103.236.199","port": 22,"tags": ["blackbox-tcp"],"Meta":{"app": "linux-node","project": "ssh"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
curl -X PUT -d '{"id": "blackbox-tcp","name": "blackbox-tcp","address": "10.103.236.199","port": 22,"tags": ["blackbox-tcp"],"Meta":{"app": "linux-node","project": "ssh"},"checks": [{"http": "http://10.103.236.199:19115", "interval": "5s"}]}'  http://10.103.236.199:8500/v1/agent/service/register
json方式

将自动发现的服务进行分类

  • 配置prometheus
yaml
  - job_name: 'consul_node_exporter'
    consul_sd_configs:
      - server: '192.168.75.41:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
 
  - job_name: 'cadvisor-exporter'
    consul_sd_configs:
      - server: '192.168.75.41:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*cadvisor-exporter.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
  - job_name: 'consul_node_exporter'
    consul_sd_configs:
      - server: '192.168.75.41:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*node-exporter.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
 
  - job_name: 'cadvisor-exporter'
    consul_sd_configs:
      - server: '192.168.75.41:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*cadvisor-exporter.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
  • 注入consul服务
bash
cat > consul-0.json <<EOF
{
  "ID": "node-exporter",
  "Name": "node-exporter-192.168.75.41",
  "Tags": [
    "node-exporter"
  ],
  "Address": "192.168.75.41",
  "Port": 9100,
  "Meta": {
    "app": "spring-boot",
    "team": "appgroup",
    "project": "bigdata"
  },
  "EnableTagOverride": false,
  "Check": {
    "HTTP": "http://192.168.75.41:9100/metrics",
    "Interval": "10s"
  },
  "Weights": {
    "Passing": 10,
    "Warning": 1
  }
}
EOF

#更新注册服务
curl --request PUT --data @consul-0.json http://192.168.75.41:8500/v1/agent/service/register?replace-existing-checks=1

#容器方式
cat >docker_json_consul.json <<EOF
{
  "ID": "cadvisor-exporter-test",
  "Name": "cadvisor-exporter-192.168.75.42",
  "Tags": [
    "cadvisor-exporter"
  ],
  "Address": "192.168.75.42",
  "Port": 8080,
  "Meta": {
    "app": "docker",
    "team": "cloudgroup",
    "project": "docker-service"
  },
  "EnableTagOverride": false,
  "Check": {
    "HTTP": "http://192.168.75.42:8080/metrics",
    "Interval": "10s"
  },
  "Weights": {
    "Passing": 10,
    "Warning": 1
  }
}
EOF


curl --request PUT --data @consul2.json http://192.168.75.41:8500/v1/agent/service/register?replace-existing-checks=1
cat > consul-0.json <<EOF
{
  "ID": "node-exporter",
  "Name": "node-exporter-192.168.75.41",
  "Tags": [
    "node-exporter"
  ],
  "Address": "192.168.75.41",
  "Port": 9100,
  "Meta": {
    "app": "spring-boot",
    "team": "appgroup",
    "project": "bigdata"
  },
  "EnableTagOverride": false,
  "Check": {
    "HTTP": "http://192.168.75.41:9100/metrics",
    "Interval": "10s"
  },
  "Weights": {
    "Passing": 10,
    "Warning": 1
  }
}
EOF

#更新注册服务
curl --request PUT --data @consul-0.json http://192.168.75.41:8500/v1/agent/service/register?replace-existing-checks=1

#容器方式
cat >docker_json_consul.json <<EOF
{
  "ID": "cadvisor-exporter-test",
  "Name": "cadvisor-exporter-192.168.75.42",
  "Tags": [
    "cadvisor-exporter"
  ],
  "Address": "192.168.75.42",
  "Port": 8080,
  "Meta": {
    "app": "docker",
    "team": "cloudgroup",
    "project": "docker-service"
  },
  "EnableTagOverride": false,
  "Check": {
    "HTTP": "http://192.168.75.42:8080/metrics",
    "Interval": "10s"
  },
  "Weights": {
    "Passing": 10,
    "Warning": 1
  }
}
EOF


curl --request PUT --data @consul2.json http://192.168.75.41:8500/v1/agent/service/register?replace-existing-checks=1

注销服务

Consul API 注销"id=node-exporter" 服务

bash
curl -X PUT http://10.103.236.199:8500/v1/agent/service/deregister/id_name
curl -X PUT http://10.103.236.199:8500/v1/agent/service/deregister/id_name