From 90064091ead7e826118e66f17900af981b19a18d Mon Sep 17 00:00:00 2001 From: Tobias Reisinger Date: Fri, 8 Dec 2023 01:55:57 +0100 Subject: [PATCH] Add telegraf to ansible --- .gitignore | 1 + _ansible/node002.yml | 1 + _ansible/roles/forgejo/vars/main.yml | 2 +- _ansible/roles/influxdb/vars/main.yml | 2 +- _ansible/roles/telegraf/tasks/main.yml | 16 ++++++++++ .../roles/telegraf/templates/telegraf.conf.j2 | 32 +++++++++++++++++++ _ansible/roles/telegraf/vars/main.yml | 28 ++++++++++++++++ healthcheck/data/http | 1 + 8 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 _ansible/roles/telegraf/tasks/main.yml create mode 100644 _ansible/roles/telegraf/templates/telegraf.conf.j2 create mode 100644 _ansible/roles/telegraf/vars/main.yml diff --git a/.gitignore b/.gitignore index 079f780..4efc0c4 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ diagram_assets/ /gitea-runner/ /homebox/ /influxdb/ +/telegraf/ /umami/ /uptime-kuma/ /watchtower/ diff --git a/_ansible/node002.yml b/_ansible/node002.yml index a04b06a..d99a2e3 100644 --- a/_ansible/node002.yml +++ b/_ansible/node002.yml @@ -8,6 +8,7 @@ - forgejo-runner - homebox - influxdb + - telegraf - umami - uptime-kuma - watchtower diff --git a/_ansible/roles/forgejo/vars/main.yml b/_ansible/roles/forgejo/vars/main.yml index 64836cf..f1e51b2 100644 --- a/_ansible/roles/forgejo/vars/main.yml +++ b/_ansible/roles/forgejo/vars/main.yml @@ -62,7 +62,7 @@ svc_env: FORGEJO__oauth2__JWT_SECRET: "{{ vault_forgejo. oauth2_jwt_secret}}" FORGEJO__metrics__ENABLED: true - FORGEJO__metrics__TOKEN: "{{ vault_forgejo.metrics_token }}" + FORGEJO__metrics__TOKEN: "{{ vault_metrics_token }}" FORGEJO__actions__ENABLED: true diff --git a/_ansible/roles/influxdb/vars/main.yml b/_ansible/roles/influxdb/vars/main.yml index d4e82fd..c51630e 100644 --- a/_ansible/roles/influxdb/vars/main.yml +++ b/_ansible/roles/influxdb/vars/main.yml @@ -63,7 +63,7 @@ svc_yml: compose: watchtower: false - image: influxdb + image: influxdb:2 volumes: - ./influxdb.yml:/etc/influxdb2/config.yml - data:{{ svc.data_dir }} diff --git a/_ansible/roles/telegraf/tasks/main.yml b/_ansible/roles/telegraf/tasks/main.yml new file mode 100644 index 0000000..c7bea0f --- /dev/null +++ b/_ansible/roles/telegraf/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Deploy {{ svc.name }} + tags: + - telegraf + - monitoring + block: + - import_tasks: steps/create-service-directory.yml + - import_tasks: steps/template-docker-compose.yml + + - name: Template config + ansible.builtin.template: + src: telegraf.conf.j2 + dest: "{{ (service_path, 'telegraf.conf') | path_join }}" + mode: "0664" + + - import_tasks: steps/start-service.yml diff --git a/_ansible/roles/telegraf/templates/telegraf.conf.j2 b/_ansible/roles/telegraf/templates/telegraf.conf.j2 new file mode 100644 index 0000000..503474f --- /dev/null +++ b/_ansible/roles/telegraf/templates/telegraf.conf.j2 @@ -0,0 +1,32 @@ +[agent] + interval = "60s" + round_interval = true + metric_batch_size = 1000 + metric_buffer_limit = 10000 + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + precision = "" + hostname = "node002.serguzim.me" + omit_hostname = false + +[[outputs.influxdb_v2]] + urls = ["{{ svc.influxdb.url }}"] + token = "{{ svc.influxdb.token }}" + organization = "{{ svc.influxdb.organization }}" + bucket = "{{ svc.influxdb.bucket }}" + +[[inputs.prometheus]] + urls = [ + {%- for url in svc.prometheus.urls -%} + "{{ url }}", + {%- endfor -%} + ] + + bearer_token_string = "{{ svc.prometheus.bearer_token }}" + +[[inputs.postgresql]] + address = "postgres://{{ svc.postgresql.user }}:{{ svc.postgresql.pass }}@{{ svc.postgresql.host }}:{{ svc.postgresql.port }}/{{ svc.postgresql.database }}?sslmode=verify-full" + ignored_databases = ["postgres", "template0", "template1"] + prepared_statements = true + diff --git a/_ansible/roles/telegraf/vars/main.yml b/_ansible/roles/telegraf/vars/main.yml new file mode 100644 index 0000000..5cc52c7 --- /dev/null +++ b/_ansible/roles/telegraf/vars/main.yml @@ -0,0 +1,28 @@ +svc: + name: telegraf + influxdb: + url: "https://tick.serguzim.me" + token: "{{ vault_telegraf.influxdb_token }}" + organization: serguzim.net + bucket: metrics + prometheus: + urls: + - https://git.serguzim.me/metrics + - https://matrix.msrg.cc/_synapse/metrics + - https://tick.serguzim.me/metrics + bearer_token: "{{ vault_metrics_token }}" + postgresql: + user: "{{ vault_telegraf.db.user }}" + pass: "{{ vault_telegraf.db.pass }}" + host: "{{ postgres.host }}" + port: "{{ postgres.port }}" + database: "telegraf" + +compose: + watchtower: false + image: telegraf:1.28 + volumes: + - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro + file: + volumes: + data: diff --git a/healthcheck/data/http b/healthcheck/data/http index d992f76..e2d9cec 100755 --- a/healthcheck/data/http +++ b/healthcheck/data/http @@ -28,6 +28,7 @@ check_url () fi } +check_url "acme.serguzim.me" "/health" check_url "analytics.serguzim.me" check_url "auth.serguzim.me" check_url "ci.serguzim.me"