مراقبة أحجام NetApp عبر SSH



مرحباً بالجميع ، اسمي إيغور سيدورينكو. المراقبة هي أحد المجالات الرئيسية لعملي وهوايتي أيضًا. سأتحدث عن Zabbix وكيفية استخدامه لمراقبة المعلومات التي نحتاجها حول أحجام NetApp ، مع الوصول فقط عبر SSH. من يهمه موضوع المراقبة و Zabbix من فضلك تحت القط.



في البداية ، قمنا بمراقبة وحدات التخزين عن طريق تركيبها على خادم معين ، حيث تم تعليق قالب خاص يلتقط حوامل NFS على العقدة ويضعها تحت المراقبة ، عن طريق القياس مع أنظمة الملفات في قالب Linux الأساسي. كان لابد من تسجيل الحامل في fstab وتركيبه يدويًا - ولهذا السبب ، فقد الكثير ونُسي.



ثم خطرت لي فكرة رائعة: نحن بحاجة إلى أتمتة كل هذا. كانت هناك عدة خيارات:



  • هناك قوالب جاهزة تعمل مع SNMP ، لكن لا يوجد وصول.
  • الحصول على قائمة الأحجام والتركيب التلقائي على العقدة: تحتاج إلى إنشاء مجلد ، تسجيل fstab ، تحميل ، هذا كل شيء ، الكثير من البواسير.
  • هناك واجهة برمجة تطبيقات رائعة ، ولكن نظرًا لأننا نؤجر مساحة فقط ، فقد تم تقليصها في نسختنا من ONTAP ولا تزود المستخدم بالمعلومات الضرورية.
  • بطريقة ما ، استخدم وصول SSH للحصول على وحدات تخزين وإعدادها للمراقبة.


وقع الاختيار على وكيل SSH .



اكتشاف منخفض المستوى (LLD)



أولاً ، نحتاج إلى إنشاء اكتشاف منخفض المستوى (LLD) ، وستكون هذه أسماء مجلداتنا. كل هذا ضروري لسحب معلومات محددة عن الحجم الذي نحتاجه. تبدو البيانات الأولية كما يلي (114 في وقت كتابة هذا التقرير):



set -unit B; volume show -state online






حسنًا ، كيف يمكننا الاستغناء عن العكازات: لنكتب نصًا برمجيًا مكونًا من سطر واحد يعرض أسماء المجلدات بتنسيق JSON (نظرًا لأن هذا فحص خارجي ، فإن البرامج النصية موجودة على خادم Zabbix في الدليل /usr/lib/zabbix/externalscripts):



netapp_volume_discovery.sh
#!/usr/bin/bash

SVM_NAME=""
SVM_ADDRESS=""
USERNAME=""
PASSWORD=""

for i in $(sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $USERNAME@$SVM_ADDRESS 'set -unit B; volume show -state online' | grep $SVM_NAME | awk {'print $2'}); do echo '{"volume_name":"'$i'"}'; done | jq -s '.








أنت الآن بحاجة إلى إنشاء قالب وإنشاء عناصر بيانات بناءً على البيانات المستلمة:











عناصر البيانات



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











