دمج Splunk HTTP Event Collector مع Apache APISIX
API7.ai
February 10, 2022
تزداد تعقيد الأنظمة مع تطور التكنولوجيا وتطور هندسة المؤسسات. يمكن أن تدعم السجلات وتكون متوافقة مع محركات التحليل المختلفة لتقليل التكلفة على المستخدمين في عملية الاختيار والتشغيل والصيانة. يلعب التحليل والمراقبة القائمة على السجلات دورًا مهمًا جدًا كحجر أساس لضمان استقرار النظام.
Apache APISIX ليست فقط بوابة API ذات أداء استثنائي، ولكنها أيضًا تدعم معظم حلول التسجيل المفتوحة المصدر والتجارية الرئيسية من خلال التواصل مع مستخدمي المجتمع حول تشغيل وصيانة البيانات والتسجيل، بما في ذلك: HTTP Logger، TCP Logger، Kafka Logger، UDP Logger، RocketMQ Logger، SkyWalking Logger، Aliyun Cloud Logging(SLS)، Google Cloud Logging، إلخ.
لدينا الآن إضافة جديدة إلى مصفوفة دعم Apache APISIX Logger: Splunk HEC Logging.
تشرح هذه المقالة كيفية تكوين واستخدام خدمة Splunk HEC في Apache APISIX.
حول Splunk HTTP Event Collector
Splunk هو محرك بحث نصي كامل لبيانات الآلة يمكن استخدامه لجمع وفهرسة وبحث وتحليل البيانات من مجموعة متنوعة من التطبيقات. وفقًا لتصنيف محركات البحث من DB Engines، يحتل Splunk حاليًا المرتبة الثانية وهو برنامج بحث نصي كامل مستخدم على نطاق واسع. مثل ElasticSearch، يوفر Splunk تدفق بيانات شبه فوري يوفر نتائج بحث دون انقطاع.
Splunk HTTP Event Collector (HEC) هو جامع أحداث HTTP مقدّم من Splunk يوفر القدرة على إرسال البيانات وأحداث التطبيقات إلى Splunk باستخدام بروتوكول HTTP(S).
حول مكون splunk-hec-logging
يستخدم splunk-hec-logging لإعادة توجيه سجلات طلبات Apache APISIX إلى Splunk للتحليل والتخزين. عند التمكين، ستأخذ Apache APISIX معلومات سياق الطلب خلال مرحلة السجل، وتقوم بتسلسلها إلى تنسيق بيانات حدث Splunk وإرسالها إلى قائمة الانتظار المجمعة. يتم إرسال البيانات في قائمة الانتظار إلى Splunk HEC عند تشغيل الحد الأقصى لسعة المعالجة لكل دفعة من قائمة الانتظار المجمعة، أو عند الوصول إلى الحد الأقصى للوقت لتحديث المخزن المؤقت.
كيفية استخدام مكون splunk-hec-logging
تكوين Splunk
نشر Splunk Enterprise
يرجى الرجوع إلى دليل تثبيت Splunk للنشر. ستوضح هذه المقالة النشر عبر Docker.
معلمات أمر Docker هي كما يلي.
docker run -p 18088:8088 -p 18000:8000 \ # 8088 هو منفذ HEC، 8000 هو منفذ واجهة الإدارة الخلفية
-e "SPLUNK_PASSWORD=your-password" \ # كلمة مرور تسجيل الدخول للمشرف
-e "SPLUNK_START_ARGS=--accept-license" \ # قبول شروط الترخيص (سيوفر Splunk ترخيصًا تجريبيًا للمؤسسة افتراضيًا)
-e "SPLUNK_HEC_TOKEN=your-hec-token" \ # تعيين رمز HEC الافتراضي، سيؤدي هذا إلى إنشاء HEC افتراضي بعد التكوين
-itd --rm --name splunk-example splunk/splunk:latest
تم شرح معلمات الأمر في وثائق Docker Splunk.
تكوين Splunk HEC
تم تكوين وإنشاء HEC الافتراضي بالفعل في Docker، لذلك لن نتعمق في عملية الإنشاء هنا. للحصول على تفاصيل حول عملية الإنشاء اليدوي، يرجى الرجوع إلى الوثائق: إعداد واستخدام جامع أحداث HTTP في واجهة ويب Splunk.
تسجيل الدخول إلى Splunk Enterprise والتحقق من HEC
قم بالوصول إلى المنفذ المعين لـ Docker من خلال المتصفح. نظرًا لأنك بحاجة إلى تعيين منفذ 8000
لواجهة الإدارة الخلفية إلى منفذ 18000
على المضيف، يمكنك الوصول إليه من المتصفح باستخدام "عنوان الحلقة بالإضافة إلى المنفذ" على المضيف أثناء التشغيل. على سبيل المثال: http://127.0.0.1:18000
، اسم المستخدم الافتراضي لتسجيل الدخول هو admin، وكلمة المرور هي قيمة SPLUNK_PASSWORD
التي تم تعيينها في المتغير البيئي في المثال أعلاه.
كما هو موضح في الشكل أدناه، يعني ذلك نجاح تسجيل الدخول.
انقر على "الإعدادات > مدخلات البيانات" في الجزء العلوي الأيمن من الشاشة للتحقق من نجاح تعيين HEC الافتراضي.
يمكننا بالفعل رؤية عدد HECs في عمود المدخلات من جامع أحداث HTTP، مما يشير إلى نجاح الإعداد.
في هذه المرحلة، يمكنك النقر على جامع أحداث HTTP للدخول إلى قائمة تفاصيل HEC لعرض معلومات الرمز المميز لـ HECs.
Token Values هي قيمة SPLUNK_HEC_TOKEN
التي تم تكوينها في المتغير البيئي لـ Docker أعلاه.
تكوين Apache APISIX
تمكين مكون splunk-hec-logging
قم بتشغيل الأمر التالي لتمكين مكون splunk-hec-logging
.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"splunk-hec-logging":{
"endpoint":{
// نقطة نهاية HEC
"uri":"http://127.0.0.1:18088/services/collector",
// رمز HEC
"token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
},
// // الحد الأقصى للوقت (بالثواني) لتحديث مخزن قائمة الانتظار المجمعة
"inactive_timeout":2,
// الحد الأقصى لعدد إدخالات السجل لكل قائمة انتظار مجمعة
"batch_max_size":10
}
},
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"uri":"/splunk.do"
}'
يتم وصف معلمات المكون في الجدول التالي.
الاسم | مطلوب | القيمة الافتراضية | الوصف |
---|---|---|---|
endpoint | نعم | N/A | معلومات تكوين نقطة نهاية Splunk HEC |
endpoint.uri | نعم | N/A | واجهة برمجة تطبيقات جمع أحداث Splunk HEC |
endpoint.token | نعم | N/A | رمز هوية Splunk HEC |
endpoint.channel | لا | N/A | معرف قناة إرسال Splunk HEC، راجع: حول تأكيد مفهرس جامع أحداث HTTP |
endpoint.timeout | لا | 10 | مهلة إرسال بيانات Splunk HEC بالثواني. |
ssl_verify | لا | TRUE | تمكين المصادقة SSL، راجع: وثائق OpenResty. |
max_retry_count | لا | 0 | الحد الأقصى لعدد المحاولات قبل الإزالة من خط المعالجة. |
retry_delay | لا | 1 | عدد الثواني التي يجب تأخير تنفيذ العملية إذا فشل التنفيذ. |
buffer_duration | لا | 60 | الحد الأقصى لمدة (بالثواني) لأقدم إدخال في الدفعة التي يجب معالجتها أولاً. |
inactive_timeout | لا | 5 | الحد الأقصى للوقت لتحديث المخزن المؤقت بالثواني. |
batch_max_size | لا | 1000 | الحد الأقصى لعدد الإدخالات لكل قائمة انتظار مجمعة. |
إرسال الطلب
قم بتشغيل الأمر التالي لإرسال طلب إلى Splunk.
$ curl -i http://127.0.0.1:9080/splink.do
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Fri, 10 Dec 2021 09:57:52 GMT
Server: APISIX/2.11.0
Hello, Splunk HEC Logging
التحقق من السجل
قم بتسجيل الدخول إلى وحدة تحكم Splunk وانقر على "البحث والإبلاغ".
اكتب source="apache-apisix-splunk-hec-logging"
في مربع البحث للاستعلام عن سجلات الطلبات المرسلة.
تعطيل مكون splunk-hec-logging
قم بإزالة تكوين splunk-hec-logging
لتعطيل المكون.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
}
}'
الخلاصة
تعمل Apache APISIX حاليًا أيضًا على إضافة مكونات إضافية لدعم التكامل مع المزيد من الخدمات، لذا إذا كنت مهتمًا، فلا تتردد في بدء نقاش في مناقشات GitHub أو التواصل عبر قائمة البريد.