453e290495
Change-Id: I45afdf25d8d3ebc1ceab4a38d8cc61435fed1700
176 lines
7.8 KiB
YAML
176 lines
7.8 KiB
YAML
{%- from "prometheus/map.jinja" import server with context %}
|
|
|
|
global:
|
|
{%- if server.get('config', {}).global is defined %}
|
|
{{ server.config.global | yaml(False) | indent(2, true) }}
|
|
{%- endif %}
|
|
|
|
rule_files:
|
|
- {{ server.dir.config_in_container }}/alerts.yml
|
|
|
|
scrape_configs:
|
|
{%- set telegraf_nodes = [] %}
|
|
{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
|
|
{%- if 'telegraf' in node_grains.get('services') %}
|
|
{%- set prometheus_client = node_grains.get('telegraf').get('prometheus_client') %}
|
|
{%- set node_ip = prometheus_client.get('address') %}
|
|
{%- set node_port = prometheus_client.get('port') %}
|
|
{%- set telegraf_address = "'%s:%d'" | format(node_ip, node_port) %}
|
|
{%- do telegraf_nodes.append(telegraf_address) %}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- if telegraf_nodes|length > 0 %}
|
|
- job_name: 'telegraf'
|
|
static_configs:
|
|
- targets: [{{ telegraf_nodes | join(',') }}]
|
|
{%- endif %}
|
|
|
|
{% if server.get('target', {}).get('etcd') %}
|
|
{%- set etcd_nodes = [] %}
|
|
{%- set etcd_target = server.target.etcd %}
|
|
{%- for node in etcd_target.member %}
|
|
{%- set etcd_address = "'%s:%d'" | format(node.host, node.port) %}
|
|
{%- do etcd_nodes.append(etcd_address) %}
|
|
{%- endfor %}
|
|
{%- if etcd_nodes|length > 0 %}
|
|
- job_name: 'etcd'
|
|
{% if etcd_target.scheme %}scheme: {{ etcd_target.scheme }}{%- endif %}
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if etcd_target.cert_name is defined %}cert_file: {{ etcd_target.ssl_dir }}/{{ etcd_target.cert_name }}{%- endif %}
|
|
{% if etcd_target.key_name is defined %}key_file: {{ etcd_target.ssl_dir }}/{{ etcd_target.key_name }}{%- endif %}
|
|
static_configs:
|
|
- targets: [{{ etcd_nodes | join(',') }}]
|
|
{%- endif %}
|
|
{%- endif %}
|
|
|
|
{% if server.get('target', {}).get('kubernetes') %}
|
|
- job_name: 'kubernetes-api'
|
|
scheme: https
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
kubernetes_sd_configs:
|
|
- api_server: {{ server.target.kubernetes.api_ip }}
|
|
role: endpoints
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
|
|
action: keep
|
|
regex: default;kubernetes;https
|
|
|
|
|
|
- job_name: 'kubernetes-node'
|
|
scheme: https
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
kubernetes_sd_configs:
|
|
- api_server: {{ server.target.kubernetes.api_ip }}
|
|
role: node
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
relabel_configs:
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_node_label_(.+)
|
|
|
|
|
|
- job_name: 'kubernetes-service-endpoint'
|
|
scheme: https
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
kubernetes_sd_configs:
|
|
- api_server: {{ server.target.kubernetes.api_ip }}
|
|
role: endpoints
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
|
|
action: keep
|
|
regex: true
|
|
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
|
|
action: replace
|
|
target_label: __scheme__
|
|
regex: (https?)
|
|
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
|
|
action: replace
|
|
target_label: __metrics_path__
|
|
regex: (.+)
|
|
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
|
|
action: replace
|
|
target_label: __address__
|
|
regex: (.+)(?::\d+);(\d+)
|
|
replacement: $1:$2
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_service_label_(.+)
|
|
- source_labels: [__meta_kubernetes_service_namespace]
|
|
action: replace
|
|
target_label: kubernetes_namespace
|
|
- source_labels: [__meta_kubernetes_service_name]
|
|
action: replace
|
|
target_label: kubernetes_name
|
|
- source_labels: [__meta_kubernetes_pod_node_name]
|
|
action: replace
|
|
target_label: kubernetes_io_hostname
|
|
- source_labels: [__meta_kubernetes_pod_name]
|
|
action: replace
|
|
target_label: kubernetes_pod_name
|
|
|
|
|
|
- job_name: 'kubernetes-pod'
|
|
scheme: https
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
kubernetes_sd_configs:
|
|
- api_server: {{ server.target.kubernetes.api_ip }}
|
|
role: pod
|
|
tls_config:
|
|
insecure_skip_verify: true
|
|
{% if server.target.kubernetes.cert_name is defined %}cert_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.cert_name }}{%- endif %}
|
|
{% if server.target.kubernetes.key_name is defined %}key_file: {{ server.target.kubernetes.ssl_dir }}/{{ server.target.kubernetes.key_name }}{%- endif %}
|
|
relabel_configs:
|
|
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
|
|
action: keep
|
|
regex: true
|
|
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
|
|
action: replace
|
|
target_label: __metrics_path__
|
|
regex: (.+)
|
|
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
|
|
action: replace
|
|
regex: (.+):(?:\d+);(\d+)
|
|
replacement: ${1}:${2}
|
|
target_label: __address__
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_pod_label_(.+)
|
|
- source_labels: [__meta_kubernetes_pod_namespace]
|
|
action: replace
|
|
target_label: kubernetes_namespace
|
|
- source_labels: [__meta_kubernetes_pod_name]
|
|
action: replace
|
|
target_label: kubernetes_pod_name
|
|
{%- endif %}
|
|
|
|
{%- for target in server.get('target', {}).get('dns', []) %}
|
|
- job_name: {{ target.name }}
|
|
dns_sd_configs:
|
|
- names:
|
|
{%- for domain in target.domain %}
|
|
- {{ domain }}
|
|
{%- endfor %}
|
|
type: {{ target.type }}
|
|
port: {{ target.port }}
|
|
{%- endfor %}
|