feat: add otel collector role
This commit is contained in:
parent
f26c79c4cf
commit
e3e1d8a176
2
playbooks/roles/vhosts/otel-collector/meta/main.yml
Normal file
2
playbooks/roles/vhosts/otel-collector/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
dependencies:
|
||||||
|
- role: common
|
||||||
71
playbooks/roles/vhosts/otel-collector/tasks/main.yml
Normal file
71
playbooks/roles/vhosts/otel-collector/tasks/main.yml
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
- name: Ensure openobserve-agent user exists
|
||||||
|
ansible.builtin.user:
|
||||||
|
name: openobserve-agent
|
||||||
|
system: true
|
||||||
|
shell: /usr/sbin/nologin
|
||||||
|
create_home: false
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Download otelcol-contrib archive
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: >-
|
||||||
|
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v{{
|
||||||
|
otel_collector_version | default('0.102.0') }}/otelcol-contrib_{{
|
||||||
|
otel_collector_version | default('0.102.0') }}_linux_amd64.tar.gz
|
||||||
|
dest: /tmp/otelcol-contrib.tar.gz
|
||||||
|
mode: "0644"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Extract otelcol-contrib
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: /tmp/otelcol-contrib.tar.gz
|
||||||
|
dest: /tmp
|
||||||
|
remote_src: true
|
||||||
|
creates: "/tmp/otelcol-contrib_{{ otel_collector_version | default('0.102.0') }}_linux_amd64"
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Install otelcol-contrib binary
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "/tmp/otelcol-contrib_{{ otel_collector_version | default('0.102.0') }}_linux_amd64/otelcol-contrib"
|
||||||
|
dest: /usr/local/bin/otelcol-contrib
|
||||||
|
mode: '0755'
|
||||||
|
remote_src: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Remove otelcol-contrib archive
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/otelcol-contrib.tar.gz
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Cleanup extracted otelcol-contrib directory
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "/tmp/otelcol-contrib_{{ otel_collector_version | default('0.102.0') }}_linux_amd64"
|
||||||
|
state: absent
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Deploy otel collector config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: otel-config.yaml
|
||||||
|
dest: /etc/otel-config.yaml
|
||||||
|
owner: openobserve-agent
|
||||||
|
group: openobserve-agent
|
||||||
|
mode: '0644'
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Create otel collector service
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: otel-collector.service
|
||||||
|
dest: /etc/systemd/system/otel-collector.service
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
|
|
||||||
|
- name: Enable and start otel collector
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: otel-collector
|
||||||
|
enabled: true
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
when: inventory_hostname in groups[group]
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=OpenTelemetry Collector
|
||||||
|
After=network.target network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=openobserve-agent
|
||||||
|
Group=openobserve-agent
|
||||||
|
ExecStart=/usr/local/bin/otelcol-contrib --config /etc/otel-config.yaml
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
receivers:
|
||||||
|
prometheus:
|
||||||
|
config:
|
||||||
|
global:
|
||||||
|
scrape_interval: 10s
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: 'node-exporter'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:9100']
|
||||||
|
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) }}'
|
||||||
|
- job_name: 'process-exporter'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['localhost:9256']
|
||||||
|
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) }}'
|
||||||
|
journald:
|
||||||
|
directory: /var/log/journal
|
||||||
|
filelog/std:
|
||||||
|
include: [ /var/log/**log ]
|
||||||
|
|
||||||
|
processors:
|
||||||
|
resourcedetection/system:
|
||||||
|
detectors: ["system"]
|
||||||
|
system:
|
||||||
|
hostname_sources: ["os"]
|
||||||
|
memory_limiter:
|
||||||
|
check_interval: 1s
|
||||||
|
limit_percentage: 75
|
||||||
|
spike_limit_percentage: 15
|
||||||
|
batch:
|
||||||
|
send_batch_size: 10000
|
||||||
|
timeout: 10s
|
||||||
|
|
||||||
|
extensions:
|
||||||
|
zpages: {}
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
otlphttp/openobserve:
|
||||||
|
endpoint: {{ otlp_endpoint | default('https://otel.svc.plus/api/default/') }}
|
||||||
|
headers:
|
||||||
|
Authorization: "{{ otlp_auth | default('Basic cm9vdEBleGFtcGxlLmNvbTpiNTVkbHFLenVLamZXVXRY') }}"
|
||||||
|
otlphttp/openobserve_journald:
|
||||||
|
endpoint: {{ otlp_endpoint | default('https://otel.svc.plus/api/default/') }}
|
||||||
|
headers:
|
||||||
|
Authorization: "{{ otlp_auth | default('Basic cm9vdEBleGFtcGxlLmNvbTpiNTVkbHFLenVLamZXVXRY') }}"
|
||||||
|
stream-name: journald
|
||||||
|
|
||||||
|
service:
|
||||||
|
extensions: [zpages]
|
||||||
|
pipelines:
|
||||||
|
metrics:
|
||||||
|
receivers: [prometheus]
|
||||||
|
processors: [resourcedetection/system, memory_limiter, batch]
|
||||||
|
exporters: [otlphttp/openobserve]
|
||||||
|
logs:
|
||||||
|
receivers: [filelog/std]
|
||||||
|
processors: [resourcedetection/system, memory_limiter, batch]
|
||||||
|
exporters: [otlphttp/openobserve]
|
||||||
|
logs/journald:
|
||||||
|
receivers: [journald]
|
||||||
|
processors: [resourcedetection/system, memory_limiter, batch]
|
||||||
|
exporters: [otlphttp/openobserve_journald]
|
||||||
Loading…
Reference in New Issue
Block a user