21700: Install Bundler system-wide in Rails postinst
[arvados.git] / tools / salt-install / config_examples / multi_host / aws / states / prometheus_pg_exporter.sls
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 {%- set prometheus_pg_exporter = pillar.get('prometheus_pg_exporter', {'enabled': False}) %}
6
7 {%- if prometheus_pg_exporter.enabled %}
8 ### PACKAGES
9 monitoring_required_pkgs:
10   pkg.installed:
11     - name: mtail
12
13 ### FILES
14 prometheus_pg_exporter_etc_default:
15   file.managed:
16     - name: /etc/default/prometheus-postgres-exporter
17     - contents: |
18         ### This file managed by Salt, do not edit by hand!!
19         #
20         # For details, check /usr/share/doc/prometheus-postgres-exporter/README.Debian
21         DATA_SOURCE_NAME='user=prometheus host=/run/postgresql dbname=postgres'
22     - require:
23       - pkg: prometheus-package-install-postgres_exporter-installed
24
25 mtail_postgresql_conf:
26   file.managed:
27     - name: /etc/mtail/postgresql.mtail
28     - contents: |
29         ########################################################################
30         # File managed by Salt.
31         # Your changes will be overwritten.
32         ########################################################################
33
34         # Parser for postgresql's log statement duration
35
36         gauge postgresql_statement_duration_seconds by statement
37
38         /^/ +
39         /(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} (\w+)) / + # 2019-01-16 16:53:45 GMT
40         /LOG: +duration: / +
41         /(?P<duration>[0-9\.]+) ms/ + # 153.967 ms
42         /(.*?): (?P<statement>.+)/ + # statement: SELECT COUNT(*) FROM (SELECT rolname FROM pg_roles WHERE rolname='arvados') count
43         /$/ {
44           strptime($timestamp, "2006-01-02 15:04:05 MST") # for tests
45
46           postgresql_statement_duration_seconds[$statement] = $duration / 1000
47         }
48     - require:
49       - pkg: monitoring_required_pkgs
50
51 mtail_etc_default:
52   file.managed:
53     - name: /etc/default/mtail
54     - contents: |
55         ### This file managed by Salt, do not edit by hand!!
56         #
57         ENABLED=true
58         # List of files to monitor (mandatory).
59         LOGS=/var/log/postgresql/postgresql*log
60     - require:
61       - pkg: monitoring_required_pkgs
62
63 ### SERVICES
64 prometheus_pg_exporter_service:
65   service.running:
66     - name: prometheus-postgres-exporter
67     - enable: true
68     - require:
69       - pkg: prometheus-package-install-postgres_exporter-installed
70     - watch:
71       - file: /etc/default/prometheus-postgres-exporter
72
73 mtail_service:
74   service.running:
75     - name: mtail
76     - enable: true
77     - require:
78       - pkg: monitoring_required_pkgs
79     - watch:
80       - file: mtail_postgresql_conf
81       - file: mtail_etc_default
82 {%- endif %}