Первый опыт работы с облачной платформой наблюдения OpenObserve
Первый опыт работы с облачной платформой наблюдения OpenObserve

OpenObserve это Rust Разработана высокопроизводительная облачная платформа наблюдения с открытым исходным кодом (журналы, метрики, отслеживание) по сравнению с Elasticsearch это экономит ок. 140 Умножение на стоимость хранения, OpenObserve способен справиться PB данных уровня, если вы ищете наблюдаемый инструмент для ведения журналов, показателей и отслеживания, то OpenObserve Это очень стоит попробовать. OpenObserve Хотя в настоящее время в alpha стадии, но фактически подвергся обширным испытаниям.

OpenObserve против Elasticsearch

Elasticsearch Это универсальная поисковая система, вы можете использовать приложение поиска или журнал поиска. OpenObserve создан специально для поиска по журналам, если вы ищете Elasticsearch легкие альтернативы, то вам следует взглянуть на ZincSearch, если вам просто нужна поисковая система по журналам, то OpenObserve Это очень хорошо по выбору.

OpenObserve не полагается на индексацию данных, он хранит неиндексированные данные в сжатом формате на локальном диске или в объектном хранилище в формате столбца паркета. Это приводит к значительному снижению вычислительных требований во время приема данных и очень высокой степени сжатия, что приводит к снижению затрат на хранение примерно в 140 раз. Отсутствие индексации данных означает, что поиск с полным сканированием может быть медленнее, чем Elasticsearch, но все равно должен быть быстрым благодаря различным другим методам, таким как секционирование и кэширование. Uber обнаружил, что 80% запросов в его производственной среде были агрегированными запросами, а столбчатое хранилище данных OpenObserve означает, что агрегированные запросы часто выполняются намного быстрее, чем Elasticsearch.

Ниже показано, что мы используем Fluentbit Преобразование реальных данных журнала из Kubernetes кластер отправлен в Elasticsearch и OpenObserve Это актуально только для хранения. ЭБС Стоимость рулона 8 центов/ГБ/месяц (GP3),s3 Стоимость 2.3 центов/ГБ/месяц。существовать Elasticsearch из Режим высокой доступности Вниз,Обычно есть 1 мастернода 2 копии. Нет необходимости копировать s3 для достижения постоянства/доступности данных, потому что AWS Сделаем ваш объект резервнымхранилищесуществовать Amazon S3 Не менее трех зон доступности в регионе. (AZ) из на нескольких устройствах.

OpenObserve VS Elasticsearch

В приведенном выше сценарии OpenObserve Имеет соотношение Elasticsearch Низкий 140 раз стоимость хранения из существенных преимуществ, и это даже не учитывает дополнительные неиспользованные EBS Емкость тома (которая необходима, чтобы не исчерпать дисковое пространство) и работа, необходимая для постоянного мониторинга использования диска, чтобы он не заполнялся.

узел без сохранения состояния Архитектурапозволять OpenObserve Масштабируйте горизонтально, не беспокоясь о дублировании или повреждении данных. и Elasticsearch Для сравнения, вы обычно обнаружите, что управление OpenObserve кластериз Рабочая нагрузка по эксплуатации и техническому обслуживаниюи Стоимость Низкийгораздо больше。

OpenObserve Встроенный графический интерфейс пользователя исключает необходимость Kibana и т. д. другие компоненты из потребностей, и потому что Rust из Преимущества, отличная производительность без необходимости сталкиваться JVM Проблемы, вызванные этим.

и Elasticsearch По сравнению с Elasticsearch Это универсальный поисковый движок, но также имеет функцию инструмента наблюдения. и OpenObserve Это инструмент наблюдения, созданный с нуля, с упором на обеспечение отличных характеристик наблюдения.

Архитектура

OpenObserve Его можно запустить на одном узле или в кластере, как Режим высокой доступностибегать。

Режим одного узла

Режим одного узла Есть несколько типов Архитектура,В основном хранилища данных разными способами,Основные из них следующие:

Модель салазок и локального диска

Если вам просто нужно использовать его ненадолго и протестировать,или Нет требований к высокой доступности,Вы можете использовать этомодель。Конечно, ты все еще можешьсуществовать Одна машина обрабатывает более 2 TB изданные. существования Мы тестировали, используя конфигурацию по умолчанию, Mac M2 Скорость обработки составляет ок. 31 МБ/секунда, т.е. обработка в минуту 1.8 ГБ,обработано в день 2.6 ТБ. Этот режим также работает OpenObserve изпо умолчаниюмодель。

Локальный режим саней

Sled иобъектхранилищемодель

Модель OpenObserve по умолчанию в основном такая же.,толькоданныежитьсуществовать Понятнообъектхранилищесередина,Это может лучше поддерживать высокую доступность,Потому что данные не будут потеряны.

