* CRI (Kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-Kubernetes/">Container Runtime Interface) – среда для запуска контейнеров, универсально предоставляющие примитивы (Executor, Supervisor, Metadata, Content, Snapshot, Events и Metrics) для работы с Linux контейнерами (пространствами процессов, групп и т.д.).
** CNI (Container Networking Interface) – работа с сетью.
Portainer
Простейшим вариантом мониторинга будет Portainer:
essh@kubernetes-master:~/microKubernetes$ cat << EOF > docker-compose.monitoring.yml
version: '2'
>
services:
portainer:
image: portainer/portainer
command: -H unix:///var/run/Docker.sock
restart: always
ports:
– 9000:9000
volumes:
– /var/run/Docker.sock:/var/run/Docker.sock
– ./portainer_data:/data
>
EOF
essh@kubernetes-master:~/microKubernetes$ docker-compose -f docker-compose.monitoring.yml up -d
Мониторинг с помощью Prometheus
Мониторинг – поддержка непрерывности работы, отслеживание текущей ситуации (выявление, локализация и отправка об инциденте, например, в SaaS PagerDuty), прогнозирование возможных ситуаций, визуализация, построение моделей нормально работы IAOps (Artificial Intelligence For It Operations, https://www.gartner.com/en/information-technology/glossary/aiops-artificial-intelligence-operations).
Мониторинг содержит следующие этапы:
* выявление инцидента;
* уведомление о инциденте;
* локализация;
* решение.
Мониторинг можно классифицировать по уровню на следующие типы:
* инфраструктурный (операционная система, сервера, Kubernetes, СУБД), ;
* прикладной (логи приложений, трейсы, события приложений), ;
* бизнес-процессов (точки в транзакциях, трейсы транзакциях).
Мониторинг можно классифицировать по принципу:
* распределённый (трейсы), ;
* синтетический (доступность), ;
* IAOps (прогнозирование, аномалии).
Мониторинг делится на две части по степени анализа на системы логирования и системы расследования инцидентов. Примером логирования
служит ELK стек, а расследования инцидентов – Sentry (SaaS). Для микро-сервисов добавляется ещё и система трассировки
запросов, такие как Jeger или Zipkin. Система логирования просто пишет все логи, которые доступны.
Система расследования инцидентов пишет гораздо больше информации, но пишет её только в случае ошибок в приложении, например,
параметры окружения, версии установленных пакетов, стек трейс и так далее, что позволяет при просмотре получить максимальную информацию
по ошибке, а не собрать её по кусочкам с сервера и GIT репозитория. Но набор и формат информации зависит от окружения, поэтому
системе инцидентов нужно иметь интеграцию с различными языковыми платформами, а ещё лучше с конкретными фреймворками. Так Sentry
отравляет переменные окружения, участок кода и указание в каком месте произошла ошибка, параметры программного и платформенного
окружения, вызовы методов.
Мониторинг по экосистеме можно разделить на:
* Встроенный в облако Cloud: Azure Monitoring, Amazon CloudWatch, Google Cloud Monitoring
* Предоставляющийся как сервис с поддержкой различных интеграций SaaS: DataDog, NewRelic
* CloudNative: Prometheus
* Для выделенных серверов OnPremis: Zabbix
Zabbix разработан в 1998 год и выведен в OpenSource под лицензией в GPL в 2001. Для того времени, традиционный интерфейс:
без какого-либо дизайна, с большим числом вкладок, селекторов и тому подобного. Так как он разрабатывался для
собственных нужд, то он содержит конкретные решения. Ориентирован он
на мониторинг устройств и их компонентов, таких как диски, сеть, принтеры, роутеры и тому подобного. Для
взаимодействия можно использовать:
Агенты – устанавливаются на сервера, собирают множество метрик и отравляют Zabbix серверу
HTTP – Zabbix делает запросы по http, например, принтеров
SNMP— сетевой протокол для взаимодействия с сетевых устройств
IPMI – протокол для взаимодействия с серверными устройствами, такими, как роутеры
В 2019 году Gratner представил рейтинг систем мониторинга в своём квадрате:
** Dynatrace;
** Cisco (AppDynamics);
** New Relic;
** Broadcom (CA Technologies);
** Riverbed и Microsoft;
** IBM;
** Oracle;
** SolarWinds;
** Micro Focus;
** ManageEngine и Tingyun.
Не вошли в квадрат:
** Correlsense;
** Datadog;
** Elastic;
** Honeycomb;
** Instant;
** Jennifer Soft;
** Light Step;
** Nastel Technologies;
** SignalFx;
** Splunk;
** Sysdig.
Когда мы запускаем приложение в Docker контейнере, весь стандартный вывод (то, что выводится в консоли) запущенной программы (процесса) помещается в буфер. Этот буфер мы можем просмотреть программой docker logs name_container. Если мы следуем идеологии Docker – "один процесс – один контейнер" – мы можем просматривать логи отдельной программы. Для просмотра логов удобно пользоваться командами less и tail. Первая программа позволяет удобно прокручивать лога стрелками клавиатуры, искать нужное с на основе совпадений и по шаблону регулярных выражений, на подобие текстового редактора vi. Вторая программа выводит нужно нам количество
Читать дальше