Zabbix - مراقبة جيران OSPF باستخدام SNMPv3 TRAPs والألم واليأس

الاختصاصات


هناك شبكة من مراكز البيانات المتفرقة جغرافيًا مع سيارة VRF وقائمة دائمة التغير من جيران OSPF. تحتاج إلى تتبعهم:

  1. الدولة ، التنبيه إذا كانت الدولة المجاورة ليست كاملة
  2. الكمية ، أي إذا كان الجار مفقودًا ، يجب عليك أيضًا تنبيه

يوجد بالفعل نظام مراقبة - Zabbix 3.4 ، فمن المستحسن استخدامه ، Linux OS Debian 9.x

نحاول مع الخاطف


البروتوكول واسع الانتشار ، ونظام المراقبة معروف ، ولست على الأرجح لست أول من يريد حل هذه المشكلة ، وعلى الأرجح أنه تم حلها بالفعل.

ندخل في البحث عن "zabbix ospf" والرابط الأول يؤدي إلى القالب . السعادة هي ما - الآن أقوم باستيرادها ، وتمشيطها لاحتياجاتي وكل شيء سيكون على ما يرام أحواض.
نتحقق من كيفية عملها - يبدو أن كل شيء على ما يرام ، يتم مراقبة الولايات ، ولكن عندما يذهب الجار إلى حالة DOWN ، نحصل على رسالة إعلامية "جدًا" من Zabbix

No Such Instance currently exists at this OID 

والمعلومات

 The item is not discovered anymore and will be deleted in 29d 23h 57m (on 2018-08-19 at 08:52) 

ما حدث - المشكلة قديمة ومعروفة في المنتديات - عندما يختفي جار OSPF ، ثم يتم حذف جميع OID المرتبطة به ببساطة على أجهزة الشبكة.

