json - SaltStack 为 prometheus 目标生成 json
问题描述
如何使用盐将目标添加到 json 文件,我在 prometheus.yml 中使用 file_sd_configs 文件
- job_name: 'winserver_node'
file_sd_configs:
- files:
- targets.json
目标.json:
[
{
"targets": [ "192.168.1.2:9182" ],
"labels": {
"env": "dev",
"job": "devjob",
"instance": "Test001"
}
},
{
"targets": [ "192.168.1.3:9182" ],
"labels": {
"env": "dev",
"job": "devjob",
"instance": "Test002"
}
}
]
并且 wroute 一些带有柱子的 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
推荐阅读
- javascript - 如何用正则表达式替换?
- linux - Oracle中如何建立用户控制?
- excel - 如何根据另一列中的值替换单元格值以进行状态更新?
- flutter - 当图像超过小部件并且仍然可以与后面的小部件交互时,是否可以使用堆栈制作水印?
- swift - CAEmitterLayer 停止显示
- boot - 在现代计算机上启动时,在第一微秒内究竟发生了什么?
- amazon-web-services - saml - 如何返回用户所属的组名?
- android - 更新 .gitignore 搞砸了 AndroidStudio。有没有办法扭转这种情况?
- winapi - 如何计算 SCROLLINFO.nMax 到我的窗口?
- arrays - Swift:在不使用 StackView 的情况下通过带间距的迭代创建多个视图