This is a translation of the original English documentation page. Help us make it better.

20. מודולים

סקירה כללית

אפשר לשפר את פונקציונליות החזית של Zabbix על ידי הוספת מודולים של צד שלישי או על ידי פיתוח מודולים משלך ללא צורך בשינוי קוד המקור של Zabbix.

שימו לב שקוד המודול יפעל עם אותן הרשאות כמו Zabbix קוד מקור. זה אומר:

  • מודולים של צד שלישי יכולים להזיק. אתה חייב לסמוך על המודולים שאתה התקנה;
  • שגיאות בקוד מודול של צד שלישי עלולות לקרוס את החזית. אם זה קורה, פשוט הסר את קוד המודול מהחזית. ברגע ש אם תטען מחדש את החזית של Zabbix, תראה פתק שאומר שחלקם מודולים נעדרים. עבור אל מודול administration (ב-ניהולכללימודולים) ולחץ על סרוק ספרייה שוב כדי להסיר מודולים לא קיימים ממסד הנתונים.

התקנה

אנא קרא תמיד את מדריך ההתקנה עבור מודול מסוים. זה מומלץ להתקין מודולים חדשים אחד אחד כדי לתפוס כשלים בְּקַלוּת.

רגע לפני שתתקין מודול:

  • ודא שהורדת את המודול ממקור מהימן. התקנה של קוד מזיק עלולה להוביל לתוצאות, כגון נתונים הֶפסֵד
  • ניתן להתקין גרסאות שונות של אותו מודול (אותו מזהה). מקביל, אך ניתן להפעיל רק גרסה בודדת בבת אחת

שלבים להתקנת מודול:

  • פרק את המודול שלך בתיקייה משלו בתיקיית 'מודולים' של החזית של Zabbix
  • ודא כי תיקיית המודול שלך מכילה לפחות את ה- manifest.json קוֹבֶץ
  • נווט אל מודול administration ולחץ על הלחצן סרוק ספרייה
  • מודול חדש יופיע ברשימה יחד עם הגרסה שלו, מחבר, תיאור ומצב
  • הפעל מודול על ידי לחיצה על המצב שלו

פתרון תקלות:

|בעיה|פתרון| |--------|----------------------------------------------- -| |המודול לא הופיע ברשימה|ודא שהקובץ manifest.json קיים בתיקיית modules/your-module/ של ה-frontend של Zabbix. אם כן זה אומר שהמודול לא מתאים לגרסה הנוכחית של Zabbix. אם קובץ manifest.json אינו קיים, כנראה שפרקת את האריזה בספרייה הלא נכונה.| |החזית קרס|קוד המודול אינו תואם לגרסה הנוכחית של Zabbix או לתצורת השרת. אנא מחק קבצי מודול וטען מחדש את ה-frontend. תראה הודעה שחלק מהמודולים נעדרים. עבור אל ניהול מודול ולחץ שוב על סרוק ספרייה כדי להסיר מודולים לא קיימים ממסד הנתונים.| |הודעת שגיאה לגבי מרחב שמות, מזהה או פעולות זהים מופיעה|מודול חדש ניסה לרשום מרחב שמות, מזהה או פעולות שכבר רשומות על ידי מודולים מופעלים אחרים. השבת את המודול המתנגש (מוזכר בהודעת השגיאה) לפני הפעלת המודול החדש.| |הודעות שגיאה טכניות מופיעות|דווח על שגיאות למפתח המודול.|

פיתוח מודולים

מודולים כתובים בשפת PHP. בקר דגם-תצוגה (MVC) עיצוב דפוסי תוכנה עדיף, מכיוון שהוא משמש גם ב- Zabbix חזית ויקל על הפיתוח. הקלדה קפדנית של PHP היא גם ברוך הבא אבל לא חובה.

שים לב שעם מודולים אתה יכול בקלות להוסיף פריטי תפריט חדשים ו השקפות ופעולות בהתאמה לחזית Zabbix. נכון לעכשיו זה לא אפשר לרשום API חדש או ליצור טבלאות מסד נתונים חדשות באמצעות מודולים.

מבנה המודול

כל מודול הוא ספרייה (ממוקמת בתוך ספריית מודולים) עם ספריות משנה המכילות בקרים, תצוגות וכל קוד אחר:

 example_module_directory/ (חובה)
            manifest.json (חובה) הגדרת מטא נתונים ופעולה.
            Module.php אתחול מודול וטיפול באירועים.
            קבצי פעולות/ בקר פעולה.
                SomethingView.php
                SomethingCreate.php
                SomethingDelete.php
                data_export/
                    ExportAsXml.php
                    ExportAsExcel.php
            תצוגות/ הצגת קבצים.
                example.something.view.php
                example.something.delete.php
                קבצי js/ JavaScript בשימוש בתצוגות.
                    example.something.view.js.php
            partials/ הצג קבצים חלקיים.
                דוגמה.משהו. לשימוש חוזר.php
                קבצי js/ JavaScript בשימוש בחלקים.
                    example.something.reusable.js.php

