问题描述
如何用盐添加目标到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