دمج Splunk HTTP Event Collector مع Apache APISIX

API7.ai

February 10, 2022

Ecosystem

تزداد تعقيد الأنظمة مع تطور التكنولوجيا وتطور هندسة المؤسسات. يمكن أن تدعم السجلات وتكون متوافقة مع محركات التحليل المختلفة لتقليل التكلفة على المستخدمين في عملية الاختيار والتشغيل والصيانة. يلعب التحليل والمراقبة القائمة على السجلات دورًا مهمًا جدًا كحجر أساس لضمان استقرار النظام.

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 التي تم تعيينها في المتغير البيئي في المثال أعلاه.

كما هو موضح في الشكل أدناه، يعني ذلك نجاح تسجيل الدخول.

واجهة مستخدم Splunk

انقر على "الإعدادات > مدخلات البيانات" في الجزء العلوي الأيمن من الشاشة للتحقق من نجاح تعيين HEC الافتراضي.

HEC الافتراضي

يمكننا بالفعل رؤية عدد HECs في عمود المدخلات من جامع أحداث HTTP، مما يشير إلى نجاح الإعداد.

عدد HECs

في هذه المرحلة، يمكنك النقر على جامع أحداث HTTP للدخول إلى قائمة تفاصيل HEC لعرض معلومات الرمز المميز لـ HECs.

معلومات الرمز المميز لـ 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 وانقر على "البحث والإبلاغ".

وحدة تحكم 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 أو التواصل عبر قائمة البريد.

مقالات ذات صلة

Tags: