12.Prometheus Мониторинг docker

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

Счи­та­ем, что у вас уже уста­нов­лен Prometheus со все­ми необ­хо­ди­мы­ми ком­по­нен­та­ми (node_exporter, alertmanager и Grafana).

При­ме­ча­ние. К сло­ву, все эти ком­по­нен­ты мож­но уста­нав­ли­вать в docker-кон­тей­не­рах и объ­еди­нять весь стек с помо­щью docker-compose.

Если с мони­то­рин­гом docker-хоста все про­сто и понят­но — как и на любом дру­гом физи­че­ском сер­ве­ре мет­ри­ки соби­ра­ет node_exporter и пере­да­ет их в Prometheus, то для мони­то­рин­га docker-кон­тей­не­ров при­дет­ся вос­поль­зо­вать­ся инстру­мен­том cAdvisor (Container Advisor) от google.

Для запус­ка cAdvisor вос­поль­зу­ем­ся фай­лом docker-compose.yml сле­ду­ю­ще­го содержания:

[codesyntax lang="php"]

[/codesyntax]

Запус­ка­ем кон­тей­нер с помо­щью команды:

Далее в уже хоро­шо извест­ный нам кон­фи­гу­ра­ци­он­ный файл prometheus.yml (в debian-based дис­три­бу­ти­вах нахо­дит­ся в ката­ло­ге /etc/prometheus) нуж­но доба­вить сле­ду­ю­щие строки:

[codesyntax lang="php"]

[/codesyntax]

и пере­за­пу­стить Prometheus для при­ме­не­ния изменений.

Сле­ду­ю­щим шагом нуж­но импор­ти­ро­вать (или создать само­сто­я­тель­но) в Grafana даш­борд для отоб­ра­же­ния соби­ра­е­мых мет­рик по docker-кон­тей­не­рам — взять гото­вые мож­но здесь. В неко­то­рых слу­ча­ях потре­бу­ет­ся вне­сти неболь­шие прав­ки в зави­си­мо­сти от исполь­зу­е­мо­го вами docker storage driver — в гото­вых даш­бор­дах исполь­зу­ет­ся aufs, если же у вас overlay/overlay2, то неко­то­рые гра­фи­ки будут пустыми.

Напри­мер, в моем слу­чае исполь­зу­ет­ся overlay, поэто­му пра­виль­ная мет­ри­ка для отоб­ра­же­ния исполь­зу­е­мо­го места на систем­ном дис­ке будет выгля­деть так:

Далее сле­ду­ет настро­ить уве­дом­ле­ния, по умол­ча­нию дан­ные настрой­ки нахо­дят­ся в /etc/prometheus/alert.rules, но для удоб­ства их мож­но раз­де­лить на несколь­ко фай­лов в зави­си­мо­сти от типа оповещения.

Напри­мер, для опо­ве­ще­ния о про­бле­мах с кон­тей­не­ра­ми, можем исполь­зо­вать файл containers.rules, а для опо­ве­ще­ний о про­бле­мах с docker-хостом — файл docker.rules.

Содер­жи­мое фай­ла пра­вил containers.rules следующее:

[codesyntax lang="php"]

[/codesyntax]

В кон­фи­гу­ра­ци­он­ном фай­ле docker.rules сле­ду­ю­щие строки:

[codesyntax lang="php"]

[/codesyntax]

Alertmanager так­же уме­ет оправ­лять опо­ве­ще­ния о про­бле­мах с помо­щью e-mail, Pushover, Slack, HipChat. При­мер инте­гра­ции alertmanager’а и slack подроб­но рас­пи­сан здесь, поэто­му вос­поль­зу­ем­ся дан­ным примером.

Кон­фи­гу­ра­ци­он­ный файл с настрой­ка­ми отправ­ки уве­дом­ле­ний выгля­дит так:

[codesyntax lang="php"]

[/codesyntax]

вот есть гото­вый проект:
https://github.com/stefanprodan/dockprom