Проект с открытым исходным кодом DeepFlow направлен на обеспечение глубокой наблюдаемости сложных облачных и AI-приложений. DeepFlow реализует сбор данных без написания кода с помощью eBPF для метрик, распределённого трассирования, логов запросов и профилирования функций, а также интегрируется с SmartEncoding для достижения полной корреляции Full Stack и эффективного доступа ко всем данным наблюдаемости. С DeepFlow облачные и AI-приложения автоматически получают глубокую наблюдаемость, исключая необходимость постоянного инструментирования кода разработчиками и предоставляя возможности мониторинга и диагностики, охватывающие всё от кода до инфраструктуры для команд DevOps/SRE.
Предполагая, что у вас есть базовое понимание eBPF, это безопасная и эффективная технология расширения функциональности ядра путём запуска программ в песочнице, что является революционным новшеством по сравнению с традиционными методами изменения исходного кода ядра и написания модулей ядра. Программы eBPF являются событийно-ориентированными, и когда ядро или пользовательские программы проходят через eBPF Hook, выполняется соответствующая программа eBPF, загруженная в точку Hook. Ядро Linux предопределяет ряд часто используемых точек Hook, а также можно динамически добавлять пользовательские точки Hook в ядро и приложения с помощью технологий kprobe и uprobe. Благодаря технологии Just-in-Time (JIT) эффективность выполнения кода eBPF может быть сопоставима с нативным кодом ядра и модулями ядра. Благодаря механизму Verification код eBPF выполняется безопасно, не вызывая сбоев ядра или бесконечных циклов.
DeepFlow состоит из двух компонентов: Agent и Server. Агент запускается на каждом узле K8s, на устаревших хостах и облачных хостах, и отвечает за сбор данных AutoMetrics и AutoTracing всех процессов приложений на хосте. Server запускается в кластере K8s и предоставляет управление агентами, внедрение тегов, приём и запрос данных.
Возможности eBPF (AutoTracing, AutoProfiling) в DeepFlow имеют следующие требования к версии ядра:
Архитектура | Дистрибутив | Версия ядра | kprobe | Golang uprobe | OpenSSL uprobe | perf |
---|---|---|---|---|---|---|
X86 | CentOS 7.9 | 3.10.0 1 | Y | Y 2 | Y 2 | Y |
RedHat 7.6 | 3.10.0 1 | Y | Y 2 | Y 2 | Y | |
* | 4.9-4.13 | Y | ||||
4.14 3 | Y | Y 2 | Y | |||
4.15 | Y | Y 2 | Y | |||
4.16 | Y | Y | Y | |||
4.17+ | Y | Y | Y | Y | ||
ARM | CentOS 8 | 4.18 | Y | Y | Y | Y |
EulerOS | 5.10+ | Y | Y | Y | Y | |
KylinOS V10 SP2 | 4.19.90-25.24+ | Y | Y | Y | Y | |
KylinOS V10 SP3 | 4.19.90-52.24+ | Y | Y | Y | Y | |
Другие дистрибутивы | 5.8+ | Y | Y | Y | Y |
Дополнительные замечания по версиям ядра:
Заявление RedHat:
eBPF в Red Hat Enterprise Linux 7.6 предоставляется как Tech Preview и поэтому не имеет полной поддержки и не подходит для использования в продуктивной среде. Он предоставляется с основной целью расширения охвата и потенциального перехода к полной поддержке в будущем. eBPF в Red Hat Enterprise Linux 7.6 включён только для целей трассировки, что позволяет прикреплять программы eBPF к probe, tracepoint и perf событиям.
Рекомендуется использовать Persistent Volumes для хранения данных MySQL и ClickHouse, чтобы избежать ненужных затрат на обслуживание. Вы можете указать Storage Class по умолчанию или добавить параметр --set global.storageClass=<your storageClass>, чтобы выбрать Storage Class для создания PVC.
Для получения дополнительной информации о настройке хранилища обратитесь к документации по Storage.
Перейдите на Custom Portal для загрузки пакета DeepFlow.
Если у вас нет доступа к Custom Portal, обратитесь в техническую поддержку.
Используйте инструмент violet для публикации пакета на платформу.
Подробные инструкции по использованию этого инструмента см. в разделе CLI.
Создайте ресурс приложения в пространстве имён cpaas-system для развертывания DeepFlow. Пример манифеста:
Дождитесь готовности приложения:
Создайте ресурс Ingress для доступа к веб-интерфейсу Grafana. Пример манифеста:
Вы можете получить доступ к веб-интерфейсу Grafana по URL, указанному в ресурсе Ingress, и войти, используя имя пользователя и пароль, заданные в ресурсе Application.
Настоятельно рекомендуется изменить пароль после первого входа.