6.Prometheus: пример использования Alertmanager

Thank you for reading this post, don't forget to subscribe!

Наи­бо­лее про­стой при­мер исполь­зо­ва­ния alertmanager в систе­ме мони­то­рин­га Prometheus — полу­че­ние пре­ду­пре­жде­ний о доступ­ном сво­бод­ном месте на жест­ких дисках.

Давай­те раз­бе­рем­ся, как с помо­щью функ­ции predict_linear() полу­чать полез­ные и свое­вре­мен­ные предупреждения!

Чаще все­го пре­ду­пре­жде­ния о закан­чи­ва­ю­щем­ся сво­бод­ном месте на жест­ких дис­ках при­хо­дят когда диск запол­нен на 80-90%. Ино­гда мож­но настро­ить полу­че­ние уве­дом­ле­ний при остав­шем­ся сво­бод­ном месте объ­е­мом, напри­мер, 10 гига­байт. Эти под­хо­ды хоро­ши когда жест­кие дис­ки на сер­ве­рах запол­ня­ют­ся посте­пен­но и мед­лен­но, но что делать если вдруг диск начи­на­ет запол­нять­ся экспоненциально?

Функ­ция predict_linear() в систе­ме мони­то­рин­га Prometheus поз­во­ля­ет полу­чить пре­ду­пре­жде­ние когда диск будет запол­нен, напри­мер, в тече­нии 4 часов.

При­ме­ча­ние. Неслож­но дога­дать­ся, что назва­ние функ­ции про­ис­хо­дит от англий­ско­го to predict — предсказывать.

Выгля­деть это будет при­мер­но так:

[codesyntax lang="php"]

[/codesyntax]

Рас­смот­рим дан­ный при­мер подроб­нее. В пер­вой строке

нача­ло опи­са­ния уве­дом­ле­ния и его назва­ние. Вто­рая стро­ка — самая важная

Выра­же­ние node_filesystem_free{job='node'}[1h] вычис­ля­ет дина­ми­ку запол­не­ния дис­ка за послед­ний час и с помо­щью predict_linear() про­гно­зи­ру­ет запол­нен­ность дис­ка на сле­ду­ю­щие 4 часа (4 * 3600 секунд), и если сво­бод­но­го места пред­по­ло­жи­тель­но оста­ет­ся мень­ше 0, то будет отправ­ле­но предупреждение.

При­ме­ча­ние. Спо­соб отправ­ки пре­ду­пре­жде­ния будет зави­сеть от ваших инди­ви­ду­аль­ных настро­ек alertmanager - это может быть пись­мо или смс-сообщение.

Стро­ка

поз­во­ля­ет подо­ждать 5 минут перед отправ­кой пре­ду­пре­жде­ния, для того что­бы исклю­чить из про­гно­зи­ро­ва­ния вне­зап­ные и ано­маль­ные всплес­ки. Мет­ки (LABELS) вы може­те доба­вить по сво­е­му вку­су и необходимости.

Все это мож­но поме­стить в файл пра­вил (назо­вем его node.rules) и допи­сать путь к это­му фай­лу в кон­фиг Prometheus (prometheus.yml):

[codesyntax lang="php"]

[/codesyntax]

Не забы­ва­ем пере­за­пу­стить Prometheus для при­ме­не­ния изменений