From 02ca9ea18731c8823d86e221b2b3e6a30bc21cb3 Mon Sep 17 00:00:00 2001 From: shenlan Date: Sun, 21 Sep 2025 11:40:16 +0800 Subject: [PATCH] Refine otel collector configuration variables --- playbooks/deploy_exporters_vhosts.yml | 62 ++++++++++++++++++- playbooks/deploy_vhosts_otel-collector.yml | 46 ++++++++++++++ .../vhosts/otel-collector/tasks/main.yml | 9 +++ .../otel-collector/templates/otel-config.yaml | 31 +++++----- 4 files changed, 131 insertions(+), 17 deletions(-) diff --git a/playbooks/deploy_exporters_vhosts.yml b/playbooks/deploy_exporters_vhosts.yml index 87f375e..48dd19b 100644 --- a/playbooks/deploy_exporters_vhosts.yml +++ b/playbooks/deploy_exporters_vhosts.yml @@ -3,32 +3,88 @@ become: true vars: group: web + otlp_endpoint: &otel_endpoint https://otel.svc.plus/api/default/ + otlp_auth: &otel_auth "Basic cm9vdEBleGFtcGxlLmNvbTpRN01wRjZBTzZFelRjRjdJ" + otel_prometheus_node_static_configs: &otel_node_static_configs + - targets: ['172.31.2.33:9100'] + labels: + vendor: aws + account: prod + group: core + name: tky-proxy.svc.plus + iid: '172.31.2.33' + - targets: ['167.179.72.223:9100'] + labels: + vendor: aws + account: prod + group: web-system + name: global-homepage.svc.plus + iid: '167.179.72.223' + - targets: ['47.120.61.35:9100'] + labels: + vendor: alicloud + account: prod + group: web-system + name: cn-homepage.svc.plus + iid: '47.120.61.35' + otel_prometheus_process_static_configs: &otel_process_static_configs + - targets: ['172.31.2.33:9256'] + labels: + vendor: aws + account: prod + group: core + name: tky-proxy.svc.plus + iid: '172.31.2.33' + - targets: ['167.179.72.223:9256'] + labels: + vendor: aws + account: prod + group: web-system + name: global-homepage.svc.plus + iid: '167.179.72.223' + - targets: ['47.120.61.35:9256'] + labels: + vendor: alicloud + account: prod + group: web-system + name: cn-homepage.svc.plus + iid: '47.120.61.35' exporters: - endpoint: https://otel.svc.plus/api/default/ + endpoint: *otel_endpoint roles: - roles/vhosts/common/ - roles/vhosts/node_exporter/ - roles/vhosts/process_exporter/ - roles/vhosts/otel-collector/ + - name: setup otel exporters hosts: global-homepage.svc.plus become: true vars: group: web + otlp_endpoint: *otel_endpoint + otlp_auth: *otel_auth + otel_prometheus_node_static_configs: *otel_node_static_configs + otel_prometheus_process_static_configs: *otel_process_static_configs exporters: - endpoint: https://otel.svc.plus/api/default/ + endpoint: *otel_endpoint roles: - roles/vhosts/common/ - roles/vhosts/node_exporter/ - roles/vhosts/process_exporter/ - roles/vhosts/otel-collector/ + - name: setup otel exporters hosts: otel.svc.plus become: true vars: group: web + otlp_endpoint: *otel_endpoint + otlp_auth: *otel_auth + otel_prometheus_node_static_configs: *otel_node_static_configs + otel_prometheus_process_static_configs: *otel_process_static_configs exporters: - endpoint: https://otel.svc.plus/api/default/ + endpoint: *otel_endpoint roles: - roles/vhosts/node_exporter/ - roles/vhosts/process_exporter/ diff --git a/playbooks/deploy_vhosts_otel-collector.yml b/playbooks/deploy_vhosts_otel-collector.yml index c4675b8..7d7c992 100644 --- a/playbooks/deploy_vhosts_otel-collector.yml +++ b/playbooks/deploy_vhosts_otel-collector.yml @@ -3,6 +3,52 @@ become: true vars: group: web + otlp_endpoint: https://otel.svc.plus/api/default/ + otlp_auth: "Basic cm9vdEBleGFtcGxlLmNvbTpRN01wRjZBTzZFelRjRjdJ" + otel_prometheus_node_static_configs: + - targets: ['172.31.2.33:9100'] + labels: + vendor: aws + account: prod + group: core + name: tky-proxy.svc.plus + iid: '172.31.2.33' + - targets: ['167.179.72.223:9100'] + labels: + vendor: aws + account: prod + group: web-system + name: global-homepage.svc.plus + iid: '167.179.72.223' + - targets: ['47.120.61.35:9100'] + labels: + vendor: alicloud + account: prod + group: web-system + name: cn-homepage.svc.plus + iid: '47.120.61.35' + otel_prometheus_process_static_configs: + - targets: ['172.31.2.33:9256'] + labels: + vendor: aws + account: prod + group: core + name: tky-proxy.svc.plus + iid: '172.31.2.33' + - targets: ['167.179.72.223:9256'] + labels: + vendor: aws + account: prod + group: web-system + name: global-homepage.svc.plus + iid: '167.179.72.223' + - targets: ['47.120.61.35:9256'] + labels: + vendor: alicloud + account: prod + group: web-system + name: cn-homepage.svc.plus + iid: '47.120.61.35' exporters: endpoint: https://otel.svc.plus/api/default/ roles: diff --git a/playbooks/roles/vhosts/otel-collector/tasks/main.yml b/playbooks/roles/vhosts/otel-collector/tasks/main.yml index 7855fdc..81cd497 100644 --- a/playbooks/roles/vhosts/otel-collector/tasks/main.yml +++ b/playbooks/roles/vhosts/otel-collector/tasks/main.yml @@ -78,6 +78,15 @@ # - inventory_hostname in groups[group] # - ansible_os_family == 'Debian' +# === Configuration validation === +- name: Ensure OpenObserve authorization is provided + ansible.builtin.assert: + that: + - otlp_auth is defined + - otlp_auth | string | trim | length > 0 + fail_msg: otlp_auth must be defined and non-empty for otel collector deployment + when: inventory_hostname in groups[group] + - name: Deploy otel collector config ansible.builtin.template: src: otel-config.yaml diff --git a/playbooks/roles/vhosts/otel-collector/templates/otel-config.yaml b/playbooks/roles/vhosts/otel-collector/templates/otel-config.yaml index e61f82c..006a428 100644 --- a/playbooks/roles/vhosts/otel-collector/templates/otel-config.yaml +++ b/playbooks/roles/vhosts/otel-collector/templates/otel-config.yaml @@ -1,3 +1,6 @@ +{% set node_static_configs = otel_prometheus_node_static_configs | mandatory('otel_prometheus_node_static_configs must be provided') %} +{% set process_static_configs = otel_prometheus_process_static_configs | mandatory('otel_prometheus_process_static_configs must be provided') %} + receivers: prometheus: config: @@ -6,22 +9,22 @@ receivers: scrape_configs: - job_name: 'node-exporter' static_configs: - - targets: ['localhost:9100'] +{% for static_config in node_static_configs %} + - targets: {{ static_config.targets | to_json }} labels: - vendor: '{{ otel_vendor | default("aws") }}' - account: '{{ otel_account | default("prod") }}' - group: '{{ otel_group | default("core") }}' - name: '{{ otel_name | default(inventory_hostname) }}' - iid: '{{ otel_iid | default(ansible_default_ipv4.address) }}' +{% for label_key, label_value in static_config.labels.items() %} + {{ label_key }}: '{{ label_value }}' +{% endfor %} +{% endfor %} - job_name: 'process-exporter' static_configs: - - targets: ['localhost:9256'] +{% for static_config in process_static_configs %} + - targets: {{ static_config.targets | to_json }} labels: - vendor: '{{ otel_vendor | default("aws") }}' - account: '{{ otel_account | default("prod") }}' - group: '{{ otel_group | default("core") }}' - name: '{{ otel_name | default(inventory_hostname) }}' - iid: '{{ otel_iid | default(ansible_default_ipv4.address) }}' +{% for label_key, label_value in static_config.labels.items() %} + {{ label_key }}: '{{ label_value }}' +{% endfor %} +{% endfor %} journald: directory: /var/log/journal filelog/std: @@ -47,11 +50,11 @@ exporters: otlphttp/openobserve: endpoint: {{ otlp_endpoint | default('https://otel.svc.plus/api/default/') }} headers: - Authorization: "{{ otlp_auth | default('Basic cm9vdEBleGFtcGxlLmNvbTpiNTVkbHFLenVLamZXVXRY') }}" + Authorization: "{{ otlp_auth }}" otlphttp/openobserve_journald: endpoint: {{ otlp_endpoint | default('https://otel.svc.plus/api/default/') }} headers: - Authorization: "{{ otlp_auth | default('Basic cm9vdEBleGFtcGxlLmNvbTpiNTVkbHFLenVLamZXVXRY') }}" + Authorization: "{{ otlp_auth }}" stream-name: journald service: