مقدمة:
تُعد بيانات السجلات من أسرع قطاعات التخزين نموًا، ومن أكثرها تعقيدًا؛ إذ تتداخل استخدامات منتجات وحلول كثيرة وسط رسائل تسويقية مربكة.
يتناول المقال منصة Parseable لتخزين السجلات وقابلية الرصد، التي تركز على تجربة مستخدم أفضل، وواجهة سهلة النشر والاستخدام، وبنية سحابية أصلية بسيطة. وأوضح أيضًا إعدادها مع FluentBit لتخزين السجلات.
ما Parseable؟
هي منصة مجانية ومفتوحة المصدر، مكتوبة بلغة Rust، تستثمر تطورات ضغط البيانات وتخزينها والشبكات لتقديم خدمة تسجيل بسيطة وفعالة. وفيما يأتي أفكار بنائها الرئيسية.
الاستغناء عن الفهرسة
أدت محركات بحث نصية، مثل Elastic، دور منصات السجلات أيضًا. وهذا منطقي لأن البحث لازم للاستفادة من السجل؛ لكن للفهرسة كلفة مرتفعة، فهي كثيفة الاستخدام للمعالج وتبطئ الإدخال. كما تشغل بيانات الفهرس مساحة تقارب البيانات الخام، فتضاعف كلفة التخزين وتزيد التعقيد. وتغير Parseable ذلك؛ فصيغ الأعمدة مثل Parquet تتيح ضغط السجلات واستعلامها بكفاءة دون فهرستها.
ملكية البيانات ومحتواها
باستخدام Parquet وحفظها في حاويات تخزين كائني معيارية، يملك المستخدم بيانات السجلات ويصل إلى محتواها الفعلي كاملًا. ويمكنه بسهولة استخدام Spark أو Presto أو TensorFlow لاستخلاص قيمة إضافية، مما يفتح آفاقًا قوية للتحليل.
مخطط مرن
السجلات شبه منظمة عادة، وتتطور باستمرار. فقد يبدأ المطور بمخطط مثل
{
"Status": "Ready",
"Application": "Example"
}
ثم يتغير مع جمع معلومات أكثر إلى
{
"Status": "Ready",
"Application": {
"UserID": "3187F492-8449-4486-A2A0-015AE34F1D09",
"Name": "Example"
}
}
وتواجه فرق الهندسة وموثوقية المواقع SRE مشكلات المخططات باستمرار. وتعالجها Parseable بنهج يتيح تغيير المخطط أثناء العمل.
إدخال بسيط
آليات إدخال السجلات القائمة معقدة، بتعدد البروتوكولات والموصلات. وتسعى Parseable إلى التبسيط؛ فيمكن إرسال السجلات باستدعاءات HTTP POST، دون حزم تطوير SDK معقدة. وإذا أردت وكيلًا مثل FluentBit أو Vector أو LogStash أو غيره، فمعظم أدوات جمع السجلات الرئيسية تدعم HTTP، فتتوافق معها المنصة بالفعل.
البدء
يمكن تجربة Parseable بصورة Docker تعمل في الوضع التجريبي، مع تخزين كائني متاح للعامة
$ cat << EOF > parseable-env P_S3_URL=https://minio.parseable.io:9000 P_S3_ACCESS_KEY=minioadmin P_S3_SECRET_KEY=minioadmin P_S3_REGION=us-east-1 P_S3_BUCKET=parseable P_LOCAL_STORAGE=/data P_USERNAME=parseable P_PASSWORD=parseable EOF
$ mkdir -p /tmp/data
$ docker run \
-p 8000:8000 \
–env-file parseable-env \
-v /tmp/data:/data \
parseable/parseable:latest
سجل الدخول إلى الواجهة ببيانات التجربة المحددة، أي parseable للاسم وكلمة المرور. وتحوي التجربة بيانات جاهزة لأنها تشير إلى حاوية عامة. ويشدد الأصل على تغيير الحاوية وبيانات الاعتماد إلى مخزن خاص بك قبل إرسال أي بيانات. ويشرح التوثيق المرتبط في إحالات الأصل طريقة العمل والإدخال.
إعداد FluentBit لإرسال السجلات
يمكن استخدام Docker Compose لضبط التطبيقين وتيسير إنشائهما وإزالتهما عند الحاجة. احفظ الملف التالي باسم fluent-bit.conf داخل مجلد؛ وهو الإعداد المستخدم لإرسال البيانات:
[SERVICE] Flush 5 Daemon Off Log_Level debug
[INPUT]
Name dummy
Tag dummy
[OUTPUT]
Name http
Match *
Host parseable
http_User parseable
http_Passwd parseable
format json
Port 8000
Header X-P-META-meta1 value1
Header X-P-TAG-tag1 value1
URI /api/v1/logstream/fluentbit1
Json_date_key timestamp
Json_date_format iso8601
ثم احفظ الملف التالي باسم docker-compose.yaml في المجلد نفسه
version: "3.7"
services:
fluent-bit:
image: fluent/fluent-bit
volumes:
– ./fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
depends_on:
– parseable
parseable:
image: parseable/parseable
ports:
– “8000:8000”
environment:
– P_S3_URL=https://minio.parseable.io:9000
– P_S3_ACCESS_KEY=minioadmin
– P_S3_SECRET_KEY=minioadmin
– P_S3_REGION=us-east-1
– P_S3_BUCKET=parseable
– P_LOCAL_STORAGE=/tmp/data
– P_USERNAME=parseable
– P_PASSWORD=parseable
يشير ملف Compose إلى fluent-bit.conf ويمرره للحاوية ملفَّ إعداد. وتُنشر Parseable بالإعدادات الافتراضية نفسها في المثال السابق. ويمكن مشاهدة البيانات التي أرسلتها حاوية FluentBit في لوحة Parseable العاملة، التي يحدد الأصل عنوانها بـhttps://localhost:8000.
خاتمة
قدمنا نظرة أولى إلى منصة تخزين السجلات وتحليلها المفتوحة المبنية بـRust. ويتيح أمر Docker واحد البدء، وتجربة الواجهة، وتعيين FluentBit مصدرًا للبيانات. وإن بدا ذلك سهلًا جدًا، فربما حان وقت تجربة Parseable.
المراجع
- https://blog.openshift.com/microservices-how-to-explain-them-to-your-ceo/?intcmp=7016000000127cYAAQ
- https://www.openshift.com/promotions/microservices.html?intcmp=7016000000127cYAAQ
- https://www.redhat.com/en/services/training/do092-developing-cloud-native-applications-microservices-architectures?intcmp=7016000000127cYAAQ
- https://console.redhat.com?intcmp=7016000000127cYAAQ
- https://github.com/parseablehq/parseable
- https://www.parseable.io/docs/introduction
- https://localhost:8000