set -unit B; df -i -volume {#VOLUME_NAME}; volume show-space {#VOLUME_NAME}; statistics volume show -volume {#VOLUME_NAME}


نحصل على هذه الورقة:



الحصول على حجم: معلومات ackey_media
Last login time: 9/15/2020 12:42:45
Filesystem               iused      ifree  %iused  Mounted on

/vol/ackey_media/           96     311191      0%  /ackey_media

                      Volume Name: ackey_media
                      Volume MSID: 2159592810
                      Volume DSID: 1317
                     Vserver UUID: 46a00e5d-c22d-11e8-b6ed-00a098d48e6d
                   Aggregate Name: NGHF_FAS2720_04
                   Aggregate UUID: 7ec21b4d-b4db-4f84-85e2-130750f9f8c3
                         Hostname: FAS2720_04
                        User Data: 20480B
                User Data Percent: 0%
                    Deduplication: -
            Deduplication Percent: -
          Temporary Deduplication: -
  Temporary Deduplication Percent: -
              Filesystem Metadata: 1150976B
      Filesystem Metadata Percent: 0%
              SnapMirror Metadata: -
      SnapMirror Metadata Percent: -
             Tape Backup Metadata: -
     Tape Backup Metadata Percent: -
                   Quota Metadata: -
           Quota Metadata Percent: -
                           Inodes: 12288B
                   Inodes Percent: 0%
                   Inodes Upgrade: -
           Inodes Upgrade Percent: -
                 Snapshot Reserve: -
         Snapshot Reserve Percent: -
        Snapshot Reserve Unusable: -
Snapshot Reserve Unusable Percent: -
                   Snapshot Spill: -
           Snapshot Spill Percent: -
             Performance Metadata: 28672B
     Performance Metadata Percent: 0%
                       Total Used: 1212416B
               Total Used Percent: 0%
         Total Physical Used Size: 1212416B
         Physical Used Percentage: 0%
                Logical Used Size: 1212416B
             Logical Used Percent: 0%
                Logical Available: 10736205824B

DOMCLIC_SVM : 9/15/2020 12:42:51

                        *Total Read Write Other  Read Write Latency 

     Volume     Vserver    Ops  Ops   Ops   Ops (Bps) (Bps)    (us) 
----------- ----------- ------ ---- ----- ----- ----- ----- ------- 
ackey_media DOMCLIC_SVM      0    0     0     0     0     0       0




من هذه الورقة ، نحتاج إلى تحديد المقاييس التي نحتاجها.



سحر التعابير النمطية



في البداية ، كنت أرغب في استخدام JavaScript للمعالجة المسبقة ، لكن بطريقة ما لم أتقن ذلك ، لم ينجح. لذلك ، توقفت عند النظاميين ، وأستخدمهم في كل مكان تقريبًا.



عدد inodes المستخدمة



سنختار معلومات فقط حول inodes لكل مجلد على مرحلتين: أولاً ، جميع المعلومات:















\/vol\/\w+\/.*










ثم ، على وجه التحديد بالمقاييس:



(\d+)\s+(\d+)\s+(\d+)










الإخراج - قالب تنسيق الإخراج. \N ( N=1..9)- يتم استبدال تسلسل الهروب بمجموعة المطابقة التاسعة. \0يتم استبدال تسلسل الهروب بالنص المطابق:



  • \1 - Inode used on {#VOLUME_NAME} - عدد inodes المستخدمة ؛
  • \2 - Inode free on {#VOLUME_NAME} - عدد inodes المجانية ؛
  • \3 - Inode used percentage on {#VOLUME_NAME} - تستخدم inodes كنسبة مئوية ؛
  • Inode total on {#VOLUME_NAME}- عنصر محسوب ، عدد inodes المتاحة.


last(inode_free[{#VOLUME_NAME}])+last(inode_used[{#VOLUME_NAME}])


مساحه مستخدمه



كل شيء أبسط هنا ، البيانات والنظامي في تنسيق أكثر متعة: نحن نسحب المقياس الذي نحتاجه ونأخذ الرقم فقط:















(?<=Logical Available:\s)\d+










المقاييس المجمعة:



  • Logical available on {#VOLUME_NAME} - مقدار المساحة المنطقية المتاحة ؛
  • Logical used percent on {#VOLUME_NAME} - المكان المنطقي المستخدم بالنسبة المئوية ؛
  • Logical used size on {#VOLUME_NAME} - مقدار المساحة المنطقية المستخدمة ؛
  • Physical used percentage on {#VOLUME_NAME} - المساحة المادية المستخدمة بالنسبة المئوية ؛
  • Total physical used size on {#VOLUME_NAME} - مقدار المساحة المادية المستخدمة ؛
  • Total used on {#VOLUME_NAME} - المساحة الإجمالية المستخدمة ؛
  • Total used percent on {#VOLUME_NAME} - مجموع الأماكن المستخدمة بالنسبة المئوية ؛
  • Logical size on {#VOLUME_NAME}- عنصر محسوب ، مقدار المساحة المنطقية المتاحة.


last(logical_available[{#VOLUME_NAME}])+last(total_used[{#VOLUME_NAME}])


أداء الحجم



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



statistics volume show -volume {#VOLUME_NAME}










نختار مقاييس الأداء من الورقة المشتركة بالانتظام الأول:



.DOMCLIC_SVM.*










ثانيًا ، نقوم بتجميع الأرقام:



(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)






أين:



  • \1 - Total number of operations per second on {#VOLUME_NAME} - العدد الإجمالي للعمليات في الثانية ؛
  • \2 - Read operations per second on {#VOLUME_NAME} - قراءة العمليات في الثانية ؛
  • \3 - Write operations per second on {#VOLUME_NAME} - كتابة العمليات في الثانية ؛
  • \4 - Other operations per second on {#VOLUME_NAME} - عمليات أخرى في الثانية (لا أعرف ما هي ، لكني أصور لسبب ما) ؛
  • \5 - Read throughput in bytes per second on {#VOLUME_NAME} - سرعة القراءة بالبايت في الثانية ؛
  • \6 - Write throughput in bytes per second on {#VOLUME_NAME} - سرعة الكتابة بالبايت في الثانية ؛
  • \7 - Average latency for an operation in microseconds on {#VOLUME_NAME} - متوسط ​​زمن الوصول للعمليات بالميكروثانية.


تنبيه



مجموعة المشغلات قياسية ، ومكان ، و inodes:







  • مساحة القرص الخالية أقل من 1٪ على {#VOLUME_NAME}
  • مساحة القرص الخالية أقل من 5٪ على {#VOLUME_NAME}
  • مساحة القرص الخالية أقل من 10٪ على {#VOLUME_NAME}
  • inodes مجاني أقل من 1٪ على {#VOLUME_NAME}
  • inodes مجاني أقل من 5٪ على {#VOLUME_NAME}
  • inodes مجاني أقل من 10٪ على {#VOLUME_NAME}


التصور



يتم التصور بشكل أساسي على Grafana ، إنه جميل ومريح. على سبيل المثال ، يبدو أحد المجلدات شيئًا كالتالي: يوجد في الزاوية اليمنى العليا زر إظهار في Zabbix ، والذي يمكنك من خلاله الوقوع في Zabbix ومشاهدة جميع المقاييس الخاصة بالحجم المحدد.











النتيجة



  • الإعداد التلقائي لوحدات التخزين للرصد.
  • الإزالة التلقائية لوحدات التخزين من المراقبة ، إذا تمت إزالة وحدة التخزين من NetApp.
  • تخلصنا من الارتباط بخادم واحد ووحدات التخزين يدويًا.
  • مقاييس الأداء المضافة لكل حجم. الآن نحن أقل احتمالا لسحب دعم مركز البيانات من أجل الرسوم البيانية من NetApp.


وسرعان ما يعدون بتحديث ONTAP وجلب واجهة برمجة تطبيقات موسعة ، سينتقل القالب إلى وكيل HTTP .



القالب والنص ولوحة القيادة



github.com/domclick/netapp-volume-monitoring



روابط مفيدة



docs.netapp.com/ontap-9/index.jsp

www.zabbix.com/documentation/current



All Articles