·11 daq·3 ko'rish

Asterisk'da qo'ng'iroq uzilishlari: monitoring va diagnostika

Asterisk'da qo'ng'iroq uzilishlarini aniqlash va bartaraf etish bo'yicha to'liq qo'llanma: NAT, SIP ALG, session timers, kodeklar, resurs yetishmovchiligi va proaktiv monitoring.

A
Astervis
Muhandislar va product jamoasi

Qo'ng'iroq uzilishi — Asterisk asosidagi har qanday call-markazdagi eng asabbuzar muammo. Har bir uzilgan qo'ng'iroq — bu yo'qotilgan mijoz muloqoti, asabiylashgan operator va katta ehtimol bilan qo'ldan boy berilgan daromad. Bundan ham yomoni, uzilishlarni aniqlash juda mashaqqatli: ularning ortida o'nlab turli sabab turishi mumkin — oddiy NAT xatolaridan tortib tarmoq sifatiga bog'liq nozik muammolargacha.

Ushbu qo'llanmada Asterisk'dagi qo'ng'iroq uzilishlarining barcha keng tarqalgan sabablari ko'rib chiqiladi, aniq diagnostika buyruqlari va tayyor konfiguratsiya tuzatishlari beriladi, shuningdek muammolarni mijozlaringiz sezishidan oldin ilg'ab olish uchun proaktiv monitoringni qanday sozlash ko'rsatiladi.

Asterisk nima uchun qo'ng'iroqni uzadi

Tuzatishlarga o'tishdan avval qo'ng'iroqning yo'lini tushunib olish foydali. Asterisk'dagi qo'ng'iroq uchta alohida bosqichdan o'tadi va uzilish ularning istalganida yuz berishi mumkin:

  1. Qo'ng'iroqni o'rnatish (INVITE, 200 OK, ACK): bu yerdagi uzilishlar bir lahza ulanib, darhol uzilib qoladigan qo'ng'iroq ko'rinishida bo'ladi — odatda 0–5 soniya ichida.
  2. Media almashinuvi (RTP audio oqimlari): suhbatning o'zi davomidagi uzilishlar, ko'pincha 15, 30 yoki 60 soniyadan keyin — yoki tasodifiy oraliqlarda.
  3. Sessiyani ushlab turish (re-INVITE, OPTIONS, session timers): aniq bashorat qilinadigan oraliqlarda, masalan roppa-rosa 15 yoki 30 daqiqada uziladi.

Har bir bosqichning o'z nosozlik ssenariylari bor. Ularni tartib bilan ko'rib chiqamiz.

1-sabab: NAT'dan o'tish muammolari

Belgilari: qo'ng'iroq roppa-rosa 30 soniyadan keyin uziladi. Uzilishdan oldin ovoz bir tomonlama bo'ladi. Lokal tarmoqda hammasi ishlaydi, uzoqdagi ichki raqamlarda esa yo'q.

NAT — Asterisk'dagi qo'ng'iroq uzilishlarining birinchi raqamli sababi. Asterisk serveri NAT-router ortida turganda, SIP signalizatsiya va RTP media oqimlari ichida tashqi qurilmalar yeta olmaydigan ichki IP-manzillar tashiladi.

Diagnostika

Joriy NAT konfiguratsiyasini tekshiring:

# For chan_sip (legacy) asterisk -rx "sip show settings" | grep -i nat # For chan_pjsip (modern) asterisk -rx "pjsip show endpoint <endpoint_name>"

Aslida nima sodir bo'layotganini ko'rish uchun SIP debug'ni yoqing:

asterisk -rx "pjsip set logger on" # Test qo'ng'iroq qiling, so'ng SIP sarlavhalarida ichki IP bor-yo'qligini tekshiring # Contact: va Via: sarlavhalarida 192.168.x.x yoki 10.x.x.x manzillarini qidiring

Yechim

pjsip.conf uchun (Asterisk 16+ da tavsiya etiladi):

[transport-udp] type=transport protocol=udp bind=0.0.0.0 external_media_address=YOUR.PUBLIC.IP external_signaling_address=YOUR.PUBLIC.IP local_net=192.168.0.0/16 local_net=10.0.0.0/8 local_net=172.16.0.0/12 [endpoint-template](!) type=endpoint direct_media=no rtp_symmetric=yes force_rport=yes rewrite_contact=yes

sip.conf uchun (eski usul):

