observability.svc.plus/roles/node_monitor/templates/vector-push.yaml

100 lines
2.9 KiB
YAML

---
{% set base_endpoint = (observability_endpoint | default('', true) | regex_replace('/+$', '') | regex_replace('/ingest/otlp.*$', '')) %}
{% set metrics_endpoint = observability_metrics_endpoint | default(base_endpoint ~ '/ingest/metrics/api/v1/write', true) %}
{% set logs_endpoint = observability_logs_endpoint | default(base_endpoint ~ '/ingest/logs/insert', true) %}
data_dir: {{ vector_data }}
api:
enabled: true
sources:
internal_metrics:
type: internal_metrics
scrape_interval_secs: 15
node_exporter:
type: prometheus_scrape
endpoints:
- http://127.0.0.1:{{ node_exporter_port | default(9100) }}{{ exporter_metrics_path | default('/metrics') }}
scrape_interval_secs: 15
process_exporter:
type: prometheus_scrape
endpoints:
- http://127.0.0.1:{{ process_exporter_port | default(9256) }}/metrics
scrape_interval_secs: 15
journald:
type: journald
current_boot_only: true
syslog_files:
type: file
include:
- /var/log/syslog
- /var/log/messages
- /var/log/auth.log
read_from: end
transforms:
agent_metrics:
type: remap
inputs: ["node_exporter", "process_exporter"]
source: |
.tags.host = "{{ ansible_hostname | default(nodename | default(inventory_hostname)) }}"
.tags.ip = "{{ inventory_hostname }}"
.tags.ins = "{{ nodename | default(inventory_hostname) }}"
.tags.cls = "{{ node_cluster | default('nodes') }}"
.tags.job = "node"
.tags.origin = "vector-agent"
agent_logs:
type: remap
inputs: ["journald", "syslog_files"]
source: |
.host = "{{ ansible_hostname | default(nodename | default(inventory_hostname)) }}"
.ip = "{{ inventory_hostname }}"
.ins = "{{ nodename | default(inventory_hostname) }}"
.cls = "{{ node_cluster | default('nodes') }}"
.job = "node"
.origin = "vector-agent"
.timestamp = now()
sinks:
vector_metrics:
type: prometheus_exporter
inputs: ["internal_metrics"]
address: 0.0.0.0:{{ vector_port }}
default_namespace: vector
observability_metrics:
type: prometheus_remote_write
inputs: ["agent_metrics"]
endpoint: "{{ metrics_endpoint }}"
{% if observability_ingest_basic_auth_enabled | default(false) %}
auth:
strategy: basic
user: "{{ observability_ingest_basic_auth_user }}"
password: "{{ observability_ingest_basic_auth_password }}"
{% endif %}
compression: snappy
healthcheck: false
observability_logs:
type: loki
inputs: ["agent_logs"]
endpoint: "{{ logs_endpoint }}"
{% if observability_ingest_basic_auth_enabled | default(false) %}
auth:
strategy: basic
user: "{{ observability_ingest_basic_auth_user }}"
password: "{{ observability_ingest_basic_auth_password }}"
{% endif %}
compression: gzip
encoding:
codec: json
labels:
host: "{{ '{{ host }}' }}"
job: "{{ '{{ job }}' }}"
origin: "{{ '{{ origin }}' }}"