访问 Basic Auth 保护
monitoring – Configure basic_auth for Prometheus Target – Stack Overflow
- job_name: 'myapp_health_checks'
scrape_interval: 5m
scrape_timeout: 30s
static_configs:
- targets: ['mywebsite.org']
metrics_path: "/api/health"
basic_auth:
username: 'email@username.me'
password: 'cfgqvzjbhnwcomplicatedpasswordwjnqmd'
拆分配置文件、基于文件的服务发现
Configuration | Prometheus
Using JSON file service discovery with Prometheus – Robust Perception | Prometheus Monitoring Experts
随着主机和各种 Exporter 的增多,prometheus.yml 配置文件越来越长,长到难以维护。
我们能够使用基于文件的服务发现,以分割 prometheus.yml 文件:
# /etc/prometheus/prometheus.yml
...
scrape_configs:
- job_name: 'dummy-job' # This is a default value, it is mandatory.
file_sd_configs:
- files:
- dummy/targets.yaml
...
# /etc/prometheus/dummy/targets.yaml
---
- targets:
- "172.27.254.32:1987"
labels:
hostname: "my-hostname"
为了能够快速拆分 prometheus.yml 文件,我们编写如下 Groovy 脚本(需要结合配置文件调整,多半不能直接使用):
#!/usr/bin/groovy
import groovy.yaml.YamlSlurper
def configfile = "/etc/prometheus/prometheus.yml"
def yamlObject = new YamlSlurper().parseText(new File(configfile).text)
def processExporter = yamlObject.scrape_configs.find {
it.job_name == 'your-job-name'
}
def yamlBuilder = new groovy.yaml.YamlBuilder()
processExporter.static_configs.each {
def filename = it.labels.hostname + ".yaml"
def result = yamlBuilder(it)
def yamlContent = yamlBuilder.toString()
new File(filename).text = yamlContent // 写入文件
println "--------------- ${filename}"
println yamlBuilder.toString() // 打印内容
}