[general] externip=YOUR.PUBLIC.IP localnet=192.168.0.0/255.255.0.0 localnet=10.0.0.0/255.0.0.0 nat=force_rport,comedia directmedia=no

Muhim jihat: direct_media=no (eski sintaksisda canreinvite=no) butun RTP'ni Asterisk orqali o'tkazadi. Bu ko'proq resurs talab qiladi, lekin NAT bilan bog'liq uzilishlarning 90 foizini hal qiladi.

2-sabab: SIP ALG (Application Layer Gateway)

Belgilari: tasodifiy uzilishlar. Ba'zi tarmoqlardan qo'ng'iroq o'tadi, boshqalaridan esa yo'q. SIP sarlavhalari buzilgan — portlar yoki IP'lar Asterisk yuborgan qiymatlarga mos kelmaydi.

Ko'plab uy va biznes routerlarida SIP ALG mavjud: u paket sarlavhalarini qayta yozib, SIP trafikka "yordam berishga" urinadi. Amalda esa SIP ALG deyarli har doim hal qilganidan ko'ra ko'proq muammo keltirib chiqaradi.

Diagnostika

Asterisk nima yuborayotganini uzoqdagi qurilma nima qabul qilayotgani bilan solishtiring:

# Asterisk serverida SIP trafikni ushlaymiz tcpdump -i eth0 -n -s 0 port 5060 -w /tmp/sip_capture.pcap # Wireshark yoki sngrep orqali tahlil qilamiz sngrep -I /tmp/sip_capture.pcap

Yechim

Router yoki firewall'da SIP ALG'ni o'chiring:

  • Linux iptables: modprobe -r nf_nat_sip nf_conntrack_sip
  • pfSense: System, Advanced, Firewall and NAT, Disable Firewall Scrub belgisini olib tashlang
  • Ubiquiti/EdgeRouter: set system conntrack modules sip disable
  • Aksariyat uy routerlari: firewall sozlamalarida SIP ALG, SIP Passthrough yoki VoIP Passthrough bandlarini toping va o'chiring

3-sabab: session timers qiymatlarining mos kelmasligi

Belgilari: qo'ng'iroq roppa-rosa 15 daqiqada, 30 daqiqada yoki boshqa bashorat qilinadigan oraliqda uziladi.

SIP session timers (RFC 4028) sessiyani vaqti-vaqti bilan yangilab, "o'lik" qo'ng'iroqlarni aniqlash uchun ishlatiladi. Agar Asterisk va uzoqdagi qurilmadagi taymer qiymatlari kelishmasa, tomonlardan biri sessiyani muddati o'tgan deb hisoblab, qo'ng'iroqni tugatadi.

Diagnostika

asterisk -rx "pjsip show endpoint <endpoint>" | grep -i timer grep -i "session-expires" /var/log/asterisk/full

Yechim

; pjsip.conf [endpoint-template](!) type=endpoint timers=no ; session timers'ni butunlay o'chirish ; YOKI ularni to'g'ri sozlash: timers=yes timers_min_se=90 ; Sessiyaning minimal amal qilish muddati (soniyalarda) timers_sess_expires=1800 ; Sessiya muddati (standart 1800 = 30 daqiqa)

Agar SIP provayderingiz session timers talab qilsa, uning Min-SE qiymatiga moslashtiring:

timers_min_se=900 ; Provayder minimumiga moslash (ko'pincha 900s = 15 daqiqa) timers_sess_expires=1800 ; min_se dan yuqoriroq qilib qo'ying

4-sabab: kodeklarni kelishishdagi nosozliklar

Belgilari: qo'ng'iroq ulanadi, lekin darhol uziladi (1–3 soniya ichida). Umuman ovoz yo'q. Trasirovkalarda SIP 488 Not Acceptable Here ko'rinadi.

Asterisk va uzoqdagi qurilma umumiy audio kodek bo'yicha kelisha olmasa, qo'ng'iroq yo umuman ulanmaydi, yo media sessiya boshlanishi bilan uzilib ketadi.

Diagnostika

asterisk -rx "pjsip show endpoint <endpoint>" | grep -i allow asterisk -rx "core show channels verbose"

Yechim

Ikkala tomonda kamida bitta umumiy kodek borligiga ishonch hosil qiling:

; pjsip.conf [endpoint-template](!) type=endpoint allow=!all,g722,ulaw,alaw ; g722 ustuvor (keng polosali), zaxira sifatida ulaw/alaw

Maslahat: tartib muhim. Ro'yxatdagi birinchi kodek ustuvor hisoblanadi. Eng sifatli kodekni birinchi qilib qo'ying.

5-sabab: resurslarning yetishmasligi

Belgilari: yuklama ortgan sari uzilishlar ko'payadi. Eng gavjum soatlarda Asterisk javob bermay qoladi. Uzilishdan oldin ovoz sifati pasayadi — nutq uzuq-yuluq va "robot"simon bo'lib qoladi.

Asterisk protsessorga talabchan, ayniqsa turli kodeklar o'rtasida transkodlash yoki suhbatlarni yozib olish paytida. CPU, xotira yoki fayl deskriptorlarining tugashi muqarrar ravishda qo'ng'iroq uzilishlariga olib keladi.

Navbatlarda nima sodir bo'layotganini taxmin qilishdan charchadingizmi?

Astervis sizning Asterisk PBX'ingiz uchun 30+ realtime grafik, operator KPI va CRM-integratsiya beradi. On-premise. 5 daqiqada o'rnatiladi. $119/oydan flat operatorlar soni cheklanmagan.

Bepul sinab ko'rish

Diagnostika

asterisk -rx "core show channels count" asterisk -rx "core show uptime" top -bn1 | head -20 free -h ulimit -n # Fayl deskriptorlari limiti ss -unp | grep asterisk | wc -l

Yechim

  1. Fayl deskriptorlari limitini oshiring:
# /etc/security/limits.conf asterisk soft nofile 65536 asterisk hard nofile 65536
  1. Keraksiz transkodlashdan qoching — qo'ng'iroqning ikkala tomonida bir xil kodekdan foydalaning.

  2. RTP port diapazonini optimallashtiring:

; rtp.conf [general] rtpstart=10000 rtpend=20000 ; 10 000 port = 5 000 bir vaqtdagi qo'ng'iroq
  1. CPU yuklamasini kuzating — agar Asterisk muttasil 80% dan ortiq protsessor band qilsa, gorizontal masshtablang yoki jihozni yangilang.

6-sabab: firewall va tarmoq muammolari

Belgilari: tarmoqdagi hodisalar bilan mos keladigan vaqti-vaqti bilan yuz beradigan uzilishlar. Uzilishlar hamma emas, ayrim trunklarga ta'sir qiladi. Uzilishdan oldin ovozda uzilishlar yoki bir tomonlama ovoz.

UDP ulanishlarini to'g'ri kuzatmaydigan firewall'lar RTP paketlarini tashlab yubora boshlaydi. Tarmoq tiqilinchi, jitter va paket yo'qotishlari ovoz sifatini buzadi va oxir-oqibat qo'ng'iroqni uzadi.

Diagnostika

ping -c 100 provider.sip.address | tail -5 cat /proc/sys/net/netfilter/nf_conntrack_udp_timeout cat /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream asterisk -rx "rtp show stats"

Yechim

# UDP ulanishlarini kuzatish taymautini oshiramiz (standart 30s qo'ng'iroqlar uchun juda kam) echo 180 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout echo 180 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream # /etc/sysctl.conf da doimiy qilib mustahkamlaymiz net.netfilter.nf_conntrack_udp_timeout=180 net.netfilter.nf_conntrack_udp_timeout_stream=180

Firewall quyidagilarga ruxsat berishiga ishonch hosil qiling:

  • SIP signalizatsiya: UDP/TCP 5060 (yoki o'zingizning nostandart portingiz)
  • RTP media: UDP 10000-20000 (rtp.conf dagi diapazonga mos bo'lsin)
  • TLS/SRTP: shifrlangan SIP uchun TCP 5061

7-sabab: qualify va keep-alive nosozliklari

Belgilari: pjsip show endpoints chiqishida qurilmalar Unreachable yoki UNKNOWN sifatida ko'rinadi. Ayrim ichki raqamlarga qo'ng'iroqlar o'tmaydi, qolganlari esa ishlaydi.

Asterisk qurilmalar hamon mavjudligini tekshirish uchun OPTIONS yoki NOTIFY xabarlarini yuboradi. Agar qurilma qualify tekshiruvlariga javob bermasa, Asterisk uni mavjud emas deb belgilaydi.

Diagnostika

asterisk -rx "pjsip show endpoints" | grep -E "Unavail|Unreachable" asterisk -rx "pjsip show aor <aor_name>"

Yechim

; pjsip.conf [aor-template](!) type=aor qualify_frequency=60 ; Har 60 soniyada tekshirish qualify_timeout=5.0 ; Javobni 5 soniya kutish max_contacts=1

Beqaror tarmoqlar uchun taymautni oshiring:

qualify_timeout=10.0 ; Yuqori kechikishli ulanishlar uchun yumshoqroq

Proaktiv monitoring: uzilishni sodir bo'lgunicha to'xtating

Uzilishlar bilan keyin — mijozlar shikoyat qilganidan so'ng — kurashish qimmat va asabbuzar ish. Haqiqiy yechim — sifat pasayishini u uzilishga aylanmasidan oldin ilg'ab oladigan proaktiv monitoring.

Nimani kuzatish kerak

MetrikaNima uchun muhimOgohlantirish chegarasi
Faol kanallarQuvvatni rejalashtirishMaksimumning 80% dan ortiq
Qo'ng'iroq davomiyligi taqsimotiUzilishlar qisqa qo'ng'iroq bo'lib ko'rinadi10s dan qisqa qo'ng'iroqlar keskin ko'payishi
ASR (Answer-Seizure Ratio)Amalga oshmagan qo'ng'iroqlar ulushi90% dan past
ACD (Average Call Duration)Keskin tushish muammodan darak beradiOdatdagining 50% idan past
RTP paket yo'qotishlariOvoz sifati1% dan yuqori
JitterOvoz sifati30ms dan yuqori
SIP javob kodlariXatolik naqshlari408, 480, 503 keskin ko'payishi
Trunk registratsiya holatiUlanish barqarorligiRo'yxatdan o'tmagan istalgan trunk
CPU/xotira yuklamasiResurs yetishmovchiligiCPU 80% dan yuqori

CDR ma'lumotlari bo'yicha uzilishlarni tahlil qilish

CDR (Call Detail Records) bazangizda qimmatli tergov materiali saqlanadi. Uzilish naqshlarini topish uchun so'rov yuboring:

-- G'ayritabiiy qisqa davomiylikdagi qo'ng'iroqlarni topamiz (ehtimoliy uzilishlar) SELECT calldate, src, dst, duration, disposition, channel FROM cdr WHERE duration < 10 AND disposition = 'ANSWERED' AND calldate > NOW() - INTERVAL 24 HOUR ORDER BY calldate DESC; -- Soatlar kesimida uzilish ulushi (eng muammoli vaqtni topamiz) SELECT HOUR(calldate) as hour, COUNT(*) as total_calls, SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) as short_calls, ROUND(SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as drop_rate_pct FROM cdr WHERE calldate > NOW() - INTERVAL 7 DAY GROUP BY HOUR(calldate) ORDER BY drop_rate_pct DESC; -- Trunklar kesimida uzilish ulushi (muammoli provayderlarni aniqlaymiz) SELECT SUBSTRING_INDEX(channel, '-', 1) as trunk, COUNT(*) as total_calls, SUM(CASE WHEN duration < 10 AND disposition = 'ANSWERED' THEN 1 ELSE 0 END) as potential_drops, ROUND(AVG(duration), 1) as avg_duration FROM cdr WHERE calldate > NOW() - INTERVAL 30 DAY GROUP BY trunk ORDER BY potential_drops DESC;

Uzilishlarni avtomatik aniqlash uchun Astervis'dan foydalanish

CLI buyruqlari va SQL so'rovlari bir martalik diagnostika uchun yaxshi, biroq uzluksiz monitoring uchun ular masshtablanmaydi. Astervis Asterisk asosidagi call-markazlar uchun maxsus ishlab chiqilgan real vaqt dashboardlarini beradi va bu jarayonni to'liq avtomatlashtiradi:

  • Real vaqtda qo'ng'iroq monitoringi — jonli dashboardda har bir faol qo'ng'iroq, uning davomiyligi, kodegi va sifat metrikalari ko'rinadi
  • Uzilishlarni avtomatik aniqlash — Astervis g'ayritabiiy qisqa qo'ng'iroqlarni belgilab qo'yadi va issiqlik xaritalari orqali ayrim trunklardagi muammolarni ko'rsatadi: uzilishlar qachon va qayerda yuz berayotgani darhol ma'lum bo'ladi
  • Operatorlar ishini kuzatish — uzilishlarni aniq operatorlar, navbatlar yoki vaqt oraliqlari bilan solishtirib, muammo tizimlimi yoki alohida xodimdami — aniqlab olish mumkin
  • Trunklar holati monitoringi — har bir trunk bo'yicha registratsiya holati, qo'ng'iroqlar hajmi va sifat metrikalari, trunk ishdan chiqsa esa bir zumda ogohlantirish
  • Tarixiy analitika — 30+ grafik: qo'ng'iroqlar hajmi dinamikasi, navbatdagi kutish vaqti, operator KPI'lari va boshqalar — hammasi bitta qator SQL yozmasdan

Astervis Asterisk serveringizga bitta o'rnatish buyrug'i bilan bir necha daqiqada ulanadi va darhol ma'lumot yig'a boshlaydi. Yuqoridagi qo'lda diagnostika qadamlari bilan birgalikda siz ham chuqur tahlil imkoniyatini, ham kelajakdagi muammolarning oldini oladigan avtomatik monitoringni qo'lga kiritasiz.

Bepul 14 kunlik sinov muddatini boshlang

Qisqacha ma'lumotnoma: belgisiga qarab diagnostika

BelgiEng ehtimoliy sababQaysi buyruqdan boshlash
Roppa-rosa 30 soniyada uziladiNAT muammolaripjsip show endpoint
15 yoki 30 daqiqada uziladisession timers mos kelmayaptiTaymer sozlamalarini tekshiring
Tasodifiy uzilishlar, ayrim trunklarSIP ALGALG'ni o'chiring, tcpdump oling
Ovoz yo'q, keyin uzilishKodeklar mos kelmayaptiallow sozlamalarini tekshiring
Gavjum soatlarda uzilishResurs yetishmovchiligitop, core show channels count
Bitta ichki raqam mavjud emasqualify taymautipjsip show endpoints
Uzoqdagi raqamlarda uzilishFirewall / UDP taymauticonntrack sozlamalarini tekshiring

Profilaktika ro'yxati

Uzilishlar boshidanoq paydo bo'lmasligi uchun yangi Asterisk o'rnatayotganda shu ro'yxat bo'yicha yuring:

  • Barcha endpoint'larda direct_media=no qo'yish
  • external_media_address va external_signaling_address ni to'g'ri yozish
  • Trafik yo'lidagi barcha routerlarda SIP ALG'ni o'chirish
  • UDP conntrack taymautini kamida 180 soniyaga ko'tarish
  • Asterisk va barcha SIP provayderlar o'rtasida kodek ro'yxatlarini moslashtirish
  • session timers'ni provayder talabiga sozlash yoki butunlay o'chirish
  • Fayl deskriptorlari limitini 65536 dan yuqori qilib qo'yish
  • Firewall'da ham SIP (5060), ham to'liq RTP diapazonini (10000-20000) ochish
  • Trunk registratsiyasi va aloqa sifati uchun monitoring sozlash
  • Kutilayotgan eng yuqori yuklamada bir vaqtning o'zidagi qo'ng'iroqlar bilan test o'tkazish

Xulosa

Asterisk'dagi qo'ng'iroq uzilishlarining deyarli har doim aniq va bartaraf etsa bo'ladigan sababi bor. Asosiy aybdorlar — NAT sozlamalaridagi xatolar, SIP ALG aralashuvi va session timers mos kelmasligi — holatlarning katta qismini tashkil qiladi va bir marta aniqlangach, ularni tuzatish qiyin emas.

Uzilishlardan uzoq muddatga qutulishning kaliti — faqat hozirgi nosozlikni tuzatish emas, balki keyingisini mijozlaringizdan oldin ilg'ab oladigan monitoringni yo'lga qo'yish. CLI buyruqlaridanmi, CDR so'rovlaridanmi yoki Astervis kabi maxsus vositadanmi foydalanasiz — maqsad bitta: har bir qo'ng'iroq, har bir trunk va har bir ehtimoliy nosozlik nuqtasini ko'rib turish.

Sizning Asterisk call-markazingiz uzilib qoladigan qo'ng'iroqlardan ko'ra yaxshiroq narsaga loyiq. Kuzatishni boshlang, tuzatishni boshlang va mijozlaringiz kutayotgan ishonchli aloqani bera boshlang.

Taxmin qilishni bas qiling. Ko'rishni boshlang.

Asterisk call-markazingizning haqiqiy ko'rinishi: navbatlardagi kutish vaqti, operatorlar faolligi, trunk yuklamasi va 30+ grafik. Sizning serveringizda on-premise. 5 daqiqada o'rnatish. Kartasiz.

$119/oydan flat. Operatorlar soni cheklanmagan. 14 kunlik triаl.

Ulashish