{"id":319010,"date":"2021-03-04T09:00:42","date_gmt":"2021-03-04T09:00:42","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=319010"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=319010","title":{"rendered":"Cortex \u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e: \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 Prometheus"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f75\/4da\/f81\/f754daf81ba6884476fc74b645d34ac5.PNG\" width=\"780\" height=\"365\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f Prometheus \u0441\u0442\u0430\u043b \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a. \u041e\u043d \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u041f\u041e &#8212; \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u0435\u0442\u0440\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0414\u043b\u044f DevOps\/SRE, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044f\u0437\u044b\u043a PromQL \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u0438\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u0439 \u0436\u0435 Grafana.<\/p>\n<p>\u041d\u043e Prometheus \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0434\u0435\u043f\u043b\u043e\u0439 Cortex &#8212; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<h2>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/h2>\n<ul>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438<\/p>\n<p>Prometheus \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0435, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e HA.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043e\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043a\u0435\u0439\u043b\u0438\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0434\u0435\u0440. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0443 \u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 multi-tenancy<\/p>\n<p>\u0412\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043b\u0435\u0442\u044f\u0442 \u0432 \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0442\u0451\u043b \u0438 \u0440\u0430\u0437\u0433\u0440\u0435\u0431\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f PromQL \u0438 \u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e. \u0427\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\\\u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430\u043c \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u0438.<\/p>\n<p>\u041f\u043b\u044e\u0441, \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0434\u043b\u044f Grafana \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435 &#8212; \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e \u043c\u0435\u0442\u043a\u0430\u043c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e HA-\u043f\u0430\u0440 Prometheus \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043f\u043e \u043d\u0438\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u043e\u0439 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043c\u0438\u043d\u0443\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0445\u043e\u0441\u0442 \u0438\u0437 \u043f\u0430\u0440\u044b \u0443\u043f\u0430\u0434\u0451\u0442\/\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f\/whatever &#8212; \u0443 \u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f. \u0412 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0441\u0442<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 &#8212; \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 Prometheus \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0434\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u044b. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c Kubernetes \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u043c\u0438 \u0435\u0449\u0451 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e.<\/p>\n<h2>PromQL \u043f\u0440\u043e\u043a\u0441\u0438<\/h2>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/jacksontj\/promxy\" rel=\"noopener noreferrer nofollow\">promxy<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 2 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 Prometheus \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 fan-out \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445. \u0417\u0430\u0442\u0435\u043c \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438 \u0432 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445 (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b).<\/p>\n<p>\u041c\u0438\u043d\u0443\u0441\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u041e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0437\u0430 \u043f\u0440\u043e\u043a\u0441\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043a\u0441\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043c\u0438 \u0432 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445.  <\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e Prometheus (\u043b\u0438\u0431\u043e \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c HA-\u043f\u0430\u0440\u0430\u043c) \u0438 \u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d multi-tenancy &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<h2>Thanos<\/h2>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0c7\/57b\/204\/0c757b204b4378c4ff6e5585383ccb88.PNG\" width=\"400\" height=\"226\"><figcaption><\/figcaption><\/figure>\n<p><a href=\"https:\/\/thanos.io\" rel=\"noopener noreferrer nofollow\">Thanos<\/a> &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/90c\/901\/209\/90c9012096524789cb462be7071d1871.PNG\" width=\"594\" height=\"224\"><figcaption><\/figcaption><\/figure>\n<p>\u041e\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u043c Prometheus \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Sidecar &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u043c\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u0442 \u0437\u0430 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Prometheus. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; Sidecar \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3\/GCS\/Azure). \u0414\u043b\u0438\u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432 Prometheus \u043f\u0440\u0438\u0431\u0438\u0442\u0430 \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438 \u0438 \u0440\u0430\u0432\u043d\u0430 2 \u0447\u0430\u0441\u0430\u043c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/719\/a19\/709\/719a19709f2a6da5971e190fbbce1acd.PNG\" width=\"541\" height=\"349\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043a\u0441\u0438 \u043c\u0435\u0436\u0434\u0443 GRPC Thanos StoreAPI \u0438 Prometheus \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Querier \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 PromQL: \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Prometheus \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0432 Sidecar \u0438\u043b\u0438 \u0432 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0430 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430 &#8212; \u0434\u043b\u044f \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 Sidecar \u0432 Prometheus, \u0430 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 &#8212; \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Thanos \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 <strong>promxy<\/strong> &#8212; \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f fan-out \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u043f\u0440\u0438\u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>Multi-tenancy \u0435\u0441\u0442\u044c \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/thanos.io\/tip\/operating\/multi-tenancy.md\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u0447\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438<\/a>, \u043d\u043e \u0432 \u044d\u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u043e.<\/p>\n<h2>Cortex<\/h2>\n<p>\u042d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0415\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432 <em>Grafana Labs<\/em> \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e SaaS \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 open source, \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/875\/f48\/9e1\/875f489e1ce9935cc8346c59f35245a9.png\" width=\"823\" height=\"528\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0432\u044b\u0448\u0435 &#8212; \u0432 \u043d\u0451\u043c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 &#8212; \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 &#8212; single binary mode.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a Cortex \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a SaaS \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212;  \u0432 \u043d\u0451\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f end-to-end multi-tenancy.<\/p>\n<h3>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a<\/h3>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 Cortex \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0434\u0432\u0438\u0436\u043a\u0430. \u041e\u0431\u0430 \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>S3<\/p>\n<\/li>\n<li>\n<p>GCS<\/p>\n<\/li>\n<li>\n<p>Azure<\/p>\n<\/li>\n<li>\n<p>OpenStack Swift (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0424\u0421 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#8212; NFS \u0438\u043b\u0438 GlusterFS). \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442 \u0442.\u043a. \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e S3.<\/p>\n<h4>Chunks Storage<\/h4>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0432 Cortex &#8212; \u043e\u043d \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u0430\u0436\u0434\u0443\u044e timeseries \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0447\u0430\u043d\u043a\u0435 \u0432 S3 \u0438\u043b\u0438 \u0432 NoSQL (Cassandra\/Amazon DynamoDB\/Google BigTable), \u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 (\u0438\u043d\u0434\u0435\u043a\u0441\u044b) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 NoSQL.<\/p>\n<p>Chunks Storage, \u0434\u0443\u043c\u0430\u0435\u0442\u0441\u044f, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u044b\u043f\u0438\u043b\u044f\u0442 &#8212; \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0441\u043b\u044b\u0448\u0430\u043b, Grafana Labs \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0443\u0436\u0435 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 Blocks Storage.<\/p>\n<h4>Blocks Storage<\/h4>\n<p>\u041d\u043e\u0432\u044b\u0439, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Thanos. \u041a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0430\u043c\u043e\u0433\u043e Prometheus. \u0421 \u043d\u0438\u043c \u043d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0432 NoSQL \u0438 \u043c\u043e\u0434\u0443\u043b\u0435 Table Manager (\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; Store Gateway).<\/p>\n<p>Thanos, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c, \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 vendored \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432 \u043a\u043e\u0434\u0435 Cortex. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043e\u0434\u0438\u043d, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e (\u0438 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435).<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Blocks Storage.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/971\/2c3\/17c\/9712c317c10a1a4ce73f3a16e3ae9a6d.png\" width=\"835\" height=\"690\"><figcaption><\/figcaption><\/figure>\n<p>\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ul>\n<li>\n<p><strong>Prometheus<\/strong> \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441 endpoint-\u043e\u0432 \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 Cortex \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Remote Write \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e HTTP POST \u0441 \u0442\u0435\u043b\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 Protocol Buffers \u043c\u0435\u0442\u0440\u0438\u043a \u0441\u0436\u0430\u0442\u044b\u0439 \u043f\u043e\u0442\u043e\u043c Snappy. \u0412 \u0441\u0430\u043c\u043e\u043c Prometheus, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 retention period &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 1 \u0434\u0435\u043d\u044c \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435- \u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c <strong>Distributor<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 Cortex \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442, \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 per-tenant \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0448\u0430\u0440\u0434\u0438\u0442 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438. \u0414\u0430\u043b\u0435\u0435 \u043e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0445 \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c <strong>Ingester <\/strong>(\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0448\u0430\u0440\u0434\u0438\u043d\u0433).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 HA Tracker (\u043e \u043d\u0451\u043c \u043d\u0438\u0436\u0435).<\/p>\n<\/li>\n<li>\n<p><strong>Ingester<\/strong> \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u0435\u043d \u0437\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a \u0432 \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 \u0432\u044b\u0434\u0430\u0447\u0443 \u0438\u0445 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0424\u0421 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043b\u0438\u043d\u043e\u0439 2 \u0447\u0430\u0441\u0430. \u0417\u0430\u0442\u0435\u043c, \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u043d\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 S3 \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438 zone awareness \u0434\u043b\u044f \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c availability domain (\u0441\u0442\u043e\u0439\u043a\u0438, \u0414\u0426, AWS AZ \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>Store-Gateway<\/strong> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043e\u0442\u0434\u0430\u0447\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u0437 S3.<\/p>\n<p>\u041e\u043d \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0431\u0430\u043a\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043c \u043d\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0424\u0421 (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u044f\u0442\u044c) \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>Querier<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 PromQL.<\/p>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0438, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u0434\u0432\u0430 &#8212; \u043e\u0434\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u0432 <strong>Store Gateway<\/strong> (\u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445), \u0430 \u0434\u0440\u0443\u0433\u0430\u044f &#8212; \u0432 <strong>Ingester<\/strong> \u0434\u043b\u044f \u0441\u0432\u0435\u0436\u0438\u0445.<\/p>\n<p>\u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u043c (\u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>Compactor<\/strong> \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0435\u0438\u0442\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c.<\/p>\n<p>\u0421\u0442\u0430\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443, \u0430 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f <strong>Store-Gateway<\/strong> \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0441\u0436\u0430\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c<\/h3>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 <strong>Ingester<\/strong>-\u0430\u043c\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u0438\u0445 Prometheus. \u0412 Cortex \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0414\u0432\u0430 (\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435) Prometheus \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a \u0441 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 endpoint-\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043a \u043a\u0430\u043a\u043e\u0439 HA-\u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 Prometheus \u0438 \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"json\">  external_labels:     __ha_group__: group_1     __ha_replica__: replica_2<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u0438 \u043f\u0440\u0438\u0451\u043c\u0435 \u043c\u0435\u0442\u0440\u0438\u043a Cortex \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0434\u0438\u043d Prometheus \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043d\u0435\u0433\u043e<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 HTTP 202 Accepted \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \/dev\/null \u0432\u0441\u0451 \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 (\u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0430\u0439\u043c\u0430\u0443\u0442) &#8212; Cortex \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u043e\u0442 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438\u0437 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0432 \u0436\u0438\u0432\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u041f\u0440\u0430\u0432\u0434\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f &#8212; \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0442\u0430\u043c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e (\u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043b, \u0430 \u043e\u0442 \u043d\u043e\u0432\u043e\u0433\u043e \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b\u0438), \u044f \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u043b \u0433\u043b\u0443\u0431\u043e\u043a\u043e &#8212; \u043d\u0443\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h3>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u0437 Prometheus \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a <code>X-Scope-OrgId<\/code> \u0440\u0430\u0432\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e tenant, \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b). \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e tenant-\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 &#8212; \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 \u0432 S3 \u0431\u0430\u043a\u0435\u0442\u0435 \u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; \u0432 PromQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Cortex \u043d\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 &#8212; \u043e\u043d \u0441\u043b\u0435\u043f\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443. <em>Auth Gateway<\/em> \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/cortexmetrics.io\/docs\/roadmap\/\" rel=\"noopener noreferrer nofollow\">\u0440\u043e\u0430\u0434\u043c\u0430\u043f\u0435<\/a>, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u0414\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 Prometheus \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 HTTP \u043f\u0440\u043e\u043a\u0441\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Prometheus &amp; Cortex \u044f \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 Remote Write \u043f\u0440\u043e\u043a\u0441\u0438 &#8212; <a href=\"https:\/\/github.com\/blind-oracle\/cortex-tenant\" rel=\"noopener noreferrer nofollow\">cortex-tenant<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c ID \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u0437 \u043c\u0435\u0442\u043e\u043a Prometheus. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0430\u043d\u0441 (\u0438\u043b\u0438 HA-\u0433\u0440\u0443\u043f\u043f\u0443) Prometheus \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043c\u0435\u0442\u0440\u0438\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0440\u0435\u0434.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0442\u043e\u0433\u0434\u0430 Cortex \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d <code>fake<\/code> &#8212; \u0442\u043e \u0435\u0441\u0442\u044c multi-tenancy \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0432\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0430\u0434\u0430\u0442\u044c \u0432 \u043e\u0434\u0438\u043d \u043a\u043e\u0442\u0451\u043b.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 &#8212; \u043f\u043e\u043a\u0430 \u044d\u0442\u043e API \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Cortex<\/h2>\n<blockquote>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e Cortex \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u0440\u0438\u043a, \u043b\u0438\u0431\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e HA-\u043f\u0430\u0440 Prometheus (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438\u043b\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442) \u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0438\u0445 \u043d\u0430\u0442\u044f\u043d\u0443\u0442\u044c <code>promxy<\/code><\/p>\n<\/blockquote>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0435\u043b\u044b\u0445 \u043f\u044f\u0442\u0435\u043d &#8212; \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Cortex \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 single binary &#8212; \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/p>\n<p><strong>Danger Zone! \u0414\u0430\u043b\u044c\u0448\u0435 \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432!<\/strong><\/p>\n<h3>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/h3>\n<p>\u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0440\u044f\u0434 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<ul>\n<li>\n<p><strong>etcd<\/strong> \u0434\u043b\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f Hash Ring<\/p>\n<p>Cortex \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Consul \u0438 Gossip-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0435 KV-\u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u041d\u043e \u0434\u043b\u044f HA-\u0442\u0440\u0435\u043a\u0435\u0440\u0430 Gossip \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u043f\u0440\u0438 \u0441\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0422\u0430\u043a \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u044e\u0437\u0430\u0442\u044c <strong>etcd<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>memcached<\/strong> \u0434\u043b\u044f \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f.<\/p>\n<p>Cortex \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0432\u043e\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f\u0445. \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 \u0432 Cortex &#8212; \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0448\u0430\u0440\u0434\u0438\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043e\u043d \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c DNS-based discovery \u0447\u0435\u0440\u0435\u0437 SRV-\u0437\u0430\u043f\u0438\u0441\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>minio<\/strong> \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e S3 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430.<\/p>\n<p>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u043c\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0434\u043b\u044f \u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0430. \u0422\u0430\u043a\u0436\u0435 SemVer \u044d\u0442\u043e \u0434\u043b\u044f \u0441\u043b\u0430\u0431\u0430\u043a\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443 \u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0434\u0430\u0442\u0430\u043c. \u0415\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0438\u043d\u0434\u0443\u0441\u044b &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430&#8230;<\/p>\n<p>\u041d\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u0441\u043e\u0431\u043e \u043d\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c Ceph \u0441 S3 \u0448\u043b\u044e\u0437\u043e\u043c, \u043d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e.<\/p>\n<p><strong>minio<\/strong> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Erasure Coding \u0434\u043b\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>HAProxy<\/strong> \u0434\u043b\u044f \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432\u043e\u0435\u0434\u0438\u043d\u043e<\/p>\n<\/li>\n<li>\n<p><strong>cortex-tenant<\/strong> \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u043f\u043e tenant-\u0430\u043c<\/p>\n<\/li>\n<li>\n<p><strong>Prometheus <\/strong>\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u0440\u0438\u043a<\/p>\n<\/li>\n<\/ul>\n<h3>\u041e\u0431\u0449\u0438\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0435<\/h3>\n<ul>\n<li>\n<p>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0438\u0437 4 \u0445\u043e\u0441\u0442\u043e\u0432 &#8212; \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b, \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439, \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p>3 \u0441\u0442\u0440\u0430\u0439\u043f\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <strong>minio<\/strong> c Erasure Coding &#8212; \u043e\u043d \u043d\u0430\u0440\u0435\u0437\u0430\u0435\u0442 \u043e\u0442 4 \u0434\u043e 16 \u0434\u0438\u0441\u043a\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d EC-\u043d\u0430\u0431\u043e\u0440. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 5 \u0438\u043b\u0438 \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043d\u0435\u0447\u0435\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e Split Brain.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u043e\u0432, \u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <strong>etcd<\/strong>, \u043b\u0443\u0447\u0448\u0435 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. <strong>etcd <\/strong>\u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 Raft \u0438 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u0441\u0435 \u043d\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0441\u043c\u044b\u0441\u043b\u0430 \u0432 \u0438\u0445 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0442 &#8212; \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442 \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043b\u0438\u0448\u043d\u0438\u043c\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 <code>\/data<\/code><\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0438 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\\\u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u043d\u0435\u0439\u043c\u044b<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u041e\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c RHEL7, \u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u043c\u0438 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u0423 \u043d\u0430\u0441 \u0432\u0441\u0451 \u044d\u0442\u043e \u0434\u0435\u043b\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Ansible, \u043d\u043e \u043f\u043b\u0435\u0439\u0431\u0443\u043a \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430 \u043d\u0430\u0448\u0443 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043f\u043e\u0442\u043e\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 RPM \u043f\u0430\u043a\u0435\u0442\u044b \u044f \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u0432\u0440\u0443\u0447\u043d\u0443\u044e (etcd, HAProxy \u0438 \u0442.\u043f.) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FPM \u0442.\u043a. \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u0434\u0440\u0435\u0432\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\/etc\/hosts<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>10.0.0.1 ctx1 10.0.0.2 ctx2 10.0.0.3 ctx3 10.0.0.4 ctx4<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>etcd<\/h4>\n<p>\u041a\u0430\u043a \u0438 Zookeeper, \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <strong>etcd<\/strong> &#8212; \u0431\u043e\u043c\u0431\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041e\u043d \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u044b \u0438 \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438. \u0417\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e &#8212; \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0435\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e:<\/p>\n<details class=\"spoiler\">\n<summary>\/etc\/etcd\/etcd.conf<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>ETCD_NAME=\"ctx1\"  ETCD_LOGGER=\"zap\" ETCD_LOG_LEVEL=\"warn\" ETCD_DATA_DIR=\"\/data\/etcd\/ctx1.etcd\"  ETCD_LISTEN_CLIENT_URLS=\"http:\/\/10.0.0.1:2379,http:\/\/127.0.0.1:2379\" ETCD_LISTEN_PEER_URLS=\"http:\/\/10.0.0.1:2380\"  ETCD_ADVERTISE_CLIENT_URLS=\"http:\/\/10.0.0.1:2379\"  ETCD_INITIAL_CLUSTER_TOKEN=\"cortex\" ETCD_INITIAL_ADVERTISE_PEER_URLS=\"http:\/\/10.0.0.1:2380\"  ETCD_AUTO_COMPACTION_RETENTION=\"30m\" ETCD_AUTO_COMPACTION_MODE=\"periodic\"  ETCD_SNAPSHOT_COUNT=\"10000\" ETCD_MAX_SNAPSHOTS=\"5\"  ETCD_INITIAL_CLUSTER=\"ctx1=http:\/\/ctx1:2380,ctx2=http:\/\/ctx2:2380,ctx3=http:\/\/ctx3:2380,ctx4=http:\/\/ctx4:2380\"<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>memcached<\/h4>\n<p>\u0422\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u0440\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u043c\u0435\u0442\u043e\u043a &#8212; \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0435\u0448\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\/etc\/sysconfig\/memcached<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>PORT=\"11211\" USER=\"memcached\" MAXCONN=\"512\" CACHESIZE=\"2048\" OPTIONS=\"--lock-memory --threads=8 --max-item-size=64m\"<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>Minio<\/h4>\n<p>\u0422\u0443\u0442 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.<\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0445\u043e\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (+ \u043f\u0443\u0442\u044c \u0434\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0433\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c &#8212; <code>\/data\/minio<\/code>) \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043b\u044e\u0447\u0438 S3. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u0412\u041c \u0441 \u043e\u0434\u043d\u0438\u043c \u0434\u0438\u0441\u043a\u043e\u043c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e &#8212; \u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442 URL \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0441\u043a\u043e\u0432 \u043f\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434 \u043a\u043e\u0434\u044b \u0420\u0438\u0434\u0430-\u0421\u043e\u043b\u043e\u043c\u043e\u043d\u0430: \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0441\u044b\u0440\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 redundancy. \u0422\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u043e 4 \u0445\u043e\u0441\u0442\u0430 &#8212; \u044d\u0442\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0432\u0430\u0436\u043d\u043e. \u041d\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/minio\/minio\/tree\/master\/docs\/erasure\/storage-class\" rel=\"noopener noreferrer nofollow\">Storage Classes<\/a> \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0438 Parity-\u0434\u0438\u0441\u043a\u043e\u0432.<\/p>\n<details class=\"spoiler\">\n<summary>\/etc\/minio\/minio.env<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>MINIO_ACCESS_KEY=\"foo\" MINIO_SECRET_KEY=\"bar\" MINIO_PROMETHEUS_AUTH_TYPE=\"public\"  LISTEN=\"0.0.0.0:9000\"  ARGS=\"http:\/\/ctx{1...4}\/data\/minio\"<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u043a\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/docs.min.io\/docs\/minio-client-complete-guide.html#mb\" rel=\"noopener noreferrer nofollow\">minio-client<\/a> &#8212; \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0441\u0442\u044c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>cortex<\/code><\/p>\n<h4>HAProxy<\/h4>\n<p>\u041e\u043d \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0436\u0438\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0438 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438. \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 <strong>HAProxy<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a\u0443\u0434\u0430 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 Full Mesh \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043e\u0442\u043a\u0430\u0437 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u043b\u044e\u0431\u043e\u0433\u043e \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0438\u043b\u0438 \u0445\u043e\u0441\u0442\u043e\u0432 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445 (\u0441\u043e\u0442\u043d\u0438-\u0442\u044b\u0441\u044f\u0447\u0438 \u0445\u043e\u0441\u0442\u043e\u0432) \u0442\u0430\u043a\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438, \u0442\u043e \u0438 \u0441\u0430\u043c\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0435\u0442\u0435 \ud83d\ude42<\/p>\n<details class=\"spoiler\">\n<summary>\/etc\/haproxy\/haproxy.cfg<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">global     daemon     maxconn 10000     log 127.0.0.1 local2     chroot \/var\/empty  defaults     mode http     http-reuse safe     hash-type map-based sdbm avalanche     balance roundrobin     retries 3     retry-on all-retryable-errors      timeout connect 2s     timeout client 300s     timeout server 300s     timeout http-request 300s      option splice-auto     option dontlog-normal     option dontlognull     option forwardfor     option http-ignore-probes     option http-keep-alive     option redispatch 1     option srvtcpka     option tcp-smart-accept     option tcp-smart-connect     option allbackups  listen stats     bind 0.0.0.0:6666      http-request use-service prometheus-exporter if { path \/metrics }     stats enable     stats refresh 30s     stats show-node     stats uri \/  frontend fe_cortex     bind 0.0.0.0:8090 tfo     default_backend be_cortex  frontend fe_cortex_tenant     bind 0.0.0.0:8009 tfo     default_backend be_cortex_tenant  frontend fe_minio     bind 0.0.0.0:9001 tfo     default_backend be_minio  backend be_cortex     option httpchk GET \/ready     http-check expect rstring ^ready      server ctx1 10.0.0.1:9009 check observe layer7 inter 5s     server ctx2 10.0.0.2:9009 check observe layer7 inter 5s     server ctx3 10.0.0.3:9009 check observe layer7 inter 5s     server ctx4 10.0.0.4:9009 check observe layer7 inter 5s  backend be_cortex_tenant     option httpchk GET \/alive     http-check expect status 200      server ctx1 10.0.0.1:8008 check observe layer7 inter 5s     server ctx2 10.0.0.2:8008 check observe layer7 inter 5s backup     server ctx3 10.0.0.3:8008 check observe layer7 inter 5s backup     server ctx4 10.0.0.4:8008 check observe layer7 inter 5s backup  backend be_minio     balance leastconn     option httpchk GET \/minio\/health\/live     http-check expect status 200      server ctx1 10.0.0.1:9000 check observe layer7 inter 5s     server ctx2 10.0.0.2:9000 check observe layer7 inter 5s backup     server ctx3 10.0.0.3:9000 check observe layer7 inter 5s backup     server ctx4 10.0.0.4:9000 check observe layer7 inter 5s backup<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>cortex-tenant<\/h4>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043a\u0441\u0438 \u043c\u0435\u0436\u0434\u0443 <strong>Prometheus <\/strong>\u0438 <strong>Cortex<\/strong>. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 &#8212; \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u043c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u043c tenant ID. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <code>ctx_tenant<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\/etc\/cortex-tenant.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>listen: 0.0.0.0:8008  target: http:\/\/127.0.0.1:8090\/api\/v1\/push log_level: warn timeout: 10s timeout_shutdown: 10s  tenant:   label: ctx_tenant   label_remove: true   header: X-Scope-OrgID<\/code><\/pre>\n<\/div>\n<\/details>\n<h4>Prometheus<\/h4>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 4 \u0445\u043e\u0441\u0442\u043e\u0432 Prometheus-\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0434\u0432\u0435 HA-\u043f\u0430\u0440\u044b, \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u043e \u0441\u0432\u043e\u0438\u043c ID \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c job-\u044b \u043f\u043e \u043d\u0438\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>host1 \/etc\/prometheus\/prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global:   scrape_interval: 60s   scrape_timeout: 5s    external_labels:     __ha_group__: group_1     __ha_replica__: replica_1  remote_write:   - name: cortex_tenant     url: http:\/\/127.0.0.1:8080\/push  scrape_configs:   - job_name: job1     scrape_interval: 60s     static_configs:       - targets:           - ctx1:9090         labels:           ctx_tenant: foobar    - job_name: job2     scrape_interval: 60s     static_configs:       - targets:           - ctx2:9090         labels:           ctx_tenant: deadbeef<\/code><\/pre>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>host2 \/etc\/prometheus\/prometheus.yml<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>global:   scrape_interval: 60s   scrape_timeout: 5s    external_labels:     __ha_group__: group_1     __ha_replica__: replica_2  remote_write:   - name: cortex_tenant     url: http:\/\/127.0.0.1:8080\/push  scrape_configs:   - job_name: job1     scrape_interval: 60s     static_configs:       - targets:           - ctx1:9090         labels:           ctx_tenant: foobar    - job_name: job2     scrape_interval: 60s     static_configs:       - targets:           - ctx2:9090         labels:           ctx_tenant: deadbeef<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 HA-\u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0439\u0431\u043b\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0438.<\/p>\n<h3>Cortex<\/h3>\n<p>\u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 &#8212; \u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u044a\u0435\u043c\u043d\u044b\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u0447\u0430\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0435\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <strong>Distributor<\/strong>, <strong>Ingester<\/strong>, <strong>Compactor<\/strong>,<strong> Ruler <\/strong>\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Hash-Ring \u0432 <strong>etcd<\/strong>. \u041d\u0430 \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0441\u0435\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u043a\u043e\u043b\u044c\u0446\u0430 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e.<\/p>\n<p>\u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e &#8212; \u043f\u0440\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0435, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u043e\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0435\u0451 \u043c\u0435\u0442\u043a\u0438 \u0445\u0435\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0445\u043e\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 &#8212; \u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u043e \u043a\u043e\u043b\u044c\u0446\u0443 \u0445\u043e\u0441\u0442\u0443.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (\u043f\u043e\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0438 \u0442.\u043f.), \u0442\u043e \u0435\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>\u0412\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 <code>\/etc\/cortex\/cortex.yml<\/code><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0442.\u043a. Cortex \u0441\u0434\u0435\u043b\u0430\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 &#8212; \u0432\u0441\u0451 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0440\u043e\u043f\u0438\u0445\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440.<\/p>\n<h4>\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/h4>\n<pre><code class=\"bash\"># \u0421\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 target: all,compactor,ruler,alertmanager # \u0422\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a X-Scope-OrgId auth_enabled: true  # \u041f\u043e\u0440\u0442\u044b server:   http_listen_port: 9009   grpc_listen_port: 9095  limits:   # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c HA-\u0442\u0440\u0435\u043a\u0438\u043d\u0433   accept_ha_samples: true   # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432 Prometheus \u0434\u043b\u044f   # \u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0433\u0440\u0443\u043f\u043f \u0438 \u0440\u0435\u043f\u043b\u0438\u043a   ha_cluster_label: __ha_group__   ha_replica_label: __ha_replica__    # \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c   # PromQL \u0437\u0430\u043f\u0440\u043e\u0441\u044b (1 \u0433\u043e\u0434).   # \u0412\u0441\u0451 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430.   # \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 retention period.   # \u0414\u043b\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c lifecycle   # \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 \u0431\u0430\u043a\u0435\u0442\u0435 S3 \u043d\u0430 \u043f\u0430\u0440\u0443 \u0434\u043d\u0435\u0439 \u0433\u043b\u0443\u0431\u0436\u0435   max_query_lookback: 8760h<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a Cortex \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435, \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0432\u0441\u0435\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439, \u043d\u043e \u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b.<\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u043e \u0442\u043e, \u0447\u0442\u043e Cortex \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0433\u0438\u0431\u043a\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0411\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u0431\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c <code>all<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 all:<\/p>\n<pre><code class=\"bash\"># cortex -modules alertmanager all compactor configs distributor * flusher ingester * purger * querier * query-frontend * query-scheduler ruler * store-gateway * table-manager *  Modules marked with * are included in target All.<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0443\u043b\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442 \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u044e\u0431\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>all<\/code> + <code>compactor<\/code>, <code>ruler<\/code> \u0438 <code>alertmanager<\/code><\/p>\n<h4>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/h4>\n<pre><code class=\"bash\">storage:   # \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 Blocks Storage   engine: blocks  # \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e blocks_storage:   # \u0422\u0438\u043f \u0431\u044d\u043a\u0435\u043d\u0434\u0430   backend: s3      # \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a S3   s3:     endpoint: 127.0.0.1:9001     bucket_name: cortex     access_key_id: foo     secret_access_key: bar     # TLS \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442     insecure: true      tsdb:     # \u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0434\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432 S3     dir: \/data\/cortex\/tsdb     # \u0427\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0445 \u0443\u0434\u0430\u043b\u044f\u0442\u044c     retention_period: 12h     # \u0421\u0436\u0438\u043c\u0430\u0442\u044c Write-Ahead Log     wal_compression_enabled: true    bucket_store:     # \u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0431\u043b\u043e\u043a\u043e\u0432, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 S3     # \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 Store-Gateway,     # \u043d\u043e \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u0443\u0442     sync_dir: \/data\/cortex\/tsdb-sync     # \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c S3 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u043e\u0432\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432     sync_interval: 1m \t\t     # \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u0435\u0448\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438 memcached     # \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0435\u0448 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043a\u043b\u044e\u0447\u0435\u0439, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442     index_cache:       backend: memcached       memcached:         addresses: ctx1:11211,ctx2:11211,ctx3:11211,ctx4:11211      chunks_cache:       backend: memcached       memcached:         addresses: ctx1:11211,ctx2:11211,ctx3:11211,ctx4:11211      metadata_cache:       backend: memcached       memcached:         addresses: ctx1:11211,ctx2:11211,ctx3:11211,ctx4:11211<\/code><\/pre>\n<h4>Distributor<\/h4>\n<pre><code class=\"bash\">distributor:   ha_tracker:     # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c HA-\u0442\u0440\u0435\u043a\u0435\u0440 \u0434\u043b\u044f Prometheus     enable_ha_tracker: true     # \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 failover \u043d\u0430 \u0434\u0440\u0443\u0433\u0443\u044e \u0440\u0435\u043f\u043b\u0438\u043a\u0443 Prometheus.     # \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0435 \u0440\u0435\u0436\u0435 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430,     # \u0438\u043d\u0430\u0447\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f.     ha_tracker_failover_timeout: 30s      # \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c etcd \u0434\u043b\u044f HA-\u0442\u0440\u0435\u043a\u0435\u0440\u0430     kvstore:       store: etcd       etcd:         endpoints:          - http:\/\/ctx1:2379          - http:\/\/ctx2:2379          - http:\/\/ctx3:2379          - http:\/\/ctx4:2379    # \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c etcd \u0434\u043b\u044f Hash-Ring \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u043e\u0432   ring:     kvstore:       store: etcd       etcd:         endpoints:          - http:\/\/ctx1:2379          - http:\/\/ctx2:2379          - http:\/\/ctx3:2379          - http:\/\/ctx4:2379<\/code><\/pre>\n<h4>Ingester<\/h4>\n<pre><code class=\"bash\">ingester:   lifecycler:     address: 10.0.0.1     # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0437\u043e\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438     availability_zone: dc1     # \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0434\u0451\u043c \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0443\u0441\u0442\u0430\u043a\u0430\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c     # \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0430 \u0441\u0435\u0431\u044f     join_after: 10s     # \u0425\u0440\u0430\u043d\u0438\u043c \u0442\u043e\u043a\u0435\u043d\u044b \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435     tokens_file_path: \/data\/cortex\/ingester_tokens      ring:       # \u041d\u0430 \u0441\u043a\u043e\u043b\u044c\u043a\u043e Ingester-\u043e\u0432 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438.       # \u0415\u0441\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0437\u043e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0442\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u043e\u043d       replication_factor: 2 \t\t\t       # etcd \u0434\u043b\u044f Hash-Ring Ingester-\u043e\u0432       kvstore:         store: etcd         etcd:           endpoints:            - http:\/\/ctx1:2379            - http:\/\/ctx2:2379            - http:\/\/ctx3:2379            - http:\/\/ctx4:2379<\/code><\/pre>\n<h4>Querier<\/h4>\n<p>\u041f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u043b\u0438\u0447\u0438\u043d \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/cortexmetrics.io\/docs\/blocks-storage\/production-tips\/#how-to-estimate--querierquery-store-after\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/a>.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0442\u0435 \u0431\u043b\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b <strong>Compactor<\/strong>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26f\/1b3\/c36\/26f1b3c361f3ccf9d54b7cb869159cfa.png\" width=\"597\" height=\"470\"><figcaption><\/figcaption><\/figure>\n<pre><code class=\"bash\">querier:   # \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b   active_query_tracker_dir: \/data\/cortex\/query-tracker   # \u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 S3   query_store_after: 6h   # \u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435 \u044d\u0442\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 Ingester-\u044b   query_ingesters_within: 6h5m  frontend_worker:   frontend_address: 127.0.0.1:9095  query_range:   # \u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u0443\u0441\u043a\u0438 \u0442\u0430\u043a\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e   split_queries_by_interval: 24h   # \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e \u0435\u0433\u043e \u0448\u0430\u0433\u0443   align_queries_with_step: true   # \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432   cache_results: true      # \u041a\u0435\u0448\u0438\u0440\u0443\u0435\u043c \u0432 memcached   results_cache:     # \u0421\u0436\u0438\u043c\u0430\u0435\u043c     compression: snappy     cache:       # TTL \u043a\u0435\u0448\u0430       default_validity: 60s       memcached:         expiration: 60s       memcached_client:         addresses: ctx1:11211,ctx2:11211,ctx3:11211,ctx4:11211<\/code><\/pre>\n<h4>Store-Gateway<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u0437 S3 \u0431\u0430\u043a\u0435\u0442\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u043e\u043a, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0438 \u0442.\u043f.).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0448\u0430\u0440\u0434\u0438\u043d\u0433 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e, \u0442\u043e \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043b\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 2 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0445\u043e\u0441\u0442\u0430\u0445.<\/p>\n<pre><code class=\"bash\">store_gateway:   # \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0448\u0430\u0440\u0434\u0438\u043d\u0433   sharding_enabled: true   sharding_ring:     # \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c zone awareness     zone_awareness_enabled: true     # \u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0437\u043e\u043d\u044b     instance_availability_zone: dc1     # \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043f\u043b\u0438\u043a \u0434\u0435\u0440\u0436\u0430\u0442\u044c     replication_factor: 2 \t\t     # Hash-ring \u0434\u043b\u044f Store-Gateway     kvstore:       store: etcd       etcd:         endpoints:          - http:\/\/ctx1:2379          - http:\/\/ctx2:2379          - http:\/\/ctx3:2379          - http:\/\/ctx4:2379<\/code><\/pre>\n<h4>Compactor<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0438 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0440\u0434\u0438\u043d\u0433, \u0442\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043e\u0440\u044b \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 tenant-\u043e\u0432 \u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<pre><code class=\"bash\">compactor:   # \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u043e\u0432.   # \u0414\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438,   # \u0441\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u0438\u0442\u044c \u0438\u0445 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.   data_dir: \/data\/cortex\/compactor   # \u041a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0430\u043a\u0446\u0438\u044e   compaction_interval: 30m \t   # Hash-Ring \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043e\u0440\u043e\u0432   sharding_enabled: true   sharding_ring:     kvstore:       store: etcd       etcd:         endpoints:          - http:\/\/ctx1:2379          - http:\/\/ctx2:2379          - http:\/\/ctx3:2379          - http:\/\/ctx4:2379<\/code><\/pre>\n<h4>Ruler +  AlertManager<\/h4>\n<p>\u042d\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b \u0438 \u043d\u0443\u0436\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u0435\u0440\u0442\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0430\u0432\u0438\u043b.<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c Prometheus \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 <code>\/data\/cortex\/rules\/&lt;tenant&gt;\/rulesN.yml<\/code> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0445\u043e\u0441\u0442\u0435. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e S3 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 &#8212; \u0441\u043c. \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>Cortex \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0438 AlertManager \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 <code>\/data\/cortex\/alert-rules\/&lt;tenant&gt;.yml<\/code><\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 S3 \u0438 \u0442.\u043f.<\/p>\n<\/li>\n<li>\n<p>Cortex \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 AlertManager (\u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430) \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e tenant, \u0435\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">ruler:   # \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b   rule_path: \/data\/cortex\/rules-tmp   # \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0448\u0430\u0440\u0434\u0438\u043d\u0433   enable_sharding: true   # \u041a\u0430\u043a\u043e\u043c\u0443 AlertManager-\u0443 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u043e\u0431 \u0430\u043b\u0435\u0440\u0442\u0430\u0445   alertmanager_url: http:\/\/ctx1:9009\/alertmanager    # \u041e\u0442\u043a\u0443\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u0430   storage:     type: local     local:       directory: \/data\/cortex\/rules      # Hash-ring \u0434\u043b\u044f Ruler-\u043e\u0432   ring:     kvstore:       store: etcd       etcd:         endpoints:          - http:\/\/ctx1:2379          - http:\/\/ctx2:2379          - http:\/\/ctx3:2379          - http:\/\/ctx4:2379  alertmanager:   # \u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043b\u0435\u0440\u0442\u043e\u0432   data_dir: \/data\/cortex\/alert-data   # \u0412\u043d\u0435\u0448\u043d\u0438\u0439 URL \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 (\u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u0442.\u043f.)   external_url: http:\/\/ctx1:9009\/alertmanager   # \u041a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u043d\u0433 - \u043a\u0430\u043a\u043e\u0439 \u0430\u0434\u0440\u0435\u0441 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0438 \u043a\u0430\u043a\u043e\u0439 \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0438\u0440\u0430\u043c   cluster_bind_address: 0.0.0.0:9094   cluster_advertise_address: 10.0.0.1:9094    # \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0438\u0440\u043e\u0432   peers:     - ctx2:9094     - ctx3:9094     - ctx4:9094    # \u041e\u0442\u043a\u0443\u0434\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438   storage:     type: local     local:       path: \/data\/cortex\/alert-rules<\/code><\/pre>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b &#8212; \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u043e\u0442\u043e\u043c Cortex, \u0437\u0430\u0442\u0435\u043c &#8212; Prometheus.<\/p>\n<p>\u042f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u044e \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0442\u0443, \u043d\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e Cortex \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 master-\u0432\u0435\u0442\u043a\u0435 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0435\u0451) \u0443\u0436\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e deprecated. \u0422\u0430\u043a \u0447\u0442\u043e, \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\\\u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f &#8212; \u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u044e.<\/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\/541458\/\"> https:\/\/habr.com\/ru\/post\/541458\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f Prometheus \u0441\u0442\u0430\u043b \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a. \u041e\u043d \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u041f\u041e &#8212; \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u0435\u0442\u0440\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0414\u043b\u044f DevOps\/SRE, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044f\u0437\u044b\u043a PromQL \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u0437 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u0438\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0442\u043e\u0439 \u0436\u0435 Grafana.<\/p>\n<p>\u041d\u043e Prometheus \u0438\u043c\u0435\u0435\u0442 \u0440\u044f\u0434 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0434\u0435\u043f\u043b\u043e\u0439 Cortex &#8212; \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<h2>\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438<\/h2>\n<ul>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438<\/p>\n<p>Prometheus \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0435, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e HA.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043e\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u043a\u0435\u0439\u043b\u0438\u0442\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u0441 \u0440\u043e\u0441\u0442\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0434\u0435\u0440. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0443 \u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u0440\u0438\u043a.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 multi-tenancy<\/p>\n<p>\u0412\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043b\u0435\u0442\u044f\u0442 \u0432 \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0442\u0451\u043b \u0438 \u0440\u0430\u0437\u0433\u0440\u0435\u0431\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f PromQL \u0438 \u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u043e. \u0427\u0430\u0441\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\\\u0438\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430\u043c \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u0438.<\/p>\n<p>\u041f\u043b\u044e\u0441, \u043c\u043d\u043e\u0433\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u044b \u0434\u043b\u044f Grafana \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u044f\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435 &#8212; \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e \u043c\u0435\u0442\u043a\u0430\u043c \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e HA-\u043f\u0430\u0440 Prometheus \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0432 \u043f\u043e \u043d\u0438\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u043e\u0439 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043c\u0438\u043d\u0443\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0445\u043e\u0441\u0442 \u0438\u0437 \u043f\u0430\u0440\u044b \u0443\u043f\u0430\u0434\u0451\u0442\/\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f\/whatever &#8212; \u0443 \u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f. \u0412 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0441\u0442<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u0437\u043e\u043e\u043f\u0430\u0440\u043a\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 &#8212; \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 Prometheus \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0434\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u044b. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c Kubernetes \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0432\u0430\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a\u0438\u043c\u0438 \u0435\u0449\u0451 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u043e.<\/p>\n<h2>PromQL \u043f\u0440\u043e\u043a\u0441\u0438<\/h2>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/github.com\/jacksontj\/promxy\" rel=\"noopener noreferrer nofollow\">promxy<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 2 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430\u043c\u0438 Prometheus \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 fan-out \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445. \u0417\u0430\u0442\u0435\u043c \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0438 \u0432 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445 (\u0435\u0441\u043b\u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b).<\/p>\n<p>\u041c\u0438\u043d\u0443\u0441\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u041e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b \u0437\u0430 \u043f\u0440\u043e\u043a\u0441\u0438<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u043a\u0441\u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043c\u0438 \u0432 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u0445.  <\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e Prometheus (\u043b\u0438\u0431\u043e \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c HA-\u043f\u0430\u0440\u0430\u043c) \u0438 \u043a\u043e\u043c\u0443 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d multi-tenancy &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442.<\/p>\n<h2>Thanos<\/h2>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p><a href=\"https:\/\/thanos.io\" rel=\"noopener noreferrer nofollow\">Thanos<\/a> &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041e\u043d \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u043c Prometheus \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 Sidecar &#8212; \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u043c\u043e\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u0442 \u0437\u0430 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 Prometheus. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u043b\u043e\u043a \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#8212; Sidecar \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3\/GCS\/Azure). \u0414\u043b\u0438\u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432 Prometheus \u043f\u0440\u0438\u0431\u0438\u0442\u0430 \u0433\u0432\u043e\u0437\u0434\u044f\u043c\u0438 \u0438 \u0440\u0430\u0432\u043d\u0430 2 \u0447\u0430\u0441\u0430\u043c.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u043a\u0441\u0438 \u043c\u0435\u0436\u0434\u0443 GRPC Thanos StoreAPI \u0438 Prometheus \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 Querier \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 PromQL: \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Prometheus \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0432 Sidecar \u0438\u043b\u0438 \u0432 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0434\u0432\u0430 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430 &#8212; \u0434\u043b\u044f \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 Sidecar \u0432 Prometheus, \u0430 \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 &#8212; \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0432\u0435\u0436\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Thanos \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0432 <strong>promxy<\/strong> &#8212; \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f fan-out \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u043f\u0440\u0438\u0447\u0430\u0441\u0442\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0417\u0430\u0434\u0430\u0447\u0430 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<p>Multi-tenancy \u0435\u0441\u0442\u044c \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/thanos.io\/tip\/operating\/multi-tenancy.md\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u0447\u0430\u0442\u043e\u0447\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438<\/a>, \u043d\u043e \u0432 \u044d\u0442\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443, \u043d\u0435 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u043e.<\/p>\n<h2>Cortex<\/h2>\n<p>\u042d\u0442\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0415\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432 <em>Grafana Labs<\/em> \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e SaaS \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u0440\u0438\u043a \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 open source, \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435 \u0432\u044b\u0448\u0435 &#8212; \u0432 \u043d\u0451\u043c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u0431\u043e\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 &#8212; \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 &#8212; single binary mode.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a Cortex \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a SaaS \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212;  \u0432 \u043d\u0451\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f end-to-end multi-tenancy.<\/p>\n<h3>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a<\/h3>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 Cortex \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0434\u0432\u0438\u0436\u043a\u0430. \u041e\u0431\u0430 \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>S3<\/p>\n<\/li>\n<li>\n<p>GCS<\/p>\n<\/li>\n<li>\n<p>Azure<\/p>\n<\/li>\n<li>\n<p>OpenStack Swift (\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e)<\/p>\n<\/li>\n<li>\n<p>\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0424\u0421 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &#8212; NFS \u0438\u043b\u0438 GlusterFS). \u0425\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421 \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442 \u0442.\u043a. \u043e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u0440\u043e\u0441\u0442\u043e S3.<\/p>\n<h4>Chunks Storage<\/h4>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0432 Cortex &#8212; \u043e\u043d \u0445\u0440\u0430\u043d\u0438\u0442 \u043a\u0430\u0436\u0434\u0443\u044e timeseries \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0447\u0430\u043d\u043a\u0435 \u0432 S3 \u0438\u043b\u0438 \u0432 NoSQL (Cassandra\/Amazon DynamoDB\/Google BigTable), \u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 (\u0438\u043d\u0434\u0435\u043a\u0441\u044b) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 NoSQL.<\/p>\n<p>Chunks Storage, \u0434\u0443\u043c\u0430\u0435\u0442\u0441\u044f, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u044b\u043f\u0438\u043b\u044f\u0442 &#8212; \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u0441\u043b\u044b\u0448\u0430\u043b, Grafana Labs \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0443\u0436\u0435 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 Blocks Storage.<\/p>\n<h4>Blocks Storage<\/h4>\n<p>\u041d\u043e\u0432\u044b\u0439, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 Thanos. \u041a\u043e\u0442\u043e\u0440\u044b\u0439, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441\u0430\u043c\u043e\u0433\u043e Prometheus. \u0421 \u043d\u0438\u043c \u043d\u0435\u0442 \u043d\u0443\u0436\u0434\u044b \u0432 NoSQL \u0438 \u043c\u043e\u0434\u0443\u043b\u0435 Table Manager (\u043d\u043e \u043d\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; Store Gateway).<\/p>\n<p>Thanos, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c, \u0441\u043b\u0443\u0447\u0430\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 vendored \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u0432 \u043a\u043e\u0434\u0435 Cortex. \u0415\u0441\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043e\u0434\u0438\u043d, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e (\u0438 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435).<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Blocks Storage.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ul>\n<li>\n<p><strong>Prometheus<\/strong> \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0441 endpoint-\u043e\u0432 \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0445 \u0432 Cortex \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Remote Write \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e HTTP POST \u0441 \u0442\u0435\u043b\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 Protocol Buffers \u043c\u0435\u0442\u0440\u0438\u043a \u0441\u0436\u0430\u0442\u044b\u0439 \u043f\u043e\u0442\u043e\u043c Snappy. \u0412 \u0441\u0430\u043c\u043e\u043c Prometheus, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 retention period &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 1 \u0434\u0435\u043d\u044c \u0438\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435- \u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c <strong>Distributor<\/strong> \u0432\u043d\u0443\u0442\u0440\u0438 Cortex \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442, \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 per-tenant \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0448\u0430\u0440\u0434\u0438\u0442 \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438. \u0414\u0430\u043b\u0435\u0435 \u043e\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0445 \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c <strong>Ingester <\/strong>(\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0448\u0430\u0440\u0434\u0438\u043d\u0433).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 HA Tracker (\u043e \u043d\u0451\u043c \u043d\u0438\u0436\u0435).<\/p>\n<\/li>\n<li>\n<p><strong>Ingester<\/strong> \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u0435\u043d \u0437\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a \u0432 \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438 \u0432\u044b\u0434\u0430\u0447\u0443 \u0438\u0445 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0424\u0421 \u0432 \u0432\u0438\u0434\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u043b\u0438\u043d\u043e\u0439 2 \u0447\u0430\u0441\u0430. \u0417\u0430\u0442\u0435\u043c, \u043f\u043e \u0438\u0441\u0442\u0435\u0447\u0435\u043d\u0438\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u043d\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 S3 \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0438 zone awareness \u0434\u043b\u044f \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c availability domain (\u0441\u0442\u043e\u0439\u043a\u0438, \u0414\u0426, AWS AZ \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>Store-Gateway<\/strong> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043e\u0442\u0434\u0430\u0447\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u0437 S3.<\/p>\n<p>\u041e\u043d \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u0431\u0430\u043a\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043c \u043d\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0424\u0421 (\u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u044f\u0442\u044c) \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>Querier<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 PromQL.<\/p>\n<p>\u041f\u0440\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u0438, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u0434\u0432\u0430 &#8212; \u043e\u0434\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u0432 <strong>Store Gateway<\/strong> (\u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445), \u0430 \u0434\u0440\u0443\u0433\u0430\u044f &#8212; \u0432 <strong>Ingester<\/strong> \u0434\u043b\u044f \u0441\u0432\u0435\u0436\u0438\u0445.<\/p>\n<p>\u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u043c (\u043e\u0431 \u044d\u0442\u043e\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>Compactor<\/strong> \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0435\u0442\u0441\u044f \u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0431\u043b\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0435\u0438\u0442\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c.<\/p>\n<p>\u0421\u0442\u0430\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443, \u0430 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u044f <strong>Store-Gateway<\/strong> \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0441\u0436\u0430\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c<\/h3>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 <strong>Ingester<\/strong>-\u0430\u043c\u0438 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u0441\u0430\u043c\u0438\u0445 Prometheus. \u0412 Cortex \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0414\u0432\u0430 (\u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435) Prometheus \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0431\u043e\u0440 \u043c\u0435\u0442\u0440\u0438\u043a \u0441 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 endpoint-\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043a \u043a\u0430\u043a\u043e\u0439 HA-\u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 Prometheus \u0438 \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0433\u0440\u0443\u043f\u043f\u044b. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"json\">  external_labels:     __ha_group__: group_1     __ha_replica__: replica_2<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u0438 \u043f\u0440\u0438\u0451\u043c\u0435 \u043c\u0435\u0442\u0440\u0438\u043a Cortex \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0434\u0438\u043d Prometheus \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u043d\u0435\u0433\u043e<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 HTTP 202 Accepted \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \/dev\/null \u0432\u0441\u0451 \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0441\u043b\u0430\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 (\u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0442\u0430\u0439\u043c\u0430\u0443\u0442) &#8212; Cortex \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u043e\u0442 \u043a\u043e\u0433\u043e-\u0442\u043e \u0438\u0437 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0432 \u0436\u0438\u0432\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u041f\u0440\u0430\u0432\u0434\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f &#8212; \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0442\u0430\u043c \u0447\u0442\u043e-\u043b\u0438\u0431\u043e (\u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u043d\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043b, \u0430 \u043e\u0442 \u043d\u043e\u0432\u043e\u0433\u043e \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u0438\u043d\u044f\u043b\u0438), \u044f \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u043b \u0433\u043b\u0443\u0431\u043e\u043a\u043e &#8212; \u043d\u0443\u0436\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h3>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f<\/h3>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u0437 Prometheus \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a <code>X-Scope-OrgId<\/code> \u0440\u0430\u0432\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (\u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e tenant, \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b). \u041c\u0435\u0442\u0440\u0438\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e tenant-\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 &#8212; \u043e\u043d\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 \u0432 S3 \u0431\u0430\u043a\u0435\u0442\u0435 \u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0424\u0421<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0440\u0438\u043a &#8212; \u0432 PromQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u0436\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 Cortex \u043d\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 &#8212; \u043e\u043d \u0441\u043b\u0435\u043f\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443. <em>Auth Gateway<\/em> \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/cortexmetrics.io\/docs\/roadmap\/\" rel=\"noopener noreferrer nofollow\">\u0440\u043e\u0430\u0434\u043c\u0430\u043f\u0435<\/a>, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e. \u0414\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432 Prometheus \u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 HTTP \u043f\u0440\u043e\u043a\u0441\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Prometheus &amp; Cortex \u044f \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 Remote Write \u043f\u0440\u043e\u043a\u0441\u0438 &#8212; <a href=\"https:\/\/github.com\/blind-oracle\/cortex-tenant\" rel=\"noopener noreferrer nofollow\">cortex-tenant<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c ID \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u0437 \u043c\u0435\u0442\u043e\u043a Prometheus. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0430\u043d\u0441 (\u0438\u043b\u0438 HA-\u0433\u0440\u0443\u043f\u043f\u0443) Prometheus \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043c\u0435\u0442\u0440\u0438\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0440\u0435\u0434.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0442\u043e\u0433\u0434\u0430 Cortex \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0442\u044c \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d <code>fake<\/code> &#8212; \u0442\u043e \u0435\u0441\u0442\u044c multi-tenancy \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0432\u0441\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0430\u0434\u0430\u0442\u044c \u0432 \u043e\u0434\u0438\u043d \u043a\u043e\u0442\u0451\u043b.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u0437 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 &#8212; \u043f\u043e\u043a\u0430 \u044d\u0442\u043e API \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h2>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Cortex<\/h2>\n<blockquote>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e Cortex \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u0440\u0438\u043a, \u043b\u0438\u0431\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e.<\/p>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445<\/p>\n<\/blockquote>\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-319010","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319010","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=319010"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319010\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=319010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=319010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=319010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}