8 חיישן

כל שבב חיישן מקבל ספרייה משלו בעץ sysfs /sys/devices. כדי למצוא את כל שבבי החיישנים, קל יותר לעקוב אחר הקישורים הסמליים של המכשיר מ-/sys/class/hwmon/hwmon*, כאשר * הוא מספר ממשי (0,1,2,...).

קריאות החיישנים ממוקמות ב- /sys/class/hwmon/hwmon*/ ספרייה עבור מכשירים וירטואליים, או ב-/sys/class/hwmon/hwmon*/device ספרייה עבור מכשירים לא וירטואליים. קובץ, הנקרא שם, ממוקם בפנים ספריות hwmon* או hwmon*/device מכילות את שם השבב, שמתאים לשם של מנהל ההתקן של הליבה המשמש את החיישן שְׁבָב.

יש רק ערך קריאת חיישן אחד לכל קובץ. התכנית המשותפת עבור מתן שמות לקבצים המכילים קריאות חיישן בתוך כל אחד מה ספריות שהוזכרו לעיל הן: <type><number>_<item>, איפה

  • סוג - עבור שבבי חיישן הוא "in" (מתח), "טמפ" (טמפרטורה), "מעריץ" (אוהד) וכו',
  • פריט - "input" (ערך נמדד), "max" (סף גבוה), "min" (סף נמוך) וכו',
  • מספר - משמש תמיד לאלמנטים שיכולים להיות נוכחים יותר מ פעם אחת (בדרך כלל מתחיל מ-1, למעט מתחים שמתחילים מ 0). אם קבצים אינם מתייחסים לרכיב מסוים יש להם פתרון פשוט שם ללא מספר.

ניתן לרכוש את המידע לגבי חיישנים הזמינים במארח באמצעות כלי חיישנים וחיישנים (חבילת lm-sensors: http://lm-sensors.org/). חיישנים-זיהוי עוזר לקבוע איזה מודולים נחוצים עבור חיישנים זמינים. כאשר מודולים נטענים ניתן להשתמש בתוכנית חיישנים כדי להציג את הקריאות של כל החיישנים צ'יפס. התיוג של קריאות חיישנים, בשימוש על ידי תוכנית זו, יכול להיות שונה משיטת השמות הנפוצה (<type><number>_<item>):

  • אם יש קובץ בשם <type><number>_label, אז התווית בתוך קובץ זה תשמש במקום שם <type><number><item>;
  • אם אין קובץ <type><number>_label, אז חיפושי תוכנית בתוך הקובץ /etc/sensors.conf (יכול להיות גם /etc/sensors3.conf, או שונה) עבור החלפת השם.

תיוג זה מאפשר למשתמש לקבוע באיזה סוג חומרה משתמשים. אם אין קובץ <type><number>_label או תווית בפנים בקובץ התצורה ניתן לקבוע את סוג החומרה על ידי תכונת name (hwmon*/device/name). השמות האמיתיים של חיישנים, אשר zabbix_agent מקבל, ניתן להשיג על ידי הפעלת תוכנית חיישנים עם פרמטר -u (חיישנים -u).

בתוכנית חיישנים החיישנים הזמינים מופרדים על ידי האוטובוס סוג (מתאם ISA, מתאם PCI, מתאם SPI, התקן וירטואלי, ACPI ממשק, מתאם HID).

ב-Linux 2.4:

(קריאת החיישנים מתקבלות מספריית /proc/sys/dev/sensors)

  • התקן - שם ההתקן (אם נעשה שימוש ב-<mode>, הוא רגיל ביטוי);
  • חיישן - שם חיישן (אם נעשה שימוש ב-<mode>, זהו רגיל ביטוי);
  • מצב - ערכים אפשריים: avg, max, min (אם פרמטר זה הוא הושמט, המכשיר והחיישן מטופלים מילה במילה).

מפתח לדוגמה: חיישן[w83781d-i2c-0-2d,temp1]

לפני Zabbix 1.8.4, נעשה שימוש בפורמט החיישן[temp1].

ב-Linux 2.6+:

(קריאות חיישנים מתקבלות מספריית /sys/class/hwmon)

  • התקן - שם המכשיר (לא ביטוי רגולרי). שם המכשיר יכול להיות השם האמיתי של המכשיר (למשל 0000:00:18.3) או שם שנרכש באמצעות תוכנית חיישנים (למשל k8temp-pci-00c3). זה למעלה למשתמש לבחור באיזה שם להשתמש;
  • חיישן - שם חיישן (ביטוי לא רגולרי);
  • מצב - ערכים אפשריים: avg, max, min (אם פרמטר זה הוא הושמט, המכשיר והחיישן מטופלים מילה במילה).

מפתח לדוגמה:

חיישן[k8temp-pci-00c3,temp,max] או חיישן[0000:00:18.3,temp1]

חיישן[smsc47b397-isa-0880,in,avg] או חיישן[smsc47b397.2176,in1]

השגת שמות חיישנים

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

 חיישני $
        in0: +2.24 וולט (מינימום = +0.00 וולט, מקסימום = +3.32 וולט)
        Vcore: +1.15 וולט (מינימום = +0.00 וולט, מקסימום = +2.99 וולט)
        +3.3V: +3.30 וולט (מינימום = +2.97 וולט, מקסימום = +3.63 וולט)
        +12V: +13.00 וולט (מינימום = +0.00 וולט, מקסימום = +15.94 וולט)
        טמפרטורת M/B: +30.0°C (נמוכה = -127.0°C, גבוהה = +127.0°C)

מתוך אלה, ניתן להשתמש בתווית אחת בלבד ישירות:

 $ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in0]
        2.240000

ניסיון להשתמש בתוויות אחרות (כמו Vcore או +12V) לא יעבוד.

 $ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,Vcore]
        ZBX_NOTSUPPORTED

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

 חיישני $ -u
        ...
        Vcore:
          in1_input: 1.15
          תוך 1_דקה: 0.00
          in1_max: 2.99
          in1_alarm: 0.00
        ...
        +12V:
          in4_input: 13.00
          תוך 4_דקות: 0.00
          in4_max: 15.94
          in4_alarm: 0.00
        ...

אז Vcore צריך להיות שאילתה בתור in1, ו-+12V צריך להיות שאילתה בתור in4.1

 $ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in1]
        1.301000

לא רק מתח (in), אלא גם זרם (curr), טמפרטורה (טמפ') ו ניתן לאחזר קריאות מהירות מאוורר (מאוורר) על ידי Zabbix.


  1. לפי מפרט אלה הם מתחים על פיני שבב ובאופן כללי אולי צריך דֵרוּג.↩︎