כפי שאתה יכול לראות, קובץ החובה היחיד במודול המותאם אישית הספרייה היא manifest.json. המודול לא יירשם בלי זה קוֹבֶץ. Module.php אחראי על רישום פריטי תפריט ו עיבוד אירועים כגון 'onBeforeAction' ו-'onTerminate'. ה ספריות פעולות, צפיות ו-חלקיות מכילות PHP ו-JavaScript קוד הדרוש לפעולות מודול.

מוסכמות מתן שמות

לפני שאתה יוצר מודול, חשוב להסכים על השם מוסכמה עבור פריטי מודול שונים כגון ספריות וקבצים כך שנוכל לשמור על דברים מאורגנים היטב. אפשר למצוא גם דוגמאות למעלה, בקטע מבנה מודול.

פריט כללי מתן שמות דוגמה
ספריית מודול אותיות קטנות [a-z], קו תחתון וספרות עשרוניות דוגמה_v2
ספריות משנה של פעולה אותיות קטנות [a-z] ותווי קו תחתון נתונים_ייצוא
קובצי פעולה CamelCase, המסתיים בסוג פעולה SomethingView.php
הצגת קבצים וקבצים חלקיים אותיות קטנות [a-z]
מילים מופרדות בנקודה
בתחילתה של module. ואחריה שם המודול
מסתיים בסוג פעולה ובסיומת קובץ .php
module.example .something.view.php
קובצי Javascript אותם כללים חלים על קבצים תצוגה וחלקים, מלבד סיומת הקובץ .js.php. module.example.something.view.js.php

שים לב שהקידומת 'מודול' והכלת השם הם חובה לצפייה ושמות קבצים חלקיים, אלא אם אתה צריך לעקוף את תצוגות הליבה של Zabbix או חלקים. עם זאת, כלל זה אינו חל על שמות קבצי פעולה.

הכנה מניפסט

לכל מודול צפוי להיות קובץ manifest.json עם הדברים הבאים שדות בפורמט JSON:

פרמטר נדרש סוג ברירת מחדל תיאור
manifest_version כן כפול - גרסת מניפסט של המודול. הגרסה הנתמכת כרגע היא 1.
id כן מחרוזת - מזהה מודול. ניתן להפעיל רק מודול אחד עם מזהה נתון בו-זמנית.
name כן מחרוזת - שם המודול כפי שמוצג בסעיף ניהול.
version כן מחרוזת - גרסת המודול כפי שמוצגת בסעיף הניהול.
namespace כן מחרוזת - מרחב שמות PHP עבור Module.php ומחלקות פעולה.
author No String "" מחבר המודול כפי שמוצג בקטע ניהול.
url No String "" כתובת אתר של המודול כפי שמוצגת בסעיף ניהול.
description No String "" תיאור המודול כפי שמוצג בסעיף הניהול.
actions No Object {} פעולות לרישום עם מודול זה. ראה פעולות.
config No Object {} תצורת מודול.

לעיון, ראה דוגמה של manifest.json ב- Reference.

פעולות

למודול תהיה שליטה על פעולות קצה המוגדרות בתוך אובייקט actions בקובץ manifest.json. כך נוצרות פעולות חדשות מוּגדָר. באותו אופן אתה יכול להגדיר מחדש פעולות קיימות. כל מפתח של פעולות צריכות לייצג את שם הפעולה ואת הערך המתאים צריך להכיל 'מחלקה' ובאופן אופציונלי מפתחות 'פריסה' ו'תצוגה'.

פעולה אחת מוגדרת על ידי ארבעה עמיתים: שם, בקר, תצוגה ו מַעֲרָך. אימות הנתונים והכנתם נעשים בדרך כלל ב- בקר, עיצוב הפלט נעשה בתצוגה או בחלקים, וה הפריסה אחראית לקשט את הדף באלמנטים כגון תפריט, כותרת עליונה, כותרת תחתונה ועוד.

פעולות מודול חייבות להיות מוגדרות בקובץ manifest.json כ-actions לְהִתְנַגֵד:

