6 הגדרת Elasticsearch

::: שימו לב חשוב תמיכת Elasticsearch היא ניסיונית!

:::

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

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

תצורה

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

שרת וחזית של Zabbix

טיוטת קובץ תצורת שרת Zabbix עם פרמטרים שיש לעדכן:

 ### אפשרות: HistoryStorageURL
        # אחסון היסטוריה כתובת URL של HTTP[S].
        #
        # חובה: לא
        # ברירת מחדל:
        # HistoryStorageURL=
        ### אפשרות: HistoryStorageTypes
        # רשימה מופרדת בפסיקים של סוגי ערכים שיש לשלוח לאחסון ההיסטוריה.
        #
        # חובה: לא
        # ברירת מחדל:
        # HistoryStorageTypes=uint,dbl,str,log,text

ערכי פרמטרים לדוגמה למילוי קובץ התצורה של שרת Zabbix עם:

 HistoryStorageURL=http://test.elasticsearch.lan:9200
        HistoryStorageTypes=str,log,text

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

Elasticsearch תומך בסוגי הפריטים הבאים:

 uint,dbl,str,log,text

הסבר על סוג פריט נתמך:

סוג ערך פריט טבלת מסד נתונים סוג Elasticsearch
נומרי (לא חתום) היסטוריה_uint uint
נומרי (צף) היסטוריה dbl
דמות היסטוריה_str str
לוג היסטוריה_log log
טקסט היסטוריה_טקסט טקסט

טיוטה של קובץ תצורה של Zabbix Frontend (conf/zabbix.conf.php) עם פרמטרים שיש לעדכן:

 // Elasticsearch url (יכול להיות מחרוזת אם משתמשים באותה url עבור כל הסוגים).
        $HISTORY['url'] = [
              'uint' => 'http://localhost:9200',
              'text' => 'http://localhost:9200'
        ];
        // סוגי ערכים המאוחסנים ב- Elasticsearch.
        $HISTORY['types'] = ['uint', 'טקסט'];

ערכי פרמטרים לדוגמה למילוי קובץ התצורה של Zabbix Frontend עם:

 $HISTORY['url'] = 'http://test.elasticsearch.lan:9200';
        $HISTORY['types'] = ['str', 'text', 'log'];

תצורה זו מאלצת לאחסן היסטוריית 'טקסט', 'תווים' ו'יומן' ערכים ב- Elasticsearch.

זה גם נדרש להפוך את $HISTORY לגלובאלי ב-conf/zabbix.conf.php ל לוודא שהכל עובד כמו שצריך (ראה conf/zabbix.conf.php.example כיצד לעשות זאת):

 // קובץ תצורה של Zabbix GUI.
        $DB גלובלי, $HISTORY;
התקנת Elasticsearch ויצירת מיפוי

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

כדי להתקין את Elasticsearch, עיין בסעיף התקנת Elasticsearch מדריך.

מיפוי הוא מבנה נתונים ב- Elasticsearch (בדומה ל-a טבלה במסד נתונים). מיפוי עבור כל סוגי נתוני ההיסטוריה זמין כאן: database/elasticsearch/elasticsearch.map.

::: הערה אזהרה יצירת מיפוי היא חובה. קצת פונקציונליות ישבר אם המיפוי לא ייווצר על פי ה הוראה. :::

כדי ליצור מיפוי עבור סוג 'טקסט' שלח את הבקשה הבאה אל Elasticsearch:

תלתל -X PUT \
         http://your-elasticsearch.here:9200/text \
         -H 'content-type:application/json' \
         -d '{
           "הגדרות": {
              "אינדקס": {
                 "מספר_העותקים": 1,
                 "מספר_שברים": 5
              }
           },
           "מיפויים": {
              "נכסים": {
                 "מספר זיהוי של הפריט": {
                    "type": "ארוך"
                 },
                 "שעון": {
                    "format": "epoch_second",
                    "type": "תאריך"
                 },
                 "ערך": {
                    "שדות": {
                       "נתח": {
                          "אינדקס": נכון,
                          "type": "טקסט",
                          "analyzer": "סטנדרטי"
                       }
                    },
                    "index": false,
                    "type": "טקסט"
                 }
              }
           }
       }'

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

