Files
ansible-playbooks/roles/postgres/tasks/exporter.yml
T
Clément Désiles aa78e238aa feat(monitoring): add nginx, postgres, valkey prometheus exporters
- nginx: nginx-prometheus-exporter gated by nginx_exporter_enabled,
  deploys loopback-only stub_status (8090), exporter on 9113
- postgres: postgres_exporter gated by postgres_exporter_enabled,
  creates postgres_exporter role with pg_monitor, exporter on 9187
- valkey: redis_exporter gated by valkey_exporter_enabled, adds
  read-only ACL user to users.acl, exporter on 9121

Each exporter follows the nut pattern (tasks/exporter.yml included from
main.yml, OS vars, 0600 secret env files, password asserts).
2026-09-06 09:37:36 +02:00

55 lines
1.7 KiB
YAML

---
# Prometheus postgres exporter (optional, gated by postgres_exporter_enabled).
# Creates a minimal monitoring role (pg_monitor) and runs postgres_exporter
# against the local instance.
- name: Validate exporter password is set
ansible.builtin.assert:
that:
- postgres_exporter_password is defined
- postgres_exporter_password | length >= 12
fail_msg: |
postgres_exporter_password is required (min 12 chars) when
postgres_exporter_enabled is true.
See roles/postgres/defaults/main.yml for configuration instructions.
success_msg: "Exporter password validation passed"
- name: Install postgres_exporter
ansible.builtin.package:
name: "{{ postgres_exporter_package }}"
state: present
- name: Create postgres_exporter monitoring role
community.postgresql.postgresql_user:
name: "{{ postgres_exporter_user }}"
password: "{{ postgres_exporter_password }}"
role_attr_flags: NOSUPERUSER,NOCREATEDB,NOCREATEROLE
state: present
become: false
become_user: "{{ postgres_admin_user }}"
- name: Grant pg_monitor to postgres_exporter
community.postgresql.postgresql_membership:
group: pg_monitor
target_roles:
- "{{ postgres_exporter_user }}"
state: present
become: false
become_user: "{{ postgres_admin_user }}"
- name: Deploy exporter environment file
ansible.builtin.template:
src: exporter-env.conf.j2
dest: "{{ postgres_exporter_args_file }}"
owner: root
group: root
mode: "0600"
notify: Restart postgres exporter
- name: Enable and start postgres exporter
ansible.builtin.systemd:
name: "{{ postgres_exporter_service }}"
enabled: true
state: started
daemon_reload: true