
مرحباً بالجميع ، اسمي إيغور سيدورينكو. المراقبة هي أحد المجالات الرئيسية لعملي وهوايتي أيضًا. سأتحدث عن 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