تخطَّ إلى المحتوى

OpenObserve - منصة الملاحظة على نطاق Petabyte (Cheatsheet)

OpenObserve - منصة الملاحظة على نطاق Petabyte (Cheatsheet)

OpenObserve (O2) هي منصة ملاحظة مفتوحة المصدر للسجلات والمقاييس والتتبعات، مكتوبة بـ Rust. اختيارها التصميمي المحدد هو تخزين البيانات في تخزين الكائنات (S3, GCS, MinIO) في Parquet مضغوط بدلاً من الأقراص المحلية المكلفة — الأساس لمطالبتها بانخفاض كبير في تكاليف التخزين مقارنة بـ Elasticsearch-based stacks. يأتي كملف ثنائي واحد مع واجهة مستخدم مدمجة، ويتحدث OpenTelemetry بشكل أصلي، ويستعلم بـ SQL.

التثبيت

الطريقةالأمر
ملف ثنائيتحميل من GitHub Releases، ثم ./openobserve
Dockerdocker run -d -p 5080:5080 -e ZO_ROOT_USER_EMAIL=a@b.c -e ZO_ROOT_USER_PASSWORD=pass public.ecr.aws/zinclabs/openobserve:latest
Kubernetesمخطط Helm متاح
واجهة المستخدمhttp://localhost:5080
التحققتسجيل الدخول مع بيانات الاعتماد الجذر التي حددتها

أوضاع التخزين

الوضعالاستخدام
قرص محليعقدة واحدة، نشرات dev/صغيرة
S3 / GCS / Azure Blobالإنتاج، الاحتفاظ بعيد المدى رخيص
MinIOتخزين كائنات مستضاف ذاتياً
# أشر إلى S3 لتخزين الإنتاج
export ZO_LOCAL_MODE=false
export ZO_S3_BUCKET_NAME=my-o2-bucket
export ZO_S3_REGION_NAME=us-east-1

استيعاب البيانات

المصدركيف
OpenTelemetryأرسل OTLP إلى /api/{org}/v1/traces, /v1/logs, /v1/metrics
HTTP JSONPOST /api/{org}/{stream}/_json
Fluent Bit / Vectorبلاجين إخراج إلى نقطة نهاية HTTP من O2
Prometheus remote write/api/{org}/prometheus/api/v1/write
Syslogمستمع TCP/UDP
# السجلات المضغوطة بكمية كبيرة
curl -u "$USER:$PASS" -X POST \
  "http://localhost:5080/api/default/app_logs/_json" \
  -H "Content-Type: application/json" \
  -d '[{"level":"error","message":"db timeout","service":"api"}]'

الاستعلام (SQL)

-- ابحث عن أخطاء حديثة لخدمة واحدة
SELECT * FROM app_logs
WHERE level = 'error' AND service = 'api'
ORDER BY _timestamp DESC
LIMIT 100;

-- عد الأخطاء لكل خدمة على مدى الوقت
SELECT service, count(*) AS errors
FROM app_logs
WHERE level = 'error'
GROUP BY service
ORDER BY errors DESC;
الميزةملاحظة
استعلامات SQLصيغة مألوفة على تدفقات السجل
البحث بنص كاملmatch_all('timeout')
نطاق زمنيمحدد في الواجهة أو عبر مرشحات _timestamp
استعلامات محفوظةاستعلامات قابلة لإعادة الاستخدام

المفاهيم الأساسية

المصطلحالمعنى
المنظمةأعلى مستوى مستأجر
التدفقتدفق البيانات المسمى (مثل فهرس)
المخططمستدل من البيانات المستوعبة
الدالةتحويل VRL المطبق عند الابتلاع أو الاستعلام
التنبيهاستعلام مجدول + وجهة

التنبيهات والرسوم البيانية

الإمكانيةكيف
تنبيه مجدولاستعلام + حد + فترة التقييم
تنبيه فوريتشغيل على السجلات المستوعبة المطابقة
الوجهاتWebhook, Slack, email, PagerDuty
لوحات تحكمبناء الألواح من استعلامات SQL
القوالبتنسيقات رسالة التنبيه القابلة لإعادة الاستخدام

وظائف الابتلاع (VRL)

# تحرير حقل واشتقاق واحد جديد عند الابتلاع
.email = "REDACTED"
.status_class = floor(.status / 100)

تتيح الدوال صرف PII أو إثراء السجلات قبل التخزين — أرخص من فعل ذلك في وقت الاستعلام.

OpenObserve مقابل البدائل

الجانبOpenObserveElasticsearch/ELKGrafana Loki
التخزينتخزين الكائنات (Parquet)فهارس القرص المحليتخزين الكائنات (chunks)
ملف التعريف التكلفةمنخفض جداًعاليمنخفض
الاستعلامSQLQuery DSL / KQLLogQL
الاختصاصالسجلات + المقاييس + التتبعاتالسجلات (+ APM)السجلات (مكدس Grafana للباقي)
الإعدادملف ثنائي واحدمكونات متعددةمكونات متعددة

اقترن مع OpenTelemetry للأداة؛ قارن مع Grafana Loki و Elasticsearch.

الموارد