Модель хранения объектов салазок

Etcd иобъектхранилищемодель

Шаблон заключается в использовании Etcd для хранения метаданных, а данные по-прежнему хранятся в объектном хранилище.

модель хранения объектов etcd

Режим высокой доступности

Режим высокой доступность не поддерживает локальное дисковое хранилище, в модели кластера OpenObserve Будет работать несколько узлов, каждый узел не имеет состояния, хранилище данных существует, хранилище объектов, элемент хранилищее существует. Etcd середина,Это может лучше поддерживать высокую доступность,Потому что данные не будут потеряны.

хранилище объектов etcd

В этом режиме OpenObserve В основном включают Router、Querier、Ingester и Compactor Четыре компонента, каждый из которых можно развернуть по горизонтали и т. д.; Используется для пользователей хранилища, функций, правил сигнализации, информации об узлах кластера и других элементов данных объектов хранилища (например; s3、minio、gcs и т. д.) хранение parquet Индекс файла и списка файлов и все данные.

  • RouterRouter Маршрутизатор передает запрос ingester или запросчик, который также доступен через браузер UI интерфейс.Router На самом деле это очень простой прокси-сервер, который используется для отправки соответствующих запросов и ответов между программами приема и программами запросов.
  • IngesterIngester Используется для получения запросов на прием и преобразования данных в parquet Тогда формат будет следующим: хранилищесуществовать хранилище объектов, существующие данные будут перенесены в хранилище объектов до того, как временное хранилище данных будет существовать. WAL середина.
  • QuerierQuerier Для запроса данных узел запроса полностью не имеет состояния.
  • CompactorCompactor Объединит маленькие файлы в большие файлы,делатьпоискболее эффективный。Compactor Также полностью обрабатывает политики хранения данных. stream Удаление и обновление индекса списка файлов.

Установить

OpenObserve Из Установить очень просто, достаточно скачать бинарный файл, он поддерживает Linux、Windows и MacOS, также поддерживается Docker Зеркало. Конечно, мы все еще ссылаемся на это здесь. Kubernetes В кластере для простоты мы напрямую используем значение по умолчанию Модель салазок и локального диска。

Сначала создайте пространство имен:

Язык кода:javascript
копировать
$ kubectl create ns openobserve

Затем создайте файл манифеста ресурса, как показано ниже:

Язык кода:javascript
копировать
# openobserve.yaml
apiVersion: v1
kind: Service
metadata:
  name: openobserve
  namespace: openobserve
spec:
  clusterIP: None
  selector:
    app: openobserve
  ports:
    - name: http
      port: 5080
      targetPort: 5080
---
# create statefulset
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: openobserve
  namespace: openobserve
  labels:
    app: openobserve
spec:
  serviceName: openobserve
  replicas: 1
  selector:
    matchLabels:
      app: openobserve
  template:
    metadata:
      labels:
        app: openobserve
    spec:
      securityContext:
        fsGroup: 2000
        runAsUser: 10000
        runAsGroup: 3000
        runAsNonRoot: true
      containers:
        - name: openobserve
          image: public.ecr.aws/zinclabs/openobserve:latest
          env:
            - name: ZO_ROOT_USER_EMAIL # Укажите почту администратора
              value: root@example.com
            - name: ZO_ROOT_USER_PASSWORD # Укажите пароль администратора
              value: root321
            - name: ZO_DATA_DIR
              value: /data
          imagePullPolicy: Always
          resources:
            limits:
              cpu: 4096m
              memory: 2048Mi
            requests:
              cpu: 256m
              memory: 50Mi
          ports:
            - containerPort: 5080
              name: http
          volumeMounts:
            - name: data
              mountPath: /data
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: cfsauto # Укажите доступный класс хранилища
        resources:
          requests:
            storage: 10Gi

В приведенном выше списке ресурсов мы использовали StatefulSet создать OpenObserve, следует отметить, что необходимо настроить ZO_ROOT_USER_EMAIL и ZO_ROOT_USER_PASSWORD Две переменные среды используются для указания почту администратораипароль。Затемсуществовать PVC Укажите доступное из в шаблоне StorageClass, используемый для постоянного хранения данных.

Затем напрямую примените приведенный выше файл списка ресурсов:

Язык кода:javascript
копировать
$ kubectl apply -f openobserve.yaml
$ kubectl get pods -n openobserve
NAME            READY   STATUS    RESTARTS   AGE
openobserve-0   1/1     Running   0          2m31s
$ kubectl get svc -n openobserve
NAME          TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
openobserve   ClusterIP   None         <none>        5080/TCP   2m52s

Быстрый в использовании