כדי לעבוד עם Elasticsearch, עיין בסעיף דרישה page לתוספת מֵידָע.

עוזר בית אינו מוחק נתונים מ- Elasticsearch.

אחסון נתוני היסטוריה במספר מדדים מבוססי תאריכים

סעיף זה מתאר שלבים נוספים הנדרשים לעבודה עם צינורות ולבלוע צמתים.

מלכתחילה, עליך ליצור תבניות למדדים.

הדוגמה הבאה מציגה בקשה ליצירת תבנית uint:

תלתל -X PUT \
         http://your-elasticsearch.here:9200/_template/uint_template \
         -H 'content-type:application/json' \
         -d '{
           "index_patterns": [
              "לא*"
           ],
           "הגדרות": {
              "אינדקס": {
                 "מספר_העותקים": 1,
                 "מספר_שברים": 5
              }
           },
           "מיפויים": {
              "נכסים": {
                 "מספר זיהוי של הפריט": {
                    "type": "ארוך"
                 },
                 "שעון": {
                    "format": "epoch_second",
                    "type": "תאריך"
                 },
                 "ערך": {
                    "type": "ארוך"
                 }
              }
           }
       }'

כדי ליצור תבניות אחרות, המשתמש צריך לשנות את כתובת האתר (החלק האחרון הוא שם התבנית), שנה את השדה "index_patterns" כך שיתאים לשם האינדקס וכדי להגדיר מיפוי חוקי, שניתן לקחת ממנו database/elasticsearch/elasticsearch.map.

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

תלתל -X PUT \
         http://your-elasticsearch.here:9200/_template/text_template \
         -H 'content-type:application/json' \
         -d '{
           "index_patterns": [
              "טֶקסט*"
           ],
           "הגדרות": {
              "אינדקס": {
                 "מספר_העותקים": 1,
                 "מספר_שברים": 5
              }
           },
           "מיפויים": {
              "נכסים": {
                 "מספר זיהוי של הפריט": {
                    "type": "ארוך"
                 },
                 "שעון": {
                    "format": "epoch_second",
                    "type": "תאריך"
                 },
                 "ערך": {
                    "שדות": {
                       "נתח": {
                          "אינדקס": נכון,
                          "type": "טקסט",
                          "analyzer": "סטנדרטי"
                       }
                    },
                    "index": false,
                    "type": "טקסט"
                 }
              }
           }
       }'

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

תלתל -X PUT \
         http://your-elasticsearch.here:9200/_ingest/pipeline/uint-pipeline \
         -H 'content-type:application/json' \
         -d '{
           "description": "שם אינדקס Uint יומי",
           "מעבדים": [
              {
                 "date_index_name": {
                    "field": "שעון",
                    "פורמטים_תאריך": [
                       "UNIX"
                    ],
                    "index_name_prefix": "uint-",
                    "date_rounding": "ד"
                 }
              }
           ]
       }'

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

ראה גם Elasticsearch תיעוד.

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

 ### אפשרות: HistoryStorageDateIndex
        # אפשר עיבוד מקדים של ערכי היסטוריה באחסון ההיסטוריה כדי לאחסן ערכים במדדים שונים על סמך תאריך.
        # 0 - השבת
        # 1 - אפשר
        #
        # חובה: לא
        # ברירת מחדל:
        # HistoryStorageDateIndex=0

פתרון תקלות

השלבים הבאים עשויים לעזור לך לפתור בעיות עם הגדרת Elasticsearch:

  1. בדוק אם המיפוי נכון (בקשה GET לכתובת ה-URL של האינדקס הנדרשת כמו http://localhost:9200/uint).
  2. בדוק אם רסיסים אינם במצב כשל (הפעלה מחדש של Elasticsearch אמור לעזור).
  3. בדוק את התצורה של Elasticsearch. התצורה אמורה לאפשר גישה מהמארח הקדמי של Zabbix וממארח השרת של Zabbix.
  4. בדוק את יומני Elasticsearch.

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