פרמטר נדרש סוג ברירת מחדל תיאור
*מפתח* כן מחרוזת - שם הפעולה, באותיות קטנות [a-z], הפרדת מילים באמצעות נקודה.
class כן מחרוזת - שם מחלקת הפעולה, כולל נתיב ספריית המשנה (אם נעשה בו שימוש) בתוך ספריית actions.
layout No String "layout.htmlpage" פריסת פעולה.
view No מחרוזת null תצוגת פעולה.

ישנן מספר פריסות מוגדרות מראש, כמו layout.json או layout.xml. אלה מיועדים לפעולות שמייצרות שונות תוצאה מאשר HTML. אתה יכול לחקור פריסות מוגדרות מראש ב- אפליקציה/צפיות/ספרייה או אפילו צור משלך.

לפעמים יש צורך רק להגדיר מחדש את חלק התצוגה של פעולה כלשהי משאירים את הבקר ללא פגע. במקרה כזה פשוט מניחים את הדרוש הצג ו/או קבצים חלקיים בתוך ספריית views של המודול.

לעיון, אנא עיין בקובץ בקר פעולה לדוגמה ב- Reference. אנא אל תהססו לחקור פעולות נוכחיות של קוד המקור של Zabbix, הממוקם באפליקציה/ספרייה.

Module.php

קובץ PHP אופציונלי זה אחראי גם על אתחול המודול כטיפול באירועים. מחלקה 'מודול' צפוי להיות מוגדר בזה קובץ, הרחבת מחלקת הבסיס \Core\CModule. המחלקה Module חייבת להיות מוגדר בתוך מרחב השמות שצוין בקובץ manifest.json.

<?php
       
       מרחב שמות מודולים\דוגמה;
       השתמש ב-Core\CModule בתור BaseModule;
       
       Class Module מרחיב את BaseModule {
            ...
       }

לעיון, אנא עיין בדוגמה של Module.php ב- Reference.

פעולות

למודול תהיה שליטה על פעולות קצה המוגדרות בתוך אובייקט actions בקובץ manifest.json. כך נוצרות פעולות חדשות מוּגדָר. באותו אופן אתה יכול להגדיר מחדש פעולות קיימות. כל מפתח של פעולות צריכות לייצג את שם הפעולה ואת הערך המתאים צריך להכיל 'מחלקה' ובאופן אופציונלי מפתחות 'פריסה' ו'תצוגה'.

פעולה אחת מוגדרת על ידי ארבעה עמיתים: שם, בקר, תצוגה ו מַעֲרָך. אימות הנתונים והכנתם נעשים בדרך כלל ב- בקר, עיצוב הפלט נעשה בתצוגה או בחלקים, וה הפריסה אחראית לקשט את הדף באלמנטים כגון תפריט, כותרת עליונה, כותרת תחתונה ועוד.

פעולות מודול חייבות להיות מוגדרות בקובץ manifest.json כ-actions לְהִתְנַגֵד:

פרמטר נדרש סוג ברירת מחדל תיאור
*מפתח* כן מחרוזת - שם הפעולה, באותיות קטנות [a-z], הפרדת מילים באמצעות נקודה.
class כן מחרוזת - שם מחלקת הפעולה, כולל נתיב ספריית המשנה (אם נעשה בו שימוש) בתוך ספריית actions.
layout No String "layout.htmlpage" פריסת פעולה.
view No מחרוזת null תצוגת פעולה.

ישנן מספר פריסות מוגדרות מראש, כמו layout.json או layout.xml. אלה מיועדים לפעולות שמייצרות שונות תוצאה מאשר HTML. אתה יכול לחקור פריסות מוגדרות מראש ב- אפליקציה/צפיות/ספרייה או אפילו צור משלך.

לפעמים יש צורך רק להגדיר מחדש את חלק התצוגה של פעולה כלשהי משאירים את הבקר ללא פגע. במקרה כזה פשוט מניחים את הדרוש הצג ו/או קבצים חלקיים בתוך ספריית views של המודול.

לעיון, אנא עיין בקובץ בקר פעולה לדוגמה ב- Reference. אנא אל תהססו לחקור פעולות נוכחיות של קוד המקור של Zabbix, הממוקם באפליקציה/ספרייה.

Module.php

קובץ PHP אופציונלי זה אחראי גם על אתחול המודול כטיפול באירועים. מחלקה 'מודול' צפוי להיות מוגדר בזה קובץ, הרחבת מחלקת הבסיס \Core\CModule. המחלקה Module חייבת להיות מוגדר בתוך מרחב השמות שצוין בקובץ manifest.json.

<?php
       
       מרחב שמות מודולים\דוגמה;
       השתמש ב-Core\CModule בתור BaseModule;
       
       Class Module מרחיב את BaseModule {
            ...
       }

לעיון, אנא עיין בדוגמה של Module.php ב- Reference.