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 מנסה לשרשר אותם (מופרדים עם |) עד כמה
מגבלת האורך מאפשרת.