Added postgres exporter + dashboard.

master
Peter Heise 4 years ago committed by Sven Ketelsen
parent 7c0f9c597b
commit c86ccc48aa

@ -102,6 +102,7 @@ monitor_port_docker: "9083"
monitor_port_elastic: "9084" monitor_port_elastic: "9084"
monitor_port_harbor: "9085" monitor_port_harbor: "9085"
monitor_port_maria: "9086" monitor_port_maria: "9086"
monitor_port_postgres: "9087"
monitor_port_awx: "80" monitor_port_awx: "80"
admin_port_traefik: "9080" admin_port_traefik: "9080"

@ -0,0 +1,31 @@
CREATE USER prometheus;
ALTER USER prometheus SET SEARCH_PATH TO prometheus,pg_catalog;
CREATE SCHEMA prometheus AUTHORIZATION prometheus;
CREATE FUNCTION prometheus.f_select_pg_stat_activity()
RETURNS setof pg_catalog.pg_stat_activity
LANGUAGE sql
SECURITY DEFINER
AS $$
SELECT * from pg_catalog.pg_stat_activity;
$$;
CREATE FUNCTION prometheus.f_select_pg_stat_replication()
RETURNS setof pg_catalog.pg_stat_replication
LANGUAGE sql
SECURITY DEFINER
AS $$
SELECT * from pg_catalog.pg_stat_replication;
$$;
CREATE VIEW prometheus.pg_stat_replication
AS
SELECT * FROM prometheus.f_select_pg_stat_replication();
CREATE VIEW prometheus.pg_stat_activity
AS
SELECT * FROM prometheus.f_select_pg_stat_activity();
GRANT SELECT ON prometheus.pg_stat_replication TO prometheus;
GRANT SELECT ON prometheus.pg_stat_activity TO prometheus;

@ -77,15 +77,76 @@
group: postgres group: postgres
mode: "g+s" mode: "g+s"
- name: "Installing prometheus postgres exporter" - name: "Install prometheus postgres exporter .."
apt: apt:
name: "prometheus-postgres-exporter" name: "prometheus-postgres-exporter"
update_cache: yes update_cache: yes
cache_valid_time: 900 cache_valid_time: 900
state: present state: present
- name: Setup prometheus-postgres-exporter interface bind
lineinfile:
path: /etc/default/prometheus-postgres-exporter
regex: "^ARGS="
line: "ARGS=\"--web.listen-address='{{ stage_private_server_ip }}:{{ monitor_port_postgres }}'\""
- name: "Set DATA_SOURCE_NAME in /etc/default/prometheus-postgres-exporter"
lineinfile:
state: present
regex: "^DATA_SOURCE_URI"
line: "DATA_SOURCE_URI='postgres@:5432/postgres?host=/var/run/postgresql'"
path: /etc/default/prometheus-postgres-exporter
- name: "Set PG_EXPORTER_AUTO_DISCOVER_DATABASES in /etc/default/prometheus-postgres-exporter"
lineinfile:
state: present
regex: "^PG_EXPORTER_AUTO_DISCOVER_DATABASES"
line: "PG_EXPORTER_AUTO_DISCOVER_DATABASES=true"
path: /etc/default/prometheus-postgres-exporter
- name: "Set PG_EXPORTER_EXTEND_QUERY_PATH in /etc/default/prometheus-postgres-exporter"
lineinfile:
state: present
regex: "^PG_EXPORTER_EXTEND_QUERY_PATH"
line: "PG_EXPORTER_EXTEND_QUERY_PATH=/metrics/queries.yaml"
path: /etc/default/prometheus-postgres-exporter
- name: "Ensure /metrics directory exists"
file:
state: directory
path: /metrics
- name: "Ensure /metrics/queries.yaml exists"
copy: src=pg-exporter-queries.yml dest=/metrics/queries.yaml
- name: Check role prometheus exists
become: yes
become_user: postgres
shell: "/usr/bin/psql -Atc \"SELECT count(rolname) FROM pg_roles where rolname='prometheus'\""
register: role_check
ignore_errors: yes
- name: "Copy prometheus_postgres_exporter init script"
copy: src=init.sql dest=/tmp/prometheus_postgres_exporter.sql
when: "role_check.stdout == '0' and server_type == 'master'"
- name: "Execute prometheus_postgres_exporter init script"
become: true
become_user: postgres
shell: "psql -f /tmp/prometheus_postgres_exporter.sql"
when: "role_check.stdout == '0' and server_type == 'master'"
- name: "Delete prometheus_postgres_exporter init script"
file: path="/tmp/prometheus_postgres_exporter.sql" state=absent
when: "role_check.stdout == '0' and server_type == 'master'"
- name: "Restarting postgres if necessary" - name: "Restarting postgres if necessary"
service: service:
name: postgresql name: postgresql
state: restarted state: restarted
when: listen_addresses.changed or max_connections.changed or shared_buffers.changed when: listen_addresses.changed or max_connections.changed or shared_buffers.changed
- name: "Restart prometheus postgres exporter .."
service:
name: prometheus-postgres-exporter
state: restarted

@ -284,7 +284,7 @@ scrape_configs:
static_configs: static_configs:
- targets: [ - targets: [
{% for host in server_group_names_postgres | default([]) %} {% for host in server_group_names_postgres | default([]) %}
'{{ host }}.{{ domain }}:9187', '{{ (stage_server_infos | selectattr("name", "equalto", host) | first).private_ip }}:{{ monitor_port_postgres }}!{{ host }}.{{ domain }}',
{% endfor %} {% endfor %}
] ]
labels: labels:
@ -295,9 +295,13 @@ scrape_configs:
target_label: job target_label: job
replacement: 'postgres-exporter' replacement: 'postgres-exporter'
- source_labels: [__address__] - source_labels: [__address__]
regex: (.*):.* regex: .*!(.*)
target_label: instance target_label: instance
replacement: $1 replacement: $1
- source_labels: [__address__]
regex: (.*)!.*
target_label: __address__
replacement: $1
- job_name: 'maria-exporter' - job_name: 'maria-exporter'
scheme: http scheme: http

Loading…
Cancel
Save