如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。