[postgres+mariadb] Add Prometheus exporter

Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
alerts
Yohann D'ANELLO 2022-08-09 16:11:57 +02:00
parent facd462e24
commit 31d3ddfdd8
Signed by: _ynerant
GPG Key ID: 3A75C55819C8CF85
13 changed files with 123 additions and 1 deletions

View File

@ -0,0 +1,3 @@
---
glob_prometheus_mysqld_exporter:
listen_addr: "{{ query('ldap', 'ip', ansible_hostname, 'adm') | ansible.utils.ipv4 | first }}"

View File

@ -0,0 +1,3 @@
---
glob_prometheus_postfix_exporter:
listen_addr: "{{ query('ldap', 'ip', ansible_hostname, 'adm') | ansible.utils.ipv4 | first }}"

View File

@ -3,3 +3,6 @@ glob_postgres:
subnets: subnets:
- 172.16.10.0/24 - 172.16.10.0/24
- fd00:0:0:10::/64 - fd00:0:0:10::/64
glob_prometheus_postgres_exporter:
listen_addr: "{{ query('ldap', 'ip', ansible_hostname, 'adm') | ansible.utils.ipv4 | first }}"

View File

@ -147,6 +147,36 @@ loc_prometheus:
target_label: __address__ target_label: __address__
replacement: '$1:9154' replacement: '$1:9154'
postgres:
config:
- job_name: postgres
file_sd_configs:
- files:
- '/etc/prometheus/targets_postgres.json'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- source_labels: [__param_target]
target_label: __address__
replacement: '$1:9187'
mysql:
config:
- job_name: mysql
file_sd_configs:
- files:
- '/etc/prometheus/targets_mysql.json'
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- source_labels: [__param_target]
target_label: __address__
replacement: '$1:9104'
mtail: mtail:
config: config:
- job_name: mtail - job_name: mtail

3
hosts
View File

@ -131,6 +131,9 @@ routeur-sam.adm.crans.org
[linx] [linx]
linx.adm.crans.org linx.adm.crans.org
[mariadb]
zamok.adm.crans.org
[mailman] [mailman]
mailman.adm.crans.org mailman.adm.crans.org

View File

@ -76,6 +76,20 @@
roles: roles:
- prometheus-postfix-exporter - prometheus-postfix-exporter
# Monitor PostgreSQL metrics
- hosts: postgres
vars:
prometheus_postgres_exporter: "{{ glob_prometheus_postgres_exporter | default({}) | combine(loc_prometheus_postgres_exporter | default({})) }}"
roles:
- prometheus-postgres-exporter
# Monitor MySQL metrics
- hosts: mariadb
vars:
prometheus_mysqld_exporter: "{{ glob_prometheus_mysqld_exporter | default({}) | combine(loc_prometheus_mysqld_exporter | default({})) }}"
roles:
- prometheus-mysqld-exporter
# Monitor mailq with a special text exporter # Monitor mailq with a special text exporter
# - hosts: redisdead.adm.crans.org # - hosts: redisdead.adm.crans.org
# roles: ["prometheus-node-exporter-postfix"] # roles: ["prometheus-node-exporter-postfix"]

View File

@ -7,5 +7,6 @@
adh: "{{ glob_adh | combine(loc_adh | default({}), recursive=True) }}" adh: "{{ glob_adh | combine(loc_adh | default({}), recursive=True) }}"
roles: roles:
- zamok-tools - zamok-tools
- mariadb
# - postfix # - postfix
- prometheus-node-exporter-postfix - prometheus-node-exporter-postfix

View File

@ -0,0 +1,8 @@
---
- name: Install MariaDB
apt:
update_cache: true
name: mariadb
register: apt_result
retries: 3
until: apt_result is succeeded

View File

@ -0,0 +1,5 @@
---
- name: Restart prometheus-mysqld-exporter
service:
name: prometheus-mysqld-exporter
state: restarted

View File

@ -0,0 +1,24 @@
---
- name: Install Prometheus mysqld-exporter
apt:
update_cache: true
name: prometheus-mysqld-exporter
register: apt_result
retries: 3
until: apt_result is succeeded
- name: Make Prometheus mysqld-exporter listen on adm only
lineinfile:
path: /etc/default/prometheus-mysqld-exporter
regexp: ^ARGS=
line: |
ARGS="--web.listen-address={{ prometheus_mysqld_exporter.listen_addr }}:9104"
notify: Restart prometheus-mysqld-exporter
# You need to create the prometheus account, RTFM.
- name: Configure MySQL connection
lineinfile:
path: /etc/default/prometheus-mysqld-exporter
regexp: DATA_SOURCE_NAME="prometheus@unix(/run/mysqld/mysqld.sock)/"
line: DATA_SOURCE_NAME="prometheus@unix(/run/mysqld/mysqld.sock)/"
notify: Restart prometheus-mysqld-exporter

View File

@ -0,0 +1,5 @@
---
- name: Restart prometheus-postgres-exporter
service:
name: prometheus-postgres-exporter
state: restarted

View File

@ -0,0 +1,24 @@
---
- name: Install Prometheus postgres-exporter
apt:
update_cache: true
name: prometheus-postgres-exporter
register: apt_result
retries: 3
until: apt_result is succeeded
- name: Make Prometheus postgres-exporter listen on adm only
lineinfile:
path: /etc/default/prometheus-postgres-exporter
regexp: ^ARGS=
line: |
ARGS="--web.listen-address={{ prometheus_postgres_exporter.listen_addr }}:9187"
notify: Restart prometheus-postgres-exporter
# You need to create the prometheus account, RTFM.
- name: Configure PostgreSQL connection
lineinfile:
path: /etc/default/prometheus-postgres-exporter
regexp: ^DATA_SOURCE_NAME=
line: DATA_SOURCE_NAME='user=prometheus host=/run/postgresql dbname=postgres'
notify: Restart prometheus-postgres-exporter

View File

@ -33,7 +33,6 @@
- libapache2-mod-wsgi-py3 - libapache2-mod-wsgi-py3
- lua-cjson # Demande du 01/09/2017 18:50 sur #crans - lua-cjson # Demande du 01/09/2017 18:50 sur #crans
- lynx # Demande du 30/07/2017 sur nounou@ - lynx # Demande du 30/07/2017 sur nounou@
- mariadb-server
- moreutils # Ce package, c'est la vie ! - moreutils # Ce package, c'est la vie !
- nyancat - nyancat
- octave # Demande irc #crans 28/02/2019 14h28 - octave # Demande irc #crans 28/02/2019 14h28