* CRI-O OpanSource проект, с самого начала нацеленный на полную поддержку стандартов CRI (Container Runtime Interface), github.com/opencontainers/runtime-spec/">Runtime Specification и github.com/opencontainers/image-spec">Image Specification как общего интерфейса взаимодействия системы оркестровки с контейнерами. Наряду c Docker, добавлена поддержка CRI-O 1.0 в Kubernetes (речь пойдёт дальше) с версии 1.7 в 2007, а также в MiniKube и Kubic. Имеет реализацию CLI (Common Line Interface) в проекте Pandom, практически полностью повторяющий команды Docker, но без оркестровки (Docker Swarm), который по умолчанию является инструментом в Linux Fedora.
* 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.