Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:grafana [2023/11/18 06:26] admin |
linux:grafana [2024/05/24 10:14] (текущий) admin |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
===== Установка ===== | ===== Установка ===== | ||
<code bash> | <code bash> | ||
+ | # (не работает, | ||
# Добавляем ключи и репозиторий: | # Добавляем ключи и репозиторий: | ||
apt install gnupg2 && wget -q -O - https:// | apt install gnupg2 && wget -q -O - https:// | ||
Строка 72: | Строка 73: | ||
Для данных есть два варианта, | Для данных есть два варианта, | ||
**EIC**, когда в килобайте 1024 байт еще называют " | **EIC**, когда в килобайте 1024 байт еще называют " | ||
+ | |||
+ | |||
+ | ==== Repeat/ | ||
+ | Можно сделать автоматический репит графиков, | ||
+ | Например переменная со списком хостов, | ||
+ | " | ||
+ | {{: | ||
+ | |||
Строка 89: | Строка 98: | ||
< | < | ||
< | < | ||
- | < | + | < |
# Указание шаблона в настройках канала оповещения | # Указание шаблона в настройках канала оповещения | ||
{{ template " | {{ template " | ||
Строка 152: | Строка 161: | ||
< | < | ||
- | < | + | < |
{{ define " | {{ define " | ||
{{range .Alerts}} | {{range .Alerts}} | ||
Строка 163: | Строка 172: | ||
- | < | + | < |
{{ define " | {{ define " | ||
Summary: {{ .CommonAnnotations.Values }} | Summary: {{ .CommonAnnotations.Values }} | ||
Строка 190: | Строка 199: | ||
- | < | + | < |
{{ define " | {{ define " | ||
{{ if .Alerts.Firing }} | {{ if .Alerts.Firing }} | ||
Строка 211: | Строка 220: | ||
- | < | + | < |
{{ define " | {{ define " | ||
{{- if eq ((index .Alerts 0).Labels._alert_type_) " | {{- if eq ((index .Alerts 0).Labels._alert_type_) " | ||
Строка 234: | Строка 243: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Чтобы получить значение, | ||
+ | <code go> | ||
+ | // после " | ||
+ | <b>{{ $labels.group }}</ | ||
+ | </ | ||
+ | |||
+ | Пример шаблона | ||
+ | <code go> | ||
+ | {{ define " | ||
+ | {{/* Стремление сделать один шаблон, | ||
+ | с одним инстансом или с мульти, | ||
+ | {{/* Примечательно, | ||
+ | некоторые строки здесь выпадают из форматирования и прибиты к левой границе */}} | ||
+ | {{- if eq ((index .Alerts 0).Labels._alert_type_) " | ||
+ | {{- template " | ||
+ | {{ else if eq ((index .Alerts 0).Labels._alert_type_) " | ||
+ | {{- template " | ||
+ | {{ else }} | ||
+ | {{- (index .Alerts 0).Labels.alertname }} | ||
+ | Label ' | ||
+ | {{ end }} | ||
+ | {{- end }} | ||
+ | |||
+ | {{/* Тип алертов с одним инстансом (CLASSIC) */}} | ||
+ | {{ define " | ||
+ | {{/* Возникновение алерта */}} | ||
+ | {{- if .Alerts.Firing -}} | ||
+ | {{ range .Alerts }}[Alerting] {{ .Labels.alertname }} | ||
+ | {{ if .Annotations.description }} | ||
+ | {{ .Annotations.description }} | ||
+ | {{ end }} | ||
+ | |||
+ | Metrics: | ||
+ | {{- $value_of_metric := (.ValueString | reReplaceAll `.*metric=' | ||
+ | {{ if ne $value_of_metric " | ||
+ | {{ with .ValueString }} | ||
+ | {{- . | reReplaceAll `\[\s` "" | ||
+ | {{ end }} | ||
+ | {{ else }} | ||
+ | {{ with .ValueString }} | ||
+ | {{- . | reReplaceAll `\[\s` "" | ||
+ | {{- end }} | ||
+ | {{- end -}} | ||
+ | |||
+ | {{- if .PanelURL }} | ||
+ | Panel URL: {{ .PanelURL }} | ||
+ | {{ end }} | ||
+ | {{ end }} | ||
+ | {{ end -}} | ||
+ | |||
+ | {{/* Решение алерта */}} | ||
+ | {{- if .Alerts.Resolved -}} | ||
+ | {{ range .Alerts }}[OK] {{ .Labels.alertname }} | ||
+ | {{ .Annotations.description }} | ||
+ | {{- end }} | ||
+ | {{- end -}} | ||
+ | |||
+ | {{ end }} | ||
+ | |||
+ | |||
+ | {{/* Тип алерта, | ||
+ | {{ define " | ||
+ | {{ if (index .Alerts 0).Annotations.description -}} | ||
+ | {{ (index .Alerts 0).Annotations.description -}} | ||
+ | {{ end -}} | ||
+ | |||
+ | {{/* Если состояние Firing, перечисляем переданные инстансы в подшаблоне " | ||
+ | {{- if .Alerts.Firing }} | ||
+ | **{{ len .Alerts.Firing }} firing alert(s)** | ||
+ | {{ template " | ||
+ | {{ end -}} | ||
+ | |||
+ | {{/* Аналогично для состояния Resolve */}} | ||
+ | {{- if .Alerts.Resolved }} | ||
+ | **{{ len .Alerts.Resolved }} resolved alert(s)** | ||
+ | {{- template " | ||
+ | {{ end -}} | ||
+ | |||
+ | {{ if (index .Alerts 0).PanelURL }} | ||
+ | Panel URL: {{ (index .Alerts 0).PanelURL }} | ||
+ | {{- end }} | ||
+ | {{- end }} | ||
+ | |||
+ | {{/* Подшаблон для перечисления инстансов в цикле */}} | ||
+ | {{ define " | ||
+ | {{- range . -}} | ||
+ | {{/* Пишем поле " | ||
+ | в алерте там переменные с данными */}} | ||
+ | {{ index .Annotations " | ||
+ | {{ end -}} | ||
+ | {{ end }} | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Еще про алерты ===== | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | Собсна в простом случае, | ||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== API ===== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | <code bash> | ||
+ | curl http:// | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | Получить перечень | ||
+ | <code bash> | ||
+ | curl -X ' | ||
+ | -H ' | ||
+ | |||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | Создать новый | ||
+ | <code bash> | ||
+ | curl -X ' | ||
+ | ' | ||
+ | -H ' | ||
+ | -H ' | ||
+ | -d '{ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ] | ||
+ | }' | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||