Журнал OpenObserve, чтобы проверить успешность запуска:

Язык кода:javascript
копировать
$ kubectl logs -f openobserve-0 -n openobserve
[2023-08-04T10:18:06Z INFO  openobserve] Starting OpenObserve v0.5.1
[2023-08-04T10:18:06Z INFO  openobserve::service::db::user] get; org_id=Some("default") name="root@example.com"
[2023-08-04T10:18:06Z INFO  tracing::span] set;
[2023-08-04T10:18:06Z INFO  openobserve::service::db::user] Users Cached
# ......
[2023-08-04T10:18:06Z INFO  openobserve::common::meta::telemetry] sending event OpenObserve - Starting server
[2023-08-04T10:18:07Z INFO  actix_server::builder] starting 4 workers
[2023-08-04T10:18:07Z INFO  actix_server::server] Tokio runtime found; starting in existing Tokio runtime
[2023-08-04T10:18:07Z INFO  openobserve] starting HTTP server at: 0.0.0.0:5080, thread_id: 0
[2023-08-04T10:18:07Z INFO  openobserve] starting HTTP server at: 0.0.0.0:5080, thread_id: 0
[2023-08-04T10:18:07Z INFO  openobserve] starting HTTP server at: 0.0.0.0:5080, thread_id: 0

После запуска мы можем пройти kubectl port-forward Команда будет OpenObserve из 5080 Сопоставьте порт с локальным, а затем получите к нему доступ в браузере. http://localhost:5080 можно увидеть OpenObserve из UI интерфейс.

Язык кода:javascript
копировать
$ kubectl port-forward svc/openobserve 5080:5080 -n openobserve
Forwarding from 127.0.0.1:5080 -> 5080
Forwarding from [::1]:5080 -> 5080

OpenObserve Login

Используйте адрес электронной почты и пароль администратора, указанные выше, для входа в систему, после чего вы увидите основной интерфейс OpenObserve:

OpenObserve Web

Поскольку данных еще нет, на странице нет контента. ingestion На странице представлено Logs、Metrics、Traces данныеиз Различные способы приема:

Ingestion

Здесь мы можем сначала использовать JSON API Давайте загрузим несколько примеров данных журнала, чтобы понять это. OpenObserve изделать Как использовать。Первыйделатьиспользовать Внизкоманда лица Вниз Скачать образец журналаданные:

Язык кода:javascript
копировать
$ curl -L https://zinc-public-data.s3.us-west-2.amazonaws.com/zinc-enl/sample-k8s-logs/k8slog_json.json.zip -o k8slog_json.json.zip
$ unzip k8slog_json.json.zip

Затем используйте следующую команду будет выборка данных журнала, импортированных в OpenObserve середина:

Язык кода:javascript
копировать
$ curl http://localhost:5080/api/default/default/_json -i -u "root@example.com:root321"  -d "@k8slog_json.json"
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
content-length: 71
vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
content-type: application/json
date: Fri, 04 Aug 2023 10:46:46 GMT

{"code":200,"status":[{"name":"default","successful":3846,"failed":0}]}%

После успешного импорта квитанции можно обновить страницу. увидетьиметьданные Понятно:

OpenObserve Web

На странице существующего потока вы можете видеть, что мы импортировали изданную метаинформацию:

Транслировать

Затем вы можете переключиться на Logs Посмотреть данные журнала можно на странице:

OpenObserve Logs

Теперь мы можем запросить журнал в соответствии с прямыми требованиями. Некоторые часто используемые синтаксисы запросов выглядят следующим образом:

  • по стоимости error из Полнотекстовый поиск, существование используется в редакторе запросов match_all('error')
  • по стоимости error из Без учета регистра из Полнотекстовый поиск, используйте match_all_ignore_case('error')
  • по стоимости error для поиска по столбцу используйте str_match(fieldname, 'error'),Это лучше, чем match_all Более эффективен, поскольку существует в одном поле поиска.
  • хотетьпоиск code Столбец значения 200, используйте code=200
  • Обязательный столбец stream Столбец значениядля stderr,делатьиспользоватьstream='stderr'
  • хотетьсуществоватьбревно log столбецпоискиделатьиспользовать查询функцияextract_ip,делатьиспользовать extract_ip(log) | code=200

Разумеется, помимо логов OpenObserve Также поддерживает индикаторыиотслеживатьданные,Здесь больше нет демонстраций,Если вам интересно, вы можете попробовать сами.

Здесь мы просто кратко продемонстрируем OpenObserve метод использования изLog, мы можем использовать его позже Fluentbit、Vector Подобные инструменты будут Kubernetes Кластер из данных журнала отправляется на OpenObserve , так что следите за обновлениями!

Справочная документация: https://openobserve.ai/docs.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose