Архив метки: quick guide

Краткое введение в Elasticsearch

ElasticsearchНасколько замечательно Grafana, Graphite и Prometheus справляются с численными данными мониторинга, вроде загрузки процессора по времени, настолько же они бесполезны для работы с логами. А ведь с теми приходится работать даже чаще, чем с метриками.

Инструментов для работы с логами тоже навалом, но сегодня мы посмотрим в сторону ELK стека от Elastic. А именно: Elasticsearch, Logstash и Kibana — хранилище/поисковик, обработчик данных и тулза для их визуализации. А начнём, естественно, с первой буквы этого трёх-буквенного алфавита — «E».

Читать далее Краткое введение в Elasticsearch

Собираем метрики приложения с Prometheus

PrometheusЕсть два концептуально разных подхода к сбору метрик приложения. Есть PUSH подход, при котором хранилище тихо сидит где-нибудь и надеется, что случайный провайдер метрик в него что-нибудь да положит. Например, Graphite сам по себе не занимается сбором данных. Он ждёт, что их доставит прямо к порогу кто-нибудь вроде collectd.

С другой стороны, есть PULL подход. В этом случае агрегатор начинает проявлять инициативу и раз в икс секунд проходится по списку адресов, на которые подписан, чтобы самостоятельно собрать новую порцию данных.

Prometheus использует PULL подход. Читать далее Собираем метрики приложения с Prometheus

Визуализация данных мониторинга с Grafana

Хотя Graphite весьма неплохо рисует одиночные графики, с созданием дашбордов целиком он справляется так себе. Конечно, можно взять его Render URL API и сделать себе HTML-дашборд самостоятельно. С другой стороны, есть Grafana.

Дашборд в Grafana

Читать далее Визуализация данных мониторинга с Grafana

Краткое введение в rrdtool

В прошлом посте я упомянул, что collectd по-умолчанию сохраняет собранные данные через rrdtool. На выходе получаются несколько .rrd файлов — по одному для каждой метрики — и их потом можно отрисовать при помощи той же rrdtool. RRD файлы не так часто вплывают в разговорах у кофеварки, да и сама rrdtool та еще tool, так что не сразу понятно, почему collectd использует именно её, а не какой-нибудь CSV.

Оказывается, причин хватает. Читать далее Краткое введение в rrdtool

Краткое введение в Apache Kafka

Что такое Apache Kafka

Официальное определение для Apache Kafka — распределённая стриминговая платформа. Это одно из тех прекрасных определений, которые не имеют никакого смысла до тех пор, пока не посидишь хорошенько с документацией. На самом деле идея Кафки очень простая. В большой распределенной системе обычно много сервисов, которые генерируют разные события: логи, данные мониторинга, замеченные попытки доступа к секретным ресурсам, и т. п. С другой стороны, есть сервисы, которым эти данные очень нужны. И тут появляется Kafka: он сидит между продюсерами и консьюмерами данных (producer & consumer): собирает данные у первых, хранит у себя в распределенном хранилище по топикам и раздаёт вторым по подписке. Другими словами, Kafka — это гибрид распределенной базы данных и очереди сообщений.

Apache Kafka

Читать далее Краткое введение в Apache Kafka

Краткое введение в RabbitMQ

Краткое введение в RabbitMQ

RabbitMQ — это полноценная и щедро удобренная фичами очередь сообщений. В отличие от ZeroMQ, который встраивается в приложения, RabbitMQ — сервис-посредник. Он разграничивает права доступа, поддерживает шифрование, сохранение сообщений на диск (чтобы пережить плановое отключение электричества), работу в кластерах и даже дублирование сервисов для повышенной живучести. К тому же он написан на Erlang, за что автоматически становится неубиваемым и поддерживаемым на большинстве популярных ОС.

В этом посте мы посмотрим, насколько тяжело отправлять и получать сообщения с RabbitMQ, да и вообще, на что он похож вблизи. В качестве платформы будет Убунта (запертая внутри Docker контейнера), но сгодился бы и Mac, и Windows. Читать далее Краткое введение в RabbitMQ

Краткое введение в Windows контейнеры

Windows контейнеры

Свершилось! То ли молитвы помогли, то ли жертвоприношения, но теперь можно запускать Docker контейнеры с Windows внутри. Прекрасная новость пришла одновременно с релизом Windows Server 2016. И речь не идёт о какой-нибудь хитро-спрятанной виртуальной машине, или эмуляции Windows на Linux ядре — запускается настоящая Windows в настоящем Docker, с работающими Dockerfile, docker-compose и прочими docker-приблудами.
Читать далее Краткое введение в Windows контейнеры

Краткое введение в docker-compose

Что такое docker-compose

docker-composeКак docker может управлять отдельно взятым контейнером, так docker-compose помогает управлять не просто одним, а всеми контейнерами, которые составляют распределенное приложение. Причём, не только контейнерами, но и сетями, подключёнными папками и всеми связанными с этим настройками.

Ведь даже чтобы запустить простое вэб-приложение, состоящее всего из двух контейнеров (например, «web» с контентом и «db» с данными), нужно как минимум:

Читать далее Краткое введение в docker-compose

3 способа перенести Node.js приложение в Docker контейнер

dockerizeДопустим, у нас есть Node.js приложение, которое по каким-то причинам нужно перенести в Docker контейнер и запустить. Может, просто хочется проверить, как оно поведет себя на ‘чистой’ машине. Или выпендриться перед заказчиком. Причины ведь разные бывают.

Для определенности, пускай это будет вэб сервер hello.js, который всем отвечает «Hello World». Такой вот он приветливый.

Localhost: hello

Итак, как перенести его в Docker контейнер и запустить?

Дисклаймер: всё написанное ниже предполагает базовое понимание того, что такое Docker, и зачем он может кому-то пригодиться. Где-то даже была статья про это.

Читать далее 3 способа перенести Node.js приложение в Docker контейнер