אפשר לשפר את פונקציונליות החזית של Zabbix על ידי הוספת מודולים של צד שלישי או על ידי פיתוח מודולים משלך ללא צורך בשינוי קוד המקור של Zabbix.
שימו לב שקוד המודול יפעל עם אותן הרשאות כמו Zabbix קוד מקור. זה אומר:
אנא קרא תמיד את מדריך ההתקנה עבור מודול מסוים. זה מומלץ להתקין מודולים חדשים אחד אחד כדי לתפוס כשלים בְּקַלוּת.
רגע לפני שתתקין מודול:
שלבים להתקנת מודול:
פתרון תקלות:
|בעיה|פתרון| |--------|----------------------------------------------- -| |המודול לא הופיע ברשימה|ודא שהקובץ 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.