Vector - خط أنابيب بيانات الملاحظة عالي الأداء (Cheatsheet)
Vector (بواسطة Datadog، مفتوح المصدر) هو خط أنابيب ملاحظة عالي الأداء ** مكتوب بـ Rust. يجمع السجلات والمقاييس والتتبعات من أي مصدر، يعيد تشكيلها من خلال تحويلات، وينقلها إلى أي بالوعة — الكل غير معتمد على البائع، بحيث يمكنك التبديل بين الخلفيات بدون إعادة أدوات مرة أخرى. عادة ما يستخدم جزء من CPU والذاكرة من Logstash أو Fluentd، والذي يأتي عندما يعمل عامل على كل عقدة.
التثبيت
| الطريقة | الأمر |
|---|
| سكريبت التثبيت | `curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev |
| Debian/Ubuntu | .deb من إصدارات Vector |
| macOS (Homebrew) | brew install vectordotdev/brew/vector |
| Docker | docker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine |
| التحقق | vector --version |
النموذج: المصادر → التحويلات → البالوعات
# vector.yaml
sources:
app_logs:
type: file
include: ["/var/log/app/*.log"]
transforms:
parse:
type: remap
inputs: ["app_logs"]
source: |
. = parse_json!(.message)
.env = "production"
del(.password)
sinks:
out:
type: elasticsearch
inputs: ["parse"]
endpoints: ["http://es:9200"]
| المرحلة | الغرض |
|---|
sources | مصدر البيانات |
transforms | تحليل، تصفية، إثراء، تحرير، تجميع |
sinks | حيث تذهب البيانات |
inputs | أسلاك المكونات إلى DAG |
المصادر الشائعة
| المصدر | يجمع |
|---|
file | ملفات السجل (tailing) |
journald | دفتر systemd |
kubernetes_logs | سجلات Pod مع البيانات الوصفية k8s |
docker_logs | سجلات الحاوية |
http_server | نقطة نهاية الدفع |
syslog | Syslog عبر TCP/UDP |
prometheus_scrape | استخراج نقاط نهاية المقاييس |
opentelemetry | استيعاب OTLP |
البالوعات الشائعة
| البالوعة | يرسل إلى |
|---|
elasticsearch | Elasticsearch/OpenSearch |
loki | Grafana Loki |
clickhouse | ClickHouse |
aws_s3 | S3 (أرشفة) |
prometheus_exporter | كشف المقاييس |
datadog_logs / splunk_hec | البواجهات الخلفية للبائعين |
console | stdout (تصحيح) |
blackhole | تجاهل (اختبار) |
VRL (Vector Remap Language)
تحويل remap حيث يحدث معظم العمل.
# تحليل، إثراء، تحرير، وإسقاط الضوضاء
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
| دالة VRL | الغرض |
|---|
parse_json!, parse_regex!, parse_grok! | هيكل النص الخام |
del(.field) | إزالة حقل (تحرير PII) |
to_int!, to_float! | إكراه النوع |
abort | إسقاط الحدث |
merge, flatten | إعادة تشكيل الكائنات |
التحويلات المفيدة
| التحويل | يفعل |
|---|
remap | إعادة تشكيل قائم على VRL (الحصان العامل) |
filter | الاحتفاظ بالأحداث المطابقة لشرط |
route | تقسيم التدفق إلى فروع مسماة |
aggregate | دحرجة المقاييس على فترة |
throttle | أحداث مزعجة بمعدل |
dedupe | إسقاط النسخ المكررة |
sample | الاحتفاظ بنسبة مئوية من الأحداث |
تشغيل Vector
| الأمر | الوصف |
|---|
vector --config vector.yaml | تشغيل مع إعداد |
vector validate | تحقق من الإعداد قبل النشر |
vector test | شغّل اختبارات الوحدة المحددة في الإعداد |
vector top | TUI مباشر للإنتاجية لكل مكون |
vector tap <component> | الأحداث المتدفقة عبر مكون |
--watch-config | إعادة تحميل ساخن على تغيير الإعداد |
# تصحيح ما الذي يصدره التحويل بالفعل
vector tap parse
الموثوقية
| الميزة | ملاحظة |
|---|
| مخازن الأقراص | نجاة من إعادة التشغيل/الضغط الخلفي (buffer.type: disk) |
| الإقرار | ضمانات التسليم من النهاية إلى النهاية |
| المقابلة التكيفية | معدل طلب البالوعة التلقائي |
| فحوصات الصحة | الفشل السريع على البالوعات التي لا يمكن الوصول إليها |
Vector مقابل البدائل
| الجانب | Vector | Fluent Bit | Logstash |
|---|
| اللغة | Rust | C | JRuby/JVM |
| استخدام الموارد | منخفض جداً | منخفض جداً | عالي |
| لغة التحويل | VRL (غني) | Lua/filters | Ruby/grok |
| أنواع البيانات | السجلات والمقاييس والتتبعات | السجلات والمقاييس | السجلات |
| الأفضل لـ | خطوط أنابيب غير معتمدة على البائع | عامل الحافة الفائق الخفة | مكدسات ELK الموروثة |
يغذي بالوعات مثل OpenObserve، Loki، و Elasticsearch؛ قارن مع Fluentd.
الموارد