prometheus使用3

服務發現

基於文件的服務發現

現有配置:

[root@mcw03 ~]# cat /etc/prometheus.yml 
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/node_rules.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'agent1'   
    static_configs:
    - targets: ['10.0.0.14:9100','10.0.0.12:9100']
  - job_name: 'promserver'   
    static_configs:
    - targets: ['10.0.0.13:9100']
  - job_name: 'server_mariadb' 
    static_configs:
    - targets: ['10.0.0.13:9104']
  - job_name: 'docker' 
    static_configs:
    - targets: ['10.0.0.12:8080']
    metric_relabel_configs:
    - regex: 'kernelVersion'
      action: labeldrop
[root@mcw03 ~]# 

把static_configs 替換成file_sd_configs

配置刷新重載文件配置的時間。可以不用手動刷新

 創建目錄並修改配置,指定使用的文件配置

下面紅色配置錯了,直接指定文件路徑就可以,不需要targets鍵

[root@mcw03 ~]# ls /etc/prometheus.yml 
/etc/prometheus.yml
[root@mcw03 ~]# mkdir -p /etc/targets/{nodes,docker}
[root@mcw03 ~]# vim /etc/prometheus.yml 
[root@mcw03 ~]# cat /etc/prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/node_rules.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'agent1'   
    file_sd_configs:
      - files:
        - targets: targets/nodes/*.json
        refresh_interval: 5m
  - job_name: 'promserver'   
    static_configs:
    - targets: ['10.0.0.13:9100']
  - job_name: 'server_mariadb' 
    static_configs:
    - targets: ['10.0.0.13:9104']
  - job_name: 'docker' 
    file_sd_configs:
      - files: 
        - targets: targets/docker/*.json
        refresh_interval: 5m
   # metric_relabel_configs:
   # - regex: 'kernelVersion'
   #   action: labeldrop
[root@mcw03 ~]# 

 創建配置文件

[root@mcw03 ~]# touch /etc/targets/nodes/nodes.json
[root@mcw03 ~]# touch /etc/targets/docker/daemons.json
[root@mcw03 ~]# 

修改到json文件配置中

[root@mcw03 ~]# vim  /etc/targets/nodes/nodes.json
[root@mcw03 ~]# vim /etc/targets/docker/daemons.json 
[root@mcw03 ~]# cat /etc/targets/nodes/nodes.json
[{
  "targets": [
    "10.0.0.14:9100",
    "10.0.0.12:9100"
  ]
}]
[root@mcw03 ~]# cat /etc/targets/docker/daemons.json
[{
  "targets": [
    "10.0.0.12:8080"
  ]
}]
[root@mcw03 ~]# 

報錯了

[root@mcw03 ~]# curl -X POST http://localhost:9090/-/reload
failed to reload config: couldn't load configuration (--config.file="/etc/prometheus.yml"): parsing YAML file /etc/prometheus.yml: yaml: unmarshal errors:
  line 34: cannot unmarshal !!map into string
  line 45: cannot unmarshal !!map into string
[root@mcw03 ~]# 

上面配置寫錯了

[root@mcw03 ~]# vim /etc/prometheus.yml 
[root@mcw03 ~]# cat /etc/prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/node_rules.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'agent1'   
    file_sd_configs:
      - files:
        - targets/nodes/*.json
        refresh_interval: 5m
  - job_name: 'promserver'   
    static_configs:
    - targets: ['10.0.0.13:9100']
  - job_name: 'server_mariadb' 
    static_configs:
    - targets: ['10.0.0.13:9104']
  - job_name: 'docker' 
    file_sd_configs:
      - files: 
        - targets/docker/*.json
        refresh_interval: 5m
   # metric_relabel_configs:
   # - regex: 'kernelVersion'
   #   action: labeldrop
[root@mcw03 ~]# curl -X POST http://localhost:9090/-/reload
[root@mcw03 ~]# 

此時看,可以看到服務發現的客戶端

http://10.0.0.13:9090/service-discovery

 改爲yml格式

[root@mcw03 ~]# vim /etc/prometheus.yml 
[root@mcw03 ~]# cat /etc/prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "rules/node_rules.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'agent1'   
    file_sd_configs:
      - files:
        - targets/nodes/*.json
        refresh_interval: 5m
  - job_name: 'promserver'   
    static_configs:
    - targets: ['10.0.0.13:9100']
  - job_name: 'server_mariadb' 
    static_configs:
    - targets: ['10.0.0.13:9104']
  - job_name: 'docker' 
    file_sd_configs:
      - files: 
        - targets/docker/*.yml
        refresh_interval: 5m
   # metric_relabel_configs:
   # - regex: 'kernelVersion'
   #   action: labeldrop
[root@mcw03 ~]# cp  /etc/targets/docker/daemons.json /etc/targets/docker/daemons.yml
[root@mcw03 ~]# vim /etc/targets/docker/daemons.yml
[root@mcw03 ~]# cat /etc/targets/docker/daemons.yml
- targets:
  - "10.0.0.12:8080"
[root@mcw03 ~]# 
[root@mcw03 ~]# curl -X POST http://localhost:9090/-/reload
[root@mcw03 ~]# 

重載之後正常,

 從標籤裏可以看到,服務自動發現來自哪裏

 因爲target是yml或者json數據,所以可以用salt,cmdb等等各種,進行配置集中管理,實現監控

基於文件的自動發現,添加標籤的實現

 

修改配置

[root@mcw03 ~]# vim /etc/targets/nodes/nodes.json 
[root@mcw03 ~]# cat /etc/targets/nodes/nodes.json
[{
  "targets": [
    "10.0.0.14:9100",
    "10.0.0.12:9100"
  ],
  "labels": {
     "datacenter": "mcwhome"
  }
}]
[root@mcw03 ~]# vim /etc/targets/docker/daemons.yml 
[root@mcw03 ~]# cat /etc/targets/docker/daemons.yml
- targets:
  - "10.0.0.12:8080"
- labels:
    "datacenter": "mcwymlhome"
[root@mcw03 ~]# 

不需要重啓服務,這個標籤自動就有了。不過yml格式的,添加標籤,沒有生效。不清楚咋添加

 基於api的服務發現

基於dns的服務發現

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章