{"id":326632,"date":"2021-07-18T21:00:38","date_gmt":"2021-07-18T21:00:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=326632"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=326632","title":{"rendered":"Monitoring as Code \u043d\u0430 \u0431\u0430\u0437\u0435 VictoriaMetrics \u0438 Grafana"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0432\u0441\u0435\u0445 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 Infrastructure as Code.<\/p>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/548968\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u043b\u044e\u0431\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f GitOps \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Monitoring as Code.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/h2>\n<p>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u044e, \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u0430: k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 docker-\u0445\u043e\u0441\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 systemd-\u0434\u0435\u043c\u043e\u043d\u0430\u0445 \u0438 \u0442.\u0434. \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c PROD, STAGE \u0438 DEV-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435. \u041a \u0441\u043b\u043e\u0432\u0443, \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Terraform \u0438 Ansible (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435). \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Prometheus-\u0441\u0442\u0435\u043a. \u041e\u043d \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0421\u0431\u043e\u0440 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; <a href=\"https:\/\/prometheus.io\/\" rel=\"noopener noreferrer nofollow\">Prometheus<\/a><\/p>\n<\/li>\n<li>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u044b (Node exporter, Postgres exporter, MongoDB exporter, &#8230;).<\/p>\n<\/li>\n<li>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f &#8212; <a href=\"https:\/\/grafana.com\/\" rel=\"noopener noreferrer nofollow\">Grafana<\/a><\/p>\n<\/li>\n<li>\n<p>\u0410\u043b\u0435\u0440\u0442\u0438\u043d\u0433 &#8212; <a href=\"https:\/\/prometheus.io\/docs\/alerting\/latest\/alertmanager\/\" rel=\"noopener noreferrer nofollow\">Alertmanager<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 Prometheus \u043d\u0430 <a href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\" rel=\"noopener noreferrer nofollow\">VictoriaMetrics<\/a> (\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e), \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u043a\u0443\u0447\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0432 1 \u0433\u043e\u0434. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c, \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e. \u041c\u044b \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u0441\u0432\u043e\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Prometheus \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: vmagent + amalert + vmselect + vminsert + vmstorage.<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a \u0434\u043b\u044f VictoriaMetrics, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f Prometheus.<\/p>\n<h2>\u042d\u0442\u0430\u043f\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/h2>\n<h3>1 \u044d\u0442\u0430\u043f. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Prometheus \u043c\u044b \u0432\u043d\u043e\u0441\u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412 Prometheus \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0439 Service Discovery, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#static_config\" rel=\"noopener noreferrer nofollow\">static_config<\/a>. \u0418, \u043a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0448 \u0444\u0430\u0439\u043b prometheus.yml \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443 \u0438\u0437 1000+ \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 targets, \u043b\u0438\u0448\u043d\u0438\u0435 jobs \u0438 \u0442.\u0434. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0434\u043c\u0438\u043d\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432, \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d.<\/p>\n<p>\u0427\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 linux \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043d\u0435 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u043f\u043e \u043f\u0443\u0442\u0438 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e. \u041f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Prometheus \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0430\u043b\u0435\u0440\u0442\u043e\u0432 prometheus, \u0430 \u0442\u0430\u043a\u0436\u0435 Alertmanager.<\/p>\n<p>\u0414\u0430\u0448\u0431\u043e\u0440\u0434\u044b Grafana \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 Grafana \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\/\u0438\u043c\u043f\u043e\u0440\u0442\u0430.<\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0443\u0442 \u043c\u044b \u043c\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u0438 \u043f\u0440\u043e \u044d\u0442\u0443 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0443, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0417\u0430\u043c\u043e\u0440\u0433\u0430\u043b \u0430\u043b\u0435\u0440\u0442\u0438\u043d\u0433, \u0432\u043e\u0437\u0431\u0443\u0434\u0438\u043b\u0430\u0441\u044c \u0433\u0440\u0443\u043f\u043f\u0430 \u0434\u0435\u0436\u0443\u0440\u043d\u044b\u0445 (\u0443 \u043d\u0430\u0441 \u0438 \u0442\u0430\u043a\u043e\u0435 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043c\u0430\u0448\u0438\u043d\u0435, \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u043b\u0443\u0448\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0451 \u0430\u043b\u0435\u0440\u0442\u044b. \u0414\u0435\u0436\u0443\u0440\u043d\u0430\u044f \u0441\u043c\u0435\u043d\u0430 \u043e\u043f\u044f\u0442\u044c \u0437\u0432\u043e\u043d\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Grafana \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438, \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u043d\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e ssh. \u0423 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c, \u0430\u043b\u0435\u0440\u0442\u0430\u043c \u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u043f\u0440\u0430\u0432\u0430 \u0442\u043e\u043b\u044c\u043a\u043e Viewer.<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0442.\u0434.<\/p>\n<\/li>\n<\/ul>\n<h3>2 \u044d\u0442\u0430\u043f. \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 Git<\/h3>\n<p>\u041e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u044b \u043d\u0430\u043c\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441 \u0440\u0443\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 VictoriaMetrics \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443: \u0440\u0435\u0448\u0438\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 VictoriaMetrics \u0438 Alertmanager \u0432 Git. \u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043f\u043e \u0444\u0430\u043a\u0442\u0443 &#8212; \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 git pull).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 scrape-\u043a\u043e\u043d\u0444\u0438\u0433\u0438 VictoriaMetrics \u0432 <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#file_sd_config\" rel=\"noopener noreferrer nofollow\">file_sd_config<\/a>. \u042d\u0442\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043d\u043e \u0437\u0430\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u0432 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 Git \u0438 \u043c\u043e\u0436\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u0439.<\/p>\n<h3>3 \u044d\u0442\u0430\u043f. GitOps \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/h3>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u044d\u0442\u0430\u043f\u0430\u043c\u0438, \u0442\u0443\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d.<\/strong><\/p>\n<h4>Service Discovery<\/h4>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Service Discovery. \u0423 \u043d\u0430\u0441 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b Hashicorp Consul (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 KV-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430), \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a Service Discovery \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0448\u0438\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 consul-\u0430\u0433\u0435\u043d\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 prometheus-\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u044b \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 Consul. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 consul-\u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 JSON-\u0444\u0430\u0439\u043b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0435. \u0410 \u0437\u0430\u0442\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u043b\u043e\u0430\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0447\u0442\u043e\u0431 \u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/www.consul.io\/docs\/discovery\/services\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Consul<\/a>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f Node Exporter \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>node_exporter.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{   \"service\": {     \"name\": \"node_exporter\",     \"port\": 9100,     \"meta\": {       \"metrics_path\": \"\/metrics\",       \"metrics_scheme\": \"http\"     }   } }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0437\u0430 \u043d\u0430\u0441 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 consul-\u0430\u0433\u0435\u043d\u0442, \u043e\u0442 \u043d\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e JSON-\u0444\u0430\u0439\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430).<\/p>\n<p>\u0414\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0448\u0438\u043d\/\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u044b) \u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435. \u041f\u0440\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 consul-\u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 graceful-shutdown, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Consul API.<\/p>\n<h4>VictoriaMetrics Configuration<\/h4>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 Service Discovery, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#consul_sd_config\" rel=\"noopener noreferrer nofollow\">consul_sd_config<\/a> \u0432 \u043d\u0430\u0448\u0435\u043c scrape-\u043a\u043e\u043d\u0444\u0438\u0433\u0435 VictoriaMetrics. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0448 \u0444\u0430\u0439\u043b \u0438\u0437 1000+ \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 30+ \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">global:   scrape_interval: 30s  scrape_configs:   - job_name: exporters     consul_sd_configs:       - server: localhost:8500     relabel_configs:       # drop all targets that do not have metrics_path key in metadata       - source_labels: [__meta_consul_service_metadata_metrics_path]         regex: ^\/.+$         action: keep       # set metrics path from metrics_path metadata key       - source_labels: [__meta_consul_service_metadata_metrics_path]         target_label: __metrics_path__       # set metrics scheme from metrics_scheme metadata key       - source_labels: [__meta_consul_service_metadata_metrics_scheme]         regex: ^(http|https)$         target_label: __scheme__       - source_labels: [__meta_consul_dc]         target_label: consul_dc       - source_labels: [__meta_consul_health]         target_label: consul_health       - action: labelmap         regex: __meta_consul_metadata_(.+)         replacement: $1       - source_labels: [__meta_consul_node]         target_label: host       - source_labels: [__meta_consul_node, __meta_consul_service_port]         separator: \":\"         target_label: instance       - source_labels: [__meta_consul_service]         target_label: job       - source_labels: [__meta_consul_node, __meta_consul_service_port]         separator: \":\"         target_label: __address__ <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Prometheus \u0431\u0440\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432 \u0438\u0437 Consul Service Discovery. \u0422.\u0435. \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u0432 Consul, \u0442\u043e \u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 Prometheus.<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#relabel_config\" rel=\"noopener noreferrer nofollow\">relabel_config<\/a> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 Consul \u0432 \u043b\u0435\u0439\u0431\u043b\u044b Prometheus. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Consul \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0441\u0445\u0435\u043c\u0443 (http \u0438\u043b\u0438 https) \u0438 \u043f\u0443\u0442\u044c \u043a \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e \/metrics, \u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0438 \u0434\u0440\u0443\u0433\u043e\u0439).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0435\u0433\u043e\u0432 consul, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432 Prometheus (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u044d\u0442\u0438 \u0442\u0435\u0433\u0438 \u0438\u043b\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0421onsul \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0441\u0442\u044b \u0438\u0437 DEV-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<details class=\"spoiler\">\n<summary>prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">scrape_configs:   - job_name: exporters     consul_sd_configs:       - server: localhost:8500         tags:           - dev     relabel_configs:     ...<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Consul Service Discovery \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0445\u043e\u0441\u0442\u0430 (\u043c\u0435\u0442\u043a\u0430 __meta_consul_health). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0445\u043e\u0441\u0442\u044b \u0432 Maintenance-\u0440\u0435\u0436\u0438\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 Consul \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <a href=\"https:\/\/www.consul.io\/commands\/maint\" rel=\"noopener noreferrer nofollow\">maint<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434<\/summary>\n<div class=\"spoiler__content\">\n<pre><code># \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430 consul maint -enable # \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul maint -service=node_exporter -enable # \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430 consul maint -disable<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043c\u0435\u0442\u043a\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0430\u043b\u0435\u0440\u0442\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0430\u043b\u0435\u0440\u0442\u0438\u043d\u0433\u0430.<\/p>\n<h4>Grafana Provisioning<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 Grafana, \u0442\u043e \u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 JSON-\u0444\u0430\u0439\u043b. \u0422\u0430\u043a\u0436\u0435 \u0443 Grafana \u0435\u0441\u0442\u044c API, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/administration\/provisioning\/\" rel=\"noopener noreferrer nofollow\">Grafana Provisioning<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Grafana \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML. \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<ol>\n<li>\n<p>\u041c\u044b \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0438\u0445 data sources, plugins, dashboards \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433. <\/p>\n<\/li>\n<li>\n<p>Grafana \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 YAML \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u0435\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>Grafana \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0445 \u0443 \u0441\u0435\u0431\u044f \u0432 UI. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u043b\u043e\u0436\u0435\u043d\u044b \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c JSON-\u0444\u0430\u0439\u043b\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 UI (\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434).<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 uid, \u0447\u0442\u043e\u0431 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>Grafana \u0443\u043c\u0435\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u0445.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 JSON-\u0444\u0430\u0439\u043b \u0438\u0441\u0447\u0435\u0437 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, Grafana \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 UI.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grafana Provisioning:<\/p>\n<details class=\"spoiler\">\n<summary>datasources.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\"># config file version apiVersion: 1  # list of datasources that should be deleted from the database deleteDatasources: []  # list of datasources to insert\/update depending # what's available in the database datasources:   # &lt;string, required&gt; name of the datasource. Required   - name: VictoriaMetrics     # &lt;string, required&gt; datasource type. Required     type: prometheus     # &lt;string, required&gt; access mode. proxy or direct (Server or Browser in the UI). Required     access: proxy     # &lt;int&gt; org id. will default to orgId 1 if not specified     orgId: 1     # &lt;string&gt; custom UID which can be used to reference this datasource in other parts of the configuration, if not specified will be generated automatically     uid: victoria_metrics     # &lt;string&gt; url     url: http:\/\/my.victoria.metrics:8481\/select\/0\/prometheus     # &lt;string&gt; Deprecated, use secureJsonData.password     password:     # &lt;string&gt; database user, if used     user:     # &lt;string&gt; database name, if used     database:     # &lt;bool&gt; enable\/disable basic auth     basicAuth:     # &lt;string&gt; basic auth username     basicAuthUser:     # &lt;string&gt; Deprecated, use secureJsonData.basicAuthPassword     basicAuthPassword:     # &lt;bool&gt; enable\/disable with credentials headers     withCredentials:     # &lt;bool&gt; mark as default datasource. Max one per org     isDefault: true     # &lt;map&gt; fields that will be converted to json and stored in jsonData     jsonData:     # &lt;string&gt; json object of data that will be encrypted.     secureJsonData:     # datasource version     version: 1     # &lt;bool&gt; allow users to edit datasources from the UI.     editable: false <\/code><\/pre>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>dashboards.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">apiVersion: 1  providers:   # &lt;string&gt; an unique provider name. Required   - name: dashboards     # &lt;int&gt; Org id. Default to 1     orgId: 1     # &lt;string&gt; name of the dashboard folder.     folder: ''     # &lt;string&gt; folder UID. will be automatically generated if not specified     folderUid: ''     # &lt;string&gt; provider type. Default to 'file'     type: file     # &lt;bool&gt; disable dashboard deletion     disableDeletion: false     # &lt;int&gt; how often Grafana will scan for changed dashboards     updateIntervalSeconds: 10     # &lt;bool&gt; allow updating provisioned dashboards from the UI     allowUiUpdates: false     options:       # &lt;string, required&gt; path to dashboard files on disk. Required when using the 'file' type       path: \/var\/lib\/grafana\/dashboards       # &lt;bool&gt; use folder names from filesystem to create folders in Grafana       foldersFromFilesStructure: true <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Grafana \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c Data Source \u0442\u0438\u043f\u0430 prometheus \u0441 URL <strong>http:\/\/my.victoria.metrics:8481\/select\/0\/prometheus<\/strong>. \u0422\u0430\u043a\u0436\u0435 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <strong>\/var\/lib\/grafana\/dashboards<\/strong> \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Grafana \u0438\u0437 \u043a\u043e\u0434\u0430.<\/p>\n<h4>Dashboards as Code<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u0430\u043c\u0438\u043c JSON-\u0444\u0430\u0439\u043b\u0430\u043c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432. \u0422\u0435, \u043a\u0442\u043e \u0432\u0438\u0434\u0435\u043b \u044d\u0442\u0438 JSON-\u044b, \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u0431\u0435\u0437 Grafana UI) \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0421 \u044d\u0442\u0438\u043c \u044f \u0441\u043e\u0433\u043b\u0430\u0448\u0443\u0441\u044c, \u043d\u043e \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <a href=\"https:\/\/grafana.github.io\/grafonnet-lib\/\" rel=\"noopener noreferrer nofollow\">grafonnet-lib<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044f\u0437\u044b\u043a\u0430 <a href=\"https:\/\/jsonnet.org\/\" rel=\"noopener noreferrer nofollow\">Jsonnet<\/a>.<\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0443\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0434\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432. \u042f\u0437\u044b\u043a Jsonnet \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434, \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044f \u0435\u0433\u043e \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c.<\/p>\n<p>\u042f\u0437\u044b\u043a Jsonnet \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0434\u0430\u0436\u0435 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043d\u0430\u0432\u044b\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043c\u043e\u0436\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u0447\u0430\u0441\u043e\u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Grafana \u0438\u0437 \u043a\u043e\u0434\u0430.<\/p>\n<h4>GitOps<\/h4>\n<p>\u0412\u044b\u0448\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0447\u0442\u043e\u0431 \u043b\u044e\u0431\u043e\u0439 \u0447\u043b\u0435\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0433 \u0442\u0443\u0434\u0430 \u043f\u0440\u0438\u0439\u0442\u0438 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041c\u044b \u0434\u0430\u0432\u043d\u043e \u0443 \u0441\u0435\u0431\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Gitlab \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0448\u0438\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 Gitlab CI \u0434\u043b\u044f CI\/CD.<\/p>\n<p>\u0421\u043e\u0431\u0440\u0430\u0432 \u0432\u0441\u0451 \u0432 \u043a\u0443\u0447\u0443, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432.<\/p>\n<ul>\n<li>\n<p>\/\u0441i &#8212; \u0444\u0430\u0439\u043b\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 Gitlab CI<\/p>\n<\/li>\n<li>\n<p>\/grafonnet-lib &#8212; git submodule \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 grafonnet-lib<\/p>\n<\/li>\n<li>\n<p>\/dev &#8212; \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 DEV-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\/stage &#8212; \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f STAGE<\/p>\n<\/li>\n<li>\n<p>\/prod &#8212; \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u043b\u044f PROD<\/p>\n<\/li>\n<li>\n<p>\/tests &#8212; \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 docker-compose \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Grafana)<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 dev, stage, prod \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>alertmanager<\/p>\n<\/li>\n<li>\n<p>blackbox<\/p>\n<\/li>\n<li>\n<p>grafana<\/p>\n<\/li>\n<li>\n<p>vmagent<\/p>\n<\/li>\n<li>\n<p>vmalert<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0412 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 grafana, \u043a\u0440\u043e\u043c\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Provisioning, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 jsonnet, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 JSON-\u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Gitlab CI.<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Gitlab CI \u0443 \u043d\u0430\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>.gitlab-ci.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">variables:   CA_CERT_FILE: \/etc\/gitlab-runner\/certs\/ca.crt   VMETRICS_IMAGE: $CI_REGISTRY_IMAGE\/vm:ci-0.0.5   JSONNET_IMAGE: $CI_REGISTRY_IMAGE\/jsonnet:ci-0.0.5   YAMLLINT_IMAGE: cytopia\/yamllint:1.26   RSYNC_IMAGE: instrumentisto\/rsync-ssh:alpine3.14    # can be overrided in project CI\/CD settings   GRAFANA_USER: admin   GRAFANA_PASSWORD: admin    # should be defined in project CI\/CD settings   #SSH_PRIVATE_KEY_FILE:   #SSH_USERNAME:  include:   - local: '*\/.gitlab-ci.yml'  stages:   - build_image   - validate   - build   # - review   - deploy  build_image:   before_script: []   stage: build_image   image:     name: gcr.io\/kaniko-project\/executor:debug     entrypoint: [\"\"]   variables:     REGISTRY_TAG: $CI_COMMIT_TAG     CONTEXT_DIR: $CI_PROJECT_DIR\/ci\/$IMAGE_NAME   script:     - mkdir -p \/kaniko\/.docker     - cat $CA_CERT_FILE &gt;&gt; \/kaniko\/ssl\/certs\/additional-ca-cert-bundle.crt     - cp -L $CA_CERT_FILE $CONTEXT_DIR\/ca.crt     - echo \"{\\\"auths\\\":{\\\"$CI_REGISTRY\\\":{\\\"username\\\":\\\"$CI_REGISTRY_USER\\\",\\\"password\\\":\\\"$CI_REGISTRY_PASSWORD\\\"}}}\" &gt; \/kaniko\/.docker\/config.json     - \/kaniko\/executor --context $CONTEXT_DIR --dockerfile $CONTEXT_DIR\/Dockerfile $BUILD_ARGS --destination $CI_REGISTRY_IMAGE\/$IMAGE_NAME:$REGISTRY_TAG   cache: {}   rules:     - if: '$CI_COMMIT_TAG =~ \/^ci-.*\/'   parallel:     matrix:       - IMAGE_NAME: jsonnet         GO_JSONNET_VERSION: '0.17.0'         BUILD_ARGS: '--build-arg GO_JSONNET_VERSION'       - IMAGE_NAME: vm         VMETRICS_TAG: 'v1.62.0'         ALERTMANAGER_TAG: 'v0.22.2'         BLACKBOX_TAG: 'v0.19.0'         BUILD_ARGS: '--build-arg VM_VERSION --build-arg ALERTMANAGER_TAG --build-arg BLACKBOX_TAG'  .yamllint:   stage: validate   image:     name: $YAMLLINT_IMAGE     entrypoint: [\"\"]   script:     - yamllint ${WORK_DIR}\/ -c .yamllint.yml  .jsonnetlint:   stage: validate   image: $JSONNET_IMAGE   variables:     GIT_SUBMODULE_STRATEGY: recursive     JSONNET_PATH: $CI_PROJECT_DIR\/grafonnet-lib   script:     - cd $WORK_DIR\/grafana\/grafonnet     - if [[ -f \"dashboards.jsonnet\" ]]; then jsonnetfmt --test $(find . -name '*.jsonnet'); fi     - if [[ -f \"dashboards.jsonnet\" ]]; then jsonnet-lint dashboards.jsonnet; fi  .config_validate:   stage: validate   image: $VMETRICS_IMAGE   script:     - vmalert -dryRun -rule ${WORK_DIR}\/vmalert\/*.yml     - vmagent -dryRun -promscrape.config ${WORK_DIR}\/vmagent\/scrape_config.yml -promscrape.config.strictParse     - blackbox_exporter --config.check --config.file=${WORK_DIR}\/blackbox\/blackbox.yml     - amtool check-config ${WORK_DIR}\/alertmanager\/  .build:   stage: build   image: $JSONNET_IMAGE   variables:     GIT_SUBMODULE_STRATEGY: recursive     JSONNET_PATH: $CI_PROJECT_DIR\/grafonnet-lib   script:     - cd ${WORK_DIR}\/grafana\/grafonnet     - jsonnet -m dashboards -c -V dasboardEditable=false dashboards.jsonnet   artifacts:     paths:       - ${WORK_DIR}\/grafana\/grafonnet\/dashboards  .deploy:   stage: deploy   image: $RSYNC_IMAGE   variables:     SSH_CONFIG: |       Host *         StrictHostKeyChecking no         UserKnownHostsFile=\/dev\/null         LogLevel ERROR     SSH_SERVER: $SSH_USERNAME@$MON_SERVER     GRAFANA_PORT: 3000     GRAFANA_SCHEME: http   environment:     name: $WORK_DIR   script:     - set -x     - eval $(ssh-agent -s)     - mkdir ~\/.ssh\/     - chmod 700 ~\/.ssh     - echo \"$SSH_CONFIG\" &gt; ~\/.ssh\/config     - cat $SSH_PRIVATE_KEY_FILE | tr -d '\\r' | ssh-add - &gt; \/dev\/null     - alias rsync=\"rsync -ai --delete --no-perms --no-owner --no-group --rsync-path='sudo rsync' --timeout=15\"     - RSYNC_OUT=$(rsync ${WORK_DIR}\/vmagent $SSH_SERVER:\/opt\/vm\/)     - |         if [ -n \"$RSYNC_OUT\" ]; then           ssh $SSH_SERVER \"sudo chown -R vmcluster:vmcluster \/opt\/vm\/vmagent\/* &amp;&amp; sudo systemctl reload vmagent.service\"         fi     - RSYNC_OUT=$(rsync ${WORK_DIR}\/vmalert $SSH_SERVER:\/opt\/vm\/)     - |         if [ -n \"$RSYNC_OUT\" ]; then           ssh $SSH_SERVER \"sudo chown -R vmcluster:vmcluster \/opt\/vm\/vmalert\/* &amp;&amp; sudo systemctl reload vmalert.service\"         fi     - RSYNC_OUT=$(rsync ${WORK_DIR}\/blackbox\/blackbox.yml $SSH_SERVER:\/opt\/blackbox_exporter\/)     - |         if [ -n \"$RSYNC_OUT\" ]; then           ssh $SSH_SERVER \"sudo chown -R blackbox_exporter:blackbox_exporter \/opt\/blackbox_exporter\/blackbox.yml &amp;&amp; sudo systemctl reload blackbox_exporter.service\"         fi     - rsync ${WORK_DIR}\/grafana\/provisioning $SSH_SERVER:\/etc\/grafana\/     - ssh $SSH_SERVER \"sudo chown -R root:grafana \/etc\/grafana\/provisioning\"     - rsync ${WORK_DIR}\/grafana\/grafonnet\/dashboards $SSH_SERVER:\/var\/lib\/grafana\/     - ssh $SSH_SERVER \"sudo chown -R grafana:grafana \/var\/lib\/grafana\/dashboards\"     - ssh $SSH_SERVER \"curl -X POST -sSf $GRAFANA_SCHEME:\/\/$GRAFANA_USER:$GRAFANA_PASSWORD@localhost:$GRAFANA_PORT\/api\/admin\/provisioning\/dashboards\/reload\"     - ssh $SSH_SERVER \"curl -X POST -sSf $GRAFANA_SCHEME:\/\/$GRAFANA_USER:$GRAFANA_PASSWORD@localhost:$GRAFANA_PORT\/api\/admin\/provisioning\/datasources\/reload\"<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0432 CI\/CD:<\/p>\n<ol>\n<li>\n<p>\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 (yamllint + check \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 Grafana<\/p>\n<\/li>\n<li>\n<p>\u0414\u0435\u043f\u043b\u043e\u0439 \u0432\u0441\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 (\u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043d\u044b\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440).<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 rsync \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u0448\u043d\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f).<\/p>\n<p>\u0414\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Grafana \u0432 docker-compose. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u044d\u0442\u0430\u043f\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 Prometheus \u0438 Grafana. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0440\u044f\u0434 \u0437\u0430\u0434\u0430\u0447:<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Service Discovery, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u0443\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0441\u0442\u043e\u0432 \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433. \u0422.\u0435. \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0432\u0441\u0442\u0430\u044e\u0442 \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f. \u0414\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d \u0441 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/www.terraform.io\/docs\/language\/resources\/provisioners\/syntax.html#destroy-time-provisioners\" rel=\"noopener noreferrer nofollow\">Destroy-Time Provisioners<\/a><strong> <\/strong>\u0434\u043b\u044f Terraform, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 Consul)<\/p>\n<\/li>\n<li>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0445\u043e\u0441\u0442\u044b \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u0438\u0448\u043d\u0438\u0445 \u0430\u043b\u0435\u0440\u0442\u043e\u0432. \u0414\u0435\u0436\u0443\u0440\u043d\u0430\u044f \u0441\u043c\u0435\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \ud83d\ude42<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0445\u043e\u0434 Grafana as Code, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u0448\u0438\u0445 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432. \u041f\u0440\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Prometheus, \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u0432\u043d\u043e\u0441\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Gitlab CI, \u043c\u044b \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 GitOps \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0422.\u0435. Git \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043f\u0440\u0430\u0432\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0443\u0447\u043d\u044b\u0445 \u043a\u043b\u0438\u043a\u043e\u0432 \u0432 Grafana UI \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 Linux.<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435: \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c Pull Request.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a\u0430\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u044b.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/568090\/\"> https:\/\/habr.com\/ru\/post\/568090\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e \u0432\u0441\u0435\u0445 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 Infrastructure as Code.<\/p>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/post\/548968\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u043b\u044e\u0431\u043b\u044e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f GitOps \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 Monitoring as Code.<\/p>\n<h2>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/h2>\n<p>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u044e, \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u043e\u0440\u043e\u0434\u043d\u0430: k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 docker-\u0445\u043e\u0441\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 systemd-\u0434\u0435\u043c\u043e\u043d\u0430\u0445 \u0438 \u0442.\u0434. \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c PROD, STAGE \u0438 DEV-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u0412\u0441\u0435 \u044d\u0442\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435. \u041a \u0441\u043b\u043e\u0432\u0443, \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Terraform \u0438 Ansible (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435). \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443 \u043d\u0430\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u044b \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Prometheus-\u0441\u0442\u0435\u043a. \u041e\u043d \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0421\u0431\u043e\u0440 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; <a href=\"https:\/\/prometheus.io\/\" rel=\"noopener noreferrer nofollow\">Prometheus<\/a><\/p>\n<\/li>\n<li>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u044b (Node exporter, Postgres exporter, MongoDB exporter, &#8230;).<\/p>\n<\/li>\n<li>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f &#8212; <a href=\"https:\/\/grafana.com\/\" rel=\"noopener noreferrer nofollow\">Grafana<\/a><\/p>\n<\/li>\n<li>\n<p>\u0410\u043b\u0435\u0440\u0442\u0438\u043d\u0433 &#8212; <a href=\"https:\/\/prometheus.io\/docs\/alerting\/latest\/alertmanager\/\" rel=\"noopener noreferrer nofollow\">Alertmanager<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438 Prometheus \u043d\u0430 <a href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\" rel=\"noopener noreferrer nofollow\">VictoriaMetrics<\/a> (\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e), \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0447\u0435\u043c\u0443 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u043a\u0443\u0447\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0432 1 \u0433\u043e\u0434. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u044d\u0442\u0438\u043c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c, \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e. \u041c\u044b \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044f \u0441\u0432\u043e\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0438. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Prometheus \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: vmagent + amalert + vmselect + vminsert + vmstorage.<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a \u0434\u043b\u044f VictoriaMetrics, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f Prometheus.<\/p>\n<h2>\u042d\u0442\u0430\u043f\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/h2>\n<h3>1 \u044d\u0442\u0430\u043f. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Prometheus \u043c\u044b \u0432\u043d\u043e\u0441\u0438\u043b\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412 Prometheus \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0439 Service Discovery, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#static_config\" rel=\"noopener noreferrer nofollow\">static_config<\/a>. \u0418, \u043a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0448 \u0444\u0430\u0439\u043b prometheus.yml \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u043f\u043e\u0440\u0442\u044f\u043d\u043a\u0443 \u0438\u0437 1000+ \u0441\u0442\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 targets, \u043b\u0438\u0448\u043d\u0438\u0435 jobs \u0438 \u0442.\u0434. \u041f\u043e\u0447\u0435\u043c\u0443? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u0434\u043c\u0438\u043d\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432, \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d.<\/p>\n<p>\u0427\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 linux \u0431\u044b\u043b\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043d\u0435 \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u0442\u044c \u0433\u0434\u0435-\u0442\u043e \u043f\u043e \u043f\u0443\u0442\u0438 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e. \u041f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Prometheus \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0430\u043b\u0435\u0440\u0442\u043e\u0432 prometheus, \u0430 \u0442\u0430\u043a\u0436\u0435 Alertmanager.<\/p>\n<p>\u0414\u0430\u0448\u0431\u043e\u0440\u0434\u044b Grafana \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 Grafana \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\/\u0438\u043c\u043f\u043e\u0440\u0442\u0430.<\/p>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0443\u0442 \u043c\u044b \u043c\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u0438 \u043f\u0440\u043e \u044d\u0442\u0443 \u043c\u0430\u0448\u0438\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u0430\u043b\u0438\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u0443, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0417\u0430\u043c\u043e\u0440\u0433\u0430\u043b \u0430\u043b\u0435\u0440\u0442\u0438\u043d\u0433, \u0432\u043e\u0437\u0431\u0443\u0434\u0438\u043b\u0430\u0441\u044c \u0433\u0440\u0443\u043f\u043f\u0430 \u0434\u0435\u0436\u0443\u0440\u043d\u044b\u0445 (\u0443 \u043d\u0430\u0441 \u0438 \u0442\u0430\u043a\u043e\u0435 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043c\u0430\u0448\u0438\u043d\u0435, \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u043b\u0443\u0448\u0438\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0451 \u0430\u043b\u0435\u0440\u0442\u044b. \u0414\u0435\u0436\u0443\u0440\u043d\u0430\u044f \u0441\u043c\u0435\u043d\u0430 \u043e\u043f\u044f\u0442\u044c \u0437\u0432\u043e\u043d\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043d\u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 Grafana \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438, \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u043d\u044b\u043c \u044f\u0449\u0438\u043a\u043e\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e ssh. \u0423 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c, \u0430\u043b\u0435\u0440\u0442\u0430\u043c \u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0434\u0430\u0448\u0431\u043e\u0440\u0434, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u043f\u0440\u0430\u0432\u0430 \u0442\u043e\u043b\u044c\u043a\u043e Viewer.<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0442.\u0434.<\/p>\n<\/li>\n<\/ul>\n<h3>2 \u044d\u0442\u0430\u043f. \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 Git<\/h3>\n<p>\u041e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u043c\u044b \u043d\u0430\u043c\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0441 \u0440\u0443\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 VictoriaMetrics \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443: \u0440\u0435\u0448\u0438\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0438 VictoriaMetrics \u0438 Alertmanager \u0432 Git. \u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043f\u043e \u0444\u0430\u043a\u0442\u0443 &#8212; \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 git pull).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 scrape-\u043a\u043e\u043d\u0444\u0438\u0433\u0438 VictoriaMetrics \u0432 <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#file_sd_config\" rel=\"noopener noreferrer nofollow\">file_sd_config<\/a>. \u042d\u0442\u043e \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043d\u043e \u0437\u0430\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u0432 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435. \u041d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0445\u0440\u0430\u043d\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 Git \u0438 \u043c\u043e\u0436\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u0439.<\/p>\n<h3>3 \u044d\u0442\u0430\u043f. GitOps \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430<\/h3>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c. \u041f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u044d\u0442\u0430\u043f\u0430\u043c\u0438, \u0442\u0443\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0434\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d.<\/strong><\/p>\n<h4>Service Discovery<\/h4>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Service Discovery. \u0423 \u043d\u0430\u0441 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0431\u044b\u043b Hashicorp Consul (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 KV-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430), \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a Service Discovery \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u043d\u0430\u0448\u0438\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f\u0445 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 consul-\u0430\u0433\u0435\u043d\u0442 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 prometheus-\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u044b \u043a\u0430\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 Consul. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 consul-\u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 JSON-\u0444\u0430\u0439\u043b \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0435. \u0410 \u0437\u0430\u0442\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u043b\u043e\u0430\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435, \u0447\u0442\u043e\u0431 \u0430\u0433\u0435\u043d\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/www.consul.io\/docs\/discovery\/services\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Consul<\/a>.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f Node Exporter \u0444\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<details class=\"spoiler\">\n<summary>node_exporter.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{   \"service\": {     \"name\": \"node_exporter\",     \"port\": 9100,     \"meta\": {       \"metrics_path\": \"\/metrics\",       \"metrics_scheme\": \"http\"     }   } }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0437\u0430 \u043d\u0430\u0441 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 consul-\u0430\u0433\u0435\u043d\u0442, \u043e\u0442 \u043d\u0430\u0441 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e JSON-\u0444\u0430\u0439\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430).<\/p>\n<p>\u0414\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043c\u0430\u0448\u0438\u043d\/\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u044b) \u043c\u043e\u0436\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435. \u041f\u0440\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 consul-\u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 graceful-shutdown, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0434\u0435\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Consul API.<\/p>\n<h4>VictoriaMetrics Configuration<\/h4>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 Service Discovery, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#consul_sd_config\" rel=\"noopener noreferrer nofollow\">consul_sd_config<\/a> \u0432 \u043d\u0430\u0448\u0435\u043c scrape-\u043a\u043e\u043d\u0444\u0438\u0433\u0435 VictoriaMetrics. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0448 \u0444\u0430\u0439\u043b \u0438\u0437 1000+ \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 30+ \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">global:   scrape_interval: 30s  scrape_configs:   - job_name: exporters     consul_sd_configs:       - server: localhost:8500     relabel_configs:       # drop all targets that do not have metrics_path key in metadata       - source_labels: [__meta_consul_service_metadata_metrics_path]         regex: ^\/.+$         action: keep       # set metrics path from metrics_path metadata key       - source_labels: [__meta_consul_service_metadata_metrics_path]         target_label: __metrics_path__       # set metrics scheme from metrics_scheme metadata key       - source_labels: [__meta_consul_service_metadata_metrics_scheme]         regex: ^(http|https)$         target_label: __scheme__       - source_labels: [__meta_consul_dc]         target_label: consul_dc       - source_labels: [__meta_consul_health]         target_label: consul_health       - action: labelmap         regex: __meta_consul_metadata_(.+)         replacement: $1       - source_labels: [__meta_consul_node]         target_label: host       - source_labels: [__meta_consul_node, __meta_consul_service_port]         separator: \":\"         target_label: instance       - source_labels: [__meta_consul_service]         target_label: job       - source_labels: [__meta_consul_node, __meta_consul_service_port]         separator: \":\"         target_label: __address__ <\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Prometheus \u0431\u0440\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0445\u043e\u0441\u0442\u043e\u0432 \u0438\u0437 Consul Service Discovery. \u0422.\u0435. \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0441\u044f \u0432 Consul, \u0442\u043e \u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 Prometheus.<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/configuration\/configuration\/#relabel_config\" rel=\"noopener noreferrer nofollow\">relabel_config<\/a> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 Consul \u0432 \u043b\u0435\u0439\u0431\u043b\u044b Prometheus. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u044b \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Consul \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0441\u0445\u0435\u043c\u0443 (http \u0438\u043b\u0438 https) \u0438 \u043f\u0443\u0442\u044c \u043a \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e \/metrics, \u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0438 \u0434\u0440\u0443\u0433\u043e\u0439).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0435\u0433\u043e\u0432 consul, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0445\u043e\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432 Prometheus (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u044d\u0442\u0438 \u0442\u0435\u0433\u0438 \u0438\u043b\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0421onsul \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u0440\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0441\u0442\u044b \u0438\u0437 DEV-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<details class=\"spoiler\">\n<summary>prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"yaml\">scrape_configs:   - job_name: exporters     consul_sd_configs:       - server: localhost:8500         tags:           - dev     relabel_configs:     ...<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 Consul Service Discovery \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0445\u043e\u0441\u0442\u0430 (\u043c\u0435\u0442\u043a\u0430 __meta_consul_health). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0445\u043e\u0441\u0442\u044b \u0432 Maintenance-\u0440\u0435\u0436\u0438\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u0430\u0433\u0435\u043d\u0442\u0430 Consul \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <a href=\"https:\/\/www.consul.io\/commands\/maint\" rel=\"noopener noreferrer nofollow\">maint<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434<\/summary>\n<div class=\"spoiler__content\">\n<pre><code># \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430 consul maint -enable # \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 consul maint -service=node_exporter -enable # \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 maintenance-\u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0430 consul maint -disable<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0439 \u043c\u0435\u0442\u043a\u0438 \u043c\u044b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0445\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0430\u043b\u0435\u0440\u0442\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0430\u043b\u0435\u0440\u0442\u0438\u043d\u0433\u0430.<\/p>\n<h4>Grafana Provisioning<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 Grafana, \u0442\u043e \u0412\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 JSON-\u0444\u0430\u0439\u043b. \u0422\u0430\u043a\u0436\u0435 \u0443 Grafana \u0435\u0441\u0442\u044c API, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/administration\/provisioning\/\" rel=\"noopener noreferrer nofollow\">Grafana Provisioning<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Grafana \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML. \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<ol>\n<li>\n<p>\u041c\u044b \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0438\u0445 data sources, plugins, dashboards \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0451 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433. <\/p>\n<\/li>\n<li>\n<p>Grafana \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 YAML \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440<\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-326632","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=326632"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/326632\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=326632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=326632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=326632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}