نعم ، هناك حل - إنشاء مشغل nodata ، حسنًا إنشاء:

 {Template - SNMPv3 - OSPF Discovery:ospfNbrState[{#SNMPVALUE}].nodata(120)}=0 

نرى في لوحة القيادة:

 OSPF neighbor 192.168.192.168 missing data 

في الأساس ... قابلة للاستخدام

ولكن خارج الصندوق ، يكتشف LLD فقط الجيران من VRF الافتراضي. بالطبع ، يمكن حل هذا باستخدام سياق SNMP ، ولكن بطريقة ما لم أكن أرغب في السير بهذه الطريقة على الإطلاق - كان علينا أن نمر بكل قطع الحديد ، ونضخ سياقًا في كل عملية OSPF أو VRF ، ثم ننشئ نسخًا من Discovery لكل سياق في نموذجنا ، بشكل عام ، يكون ذلك كثيرًا ضجة وعند إضافة عمليات OSPF جديدة ، تحتاج إلى تغيير شيء في عدة أماكن. يمكنك بالطبع أن تكون محاطًا بالنصوص البرمجية ومن خلال واجهة برمجة تطبيقات Zabbix يمكن تغيير كل هذا ، لكنني لم أكن أرغب في تخصيص خاص ، لكني أردت استخدام الوظائف المضمنة في Zabbix إلى أقصى حد. هناك إشارة إلى CISCO-CONTEXT-MAPPING-MIB معينة ، يمكنك من خلالها سحب جميع المراسلات بين السياقات و OSPF / VRF ، لكنني لم أحدد كيفية ربط هذا التصميم بـ LLD. إذا كان شخص ما يعرف كيفية طهي Zabbix بشكل رائع ، فمرحباً بك في التعليقات ، ويفضل أن يكون ذلك في مقالة منفصلة كاملة.

نحاول من الهجوم الثاني


بعد ساعتين من البحث في الإنترنت عن تلميحات في المنتديات وخزانات الذاكرة ، ظهر موضوع حول SNMP TRAP - هذا عندما لا نستجوب قطعة الحديد ، لكن قطعة الحديد ترسل معلومات حول تغيير شيء ما. نعم ، ودعم الحملة لهذه الأشياء موجود في نظام المراقبة الخاص بنا خارج الصندوق ، يمكن للمعدات أيضًا فورًا وفقط لحالتي.

من الأسطر الأولى ، تم الخلط بين وثائق المراقبة بقائمة طويلة:

 The workflow of receiving a trap: 1. snmptrapd receives a trap 2. snmptrapd passes the trap to SNMPTT or calls Perl trap receiver 3. SNMPTT or Perl trap receiver parses, formats and writes the trap to a file 4. Zabbix SNMP trapper reads and parses the trap file 5. For each trap Zabbix finds all “SNMP trapper” items with host interfaces matching the received trap address. Note that only the selected “IP” or “DNS” in host interface is used during the matching. 6. For each found item, the trap is compared to regexp in “snmptrap[regexp]”. The trap is set as the value of all matched items. If no matching item is found and there is an “snmptrap.fallback” item, the trap is set as the value of that. 7. If the trap was not set as the value of any item, Zabbix by default logs the unmatched trap. (This is configured byLog unmatched SNMP traps” in Administration → General → Other.) 

أي أن أحد البرامج الخفية يقبل TRAP ، ويمررها إلى برنامج خفي آخر ، ويحللها ، ويضعها في السجل بالتنسيق المطلوب ، ويقرأ zabix السجل بالفعل ويقرر ما يجب القيام به بعد ذلك. بطريقة ما ، يبدو الأمر أسهل من أي وقت مضى حتى مع المشي بيديك ورسم سياق SNMP في كل مكان ، ولكن حسنًا ، دعنا نجرب. نقرأ بعناية وثيقة المراقبة ونفهم أنه فقط بمساعدتها لا يمكن تكوين أي شيء ، بشكل عام Zabbix لديه مثل هذه النكتة - تصف الوثائق قدرات النظام والفروق الدقيقة فيه إلى الحد الأدنى بحيث يكون أكثر إرباكًا من التعليم. على الرغم من أنه يمكن فهمها - البرنامج مجاني ، ولكن بطريقة ما تحتاج إلى كسب المال ، لكنهم يكسبون المال على الدعم. هناك مقالات على الإنترنت تحتوي على وصف لكيفية إعداد هذا مرة أو مرتين ، ولكن لم أتمكن من الإعداد من مقالة إلى أخرى ، كان علي جمع معلومات من مصادر مختلفة شيئًا فشيئًا. هذه هي كل كلمات الأغاني التي قادوها للقيام بالمتشددين.

نقوم بتكوين قطعة شبكة من الحديد


قبل أن تقوم بتحريف شيء ما على المضيف مع المراقبة ، أوصي بشدة بتكوين أجهزة الشبكة أولاً والتأكد من وصول TRAP حقًا من الأجهزة إلى الخادم - في البداية لم أتحقق من أنها شربت الكثير من الأعصاب والدم والوقت. لدي سيارة Cisco Nexus في متناول اليد ، لذلك سأعطي أمثلة لهذه السلسلة. أي شخص لديه Catalyst ، ASR ، ASA وما إلى ذلك - آسف ، أنا لست الشمس ، لن أقوم بتسخين الجميع ، اقرأ الأحواض حول كيفية تكوين هذا بنفسك ، سيكون بناء الجملة متشابهًا ، ولكن مع الفروق الدقيقة الخاصة به.

 snmp-server contact noc@example.com snmp-server location Room1 snmp-server source-interface traps loopback1 

من المهم في المستقبل ، عند تكوين TRAP في Zabbix ، أن العنوان الذي يتم إرسال TRAP منه يساوي عنوان SNMP للواجهة في إعدادات المضيف في Zabbix.

 snmp-server user Zabbix network-operator auth sha string priv aes-128 string 

استخدم الإصدار 3 من البروتوكول حيثما أمكن ذلك ، في وضع authPriv (التشفير والمصادقة) ، ليس من الصعب تكوينه كما يبدو. نسيان الإصدار 1 والإصدار 2 من البروتوكول - عندما يصل شخص غير متوقع بسبب نقص التشفير والمصادقة بشكل أساسي في إصدارات البروتوكول هذه - إنها مجرد مسألة وقت (يتم إرسال سلسلة المجتمع فيها بشكل واضح ، علاوة على ذلك ، أرى بانتظام أنه تم تكوينه عام / خاص). تسمح لك معلمة عامل الشبكة بمنح المستخدم أذونات للقراءة فقط.

 snmp-server host 192.168.192.168 traps version 3 priv Zabbix snmp-server host 192.168.192.168 use-vrf default snmp-server host 192.168.192.168 source-interface loopback1 no snmp-server enable traps ospf lsa snmp-server enable traps ospf no snmp-server enable traps entity entity_mib_change no snmp-server enable traps entity entity_module_status_change no snmp-server enable traps entity entity_power_status_change no snmp-server enable traps entity entity_module_inserted no snmp-server enable traps entity entity_module_removed no snmp-server enable traps entity entity_unrecognised_module no snmp-server enable traps entity entity_fan_status_change no snmp-server enable traps entity entity_power_out_change no snmp-server enable traps link linkDown no snmp-server enable traps link linkUp no snmp-server enable traps link extended-linkDown no snmp-server enable traps link extended-linkUp no snmp-server enable traps link cieLinkDown no snmp-server enable traps link cieLinkUp no snmp-server enable traps link connUnitPortStatusChange no snmp-server enable traps bfd session-up no snmp-server enable traps link delayed-link-state-change no snmp-server enable traps bfd session-down no snmp-server enable traps rf redundancy_framework no snmp-server enable traps license notify-license-expiry no snmp-server enable traps license notify-no-license-for-feature no snmp-server enable traps license notify-licensefile-missing no snmp-server enable traps license notify-license-expiry-warning no snmp-server enable traps upgrade UpgradeOpNotifyOnCompletion no snmp-server enable traps upgrade UpgradeJobStatusNotify no snmp-server enable traps rmon risingAlarm no snmp-server enable traps rmon fallingAlarm no snmp-server enable traps rmon hcRisingAlarm no snmp-server enable traps rmon hcFallingAlarm no snmp-server enable traps entity entity_sensor no snmp-server enable traps generic coldStart no snmp-server enable traps generic warmStart 

لقد قمت بتعطيل كل TRAP بشكل خاص باستثناء OSPF ، لذلك عند تشخيص سبب عدم عمل شيء ما ، لم يكن عليّ قراءة الكثير من المعلومات غير الضرورية من التصحيح.

كيفية التحقق من عمل TRAP أمر بسيط للغاية - تحتاج إلى كسر شيء ما. نبدأ الشم على المضيف مع المراقبة:

 root@dc-zbx:~# tcpdump -i bond0 udp port 162 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on bond0, link-type EN10MB (Ethernet), capture size 262144 bytes 

نجد على قطعة من الجيران الذين يعيشون على الحديد:

 SW# show ip ospf neighbors vrf all OSPF Process ID 10 VRF default Total number of neighbors: 4 Neighbor ID Pri State Up Time Address Interface 192.168.0.242 1 FULL/ - 01:47:17 172.17.0.10 Vlan1427 192.168.0.222 1 FULL/ - 18w1d 172.17.0.6 Vlan1426 192.168.1.149 1 FULL/ - 5w0d 172.17.0.30 Vlan1473 192.168.1.146 1 FULL/ - 3d00h 172.17.0.58 Vlan1404 OSPF Process ID 100 VRF OSPF100 Total number of neighbors: 4 Neighbor ID Pri State Up Time Address Interface 192.168.1.149 1 FULL/ - 5w0d 172.17.0.34 Vlan1474 192.168.0.220 1 FULL/ - 13w3d 172.17.0.54 Vlan1479 192.168.0.240 1 FULL/ - 13w3d 172.17.0.46 Vlan1477 192.168.1.146 1 FULL/ - 3d00h 172.17.0.62 Vlan1405 OSPF Process ID 200 VRF Dia Total number of neighbors: 2 Neighbor ID Pri State Up Time Address Interface 10.65.0.252 1 FULL/ - 17w2d 172.17.0.18 Vlan1450 172.17.0.26 1 FULL/ - 17w0d 172.17.0.26 Vlan1452 OSPF Process ID 216 VRF Dev Total number of neighbors: 2 Neighbor ID Pri State Up Time Address Interface 10.255.255.94 1 FULL/ - 18:59:59 10.216.0.73 Vlan1641 10.216.0.82 1 FULL/ - 18:59:54 10.216.0.82 Vlan1643 

وإسقاط شخص

 interface vlan 1643 shutdown 

نرى في الشم:

 11:08:20.001942 IP 192.168.192.169.22095 > dc-zbx.example.com.snmp-trap: F=ap U="Zabbix" [!scoped PDU]39_d1_7c_19_b3_d9_f8_31_32_8e_c9_39_c2_3a_db_d8_28_26_c6_0b_01_55_b6_fa_5e_f5_38_66_f9_6f_3f_c0_98_cb_57_93_5a_50_8e_50_90_79_f3_9b_ec_ec_d7_9f_e8_ac_f6_fd_79_ac_95_ff_71_73_32_70_52_66_a5_7d_b3_c4_39_d0_1c_7f_a6_38_ea_d7_61_c0_2f_12_ee_db_d9_07_40_8c_a8_48_57_e9_e5_56_12_3f_ec_f9_34_65_09_96_86_f6_d2_93_06_45_fa_95_ea_36_5a_82_2f_30_8f_02_03_59_07_5f_d8_a6_1c_f2_5a_be_7d_09_15_ef_05_00_83_fd_ea_ac_2a_3b_86_0f_86_e5_3b_93_3a_68_6d_33_99_e2_46_2b_9d_6a_1e_5d_9e_d9_93_56_51_5e_ff_9e_77_4c_cb 

إذا لم تشاهد أي شيء في الشم ، فقم بتشخيصه ، وإلا فلن يكون هناك سبب للمتابعة أكثر من ذلك ، فلن تفهم ببساطة في أي مرحلة لا يعمل فيها شيء ما.
إذا لم يكن هناك قطعة حديد في متناول اليد أو لا يمكن لمس الإنتاج ، فيمكن عندئذ توليد TRAP من أي سيارة أخرى ، على سبيل المثال ، مثل:

 snmptrap -v 1 -c neveruseme 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000" snmptrap -v3 -l authPriv -u Zabbix -a SHA -A abyrvalg -x AES -X pechka -e 0x8000000001020305 192.168.192.168 0 linkUp.0 

تكوين SNMPd ، SNMPTRAPd ، SNMPTT


سنحتاج إلى حزم في النظام:

 apt install snmp snmp-mibs-downloader snmpd snmptrapd snmptt 

لم أركز على مستقبل فخ Perl ، لكنني اخترت SNMPTT لأسباب شخصية وذاتية. لذا ، يقول الرصيف:

 1. snmptrapd receives a trap 

من الضروري البدء بتكوينه ، وعدم التسلق فورًا لإنشاء عنصر في وجه Zabbix. لماذا ذلك - تحتاج إلى تسلق نفس الخطوات التي تذهب TRAP. في القسم السابق ، تأكدنا من وصول TRAP بشكل أساسي من قطعة من الحديد ، والآن سنضمن قبولها على الأقل من خلال البرنامج الأول - snmptrapd. <lyric> أتذكر إعداد postfix + dovecot + شيء آخر منذ وقت طويل. وتعبت لمدة أسبوعين تقريبًا - هناك أيضًا يقبل شيطان واحد الاتصال ، ويحلل الآخر الحرف ، والثالث يضعه في قائمة الانتظار ، والرابع في المجلد للمستخدم ، وما إلى ذلك ، ولم أنجح. وكل ذلك لأنني ضبطت من البداية ، من النهاية ، من البداية ، ولكن كان علي أن أبدأ بـ telnet إلى المنفذ 25 وعرض مصحح foxer </ lyric>

نحن نتسلق إلى /etc/snmp/snmptrapd.conf ونحذفه ، ولكننا نعلق على كل ما لا نفهمه ولا نهتم به ، نترك سطرًا واحدًا

 disableAuthorization yes 

أوقف الخدمة

 systemctl stop snmptrapd.service 

تعمل في الوضع اليدوي

 root@dc-zbx:~# snmptrapd -f -Lo NET-SNMP version 5.7.3 AgentX subagent connected NET-SNMP version 5.7.3 

مرة أخرى ، حاول كسر OSPF كما في المثال أعلاه وانظر:

 2018-07-20 11:38:38 UNKNOWN [UDP: [192.168.192.169]:22095->[192.168.192.168]:162]: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1355817272) 156 days, 22:09:32.72 SNMPv2-MIB::snmpTrapOID.0 = OID: OSPF-TRAP-MIB::ospfNbrStateChange OSPF-MIB::ospfRouterId = IpAddress: 10.216.0.74 OSPF-MIB::ospfNbrIpAddr = IpAddress: 10.216.0.82 OSPF-MIB::ospfNbrAddressLessIndex = INTEGER: 0 OSPF-MIB::ospfNbrRtrId = IpAddress: 10.216.0.82 OSPF-MIB::ospfNbrState = INTEGER: down(1) 

إذا لم نر ، فنحن نبحث عن سبب ذلك. إذا كنت تريد أن يكون لديك نفس السجلات الجميلة ، وليس مجموعة من OIDs من النموذج 1.3.6.1.2.1.14.10.1.6 ، فقم بإضافة ما يلي إلى /etc/snmp/snmp.conf:

 mibs +OSPF-MIB mibs +OSPF-TRAP-MIB mibs +OSPFV3-MIB mibdirs +/usr/share/snmp/mibs/ietf/ 

وتشويه SNMPd

 systemctl restart snmpd.service 

بمزيد من التفصيل ، يمكن قراءة كيفية تنزيل ملفات MIB بأقل ألم وإطعامها إلى SNMPd [هنا] (https://wiki.debian.org/SNMP).

الآن نربط المصادقة ، نتسلق مرة أخرى في /etc/snmp/snmptrapd.conf

 traphandle default snmptthandler #disableAuthorization yes # 192.168.192.169 createUser -e 0x80000009038d604a6a82a3 Zabbix SHA string AES authuser log,execute,net Zabbix 

-e 0x80000009038d604a6a82a3 هو معرف المحرك ، يمكن مشاهدته على أجهزة الشبكة:

 SW# sh snmp engineID Local SNMP engineID: [Hex] 80000009038F604D6A82A1 [Dec] 128:040:000:109:003:140:096:079:106:131:160 

نحن نكرر التجربة مرة أخرى ، لكننا ما زلنا نتلقى تصحيحًا حول USM:

 root@dc-zbx:~# snmptrapd -f -Lo -Dusm registered debug token usm, 1 usmUser: created a new user Zabbix at 80 00 00 09 03 8F 60 4F 6B 82 A5 NET-SNMP version 5.7.3 AgentX subagent connected NET-SNMP version 5.7.3 usm: USM processing begun... usm: match on user Zabbix usm: no match on engineID (80 00 00 09 03 8F 60 4F 6B 82 A5 ) usm: match on user Zabbix usm: Verification succeeded. usm: USM processing completed. 2018-07-20 11:50:07 UNKNOWN [UDP: [192.168.192.169]:22095->[192.168.192.168]:162]: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1355886163) 156 days, 22:21:01.63 SNMPv2-MIB::snmpTrapOID.0 = OID: OSPF-TRAP-MIB::ospfNbrStateChange OSPF-MIB::ospfRouterId = IpAddress: 10.216.0.74 OSPF-MIB::ospfNbrIpAddr = IpAddress: 10.216.0.82 OSPF-MIB::ospfNbrAddressLessIndex = INTEGER: 0 OSPF-MIB::ospfNbrRtrId = IpAddress: 10.216.0.82 OSPF-MIB::ospfNbrState = INTEGER: down(1) 

إذا رأيت في هذه المرحلة أخطاء في التفويض في التصحيح ، فتحقق بعناية من معرف المحرك وأن المستخدمين الذين تم إنشاؤهم على الجهاز يطابقون تلك التي رسمناها في التكوين /etc/snmp/snmptrapd.conf. بالمناسبة ، نعم ، لكل قطعة من الحديد ، سيكون عليك إنشاء مستخدم خاص بك باستخدام معرف المحرك الخاص به ، أو جعله نفس الشيء على جميع قطع الحديد بيديك ، إذا كانت قطع الحديد تسمح بذلك.

يمكنني رؤية السطر في التصحيح:

 usm: no match on engineID (80 00 00 09 03 8F 60 4F 6B 82 A5 ) 

لماذا لم أفهم ، على الرغم من كل هذا TRAP مقبول ويحصل على مزيد من المعالجة. إذا كنت تعرف ما أخطأت ، يرجى التعليق.

الآن نأخذ SNMPTT - يحتوي على اثنين من ini و conf config. في الأول ، نحدد معلمات البرنامج الخفي نفسه ، وفي الثاني نحدد المعلمات لاستقبال ومعالجة كل سلم معين.

نحن نتسلق إلى ملف /etc/snmp/snmptt.ini ونرسم الأشياء التالية:

 mode = daemon net_snmp_perl_enable = 1 date_time_format = %Y %m %d %H:%M:%S 

تنسيق التاريخ والوقت هو مسألة عمل ، والأهم من ذلك ، استخدم نفس الشيء في كل مكان.

 log_file = /var/log/snmptt/snmptt.log log_system_file = /var/log/snmptt/snmpttsystem.log unknown_trap_log_enable = 1 unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log 

لماذا لا يختلف السجل كما هو الحال في العديد من المقالات على الإنترنت؟ نظرًا لأن الرصيف قال: "إذا تم استخدام معلمة systemd PrivateTmp ، فمن غير المحتمل أن يعمل هذا الملف في / tmp." ، لا أريد الدخول في أشعل النار مرة أخرى إذا تم تحذيره مسبقًا ، لذلك سأغير على الفور إلى المسار الطبيعي للملف.

بعد ذلك ، انتقل إلى /etc/snmp/snmptt.conf ، وقم بإزالة كل ما لا نحتاج إليه و / أو لا نفهمه ، نترك هذا فقط:

 EVENT ospfNbrStateChange .1.3.6.1.2.1.14.16.2.2 "OSPF" Normal FORMAT ZBXTRAP $aA OSPF neighbor with IP addr $2 changed state to $5 

في هذا النموذج ، لأن Zabbix سوف تتوقع مثل هذا التنسيق فقط في السجل. من أين يأتي $ 2 و $ 5 ، يمكنك معرفة ما إذا كنت تنظر إلى تنسيق رسالة TRAP ، انظر:

 Object ospfNbrStateChange OID 1.3.6.1.2.1.14.16.2.2 MIB OSPF-TRAP-MIB ; Trap Components ospfRouterId ospfNbrIpAddr ospfNbrAddressLessIndex ospfNbrRtrId ospfNbrState 

مكونات Trap هذه هي المعلمات التي يمكن دفعها إلى تنسيق السجل بترتيب $ 1 ، $ 2 ...

أثناء المواجهة مع كل هذه الأشياء ، لاحظت أنه بعد تغيير إعدادات SNMPTT ، يبدو الأمر كما لو لم يتم تطبيق التغييرات. اتضح أنه بعد تغييرهم ، كان من الضروري إعادة التشغيل وليس snmptt.serivce ، ولكن snmpd.service - هذا الفارق الدقيق يشرب دمي ويشرب أعصابي أثناء التصحيح.

تحقق من تشغيل جميع الشياطين:

 systemctl status snmpd snmptrapd snmptt 

إذا كان كل شيء على ما يرام ، فحاول مرة أخرى كسر OSPF وانتقل إلى السجل /var/log/snmptt/snmptt.log ، سيبدو كما يلي:

 2018 07 19 15:10:52 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to down 2018 07 19 15:12:28 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to exchangeStart 2018 07 19 15:12:34 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to full 2018 07 19 15:22:41 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to down 2018 07 19 15:25:38 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to exchangeStart 

تلك TRAPs التي لم نقم بتكوينها في التكوين /etc/snmp/snmptt.conf ستنتقل إلى /var/log/snmptt/snmpttunknown.log السجل ، ولكن فقط من الأجهزة التي تم تكوين المستخدم الصحيح لها و engineID الصحيح في نفس التكوين. أي أنه من الغدد اليسرى ، سيتم إسقاط TRAPs بصمت ، إذا كنت تريد ماتان واستخلاص المعلومات ، فهناك هنا رصيف عاقل بشكل غير عادي على net-snmp ، لا يزال الفرق بين TRAP و INFORM موصوفًا جيدًا هناك ، وبالنظر إلى المستقبل ، فمن الأفضل استخدام INFORM ، إلخ. ك. هناك نوع من التحكم في التسليم هناك ، ولكنه يعمل عبر UDP عبر UDP.

وفقط الآن نتسلق لتكوين الشاشة.

إعداد Zabbix



بادئ ذي بدء ، تأكد من أنه في التكوين /etc/zabbix/zabbix_server.conf يتم تعيين المراقبة على سجل SNMPTT الصحيح و Zabbix نفسه يبدأ على الأقل SNMP Trapper:

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1


بالنسبة للمبتدئين ، قمت بإنشاء عنصر مباشرةً على المضيف ، بحيث يكون من الأسهل والأسرع التقاط تأثيرات خاصة ، وهنا سأكتب على الفور كيفية إنشاء قالب ، لأنه النماذج التي يجب استخدامها كلما أمكن ذلك. سأريكم الصور ، انتهت الهدية المجانية للصق النسخ ، لكني سأرسم الأماكن التي يجب الانتباه إليها.

إنشاء قالب:

الصورة

هنا نعطي فقط اسم عاقل

إنشاء عنصر

الصورة

هام - يجب أن يكون المفتاح على هذا النحو ، ما هو موضح بين قوسين معقوفين هو ما سيبحث عنه Zabbix في السجل ، قمنا بتكوين تنسيق السجل في /etc/snmp/snmptt.conf وكتبنا هناك:

 EVENT ospfNbrStateChange .1.3.6.1.2.1.14.16.2.2 "OSPF" Normal FORMAT ZBXTRAP $aA OSPF neighbor with IP addr $2 changed state to $5 

في الواقع ، في السجل ، هذه هي الكلمة السحرية "OSPF" وتظهر:

 2018 07 19 15:25:38 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - ZBXTRAP 192.168.192.169 OSPF neighbor with IP addr 10.216.0.82 changed state to exchangeStart 

تنسيق التاريخ الذي حددناه في التكوين /etc/snmp/snmptt.ini:

 date_time_format = %Y %m %d %H:%M:%S 

ما كتبته أعلاه - استخدم أي تنسيق مناسب لك ، الشيء الرئيسي هو أنه يتطابق في الأماكن المناسبة.

إنشاء الزناد

الصورة

قد يكون لدى الجار عدة ولايات :

 1 : down 2 : attempt 3 : init 4 : twoWay 5 : exchangeStart 6 : exchange 7 : loading 8 : full 

لا يهم على الإطلاق نوع الدولة التي يوجد بها الجار ، إذا كانت هذه الحالة ليست كاملة ، لأنه لتشخيص هذا ، لا يزال عليك الذهاب إلى قطعة الحديد ، وقراءة السجلات ، وإدخال بعض الأوامر. لذا سيكون الزناد واحدًا ولن يكون متشوقًا إلا عندما تكون حالة الجار في TRAP غير كاملة.

قبل تعليق القالب على مضيف معين ، تأكد من تكوين المضيف بواجهة SNMP الصحيحة بعنوان IP الصحيح ، وإلا فإن السلالم ستكون في سجل /var/log/snmptt/snmptt.log ، لكن Zabbix لن يربطهم بالمضيف. في هذه الحالة ، في سجل Zabbix الخاص بالخادم /var/log/zabbix/zabbix_server.log ستكون هناك رسالة من النموذج:

 19972:20180720:091722.896 unmatched trap received from "192.168.192.169": 2018 07 20 09:17:21 .1.3.6.1.2.1.14.16.2.2 Normal "OSPF" 192.168.192.169 - OSPF neighbor with IP addr 10.64.0.10 changed state to exchangeStart 


انتقل إلى أحدث البيانات ، انظر

الصورة

عمل الزناد أيضا

الصورة

الآن وضع جارين

الصورة

في لوحة البيانات ، نرى حدوث مشكلتين ، وهذا أمر جيد ، وحتى رسالتين ستصلان حول هذا الموضوع مع تكوين الإشعار.

كل شيء رائع ، كل شيء يعمل ، وهنا الكرز على الكعكة في النهاية.

اليأس
الآن نأخذ ونرفع جار واحد. في الوقت نفسه ، ستختفي كلتا المشكلتين في لوحة العدادات في وقت واحد. هذا ليس خطأ ، هذه ميزة. لاحظت عن طريق الخطأ مثل هذه الفروق الدقيقة عندما اختبرت القالب. ونتيجة لذلك ، اتضح أنه إذا سقط العديد من الجيران ، ثم ارتفع أحدهم ، أو حتى إذا ارتفع الجار ، الذي لم يكن موجودًا من قبل ، فإن المراقبة ستتحول إلى اللون الأخضر.
بالطبع ، يمكنك تكوين العنصر بيديك لتتبع جار معين ، لا يزال بإمكانك كتابة شيء ما ، يمكنك العودة إلى سياقات SNMP من بداية المقالة. لا تزال هناك فكرة لرسم نص برمجي سيتجاوز SSH / API لشبكات الغدد ، وجمع معلومات حول جميع الجيران ، وإنشاء فريق عمل "فعال" ، وتحليل الاختلافات بين الشيكات وكتابة الخطأ في السجل ، ثم يمكن تغذية السجل بالشاشة ... إنه أمر صعب. أردت الحد الأدنى من العكازات والعرف. إذا كنت تعرف طريقة معقولة لحل هذه المشكلة أو تعتقد أنني فعلت كل شيء بشكل خاطئ ، فأنا أسأل مرة أخرى في التعليقات ، بل في مقالة الرد.


UPD: نصحنا زملاؤنا بفرزها ومحاولة تنفيذ خططنا باستخدام سياقات SNMP . هناك طلب ، سيكون هناك عرض. بالنظر إلى المستقبل يمكنني القول - إن الشيطان ليس رهيبًا للغاية ، فلنذهب.
على قطعة من شبكة الحديد ، نرسم أمرًا سحريًا:

snmp-server context {snmp context name} instance {protocol instance} vrf {vrf name}

تحتاج أسماء المعلمات إلى توضيح
{snmp context name} - اسم سياق SNMP الذي سيتم استخدامه في الطلبات.
{بروتوكول المثيل} و {vrf name} الذي نأخذه من تهيئة عملية OSPF المهيأة:

router ospf {protocol instance}
..
vrf {vrf name}
..


كان هناك خوف من أنه بعد هذه الإعدادات ، سنكسر العنصر الذي تم تكوينه بالفعل عبر SNMP بسياق فارغ ، لكنني تحققت من أن الإعداد يؤثر فقط على إخراج البيانات عبر OSPF-MIB ، بينما على سبيل المثال من قسم IF-MIB يستمر كل شيء في العودة كما كان من قبل مع سياق فارغ. إذا لم يكن لديك Nexus ، فأوصيك بالتحقق من هذه النقطة مرة أخرى - من المحتمل أن يكون السلوك مختلفًا.

الآن قم بتدوير القالب في Zabbix.
يجب عليك إنشاء قاعدة Discovery جديدة مع السياق:

الصورة

نموذج عنصر جديد أيضا مع السياق

الصورة

ومثيران - الأول - للتنبيه إذا كان الجار في أي حالة ما عدا كامل:

الصورة

والثاني - إذا كان الجار مفقودًا:

الصورة

Source: https://habr.com/ru/post/ar417813/


All Articles