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

14 מעקב ODBC

סקירה כללית

ניטור ODBC מתאים לסוג הפריט מסד נתונים ב- חזית Zabbix.

ODBC הוא ממשק API של שפת תכנות C לגישה למסד נתונים מערכות ניהול (DBMS). קונספט ODBC פותח על ידי מיקרוסופט ומאוחר יותר הועברו לפלטפורמות אחרות.

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

::: שימו לב חשוב ראה גם את ידוע issues עבור ODBC המחאות. :::

התקנת unixODBC

הדרך המוצעת להתקנת unixODBC היא להשתמש בהפעלה של לינוקס מאגרי חבילות ברירת המחדל של המערכת. בלינוקס הפופולרי ביותר הפצות unixODBC כלולה במאגר החבילות כברירת מחדל. אם זה לא זמין, ניתן להשיגו בדף הבית של unixODBC: http://www.unixodbc.org/download.html.

התקנת unixODBC על מערכות מבוססות RedHat/Fedora באמצעות יאם מנהל אריזה:

 shell> dnf -y התקן את unixODBC unixODBC-devel

התקנת unixODBC על מערכות מבוססות SUSE באמצעות חבילת zypper מנהל:

 # zypper ב-unixODBC-devel

יש צורך בחבילת unixODBC-devel כדי להדר את Zabbix תמיכה ב-unixODBC.

התקנת מנהלי התקנים של unixODBC

יש להתקין מנהל מסד נתונים של unixODBC עבור מסד הנתונים, אשר יהיה במעקב. ל-unixODBC יש רשימה של מסדי נתונים נתמכים ו מנהלי התקנים: http://www.unixodbc.org/drivers.html. בכמה לינוקס מנהלי התקנים של מסד הנתונים של הפצות כלולים במאגרי החבילות. התקנת מנהל התקן מסד נתונים MySQL על מערכות מבוססות RedHat/Fedora באמצעות מנהל החבילות יאם:

 shell> dnf התקן את mysql-connector-odbc

התקנת מנהל התקן מסד הנתונים של MySQL במערכות מבוססות SUSE באמצעות זיפר מנהל חבילות:

 zypper ב-MyODBC-unixODBC

הגדרת unixODBC

תצורת ODBC נעשית על ידי עריכת ה-odbcinst.ini ו קבצי odbc.ini. כדי לאמת את מיקום קובץ התצורה, הקלד:

 shell> odbcinst -j

odbcinst.ini משמש לרשימת מנהלי ההתקן של מסד הנתונים של ODBC המותקנים:

 [mysql]
        תיאור = ODBC עבור MySQL
        מנהל התקן = /usr/lib/libmyodbc5.so

פרטי פרמטר:

תכונה תיאור
mysql שם מנהל ההתקן של מסד הנתונים.
תיאור תיאור מנהל ההתקן של מסד הנתונים.
מנהל התקן מיקום ספריית מנהלי ההתקן של מסד הנתונים.

odbc.ini משמש להגדרת מקורות נתונים:

 [מִבְחָן]
        תיאור = מסד נתונים של בדיקות MySQL
        דרייבר = mysql
        שרת = 127.0.0.1
        משתמש = שורש
        סיסמה =
        יציאה = 3306
        מסד נתונים = zabbix

פרטי פרמטר:

תכונה תיאור
test שם מקור הנתונים (DSN).
תיאור תיאור מקור הנתונים.
מנהל התקן שם מנהל ההתקן של מסד הנתונים - כפי שצוין ב-odbcinst.ini
שרת שרת מסד נתונים IP/DNS.
משתמש משתמש במסד נתונים לחיבור.
סיסמה סיסמת משתמש למסד נתונים.
יציאה יציאת חיבור למסד נתונים.
מסד נתונים שם מסד נתונים.

כדי לוודא אם חיבור ODBC פועל בהצלחה, חיבור אל יש לבדוק את מסד הנתונים. ניתן לעשות זאת עם כלי השירות isql (כלול בחבילת unixODBC):

 shell> test isql
        +----------------------------------------------+
        | מְחוּבָּר! |
        | |
        | sql-statement |
        | עזרה [שם שולחן] |
        | עזוב |
        | |
        +----------------------------------------------+
        SQL>

קומפילציה של Zabbix עם תמיכה ב-ODBC

כדי לאפשר תמיכה ב-ODBC, יש להרכיב את Zabbix עם הפריטים הבאים דֶגֶל:

   --with-unixodbc[=ARG] השתמש במנהל התקן odbc כנגד חבילת unixODBC

ראה עוד על התקנת Zabbix מה-מקור code.

תצורת פריט בחזית Zabbix

הגדר ניטור מסד נתונים item.

כל שדות הקלט החובה מסומנים בכוכבית אדומה.

במיוחד עבור פריטי ניטור מסד נתונים עליך להזין:

