stacklight (aka lma)
TRANSCRIPT
Copyright © 2015 Mirantis, Inc. All rights reserved
www.mirantis.com
StackLight (aka LMA)
Текущее состояние и планы на ближайшее будущее
Copyright © 2015 Mirantis, Inc. All rights reserved
Главные идеи, заложенные в основу StackLight
● Мы попытались не изобретать колесо, а использовать существующие решения, кастомезировав их под свои нужды и собрав всё вместе в один toolchain
● Охватывает все этапы: сбор данных, обработка и анализ, хранение, alarming и визуализация
● StackLight знает всё про MOS, центральным является понятие “кластер”● Является hot-pluggable Fuel плагином, т.е. может быть установлен в два
клика даже на работаеющем окружении● Scalability - главная цель, продукт был сделан scalable с самого начала● StackLight состоит из большого количества плагинов и скриптов, поэтому
написание новых планинов является естественным вариантом работы со StackLight
● Встроенный механизм обнаружения аномалий и несправностей там, где это действительно нужно (всё является configurable)
● Процессинг метрик происходит в отдельном pipieline со своим внутренним представлением, т.е. никак не влияет на процесс получения метрик
● Работает как stream processing и correlation engine (не централизованно)● Богатая коллекция встроенных метрик
Copyright © 2015 Mirantis, Inc. All rights reserved
Из чего состоит StackLight toolchain
1. Collector плагин отвечает за сбор данных, их аггрегацию и анализ (Mozilla Heka, collectd)
2. InfluxDB-Grafana плагин отвечает за хранение time-series-данных и их визуализацию
3. Elasticsearch-Kibana плагин отвечает за хранение логов и нотификаций и их визуализацию
4. Infrastructure Alerting плагин отвечает за сообщение о проблемах в окружении (Nagios)
Copyright © 2015 Mirantis, Inc. All rights reserved
Сердце StackLight Collector - это Mozilla Heka
Heka - это “Swiss Army Knife” для data processing… Heka processing pipeline состоит из переиспользуемых и достаточно атомарных частей: input -> split -> decode -> route -> process -> encode -> output
● AMQP Input● Docker Event Input● Docker Log Input● File Polling Input● HTTP Input● HTTP Listen Input● Kafka Input● Logstreamer Input● Process Input● Process Directory Input● Sandbox Input● Stat Accumulator Input● Statsd Input● TCP Input● UDP Input
● AMQP Output● Carbon Output● Dashboard Output● ElasticSearch Output● File Output● HTTP Output● IRC Output● Kafka Output● Log Output● Nagios Output● Sandbox Output● SMTP Output● TCP Output● UDP Output● Whisper Output
Встроенные Heka input плагины
Встроенные Heka output плагиныHeka Lua sandbox data
processing stream
Copyright © 2015 Mirantis, Inc. All rights reserved
Какие типы метрик существуют
● AFD метрики для конкретных процессов, системных ресурсов таких как WSGI-server, cpu, ram...Они создаются AFD-плагинами, которые выполняют аларм-правила
● GSE Service Cluster метрики для серверных кластеров, таких как RabbitMQ, MySQL, nova-api или nova-scheduler
● GSE Node Cluster метрики для нод-кластеров таких как storage, compute или controller-кластера
● GSE Meta Cluster метрики для мета-кластеров таких как nova, cinder, control-plane или data-plane
Понятие “кластер” задается явным образом с помощью YAML файлов
Copyright © 2015 Mirantis, Inc. All rights reserved
Cluster monitoring stream processing (TBD)
log
notif
decoderplugin
decoderplugin
decoderplugin
transformerplugin metric
metric
loglog
decoderplugindecoder
plugin
decoderplugindecoder
plugin
decoderplugin
transformerplugin metric
AFD pluginalarm rules
AFD pluginalarm rules
metricmetric
notifnotif
rabbitmqAFD metric
node AFD metric
AFD pluginalarm rules
rabbitmq AFD metric
GSE node cluster plugin
GSE service cluster plugin rabbitmq
cluster GSE metric
node cluster GSE metric
GSE meta cluster plugin
decoderplugindecoder
plugin
nova-api check plugin
metric nova-apiAFD metricmetric nova-api
cluster GSE metric
meta cluster GSE metric
StackLight CollectorЗдесь мы определяем, что что-то пошло не так
StackLight AggregatorЕсли что-то пошло не так, здесь мы
определяем, как проблемы могут быть связаны друг с другом
Эти Lua-плагины генерируются автоматически на основе конфигурируемых YAML описаний алармов и правил аггрегацииdecoder
plugin
Copyright © 2015 Mirantis, Inc. All rights reserved
● Может собирать всё, что угодно
● Может обрабатывать что угодно
● Может общаться с чем угодно
● Можно использовать только те части, которые нужны
● Мощные declarative definition для алармов, правил аггрегации и корреляции
StackLight лучше рассматривать как monitoring platform, а не monitoring system
Мы решили воспользоваться всем перечисленным здесь и расширить функционал StackLight ещё больше
Copyright © 2015 Mirantis, Inc. All rights reserved
Мониториг OpenStack ресурсов?
1. В 0.9 версии впервые добавлен мониторинг vm, созданныз через libvirt
2. В 1.0 планируем интеграцию с Ceilometer. Ceilometer будет поставлять все собранные данные прямо в StackLight. Для этого были решены проблемы:a. Ceilometer observer effect был значительно уменьшен
добавлением кэша на compute agent’ах (изменение пошло в upstream)
b. Написан InfluxDB-драйвер для поддержки Ceilometer API
Copyright © 2015 Mirantis, Inc. All rights reserved
Ссылки
● LMA Toolchain Project on Launchpad● https://github.com/openstack/fuel-plugin-lma-collector● https://github.com/openstack/fuel-plugin-influxdb-
grafana● https://github.com/openstack/fuel-plugin-elasticsearch-
kibana● https://github.com/openstack/fuel-plugin-lma-
infrastructure-alerting●
Copyright © 2015 Mirantis, Inc. All rights reserved
Документация
● http://fuel-plugin-lma-collector.readthedocs.org/en/latest/index.html
● http://fuel-plugin-influxdb-grafana.readthedocs.org/en/latest/overview.html
● http://fuel-plugin-elasticsearch-kibana.readthedocs.org/en/latest/overview.html#overview
● http://fuel-plugin-lma-infrastructure-alerting.readthedocs.org/en/latest/overview.html