SaltStack为Prometheus目标生成json

问题描述

如何用盐添加目标到json文件,我在prometheus.yml中使用file_sd_configs文件

  - job_name: 'winserver_node'
    file_sd_configs:
    - files:
      - targets.json

targets.json:

[
  {
    "targets": [ "192.168.1.2:9182" ],"labels": {
      "env": "dev","job": "devjob","instance": "Test001"
    }
  },{
    "targets": [ "192.168.1.3:9182" ],"instance": "Test002"
    }
  }
]

然后使用一些带有支柱的example.sls路由,但是我想知道如何使用file.blockreplace生成它。

#SLS for adding targets for prometheus (nodes)
{% set minion =  salt['pillar.get']('variables:some:instance') %}
{% set minionip = salt ['pillar.get']('variables:some:ip') %}
{% set promenv = salt['pillar.get']('variables:some:promenv') %}
{% set job = salt['pillar.get']('variables:some:devjob') %}
{% set port = salt['pillar.get']('variables:some:exporterport') %}

make-config:
  file.managed:
    - name: /etc/prometheus/targets.json
    - source: salt://prometheus/targets_template.json

main-block:
  file.blockreplace:
    - name: /etc/prometheus/targets.json
    - marker_start: "# START managed zone Target {{ minion }} -DO-NOT-EDIT-"
    - marker_end: "# END managed zone Target {{ minion }} --"
    - backup: '.bak'
    - show_changes: True
    - append_if_not_found: True

我也遇到了和[]

的问题

解决方法

file_sd_configs可能是yml格式。所以最终结果看起来像这样:

/etc/prometheus/linuxtargets.yml:
  file.touch

main-lin-block:
  file.blockreplace:
    - name: /etc/prometheus/linuxtargets.yml
    - marker_start: "# START managed zone {{ minion }} -DO-NOT-EDIT-"
    - marker_end: "# END managed zone {{ minion }} --"
    - backup: '.bak'
    - show_changes: True
    - append_if_not_found: True

targets-lin-block:
  file.accumulated:
    - filename: /etc/prometheus/linuxtargets.yml
    - name: targets-accum
    - text: |
            - targets:
              - '{{ minionip }}:{{ port }}'
              labels:
                instance: '{{ minion }}'
                job: '{{ job }}'
                env: '{{ promenv  }}'
    - require_in:
      - file: main-lin-block

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...