مسیر فایل: scripts/verify/verify_network_metrics.sh
۱. کاراییش به زبان ساده
پیامهای تاپیک Kafka به نام network-metrics را میخواند تا اپراتور ببیند Network Analyzer واقعاً چیزی publish کرده یا نه. میتواند payload را چاپ کند، فقط تعداد پیامها را بگوید، یا فقط پیامهای جدید از این لحظه به بعد را نشان دهد.
۲. کجا در پروژه کلی استفاده میشود؟
- بلافاصله بعد از
analyze_pcaps.shیا اجرای batch سرویس Composenetwork-analyzer. - قبل از عمیق شدن در مشکل «چرا در DB چیزی نیست»: اول باید ثابت شود پیام روی تاپیک هست.
- مکمل
verify_storage_consumer.sh: یکی سمت publish، یکی سمت persist. - تاریخی: وقتی هنوز لایهٔ storage کامل نبود، تاپیک تنها شواهد موجود بود؛ امروز هم برای جدا کردن «تولیدکننده خراب است» از «مصرفکننده خراب است» ضروری است.
۳. چیکارا میکند؟
- کانتینر Kafka را چک میکند.
- با ابزار CLI داخل کانتینر، از تاپیک (پیشفرض
network-metrics) میخواند. - حالتها:
- پیشفرض: از ابتدای تاپیک تا حداکثر N پیام (پیشفرض ۱۰)، با timeout.
--count-only: فقط شمارش، بدون dump محتوا.--latest: فقط پیامهایی که از الان به بعد میآیند (مناسب تأیید زنده بودن publish).
۴. تصمیمات معماری
- خواندن از داخل کانتینر Kafka: نیاز به نصب client روی host نیست؛ همان محیطی که بروکر دارد.
- جدا بودن از DB verify: اگر pipeline دو طرف داشته باشد و فقط یکی را چک کنید، تشخیص ریشهٔ خطا مبهم میشود.
--count-onlyبرای CI/عملیات سریع: dump کامل JSON روی ترمینال شلوغ و گاهی حاوی دادهٔ حجیم است.--latestبرای تأیید لحظهای: replay از beginning روی تاپیک قدیمی ممکن است پیامهای کهنه را «موفقیت کاذب» نشان دهد.- تاپیک قابل override: پیشفرض درست پروژه است، ولی برای دیباگ محیطهای آزمایشی انعطاف میماند.
۵. دستورات
# خواندن چند پیام از ابتدای تاپیک
./scripts/verify/verify_network_metrics.sh
# فقط تعداد پیامها
./scripts/verify/verify_network_metrics.sh --count-only
# منتظر یک پیام جدید بمان
./scripts/verify/verify_network_metrics.sh --latest --max-messages 1 --timeout 60
./scripts/verify/verify_network_metrics.sh --help
پیشنیاز: Kafka در حال اجرا. معمولاً بعد از:
./scripts/network/analyze_pcaps.sh
# یا:
# docker compose --profile tools run --rm network-analyzer