summaryrefslogtreecommitdiff
path: root/roles/monitoring/prometheus/server/templates
diff options
context:
space:
mode:
Diffstat (limited to 'roles/monitoring/prometheus/server/templates')
-rw-r--r--roles/monitoring/prometheus/server/templates/prometheus.service.j238
-rw-r--r--roles/monitoring/prometheus/server/templates/prometheus.yml.j2121
-rw-r--r--roles/monitoring/prometheus/server/templates/rules.yml.j25
3 files changed, 164 insertions, 0 deletions
diff --git a/roles/monitoring/prometheus/server/templates/prometheus.service.j2 b/roles/monitoring/prometheus/server/templates/prometheus.service.j2
new file mode 100644
index 00000000..3a366a61
--- /dev/null
+++ b/roles/monitoring/prometheus/server/templates/prometheus.service.j2
@@ -0,0 +1,38 @@
+[Unit]
+Description=Monitoring system and time series database
+Documentation=https://prometheus.io/docs/introduction/overview/ man:prometheus(1)
+After=time-sync.target
+
+[Service]
+Restart=on-failure
+User=prometheus
+ExecStart=/usr/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/metrics2/ --storage.tsdb.retention.time={{ prometheus_server_retention }}{% if prometheus_server_web_external_url is defined %} --web.external-url={{ prometheus_server_web_external_url }}{% endif %} --web.listen-address={{ prometheus_server_web_listen_address }}
+ExecReload=/bin/kill -HUP $MAINPID
+TimeoutStopSec=20s
+SendSIGKILL=no
+
+# systemd hardening-options
+AmbientCapabilities=
+CapabilityBoundingSet=
+DeviceAllow=/dev/null rw
+DevicePolicy=strict
+LimitMEMLOCK=0
+LimitNOFILE=8192
+LockPersonality=true
+MemoryDenyWriteExecute=true
+NoNewPrivileges=true
+PrivateDevices=true
+PrivateTmp=true
+PrivateUsers=true
+ProtectControlGroups=true
+ProtectHome=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectSystem=full
+RemoveIPC=true
+RestrictNamespaces=true
+RestrictRealtime=true
+SystemCallArchitectures=native
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/monitoring/prometheus/server/templates/prometheus.yml.j2 b/roles/monitoring/prometheus/server/templates/prometheus.yml.j2
new file mode 100644
index 00000000..69d5bcdc
--- /dev/null
+++ b/roles/monitoring/prometheus/server/templates/prometheus.yml.j2
@@ -0,0 +1,121 @@
+# {{ ansible_managed }}
+
+global:
+ scrape_interval: 15s
+ evaluation_interval: 15s
+
+rule_files:
+ - /etc/prometheus/rules/*.yml
+{% if prometheus_server_alertmanager is defined %}
+
+alerting:
+ alertmanagers:
+ - static_configs:
+ - targets: ['{{ prometheus_server_alertmanager.url }}']
+{% if 'path_prefix' in prometheus_server_alertmanager %}
+ path_prefix: '{{ prometheus_server_alertmanager.path_prefix }}'
+{% endif %}
+{% endif %}
+
+scrape_configs:
+ - job_name: 'prometheus'
+{% if prometheus_server_web_external_url is defined %}
+ metrics_path: '{{ (prometheus_server_web_external_url | urlsplit('path'), 'metrics') | path_join }}'
+{% endif %}
+ static_configs:
+ - targets: ['localhost:9090']
+ labels:
+ instance: "{{ inventory_hostname }}"
+{% if prometheus_server_alertmanager is defined %}
+
+ - job_name: 'alertmanager'
+{% if 'path_prefix' in prometheus_server_alertmanager %}
+ metrics_path: '{{ (prometheus_server_alertmanager.path_prefix, 'metrics') | path_join }}'
+{% endif %}
+ static_configs:
+ - targets: ['{{ prometheus_server_alertmanager.url }}']
+{% endif %}
+{% for job in prometheus_server_jobs %}
+
+ - job_name: '{{ job }}'
+ metrics_path: /proxy
+ params:
+ module:
+ - {{ job }}
+ scheme: https
+ tls_config:
+ ca_file: /etc/ssl/prometheus/ca-crt.pem
+ cert_file: /etc/ssl/prometheus/server/scrape-crt.pem
+ key_file: /etc/ssl/prometheus/server/scrape-key.pem
+ file_sd_configs:
+ - files:
+ - "/etc/prometheus/jobs/{{ job }}/*.yml"
+{% endfor %}
+
+ ## TODO: temporary test
+ - job_name: 'ping'
+ metrics_path: /proxy
+ params:
+ module:
+ - blackbox
+ - icmp
+ scheme: https
+ tls_config:
+ ca_file: /etc/ssl/prometheus/ca-crt.pem
+ cert_file: /etc/ssl/prometheus/server/scrape-crt.pem
+ key_file: /etc/ssl/prometheus/server/scrape-key.pem
+ static_configs:
+ - targets:
+ - 62.99.185.129
+ - 9.9.9.9
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: 192.168.32.230:9999
+
+ - job_name: 'https'
+ metrics_path: /proxy
+ params:
+ module:
+ - blackbox
+ - http_tls_2xx
+ scheme: https
+ tls_config:
+ ca_file: /etc/ssl/prometheus/ca-crt.pem
+ cert_file: /etc/ssl/prometheus/server/scrape-crt.pem
+ key_file: /etc/ssl/prometheus/server/scrape-key.pem
+ static_configs:
+ - targets:
+ - web.chaos-at-home.org
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - source_labels: [__param_target]
+ target_label: instance
+ - target_label: __address__
+ replacement: 192.168.32.230:9999
+
+ - job_name: 'ssh'
+ metrics_path: /proxy
+ params:
+ module:
+ - blackbox
+ - ssh_banner
+ scheme: https
+ tls_config:
+ ca_file: /etc/ssl/prometheus/ca-crt.pem
+ cert_file: /etc/ssl/prometheus/server/scrape-crt.pem
+ key_file: /etc/ssl/prometheus/server/scrape-key.pem
+ static_configs:
+ - targets:
+ - 192.168.32.230:222
+ relabel_configs:
+ - source_labels: [__address__]
+ target_label: __param_target
+ - target_label: instance
+ replacement: 'ch-mon'
+ - target_label: __address__
+ replacement: 192.168.32.230:9999
diff --git a/roles/monitoring/prometheus/server/templates/rules.yml.j2 b/roles/monitoring/prometheus/server/templates/rules.yml.j2
new file mode 100644
index 00000000..30576363
--- /dev/null
+++ b/roles/monitoring/prometheus/server/templates/rules.yml.j2
@@ -0,0 +1,5 @@
+# {{ ansible_managed }}
+
+groups:
+ - name: {{ item }}
+ {{ {'rules': prometheus_server_rules[item]} | to_nice_yaml(indent=2, width=1337) | indent(4) }}