முந்தைய கட்டுரையில்
கூடுதல் மென்பொருள் அல்லது ஸ்கிரிப்ட்களை நிறுவாமல், இந்த இரண்டு அமைப்புகளின் "நண்பர்களை உருவாக்க" யோசனை நீண்ட காலத்திற்கு முன்பு பிறந்தது. விரைவான கூகிளிங் பல சாத்தியமான தீர்வுகளை அளித்தது, இவை அனைத்தும் ஸ்கிரிப்ட்களை (Pyha, Bash, Python போன்றவற்றில்) சர்வரில் பதிவேற்றம் செய்து, நீங்கள் மகிழ்ச்சியாக இருப்பீர்கள். வெளிப்புற ஸ்கிரிப்டுகள் இல்லாமல், கண்காணிப்பு மற்றும் பிபிஎக்ஸ் மூலம் சர்வரில் கூடுதல் மென்பொருளை நிறுவாமல் - "அவுட் ஆஃப் தி பாக்ஸ்" கண்காணிப்பை செயல்படுத்த விரும்பினேன்.
நான் இதனுடன் மொத்தம் 4 வேலை நாட்களைக் கழித்தேன், ஆனால் விளைவு மதிப்புக்குரியது. AMI இடைமுகம், குறைந்த-நிலை கண்டறிதல், தூண்டுதல்கள் மற்றும் மிக முக்கியமாக, PBX மற்றும் பிற எல்லா அமைப்புகளையும் இணைக்க 15 நிமிடங்கள் ஆகும்.
Zabbix 4.4 கிடைக்கிறது, ஆஸ்டிரிஸ்க் பதிப்பு 100 இன் சுமார் 13 துண்டுகள். சில பிபிஎக்ஸ்கள் ஃப்ரீபிபிஎக்ஸ் இணைய இடைமுகத்துடன் வருகின்றன, சில வெற்று கன்சோலுடன், பல தந்திரங்கள் மற்றும் டயல் பிளான் வழியாக ஒருங்கிணைக்கப்படுகின்றன.
PBX இலிருந்து தரவைப் பெறுதல்
தீர்க்கப்பட வேண்டிய முதல் மற்றும் முக்கிய அம்சம் சகாக்கள் மற்றும் SIP பதிவுகள் பற்றிய தரவைப் பெறுவதாகும். இந்த நோக்கத்திற்காக, PBX ஆனது AGI, AMI, ARI மற்றும் SSH கன்சோல் இடைமுகங்களைக் கொண்டுள்ளது. வெளிப்படையான காரணங்களுக்காக, கூடுதல் தொகுதிகளை நான் கருத்தில் கொள்ளவில்லை.
முதலில் இந்த அகி, ஆமி, அரி என்றால் என்ன என்று கண்டுபிடிக்க வேண்டும்.
- AGI - டயல்பிளானில் ஸ்கிரிப்ட்களைப் பயன்படுத்துதல். முக்கியமாக அழைப்பு மேலாண்மைக்கு பயன்படுத்தப்படுகிறது.
- AMI - தேவையான அனைத்து தகவல்களையும் வழங்க முடியும், போர்ட் 5038 வழியாக வேலை செய்கிறது, டெல்நெட் போன்றது. எங்களுக்கு பொருந்தும்!
- ARI - நவீன, நாகரீகமான, JSON. பல சாத்தியங்கள் உள்ளன, தரவு வடிவம் Zabbix க்கு புரிந்துகொள்ளக்கூடியது, ஆனால் எனக்கு முக்கிய விஷயம் எதுவும் இல்லை: நீங்கள் sip பதிவைக் கட்டுப்படுத்த முடியாது. மற்றொரு குறைபாடு என்னவென்றால், சகாக்களுக்கு ஆன்லைன்/ஆஃப்லைனில் இரண்டு நிலைகள் மட்டுமே உள்ளன, இருப்பினும் அதிக மாநிலங்கள் உள்ளன மற்றும் கண்டறியும் போது அவற்றை கணக்கில் எடுத்துக்கொள்வது பயனுள்ளதாக இருக்கும்.
- SSH எல்லாவற்றையும் செய்ய முடியும், ஆனால் சில நேரங்களில் அது "பாதுகாப்பு காரணங்களால்" அனுமதிக்கப்படாது. பரிசீலனைகள் வேறுபட்டிருக்கலாம், நான் அவற்றுக்குள் செல்லமாட்டேன்.
இருப்பினும், அதன் அனைத்து குறைபாடுகளுடன், ARI அனைத்து கண்காணிப்பு தேவைகளில் 90% உள்ளடக்கியது.
Zabbix மற்றும் Telnet - என் ஏமாற்றம்
எனக்கு AMI பற்றி நன்றாகத் தெரியும்; ஒரு காலத்தில் தொலைநிலை அலுவலகங்கள், அழைப்பு மேலாண்மை போன்றவற்றின் மூலம் பிரிவுடனான உரையாடல்களில் இழப்புகளைக் கண்காணிப்பதைச் செயல்படுத்தினேன். டெல்நெட் மூலம், எல்லாம் மிகவும் தெளிவாக உள்ளது: இணைப்பைத் திறந்து, கட்டளைகளை அனுப்பவும் மற்றும் பதிலைப் படிக்கவும். நான் அதைத்தான் செய்தேன், ஆனால் முடிவு என்னை ஏமாற்றியது.
Zabbix இல் உள்ள டெல்நெட் லினக்ஸ் கன்சோலில் உள்ளதைப் போன்றது அல்ல, இது கொஞ்சம் எளிமையானது மற்றும் உள்நுழைவு/கடவுச்சொல் போன்ற நிலையான அங்கீகாரத்திற்காக வடிவமைக்கப்பட்டுள்ளது. அங்கீகார தர்க்கம் வேறுபட்டு, உள்நுழைவு/கடவுச்சொல் ஜோடிக்கான கோரிக்கை இல்லை என்றால், பிழை ஏற்படும். அங்கீகாரத் தேவையைத் தவிர்ப்பதற்கான பயனற்ற முயற்சிகளுக்குப் பிறகு, டெல்நெட் தொகுதியின் மூலக் குறியீட்டைப் பார்ப்பது பயனுள்ளதாக இருந்தது.
பாரம்பரிய உள்நுழைவு மற்றும் கடவுச்சொல் கோரிக்கை இருக்கும் வரை, நான் முன்னேற மாட்டேன் என்பதை உணர்ந்தேன். வேடிக்கைக்காக, குறியீட்டிலிருந்து அங்கீகாரம் தொடர்பான அனைத்தையும் நீக்கிவிட்டு, அனைத்தையும் மீண்டும் இணைத்தேன். வேலை செய்கிறது! ஆனால் அது தேவைகளை பூர்த்தி செய்யவில்லை. மேலே செல்…
தேடலுக்கு திரும்புவோம்
நான் மீண்டும் ARI ஆவணங்களை மீண்டும் படித்தேன், கூடுதல் சோதனைகளை நடத்தினேன் - இங்கே sip பதிவுகள் எதுவும் இல்லை. விருந்துகள் உள்ளன, உரையாடல்கள் உள்ளன, ப்ரீச்கள் உள்ளன, ஆனால் பதிவுகள் இல்லை. ஒரு கட்டத்தில் நான் கூட நினைத்தேன், நமக்கு உண்மையில் கழுகு பதிவு தேவையா?
ஒரு வேடிக்கையான தற்செயலாக, இந்த நேரத்தில் மற்றொரு கோரிக்கை பயனரிடமிருந்து வருகிறது, வெளிச்செல்லும் அழைப்புகளில் சிக்கல் உள்ளது. சிக்கல் என்னவென்றால், சிப் பதிவு முடக்கத்தில் இருந்தது மற்றும் தொகுதியை மறுதொடக்கம் செய்வதன் மூலம் தீர்க்கப்பட்டது.
asterisk -rx "sip reload"
இணையத்தில் AMI ஐ அணுகுவது மிகவும் நன்றாக இருக்கும்: அது எல்லா பிரச்சனைகளையும் தீர்க்கும் என்று நான் நினைத்தேன். நான் இந்த திசையில் தோண்டத் தொடங்குகிறேன், உண்மையில் முதல் தேடல் வரி அதிகாரப்பூர்வ நட்சத்திர ஆவணத்திற்கு வழிவகுக்கிறது, இது எனது பணிகளுக்கு ஒரு விருப்பம் உள்ளது என்று கூறுகிறது. வலையமைக்கப்பட்டது கோப்பில் /etc/asterisk/manager.conf, பிரிவில் ஆம் என அமைக்க வேண்டும் [பொது]
இதற்குப் பிறகு, படிவத்தின் வழக்கமான வலை கோரிக்கை மூலம்
FreePBX இடைமுகத்தைப் பயன்படுத்தும் போது, இந்த விருப்பத்தை இணையம் வழியாக இயக்க முடியாது; நீங்கள் இதை manager.conf கோப்பில் மாற்றங்களைச் செய்து கன்சோல் மூலம் இயக்க வேண்டும். இணையம் வழியாக கட்டமைப்பு மாற்றங்கள் செய்யப்படும்போது FreePBX அதை அழிக்காது.
நான் நீண்ட காலமாக பல்வேறு வகையான ஆஸ்டிரிக் ஒருங்கிணைப்புகளுடன் பணிபுரிந்தேன், ஆனால் இந்த அம்சம் எங்கும் குறிப்பிடப்பட்டிருப்பதை நான் பார்த்ததில்லை. PBX உடன் தொடர்பு கொள்ளும் இந்த முறையை யாரும் விவரிக்காதது எனக்கு ஆச்சரியமாக இருந்தது. இந்த தலைப்பில் தகவல்களைத் தேடுவது மிகவும் பயனுள்ளதாக இருந்தது: நடைமுறையில் எதுவும் இல்லை அல்லது முற்றிலும் மாறுபட்ட பணிகளுக்குப் பயன்படுத்தப்பட்டது.
WEB AMI - என்ன வகையான மிருகம்?
ஒரு விருப்பத்தைச் சேர்த்தல் வலையமைக்கப்பட்டது தாக்கல் செய்ய மேலாளர்.conf வலை வழியாக ATS நிர்வாகத்திற்கு முழு அணுகலை வழங்கியது. வழக்கமான AMI மூலம் கிடைக்கும் அனைத்து கட்டளைகளும் இப்போது இணையத்தில் உள்ளன, நீங்கள் PBX இலிருந்து ஒரு சாக்கெட் வழியாக நிகழ்வுகளைக் கேட்கலாம். செயல்பாட்டின் கொள்கை கன்சோல் AMI இலிருந்து வேறுபட்டதல்ல. இந்த விருப்பத்தை செயல்படுத்திய பிறகு, நீங்கள் பின்வரும் முகவரிகளில் PBX ஐ தொடர்பு கொள்ளலாம்:
பிறகு நான் நினைத்தேன்: “இதுதான் தீர்வு! இப்போது எல்லாம் தயாராக இருக்கும்! ஈஸி-பீஸி லெமன் ஸ்க்வீஸி,” ஆனால் அது மகிழ்ச்சி அடைவதற்கு மிக விரைவாக இருந்தது. நமக்குத் தேவையான தகவலைப் பெற, தேவையான நடவடிக்கையுடன் GET கோரிக்கையைப் பயன்படுத்தினால் போதும் நடவடிக்கை, இது பதிலுக்கு அனைத்து பதிவுகள் மற்றும் அவற்றின் நிலையின் பட்டியலுடன் xml ஐ வழங்குகிறது. இவை அனைத்தும் சிறப்பாக உள்ளன, ஆனால் குக்கீயிலிருந்து அமர்வை நினைவில் வைத்துக் கொள்ள உங்களுக்கு அங்கீகாரம் தேவை. நீங்கள் உலாவியில் சோதிக்கும் போது, இந்த செயல்முறையைப் பற்றி நீங்கள் சிந்திக்க மாட்டீர்கள்.
அங்கீகார செயல்முறை
முதலில் நாம் முகவரியைக் குறிப்பிடுகிறோம்
https://ats:8089/mxml?action=login&username=zabbix&secret=zabbix
Host: ats:8089
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
பதில்:
GET: HTTP/1.1 200 OK
Server: Asterisk/13.29.2
Date: Thu, 18 Jun 2020 17:41:19 GMT
Cache-Control: no-cache, no-store
Content-type: text/xml
Set-Cookie: mansession_id="6f5de42c"; Version=1; Max-Age=600
Pragma: SuppressEvents
Content-Length: 146
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" message="Authentication accepted"/>
</response>
</ajax-response>
அங்கு வேலை செய்ய வேண்டும் மாளிகை_ஐடி="6f5de42c", அதாவது அங்கீகார குக்கீயே.
பதிலை நீங்கள் சரிபார்க்க வேண்டிய உள்ளடக்கம் "அங்கீகாரம் ஏற்றுக்கொள்ளப்பட்டது" அடுத்து, PBX சேவையகத்திற்கான அனைத்து அழைப்புகளுக்கும், கோரிக்கையில் ஒரு அங்கீகார குக்கீயைச் சேர்க்க வேண்டும்.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"
அங்கீகரிப்பு குக்கீயைப் பெறுவது மற்றும் பிற கோரிக்கைகளில் அதை எவ்வாறு பயன்படுத்துவது என்பதை இங்கே படிக்கவும்: "
Zabbix இல் கண்காணிப்பு கூறுகளை உருவாக்க நான் தானியங்கு கண்டறிதலைப் பயன்படுத்துவேன்.
தானாக கண்டறிதல்
பதிவுகளைத் தானாகக் கண்டறியவும், சக நிலைகளைக் கண்காணிக்கவும், நீங்கள் பின்வரும் முகவரியைத் தொடர்பு கொள்ள வேண்டும்:
பதிலுக்கு, PBX எங்களுக்கு ஒரு XML பதிலை வழங்குகிறது:
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" eventlist="start" message="Registrations will follow"/>
</response>
...
<response type="object" id="unknown">
<generic event="RegistryEntry" host="login.mtt.ru" port="5060" username="111111" domain="login.mtt.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="222222" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="333333" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
...
</ajax-response>
பதிலில் நிறைய குப்பைகள் உள்ளன, எனவே முன் செயலாக்கத்தில் அதை டெம்ப்ளேட் மூலம் வடிகட்டுகிறோம் எக்ஸ்பாத்: //பதில்/பொதுவான[@host]
பின்னர் வேடிக்கை தொடங்குகிறது. கண்டறிதலுடன் பணிபுரிய மற்றும் உறுப்புகளை மாறும் வகையில் உருவாக்க, பதில் JSON வடிவத்தில் இருக்க வேண்டும். தானியங்கு கண்டறிதல்களுக்கு XML ஆதரிக்கப்படவில்லை.
XML ஐ JSON ஆக மாற்ற, நான் ஆட்டோ ரீப்ளேஸ்மென்ட் மூலம் கொஞ்சம் விளையாட வேண்டியிருந்தது, அதற்காக நான் JS இல் ஒரு ஸ்கிரிப்டை உருவாக்கினேன்.
ஒரு சுவாரஸ்யமான விஷயம்: ATS பதிலில், அனைத்து அளவுருக்களும் ஒற்றை மேற்கோள்களால் சூழப்பட்டுள்ளன, மேலும் டெம்ப்ளேட்டைப் பயன்படுத்திய பிறகு //பதில்/பொதுவான[@host] அவை இரட்டையர்களால் மாற்றப்படுகின்றன.
உறுப்புகளை உருவாக்க, எக்ஸ்எம்எல் பதிலில் இருந்து மாறிகளைப் பயன்படுத்துகிறோம் (இப்போது JSON) .
SIP பதிவு
சிப் பதிவுகளுக்கு நாங்கள் மூன்று மாறிகளைப் பயன்படுத்துகிறோம்: பயனர்பெயர், தொகுப்பாளர், துறைமுக. உறுப்பு என்ற பெயரில் நான் மகிழ்ச்சியடைந்தேன் [மின்னஞ்சல் பாதுகாக்கப்பட்டது]: 5060, நீங்கள் ஐந்து மாறிகளையும் பயன்படுத்த வேண்டிய எந்த சூழ்நிலையையும் நான் காணவில்லை.
அனைத்து பதிவுகள் பற்றிய தகவலைப் பெறும் முக்கிய உறுப்பு, நட்சத்திரக் குறியீடு - AMI SIPshowregistry. நிமிடத்திற்கு ஒருமுறை அது ஒரு GET கோரிக்கையை செய்கிறது
100 சார்பு கூறுகள் வரை சோதனை செய்யும் போது, நான் சுமையை கவனிக்கவில்லை, ஆனால் 1700 உறுப்புகளுடன், இது செயலியில் குறிப்பிடத்தக்க 15 வினாடி சுமையைக் கொடுத்தது. உங்களிடம் அதிக எண்ணிக்கையிலான சார்பு கூறுகள் இருந்தால் இதை நினைவில் கொள்ளுங்கள்.
சுமைகளை "பரப்ப" அல்லது ஒரு உறுப்புக்கு வெவ்வேறு வாக்குப்பதிவு அதிர்வெண்களை அமைப்பதற்கான ஒரு விருப்பமாக, நீங்கள் ஒவ்வொரு உறுப்புக்கும் தனித்தனியாக செயலாக்க தர்க்கத்தை நகர்த்தலாம்.
பெறப்பட்ட தகவலை முக்கிய உறுப்புகளில் நான் சேமிக்கவில்லை. முதலாவதாக, இதன் தேவையை நான் காணவில்லை, இரண்டாவதாக, பதில் 64K ஐ விட அதிகமாக இருந்தால், Zabbix அதைத் துண்டிக்கிறது.
சார்பு உறுப்புக்கு முழு XML பதிலைப் பயன்படுத்துவதால், முன் செயலாக்கத்தில் இந்த உறுப்பின் மதிப்பைப் பெற வேண்டும். மூலம் எக்ஸ்பாத் இது இப்படி செய்யப்படுகிறது:
சரம்(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ நிலை)
பதிவு நிலைகளுக்கு, நான் உரை நிலைகளைப் பயன்படுத்தவில்லை, ஆனால் ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி அவற்றை எண் வடிவமாக மாற்றினேன்:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
SIP சகாக்கள்
SIP பதிவுகளுடன் ஒப்புமை மூலம், Asterisk இன் முக்கிய உறுப்பு உள்ளது - AMI SIPshowregistry, இதில் சார்ந்தவை சேர்க்கப்படுகின்றன.
இது இரண்டு சார்பு கூறுகளை உருவாக்குகிறது:
- உரை வடிவத்தில் சக நிலை
- சாதன மறுமொழி நேரம் - நிலை சரியாக இருந்தால், சாதன மறுமொழி நேரம் எழுதப்படும், இல்லையெனில் “-1”
உறுப்புக்கான பாதை சற்று எளிமையானது எக்ஸ்பாத்:
சரம்(//பதில்/பொதுவான[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@நிலை)
இரண்டாவது உறுப்புக்கு நான் பிரிக்க ஜாவாஸ்கிரிப்டைப் பயன்படுத்தினேன் பதில் நேரம் சக நிலையிலிருந்து, அவை ஒன்றாகச் சேமிக்கப்படுகின்றன:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}
முடிவுக்கு
பெட்டிக்கு வெளியே தீர்வு சிக்கலானதாக இருக்கலாம் மற்றும் உடனடியாக தெளிவாக இருக்காது. வெவ்வேறு அமைப்புகளுக்கு இடையே நெகிழ்வுத்தன்மை மற்றும் பெயர்வுத்திறனை அதிகரிக்கிறது
அனைவருக்கும் மகிழ்ச்சியான மற்றும் எளிதான ஒருங்கிணைப்பு! வார்ப்புரு மற்றும் அமைப்பதற்கான வழிமுறைகள்
ஆதாரம்: www.habr.com