книги хакеры / журнал хакер / 201_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
|||||
P |
|
|
|
|
|
NOW! |
o |
|
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|
w Click |
|
|
|
|
|
m |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
ПРОЕКТ PROMETHEUS |
|
|
|
|
|
-x cha |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проект Prometheus (prometheus.io) стартовал в 2012 году как система мониторинга для музыкальной социальной сети SoundCloud. Дело в том, что под используемую в SoundCloud архитектуру микросерверов не совсем подходили традиционные системы мониторинга сервисов и хостов. Со временем Prometheus зарекомендовал себя как одно из лучших решений для подобных случаев.
Сегодня это базовая система в таких проектах, как Docker и Boxever. Представляет собой организованный набор инструментов, предлагающий метрики для хранения, агрегации, визуализации и оповещения. В большинстве традиционных систем агенты периодически отправляют данные на центральный сервер. В Prometheus децентрализованная самоуправляемая (self-managed) архитектура, когда легко можно контролировать сотни серверов с одного места, при этом отдельные команды могут использовать свои независимые серверы мониторинга.
Основу Prometheus составляет prometheus server, работающий автономно
исохраняющий все данные локально. Сервисы обнаруживаются автоматически, при помощи поиска и статических установок, подготовленных разработчиками. Такой подход очень упрощает развертывание. Для контроля одной системы не нужно разворачивать распределенную систему мониторинга, фактически достаточно установить сервер, и система мониторинга уже работает. Все данные представлены в виде временных рядов. Метки времени имеют точность до миллисекунд, значения представлены c 64-битной точностью. Гибкий язык запросов позволяет выбрать и при необходимости сохранить отдельно любую информацию из полученного набора, строить на их основе графики или генерировать алерты.
Кроме этого, сервер при помощи клиентских библиотек или компонента pushgateway может получать информацию с систем, включающихся в сеть периодически. Проект предоставляет клиентские библиотеки, написанные на Go, Java, Python и Ruby, есть сторонние решения на bash, Node.js, Haskell
иС#/.NET. Для передачи данных между компонентами выбран HTTP.
Сервер способен отображать графики, но они подходят для эпизодического наблюдения или при отладке. В качестве постоянного интерфейса предлагается компонент PromDash, который может подключаться к любым выбранным серверам для визуализации данных на панелях. PromDash выводит данные с собственно Prometheus или Graphite. Доступен API, который может быть использован для визуализации собранных данных на сторонних инструментах, шаблоны консоли, позволяющие построить свою консоль для визуализации нужных данных, и консольный prometheus_cli.
За обработку алертов отвечает Alertmanager, умеющий на сегодня отправлять сообщения по email и PagerDuty, хотя при желании легко прикрутить дру-
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
w Click |
|
|
|
|
|
m |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
гие варианты. Написан на Go (Golang) — это компилируемый многопоточный язык программирования, разработанный в Google. PromDash написан на Ruby. Распространяется на условиях Apache License 2.0.
УСТАНОВКА PROMETHEUS НА СЕРВЕР UBUNTU 14.04 LTS
Проект предлагает исходные тексты и сборку сервера под 32- и 64-бит- ные процессоры. Сборка рекомендуется для установки, но, если учесть, что Prometheus состоит из нескольких элементов, при необходимости доустановки их уже придется компилировать. Есть Chef cookbooks и контейнер для Docker. Проект предоставляет инструкцию по установке и документацию, описывающую разнообразные параметры. С ними следует ознакомиться, чтобы понять все возможности, заложенные в Prometheus.
Установим Prometheus на сервер под управлением Ubuntu 14.04 LTS. Для работы нам понадобится собственно Go. В репозиториях Ubuntu он есть и ставится просто: sudo apt-get install golang. Единственный момент: в репозитории далеко не самый последний релиз — 1.2.1, тогда как последняя сборка Prometheus использовала уже 1.4.2, то есть вероятность того, что все будет работать, не так велика. Наверное, поэтому сами разработчики рекомендуют брать версию с официального сайта Go.
Необходимо занести путь к распакованному Go в переменную PATH и GOROOT, прописав в /etc/proile или $HOME/.proile:
Понадобятся инструменты для работы с Git:
Скачиваем актуальный релиз с GitHub, удобнее применять уже скомпилированную версию:
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
r |
||||
P |
|
|
|
|
|
NOW! |
o |
|
P |
|
|
|
|
|
NOW! |
o |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
w Click |
|
|
|
|
|
m |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|||
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|
|
. |
|
|
|
|
g |
.c |
|
||||||
|
|
p |
|
|
|
|
|
|
|
|
|
|
p |
|
|
|
|
|
|
|
||||
|
|
|
df |
|
|
n |
e |
|
|
|
|
|
df |
|
|
n |
e |
|
||||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
В дальнейшем для автоматического запуска сервера Prometheus можно поступить, как и для node_exporter. Теперь можем перейти в браузере по http:// server_ip:9090/ и просмотреть настройки сервера и данные метрик. В самом верху окна есть меню. В Graph можем генерировать графики. Вкладка Console предлагает два варианта: ввести команду вручную или выбрать в списке (команда переносится в строку ввода, и ее можно корректировать). Выбираем одну для примера и нажимаем Execute, после чего во вкладке Graph можем просмотреть график:
Просмотр настроек