Skip to content
This repository was archived by the owner on Mar 6, 2023. It is now read-only.

Commit af63966

Browse files
author
Paweł Krupa
committed
Merge branch 'add_rules' into 'master'
Add default prometheus rules See merge request !2
2 parents 28afddc + 714bc55 commit af63966

File tree

5 files changed

+69
-9
lines changed

5 files changed

+69
-9
lines changed

README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ All variables you can see [here](defaults/main.yml).
3737
3838
This role doesn't have dependencies.
3939
40+
## Defining alerting rules files
41+
42+
Put the rules files to rules foleder
43+
44+
Alerting rules are defined in the following syntax:
45+
```yaml
46+
ALERT <alert name>
47+
IF <expression>
48+
[ FOR <duration> ]
49+
[ LABELS <label set> ]
50+
[ ANNOTATIONS <label set> ]
51+
```
52+
4053
## Example Playbook
4154
```yaml
4255
---

defaults/main.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ prometheus_bin_dir: "{{ prometheus_root_dir }}/current"
2020
prometheus_rules_dir: "{{ prometheus_config_dir }}/rules"
2121
prometheus_file_sd_config_dir: "{{ prometheus_config_dir }}/tgroups"
2222

23-
prometheus_rules_src_dir: "{{ playbook_dir }}/rules"
24-
#prometheus_config_parts_src_dir: "{{ playbook_dir }}/../environments/main_server/files"
25-
#prometheus_tgroups_src_dir: "{{ playbook_dir }}/files/tgroups"
23+
# prometheus_rules_src_dir: "{{ playbook_dir }}/../files/rules"
24+
# prometheus_config_parts_src_dir: "{{ playbook_dir }}/../environments/main_server/files"
25+
# prometheus_tgroups_src_dir: "{{ playbook_dir }}/files/tgroups"
2626

2727
prometheus_config_dir: /etc/prometheus
2828
prometheus_pid_path: /var/run/prometheus.pid
2929
prometheus_db_dir: /var/lib/prometheus
3030
# prometheus_db_dir: /home/soi/prometheus
3131

32-
prometheus_rules_files: []
32+
prometheus_rules_files: [alert.rules]
3333

3434
prometheus_web_listen_address: "0.0.0.0:9090"
3535
prometheus_web_external_url: 'http://localhost:9090/'

files/rules/alert.rules

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Alert for any instance that is unreachable for >5 minutes.
2+
ALERT InstanceDown
3+
IF up == 0
4+
FOR 5m
5+
LABELS { severity = "slack" }
6+
ANNOTATIONS {
7+
summary = "Instance {{ $labels.instance }} down",
8+
description = "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes.",
9+
}

tasks/configuration.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,41 @@
11
---
2+
# - name: register rules files exists on server
3+
# shell: "ls -1 {{ prometheus_rules_dir }}"
4+
# register: rules_content
5+
# changed_when: False
6+
#
7+
# - name: delete unmanaged rules files
8+
# file:
9+
# path: "{{ prometheus_rules_dir }}/{{ item }}"
10+
# state: absent
11+
# with_items: "{{ rules_content.stdout_lines | difference(prometheus_rules_files) }}"
12+
# notify:
13+
# - reload prometheus
14+
#
15+
# - name: copy rule files from playbook directory
16+
# copy:
17+
# src: "{{ prometheus_rules_src_dir }}/{{ item }}"
18+
# dest: "{{ prometheus_rules_dir }}/{{ item }}"
19+
# owner: "{{ prometheus_user }}"
20+
# group: "{{ prometheus_group }}"
21+
# mode: 0644
22+
# validate: "{{ prometheus_bin_dir }}/promtool check-rules %s"
23+
# with_items:
24+
# - "{{ prometheus_rules_files }}"
25+
# notify:
26+
# - reload prometheus
27+
- name: copy rule files to prometheus
28+
copy:
29+
src: "rules/"
30+
dest: "{{ prometheus_rules_dir }}"
31+
owner: "{{ prometheus_user }}"
32+
group: "{{ prometheus_group }}"
33+
mode: 0644
34+
validate: "{{ prometheus_bin_dir }}/promtool check-rules %s"
35+
notify:
36+
- reload prometheus
37+
38+
239
- name: configure prometheus
340
tags:
441
- config
@@ -13,3 +50,4 @@
1350
notify:
1451
- reload prometheus
1552

53+

templates/etc/prometheus/prometheus.yml.j2

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ global:
1414
{% endfor %}
1515
{% endif %}
1616

17-
# Load and evaluate rules in this file every 'evaluation_interval' seconds. This field may be repeated.
18-
{% if prometheus_rule_files is defined and prometheus_rule_files|count > 0 %}
17+
{% if prometheus_rules_files is defined %}
18+
# Rule files specifies a list of files from which rules are read.
1919
rule_files:
20-
{% for file in prometheus_rule_files %}
21-
- '{{ file }}'
22-
{% endfor%}
20+
{% for dest in prometheus_rules_files %}
21+
- {{ prometheus_rules_dir }}/{{ dest }}
22+
{% endfor %}
2323
{% endif %}
2424

2525
scrape_configs:

0 commit comments

Comments
 (0)