تكامل HOMER
تتناول هذه الوثيقة تكامل HOMER الاختياري لربط سجلات التطبيقات مع تتبع SIP.
نظرة عامة
يمكن لـ OmniTAS إرسال سجلات التطبيقات إلى خادم HOMER باستخدام بروتوكول HEP3 (بروتوكول تغليف هومر) عبر UDP. يتم ربط السجلات مع تتبع SIP باستخدام SIP Call-ID، مما يتيح رؤية شاملة لعملية المكالمات إلى جانب الإشارات.
كيفية العمل
- بيانات السجل الوصفية: أثناء معالجة المكالمات، يقوم OmniTAS بتعيين SIP Call-ID في بيانات Logger الوصفية
- التقاط السجل: يشترك وحدة Homer في رسائل السجل عبر PubSub
- التصفية: يتم إرسال السجلات التي تحتوي فقط على بيانات call_id الوصفية
- ترميز HEP3: يتم ترميز السجلات كحزم HEP3 مع نوع البروتوكول 100 (سجل)
- الربط: يقوم HOMER بربط السجلات مع تتبع SIP باستخدام Call-ID
التكوين
أضف تكوين homer_server إلى ملف config/runtime.exs الخاص بك:
config :tas,
homer_server: %{
host: "10.179.2.136",
port: 9060,
auth_key: nil,
capture_id: 2001
}
المعلمات
| المعلمة | النوع | مطلوب | الافتراضي | الوصف |
|---|---|---|---|---|
host | سلسلة | نعم | - | عنوان IP لخادم HOMER أو اسم المضيف |
port | عدد صحيح | لا | 9060 | منفذ UDP لاستقبال HEP |
auth_key | سلسلة | لا | nil | مفتاح مصادقة HEP اختياري. يجب تعيينه ليتطابق مع authkey في تكوين خادم heplify إذا كان مفعلًا |
capture_id | عدد صحيح | لا | 2001 | معرف وكيل الالتقاط. يظهر في واجهة HOMER لتحديد مصدر السجل |
تعطيل تكامل HOMER
لتعطيل تكامل HOMER، إما:
- إزالة تكوين
homer_serverبالكامل، أو - تعليق كتلة التكوين
عند التعطيل، لا يتم بدء وحدة Homer ولا يتم إرسال أي سجلات.
متطلبات خادم HOMER
يجب أن يكون خادم HOMER قيد التشغيل مع تمكين استقبال HEP على UDP.
تكوين heplify-server
تحقق من أن ملف heplify-server.toml الخاص بك يتضمن:
HEPAddr = "0.0.0.0:9060"
أنواع البروتوكولات المدعومة
ترسل OmniTAS السجلات مع نوع بروتوكول HEP 100، والذي يقوم خادم heplify بتوجيهه إلى logs_capture. تأكد من أن مخطط قاعدة بيانات HOMER يدعم تخزين السجلات.
ربط السجلات
حقن Call-ID التلقائي
يقوم OmniTAS تلقائيًا بحقن Call-ID في بيانات Logger الوصفية أثناء:
- معالجة مكالمات MO: عند معالجة المكالمات المنشأة من الهاتف المحمول
- معالجة مكالمات MT: عند معالجة المكالمات المنتهية إلى الهاتف المحمول
- أحداث المكالمات: عند التعامل مع أحداث الرد والانقطاع
تنسيق السجل
تتضمن السجلات المرسلة إلى HOMER:
| الحقل | الوصف |
|---|---|
| معرف الربط | SIP Call-ID لربط التتبع |
| الطابع الزمني | طابع زمني بدقة ميكروثانية |
| المستوى | مستوى السجل (تصحيح، معلومات، تحذير، خطأ) |
| الرسالة | محتوى رسالة السجل |
| عنوان IP المصدر | عنوان IP لخادم OmniTAS |
| معرف الالتقاط | معرف وكيل الالتقاط المكون |
مثال على سجل في HOMER
بعد معالجة مكالمة، يعرض HOMER البيانات المرتبطة:
[info] Processing MO call from: 61400123456 to: 61400654321
[debug] Sh lookup for caller: 61400123456
[info] OCS authorization: GRANTED (120 seconds)
[debug] Setting variable: hangup_case = none
تظهر هذه السجلات جنبًا إلى جنب مع رسائل SIP INVITE و200 OK وBYE في عرض تفاصيل المكالمات في HOMER.
تفاصيل بروتوكول HEP3
تقوم OmniTAS بتنفيذ HEP3 كما هو محدد بواسطة مشروع HOMER، ومتوافق مع وحدة siptrace في Kamailio.
أنواع الكتل المستخدمة
| معرف الكتلة | الاسم | الوصف |
|---|---|---|
| 0x0001 | عائلة IP | دائمًا 2 (IPv4) |
| 0x0002 | بروتوكول IP | دائمًا 17 (UDP) |
| 0x0003 | عنوان IPv4 المصدر | عنوان خادم OmniTAS |
| 0x0004 | عنوان IPv4 الوجهة | عنوان خادم HOMER |
| 0x0007 | منفذ المصدر | 0 (غير قابل للتطبيق للسجلات) |
| 0x0008 | منفذ الوجهة | منفذ HEP المكون |
| 0x0009 | الطابع الزمني بالثواني | ثواني الطابع الزمني لنظام Unix |
| 0x000A | الطابع الزمني بالميكروثانية | مكون الميكروثانية |
| 0x000B | نوع البروتوكول | 100 (سجل) |
| 0x000C | معرف الالتقاط | capture_id المكون |
| 0x0011 | معرف الربط | SIP Call-ID |
| 0x000F | الحمولة | رسالة السجل |
| 0x000E | مفتاح المصادقة | مصادقة اختيارية |
استكشاف الأخطاء وإصلاحها
السجلات غير الظاهرة في HOMER
الأعراض: تكتمل المكالمات بنجاح ولكن لا تظهر أي سجلات في HOMER
الأس��اب المحتملة:
- خادم HOMER غير قابل للوصول على المنفذ المكون
- جدار الحماية يحظر حركة مرور UDP إلى المنفذ 9060
- خادم heplify غير مكون لاستقبال HEP
- السجلات تفتقر إلى بيانات call_id الوصفية
الحل:
- تحقق من الاتصال الشبكي:
nc -zvu <homer_host> 9060 - تحقق من أن خادم heplify يستمع:
ss -ulnp | grep 9060 - راجع سجلات خادم heplify للبحث عن حزم الوارد
- تحقق من ظهور call_id في سجلات OmniTAS (تحقق من
call_id=في مخرجات السجل)
فشل المصادقة
الأعراض: تظهر سجلات خادم heplify أخطاء مصادقة
الأسباب المحتملة:
- عدم تطابق auth_key بين OmniTAS و heplify-server
- تم تكوين مفتاح المصادقة على جانب واحد ولكن ليس على الآخر
الحل:
- إذا لم يكن لدى خادم heplify مفتاح مصادقة مكون، قم بتعيين
auth_key: nilفي OmniTAS - إذا كان خادم heplify يتطلب مصادقة، قم بتكوين مفتاح متطابق في كلا النظامين
الربط المفقود
الأعراض: تظهر السجلات في HOMER ولكنها غير مرتبطة بتتبع SIP
الأسباب المحتملة:
- عدم تطابق تنسيق Call-ID بين SIP والسجلات
- تكوين الربط في HOMER
الحل:
- تحقق من أن Call-ID في السجلات يتطابق تمامًا مع رأس SIP Call-ID
- تحقق من إعدادات الربط في HOMER لجدول logs_capture
المقاييس
عند تمكين تكامل HOMER، راقب هذه المؤشرات:
سجلات OmniTAS
راقب التحذيرات التي تشير إلى فشل نقل HEP:
[warning] Failed to send HEP packet to Homer: <reason>
مقاييس خادم heplify
إذا كانت مقاييس Prometheus مفعلة على خادم heplify، راقب:
heplify_packets_total{type="log"}- إجمالي حزم السجل المستلمةheplify_packets_dropped_total- الحزم المفقودة (أخطاء في التخزين المؤقت/التحليل)
مرجع الهندسة المعمارية
تفاعل المكونات
تدفق البيانات
انظر أيضًا
- مشروع HOMER - مشروع مفتوح المصدر لالتقاط ومراقبة VoIP/RTC
- مواصفات بروتوكول HEP - وثائق بروتوكول HEP/EEP
- خادم heplify - خادم التقاط HEP