סוג בחר כאן צג מסד נתונים.
Key הזן אחד משני מפתחות הפריט הנתמכים:
db.odbc.select[<תיאור קצר ייחודי>,<dsn>,<מחרוזת חיבור>] - פריט זה נועד כדי החזר ערך אחד, כלומר העמודה הראשונה בשורה הראשונה של תוצאת שאילתת SQL. אם שאילתה מחזירה יותר מעמודה אחת, רק העמודה הראשונה נקראת. אם שאילתה מחזירה יותר משורה אחת, רק השורה הראשונה נקראת.
db.odbc.get[<תיאור קצר ייחודי>,<dsn>,<מחרוזת חיבור>] - פריט זה הוא מסוגל להחזיר מספר שורות/עמודות בפורמט JSON. לפיכך הוא עשוי לשמש כפריט מאסטר שאוסף את כל הנתונים בקריאת מערכת אחת, בעוד שניתן להשתמש בעיבוד מקדים של JSONPath בפריטים תלויים כדי לחלץ ערכים בודדים. למידע נוסף, ראה example של הפורמט המוחזר, המשמש לגילוי ברמה נמוכה. פריט זה נתמך מאז Zabbix 4.4.
התיאור הייחודי ישמש לזיהוי הפריט בטריגרים וכו'.
למרות ש'dsn' ו'מחרוזת חיבור' הם פרמטרים אופציונליים, לפחות אחד מהם צריך להיות קיים. אם מוגדרים גם שם מקור הנתונים (DSN) וגם מחרוזת החיבור, ה-DSN יתעלם.
שם מקור הנתונים, אם נעשה בו שימוש, חייב להיות מוגדר כמצוין ב-odbc.ini.
מחרוזת החיבור עשויה להכיל מנהל התקן ארגומנטים ספציפיים.

דוגמה (חיבור עבור מנהל התקן ODBC של MySQL 5):
=> db.odbc.get[דוגמה של MySQL,,"Driver=/usr/local/lib/libmyodbc5a.so; Database=master;Server=127.0.0.1;Port=3306"]
שם משתמש הזן את שם המשתמש של מסד הנתונים
פרמטר זה הוא אופציונלי אם המשתמש צוין ב-odbc.ini.
אם נעשה שימוש במחרוזת חיבור, והשדה שם משתמש אינו ריק, הוא מצורף ל- מחרוזת החיבור בתור UID=<user>
סיסמה הזן את סיסמת המשתמש של מסד הנתונים
פרמטר זה הוא אופציונלי אם הסיסמה צוינה ב-odbc.ini.
אם נעשה שימוש במחרוזת חיבור, והשדה סיסמה אינו ריק, הוא מצורף לחיבור מחרוזת בתור PWD=<סיסמה>.
אם סיסמה מכילה נקודה-פסיק, היא צריכה להיות עטופה בסוגריים מסולסלים, לדוגמה:
סיסמה: {P?;)*word} (אם היא אמיתית הסיסמה היא P?;)*word)

הסיסמה תצורף למחרוזת החיבור אחרי שם המשתמש בתור:
UID=<username>;PWD={P?;)*word}

כדי לבדוק את המחרוזת שהתקבלה, הרץ:
isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}'
שאילתת SQL הזן את שאילתת SQL.
שים לב שעם הפריט db.odbc.select[] השאילתה חייבת להחזיר ערך אחד בלבד.
סוג המידע חשוב לדעת איזה סוג מידע יוחזר על ידי השאילתה, כדי שיבחר נכון כאן. עם סוג מידע שגוי הפריט יהפוך ללא נתמך.

הערות חשובות

  • פריטי ניטור מסד נתונים יהפכו ללא נתמכים אם לא יופעלו תהליכי odbc poller בתצורת השרת או ה-proxy. כדי להפעיל משאלי ODBC, הגדר את הפרמטר StartODBCPollers בקובץ התצורה של Zabbix שרת או, עבור בדיקות שבוצעו על ידי פרוקסי, ב-Zabix proxy קובץ תצורה.
  • Zabbix אינה מגבילה את זמן ביצוע השאילתה. זה תלוי במשתמש לבחור שאילתות שניתן לבצע בכמות סבירה של זְמַן.
  • ערך הפרמטר Timeout. משרת Zabbix משמש כפסק זמן ההתחברות של ODBC (שים לב בהתאם למנהלי התקנים של ODBC, ייתכן שהגדרת הזמן הקצוב לכניסה תהיה התעלמו).
  • פקודת SQL חייבת להחזיר ערכת תוצאות כמו כל שאילתה עם בחר.... תחביר השאילתה יהיה תלוי ב-RDBMS אשר יהיה לעבד אותם. תחביר הבקשה להליך אחסון חייב להיות התחיל עם מילת המפתח 'התקשר'.

הודעות שגיאה

הודעות שגיאה ODBC מובנות בשדות כדי לספק פרטים מֵידָע. לדוגמה:

 לא ניתן לבצע שאילתת ODBC: [SQL_ERROR]:[42601][7][ERROR: שגיאת תחביר ב";" או ליד; שגיאה בעת ביצוע השאילתה]
        └──יתוח O ──────────────┘
                    │ │ │ └─ קוד שגיאה מקורי └─ הודעת שגיאה מקורית
                    │ │ └─ SQLState
                    └─ הודעת Zabbix └─ קוד החזרה של ODBC

שים לב שאורך הודעת השגיאה מוגבל ל-2048 בתים, כך שה ניתן לקצץ את ההודעה. אם יש יותר מאבחון ODBC אחד record Zabbix מנסה לשרשר אותם (מופרדים עם |) עד כמה מגבלת האורך מאפשרת.