Observable Platform-2: решение с открытым исходным кодом
Observable Platform-2: решение с открытым исходным кодом
Обзор
Создание системы мониторинга и сигнализации для сложной прикладной системы включает в себя множество компонентов, таких как внешний интерфейс, API на различных внутренних языках, шлюзы, очереди сообщений (MQ), кеши (Cache) и базы данных (DB). Автоматическое построение диаграммы топологии компонентов прикладной системы и корреляция состояний соответствующих компонентов — сложный процесс, обычно требующий следующих шагов:
Сбор и интеграция данных
Во-первых, вам необходимо убедиться, что все компоненты (интерфейсные, серверные службы, шлюз API, MQ, кэш, БД и т. д.) могут генерировать данные мониторинга.
Используйте такие инструменты, как Prometheus, Graphite и т. д., для сбора данных мониторинга этих компонентов.
Для сбора и анализа данных журналов вы можете использовать ELK Stack (Elasticsearch, Logstash, Kibana) или Fluentd.
Обнаружение сервисов и автоматическое рисование топологии
Используйте инструменты обнаружения сервисов (такие как Consul, Zookeeper и т. д.) для динамической идентификации различных компонентов в системе.
Используйте механизмы обнаружения сервисов в инструментах мониторинга (таких как функция обнаружения сервисов Prometheus) для автоматического выявления и мониторинга новых или измененных сервисов.
Используйте специализированные инструменты (такие как Dynatrace, Datadog) или пользовательские сценарии для отображения топологии компонентов вашего приложения.
Мониторинг производительности и оповещение
Настройте правила мониторинга производительности и сигналов тревоги в инструментах мониторинга (таких как Prometheus, Grafana).
Убедитесь, что ключевые показатели производительности каждого компонента (такие как время отклика, частота ошибок, пропускная способность и т. д.) отслеживаются, а также установлены разумные пороговые значения сигналов тревоги.
Для управления сигналами тревоги вы можете использовать Alertmanager или другие инструменты управления сигналами тревоги, чтобы настроить маршрутизацию сигналов тревоги, подавление дубликатов и методы уведомления.
Ассоциация и отображение статуса
В Grafana или аналогичном инструменте визуализации создайте информационные панели, которые отображают состояние и показатели производительности каждого компонента.
Используйте диаграммы топологии, чтобы показать зависимости между компонентами и визуально отразить состояние работоспособности компонентов на диаграмме.
Интеграция журналов и данных о производительности обеспечивает более полное представление о системе в едином интерфейсе.
трассировка ссылок
Для процесса запросов в распределенной системе используйте инструменты отслеживания ссылок (такие как Jaeger, Zipkin) для отслеживания и записи потока запросов между службами.
Данные трассировки каналов могут помочь выявить узкие места производительности и точки сбоя.
Тестируйте и оптимизируйте
После развертывания системы мониторинга и сигнализации проведите достаточное тестирование, чтобы гарантировать, что состояние всех компонентов можно точно отслеживать и своевременно подавать сигналы тревоги.
Корректируйте стратегии мониторинга и пороговые значения сигналов тревоги на основе реальных условий эксплуатации, чтобы обеспечить эффективность и точность системы мониторинга.
Благодаря этим шагам можно построить комплексную систему мониторинга и сигнализации, которая может не только автоматически рисовать и обновлять диаграмму топологии компонентов прикладной системы, но также коррелировать и отображать состояние каждого компонента в режиме реального времени, тем самым эффективно поддерживая работу. и обслуживание сложных прикладных систем.
Интеграция программного обеспечения с открытым исходным кодом
Для систем мониторинга и оповещения, обсуждавшихся выше, существует несколько вариантов программного обеспечения с открытым исходным кодом, которые могут помочь в создании комплексного решения для мониторинга. Вот некоторые из основных инструментов с открытым исходным кодом:
Инструменты с открытым исходным кодом, такие как ClickHouse, Neo4j, VectorDB, PromQL, LogQL, OpenTracing, Prometheus, Grafana, AlertManager и DeepFlow.
Эти инструменты можно интегрировать друг с другом для создания комплексной системы мониторинга и оповещения, охватывающей все аспекты от внешнего до внутреннего интерфейса и от уровня приложений до уровня данных. Выбор правильной комбинации инструментов зависит от конкретного сценария приложения, технологического стека и требований к производительности. Решение платформы наблюдения с открытым исходным кодом автоматизирует предоставление сервисов создания через GitHub Actions.
В этом решении используется следующее программное обеспечение с открытым исходным кодом:
Сбор данных: Синхронизируйте данные из системных компонентов, приложений и облачных учетных записей с помощью таких инструментов, как Prometheus, OpenTelemetry, Deepflow-agent, Promtail, CloudQuery и т. д.
Хранение данных: используйте ClickHouse, Neo4j, VectorDB и другие инструменты для хранения данных наблюдений.
Анализ данных: используйте такие инструменты, как Prometheus и Grafana, для анализа данных наблюдений.
Визуализация данных: используйте такие инструменты, как Grafana, для визуального представления наблюдаемых данных.
Он может предоставлять информацию о состоянии ресурсов, производительности и надежности системы или приложения, диагностировать и решать проблемы, оптимизировать производительность системы или приложения, а также функциональный анализ и т. д., включая следующие сценарии применения:
Преимущества
Открытый исходный код: решение использует инструменты с открытым исходным кодом.,Поэтому стоимость низкая.
Масштабируемость: решение использует масштабируемый стек технологий, поэтому может удовлетворить различные потребности.
автоматизация:Долженрешениеиспользовать GitHub Actions Автоматизированная доставка создает сервисы, которые можно быстро развертывать и обслуживать.
CICD
Файл конфигурации конвейера
Файл конфигурации находится по адресу .github/workflows/pipeline.yaml и состоит из четырех этапов:
Тест сборки. На этом этапе приложение создается из исходного кода и запускается набор тестов, чтобы убедиться, что приложение работает правильно.
Образ Docker: на этом этапе создается образ Docker, содержащий приложение.
Настройка K3s. На этом этапе настраивается кластер K3s на удаленном сервере.
Развертывание приложения. На этом этапе приложение развертывается в кластере K3s.
Описание роли Playook
Библиотека конфигурации платформы наблюдения предоставляетсяк Следующий ролевой состав:
DNS_AK: ${{ secrets.DNS_AK }}: используйте ключ GitHub, чтобы установить ключ доступа к DNS Alibaba Cloud.
DNS_SK: ${{ secrets.DNS_SK }}: используйте ключ GitHub для установки DNS-ключа Alibaba Cloud.
DEBIAN_FRONTEND: неинтерактивный: Воля Настройка интерфейса Debian находится в неинтерактивном режиме.,Этот существующий скрипт автоматизации очень полезен,Интерактивные подсказки можно запретить.
HELM_EXPERIMENTAL_OCI: 1: включить экспериментальную поддержку OCI (Open Container Initiative) в Helm, что позволяет использовать Helm с образами OCI.
HOST_USER развертыватьK3Sиз Имя пользователя для входа в ОС хоста
HOST_IP развертыватьK3SизIP-адрес хоста
HOST_DOMAIN развернутьK3Sдоменное имя хоста
SSH_PRIVATE_KEY Закрытый ключ SSH хоста, который обращается к K3S.
DNS_AK Alibaba Cloud DNS Service AK (используется для автоматической выдачи SSL-сертификатов и обновления записей разрешения, а также публикации входящего трафика)
DNS_SK Alibaba Cloud DNS Service SK (используется для автоматической выдачи SSL-сертификатов, обновления записей разрешения и публикации входящего трафика)
клиент Связанный secrets переменная
APP_HOST_USER развертыватьAPPкластеризmaster Имя пользователя для входа в ОС хоста
APP_HOST_DOMAIN развертыватьAPPкластеризmaster IP-доменное имя хоста
Когда все будет готово, вы сможете это увидеть. В этом рабочем процессе CI образ автоматически завершается и отправляется в специальное хранилище, упаковывается, после чего завершается инициализация кластера K3S, а также развертывание приложения в кластере K3S.
Конфигурация после развертывания
Конфигурация сервера
Конфигурация источника данных к https://grafana.onwalk.net Например, к admin Логин, данные sources -> Add new data sources Вы можете выбрать соответствующий тип источника данных для доступа в соответствии с вашими потребностями.
Настройка нескольких кластеров deepflow-agent Конфигурация требует, чтобы сначала существовала сторона Сервера, используя deepflow-ctl domain create получить K8sClusterID:
Язык кода:shell
копировать
unset CLUSTER\_NAME
CLUSTER\_NAME="k8s-1" # FIXME: K8s cluster name
cat << EOF | deepflow-ctl domain create -f -
name: $CLUSTER\_NAME
type: kubernetes
EOF
deepflow-ctl domain list $CLUSTER\_NAME # Get K8sClusterID
Конец коллекции
Настройте дополнительный доступ к кластеру, выполните шаг 2, запишите K8sClusterID и deepflowserverip и запишите их в playbook/init_observability-agent, а затем выполните конвейер .github/workflows/setup-agent.yaml.
демонстрационный пример
Запрос журнала
Состояние ресурса узла узла
Статус ресурса приложения кластера
Карта топологии ресурса
Наблюдение за производительностью сети
Мониторинг доступности услуг
Справочный раздел
API Endpoint
name
URI
querying(promql, logql, tempo)
http://data-gateway.<domian>
metrics_query
https://prometheus.<domian>/api/v1/query
metrics_remote_write
https://prometheus.<domian>/api/v1/remote/write
logql_remote_write
https://data-gateway.<domian>/loki/api/v1/push
traces_tempo_push
https://data-gateway.<domian>/tempo/api/push
traces_zipkin_push
https://data-gateway.<domian>/api/v2/spans
traces_oltp_push
https://data-gateway.<domian>/v1/traces
Благодарности
Сообщество открытого исходного кода: Нет сообщества открытого исходного кода для обмена,Самостоятельно выполнить сложное техническое решение невозможно. Спасибо всем участникам сообщества открытого исходного кода.,ихиз Тяжелая работа дает нам ценныеизресурси Знание。
Prometheus:Prometheus Это ведущая система мониторинга с открытым исходным кодом. мы используем Prometheus приди и собериихранилищенаблюдаемые данные。
Grafana:Grafana является ведущим инструментом визуализации с открытым исходным кодом. мы используем Grafana для визуализации данных наблюдения.
AlertManager:AlertManager Это ведущая система сигнализации с открытым исходным кодом. мы используем AlertManager для отправки оповещений о данных наблюдения.
DeepFlow:DeepFlow Это программное обеспечение с открытым исходным кодом, разработанное Yunshan Technology на основе eppf. Примените программное обеспечение для анализа наблюдаемости.
GCP Cloud: Нет Google Щедрые 300 долларов Бесплатные ресурсы для тестирования, невозможно завершить проверку решения
Платформа разработчика Tencent: Платформа разработчика Tencent предоставляет нам платформу для обмена. Благодарим вас за поддержку, оказанную платформой разработчика Tencent.
Я участвую в третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 с эссе, получившими приз, и сформирую команду, которая разделит приз!