مصدر Prometheus لمقاييس الأجهزة ونظام التشغيل التي تم الكشف عنها بواسطة *NIX kernels، المكتوبة بلغة Go باستخدام أدوات تجميع القياسات القابلة للتوصيل.
يوصى باستخدام مُصدر Windows لمستخدمي Windows. لكشف مقاييس NVIDIA GPU، يمكن استخدام prometheus-dcgm.
إذا كنت جديدًا على Prometheus و node_exporter
فهناك دليل بسيط خطوة بخطوة.
يستمع node_exporter
إلى منفذ HTTP رقم 9100 بشكل افتراضي. راجع إخراج --help
لمزيد من الخيارات.
بالنسبة لعمليات التثبيت التلقائية مع Ansible، هناك دور مجتمع Prometheus.
تم تصميم node_exporter
لمراقبة النظام المضيف. يتطلب النشر في الحاويات عناية إضافية لتجنب مراقبة الحاوية نفسها.
بالنسبة للمواقف التي تتطلب النشر في حاوية، يجب استخدام بعض العلامات الإضافية للسماح لـ node_exporter
بالوصول إلى مساحات أسماء المضيف.
انتبه إلى أن أي نقاط تثبيت غير جذرية تريد مراقبتها ستحتاج إلى تثبيتها في الحاوية.
إذا قمت ببدء تشغيل حاوية لمراقبة المضيف، فحدد وسيطة path.rootfs
. يجب أن تتطابق هذه الوسيطة مع المسار الموجود في bind-mount لجذر المضيف. سيستخدم Node_exporter path.rootfs
كبادئة للوصول إلى نظام الملفات المضيف.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
بالنسبة إلى إنشاء Docker، هناك حاجة إلى تغييرات مماثلة في العلامة.
---
version : ' 3.8 '
services :
node_exporter :
image : quay.io/prometheus/node-exporter:latest
container_name : node_exporter
command :
- ' --path.rootfs=/host '
network_mode : host
pid : host
restart : unless-stopped
volumes :
- ' /:/host:ro,rslave '
في بعض الأنظمة، يتطلب مُجمع timex
علامة Docker إضافية، --cap-add=SYS_TIME
، من أجل الوصول إلى مكالمات النظام المطلوبة.
هناك دعم متنوع لهواة الجمع في كل نظام تشغيل. تسرد الجداول أدناه جميع المجمعات الحالية والأنظمة المدعومة.
يتم تمكين المجمعات من خلال توفير علامة --collector.
. يمكن تعطيل المجمعات التي يتم تمكينها افتراضيًا عن طريق توفير علامة --no-collector.
. لتمكين بعض المجمعات المحددة فقط، استخدم --collector.disable-defaults --collector.
.
يمكن تكوين عدد قليل من أدوات التجميع لتضمين أو استبعاد أنماط معينة باستخدام علامات مخصصة. تُستخدم أعلام الاستبعاد للإشارة إلى "الكل باستثناء"، بينما تُستخدم أعلام التضمين للإشارة إلى "لا شيء باستثناء". لاحظ أن هذه العلامات متنافية بالنسبة لهواة الجمع الذين يدعمون كليهما.
مثال:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
قائمة:
جامع | نِطَاق | تضمين العلم | استبعاد العلم |
---|---|---|---|
arp | جهاز | --collector.arp.device-include | --collector.arp.device-exclude |
وحدة المعالجة المركزية | البق | --collector.cpu.info.bugs-include | لا يوجد |
وحدة المعالجة المركزية | أعلام | --collector.cpu.info.flags-include | لا يوجد |
إحصائيات القرص | جهاز | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
ethtool | جهاز | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
ethtool | المقاييس | --collector.ethtool.metrics-include | لا يوجد |
نظام الملفات | أنواع خ م | لا يوجد | --collector.filesystem.fs-types-exclude |
نظام الملفات | نقاط التثبيت | لا يوجد | --collector.filesystem.mount-points-exclude |
hwmon | رقاقة | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
hwmon | الاستشعار | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
يقاطع | اسم | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
netdev | جهاز | --collector.netdev.device-include | --collector.netdev.device-exclude |
com.qdisk | جهاز | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
slabinfo | أسماء بلاطة | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
sysctl | الجميع | --collector.sysctl.include | لا يوجد |
systemd | وحدة | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
اسم | وصف | نظام التشغيل |
---|---|---|
arp | يعرض إحصائيات ARP من /proc/net/arp . | لينكس |
bcache | يعرض إحصائيات ذاكرة التخزين المؤقت من /sys/fs/bcache/ . | لينكس |
الترابط | يعرض عدد العبيد المكوّنين والنشيطين لواجهات ربط Linux. | لينكس |
btrfs | يعرض إحصائيات btrfs | لينكس |
وقت التشغيل | يعرض وقت تمهيد النظام المشتق من kern.boottime sysctl. | داروين، دراجونفلاي، فري بي إس دي، نت بي إس دي، أوبن بي إس دي، سولاريس |
com.conntrack | يعرض إحصائيات conntrack (لا يفعل شيئًا في حالة عدم وجود /proc/sys/net/netfilter/ ). | لينكس |
وحدة المعالجة المركزية | يعرض إحصائيات وحدة المعالجة المركزية | داروين، دراجون فلاي، فري بي إس دي، لينكس، سولاريس، أوبن بي إس دي |
com.cpufreq | يعرض إحصائيات تردد وحدة المعالجة المركزية | لينكس، سولاريس |
إحصائيات القرص | يعرض إحصائيات الإدخال/الإخراج للقرص. | داروين، لينكس، أوبن بي إس دي |
dmi | كشف معلومات واجهة إدارة سطح المكتب (DMI) من /sys/class/dmi/id/ | لينكس |
edac | يعرض إحصائيات اكتشاف الأخطاء وتصحيحها. | لينكس |
إنتروبيا | يعرض الانتروبيا المتاحة. | لينكس |
com.exec | يعرض إحصاءات التنفيذ. | اليعسوب، فري بي إس دي |
قناة ليفية | يعرض معلومات وإحصائيات القنوات الليفية من /sys/class/fc_host/ . | لينكس |
filefd | يعرض إحصائيات واصف الملف من /proc/sys/fs/file-nr . | لينكس |
نظام الملفات | يعرض إحصائيات نظام الملفات، مثل مساحة القرص المستخدمة. | داروين، دراجونفلاي، فري بي إس دي، لينكس، أوبن بي إس دي |
hwmon | كشف مراقبة الأجهزة وبيانات الاستشعار من /sys/class/hwmon/ . | لينكس |
com.infiniband | يعرض إحصائيات الشبكة الخاصة بتكوينات InfiniBand وIntel OmniPath. | لينكس |
ipvs | يعرض حالة IPVS من /proc/net/ip_vs والإحصائيات من /proc/net/ip_vs_stats . | لينكس |
تحميل | يعرض متوسط الحمل. | داروين، دراجون فلاي، فري بي إس دي، لينكس، نت بي إس دي، أوبن بي إس دي، سولاريس |
مدادم | يعرض إحصائيات حول الأجهزة الموجودة في /proc/mdstat (لا يفعل شيئًا في حالة عدم وجود /proc/mdstat ). | لينكس |
meminfo | يعرض إحصائيات الذاكرة. | داروين، دراجونفلاي، فري بي إس دي، لينكس، أوبن بي إس دي |
netclass | يعرض معلومات واجهة الشبكة من /sys/class/net/ | لينكس |
netdev | يعرض إحصائيات واجهة الشبكة مثل البايتات المنقولة. | داروين، دراجونفلاي، فري بي إس دي، لينكس، أوبن بي إس دي |
netisr | يعرض إحصائيات netisr | فري بي إس دي |
netstat | يعرض إحصائيات الشبكة من /proc/net/netstat . هذه هي نفس المعلومات مثل netstat -s . | لينكس |
nfs | يعرض إحصائيات عميل NFS من /proc/net/rpc/nfs . هذه هي نفس المعلومات مثل nfsstat -c . | لينكس |
com.nfsd | يعرض إحصائيات خادم NFS kernel من /proc/net/rpc/nfsd . هذه هي نفس المعلومات مثل nfsstat -s . | لينكس |
nvme | يعرض معلومات NVMe من /sys/class/nvme/ | لينكس |
نظام التشغيل | كشف معلومات إصدار نظام التشغيل من /etc/os-release أو /usr/lib/os-release | أي |
powersupplyclass | يعرض إحصائيات مصدر الطاقة من /sys/class/power_supply | لينكس |
ضغط | يعرض إحصائيات توقف الضغط من /proc/pressure/ . | Linux (kernel 4.20+ و/أو CONFIG_PSI) |
rpl | يعرض إحصائيات مختلفة من /sys/class/powercap . | لينكس |
schedstat | يعرض إحصائيات جدولة المهام من /proc/schedstat . | لينكس |
com.selinux | يعرض إحصائيات SELinux. | لينكس |
com.sockstat | يعرض إحصائيات مختلفة من /proc/net/sockstat . | لينكس |
com.softnet | يعرض الإحصائيات من /proc/net/softnet_stat . | لينكس |
القانون الأساسي | يعرض إحصائيات مختلفة من /proc/stat . يتضمن ذلك وقت التمهيد والشوكات والمقاطعات. | لينكس |
بساطات | يعرض الإحصائيات من /sys/class/scsi_tape . | لينكس |
ملف نصي | يعرض الإحصائيات المقروءة من القرص المحلي. يجب تعيين علامة --collector.textfile.directory . | أي |
الحرارية | يعرض الإحصائيات الحرارية مثل pmset -g therm . | داروين |
المنطقة الحرارية | يعرض إحصائيات المنطقة الحرارية وجهاز التبريد من /sys/class/thermal . | لينكس |
وقت | يعرض وقت النظام الحالي. | أي |
com.timex | يعرض إحصائيات استدعاء نظام adjtimex(2) المحددة. | لينكس |
udp_queues | يعرض إجمالي أطوال UDP لـ rx_queue وtx_queue من /proc/net/udp و /proc/net/udp6 . | لينكس |
com.uname | يعرض معلومات النظام كما هو منصوص عليه في استدعاء نظام uname. | داروين، فري بي إس دي، لينكس، أوبن بي إس دي |
vmstat | يعرض الإحصائيات من /proc/vmstat . | لينكس |
الوكالة الدولية للطاقة | يعرض الإحصائيات من /sys/class/watchdog | لينكس |
com.xfs | يعرض إحصائيات وقت تشغيل XFS. | لينكس (النواة 4.4+) |
com.zfs | يعرض إحصائيات أداء ZFS. | فري بي إس دي، لينكس، سولاريس |
تقوم node_exporter
أيضًا بتنفيذ عدد من أدوات التجميع التي يتم تعطيلها افتراضيًا. تختلف أسباب ذلك باختلاف المجمع، وقد تشمل ما يلي:
scrape_interval
Prometheus أو scrape_timeout
Prometheus يمكنك تمكين المجمعات الإضافية حسب الرغبة عن طريق إضافتها إلى تكوين بدء تشغيل نظام init الخاص بك أو مشرف الخدمة لـ node_exporter
ولكن يُنصح بالحذر. قم بالتمكين مرة واحدة على الأكثر، مع الاختبار أولاً على نظام غير إنتاجي، ثم يدويًا على عقدة إنتاج واحدة. عند تمكين المُجمعات الإضافية، يجب عليك مراقبة التغيير بعناية من خلال مراقبة مقياس scrape_duration_seconds
للتأكد من اكتمال التجميع وعدم انتهاء المهلة. بالإضافة إلى ذلك، قم بمراقبة مقياس scrape_samples_post_metric_relabeling
لمعرفة التغييرات في العلاقة الأساسية.
اسم | وصف | نظام التشغيل |
---|---|---|
buddyinfo | يعرض إحصائيات أجزاء الذاكرة كما ورد في /proc/buddyinfo. | لينكس |
com.cgroups | ملخص لعدد مجموعات التحكم النشطة والممكّنة | لينكس |
cpu_vulnerabilities | يكشف معلومات ضعف وحدة المعالجة المركزية من sysfs. | لينكس |
devstat | يعرض إحصائيات الجهاز | اليعسوب، فري بي إس دي |
إدارة الحقوق الرقمية | كشف مقاييس GPU باستخدام sysfs / DRM، amdgpu هو برنامج التشغيل الوحيد الذي يكشف هذه المعلومات من خلال DRM | لينكس |
drbd | الكشف عن إحصائيات جهاز الكتلة الموزعة والمكررة (إلى الإصدار 8.4) | لينكس |
ethtool | يعرض معلومات واجهة الشبكة وإحصائيات برنامج تشغيل الشبكة المكافئة لـ ethtool و ethtool -S و ethtool -i . | لينكس |
يقاطع | يعرض إحصائيات المقاطعات التفصيلية. | لينكس، أوبن بي إس دي |
ksmd | يعرض إحصائيات النواة والنظام من /sys/kernel/mm/ksm . | لينكس |
lnstat | يعرض الإحصائيات من /proc/net/stat/ . | لينكس |
تسجيل الدخول | يعرض عدد الجلسات من تسجيل الدخول. | لينكس |
meminfo_numa | يعرض إحصائيات الذاكرة من /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | لينكس |
com.mountstats | يعرض إحصائيات نظام الملفات من /proc/self/mountstats . يعرض إحصائيات عميل NFS التفصيلية. | لينكس |
Network_route | يعرض جدول التوجيه كمقاييس | لينكس |
الأداء | يعرض المقاييس المستندة إلى الأداء (تحذير: تعتمد المقاييس على تكوين kernel وإعداداته). | لينكس |
العمليات | يعرض إحصائيات العملية الإجمالية من /proc . | لينكس |
com.qdisc | يعرض قائمة الانتظار إحصاءات الانضباط | لينكس |
slabinfo | يعرض إحصائيات اللوحة من /proc/slabinfo . لاحظ أن إذن /proc/slabinfo عادة ما يكون 0400، لذا قم بتعيينه بشكل مناسب. | لينكس |
com.softirqs | يعرض إحصائيات softirq التفصيلية من /proc/softirqs . | لينكس |
sysctl | كشف قيم sysctl من /proc/sys . استخدم --collector.sysctl.include(-info) للتكوين. | لينكس |
systemd | يعرض حالة الخدمة والنظام من systemd. | لينكس |
com.tcpstat | يعرض معلومات حالة اتصال TCP من /proc/net/tcp و /proc/net/tcp6 . (تحذير: يحتوي الإصدار الحالي على مشكلات محتملة في الأداء في حالات التحميل العالي.) | لينكس |
wifi | يعرض إحصائيات جهاز ومحطة WiFi. | لينكس |
xfrm | يعرض الإحصائيات من /proc/net/xfrm_stat | لينكس |
معلومات المنطقة | يعرض مقاييس منطقة الذاكرة NUMA. | لينكس |
تم إهمال هؤلاء المجمعين وستتم إزالتهم في الإصدار الرئيسي التالي.
اسم | وصف | نظام التشغيل |
---|---|---|
ntp | يعرض صحة البرنامج الخفي NTP المحلي للتحقق من الوقت | أي |
runit | يعرض حالة الخدمة من runit. | أي |
المشرف | يعرض حالة الخدمة من المشرف. | أي |
قد لا يعمل مُجمع perf
خارج الصندوق في بعض أنظمة Linux بسبب تكوين kernel وإعدادات الأمان. للسماح بالوصول، قم بتعيين معلمة sysctl
التالية:
sysctl -w kernel.perf_event_paranoid=X
اعتمادًا على القيمة التي تم تكوينها، ستتوفر مقاييس مختلفة، وفي معظم الحالات، سيوفر 0
المجموعة الأكثر اكتمالاً. لمزيد من المعلومات راجع man 2 perf_event_open
.
افتراضيًا، سيقوم مُجمع perf
فقط بجمع مقاييس وحدات المعالجة المركزية (CPUs) التي يعمل عليها node_exporter
(على سبيل المثال، runtime.NumCPU
. إذا لم يكن هذا كافيًا (على سبيل المثال، إذا قمت بتشغيل node_exporter
مع تعيين تقارب وحدة المعالجة المركزية (CPU) الخاصة به على وحدات معالجة مركزية محددة)، فيمكنك تحديد قائمة من وحدات المعالجة المركزية البديلة باستخدام علامة --collector.perf.cpus
، على سبيل المثال، لتجميع المقاييس على وحدات المعالجة المركزية 2-6، يمكنك تحديد: --collector.perf --collector.perf.cpus=2-6
تكوين وحدة المعالجة المركزية تمت فهرسته بصفر ويمكن أن يأخذ أيضًا قيمة خطوة؛ على سبيل المثال --collector.perf --collector.perf.cpus=1-10:5
سيتم تجميعه على وحدات المعالجة المركزية 1 و5 و10.
يستطيع مُجمِّع perf
أيضًا جمع أعداد نقاط التتبع عند استخدام علامة --collector.perf.tracepoint
. يمكن العثور على نقاط التتبع باستخدام perf list
أو من تصحيحات الأخطاء. ومثال استخدام هذا سيكون --collector.perf.tracepoint="sched:sched_process_exec"
.
يمكن تمكين مُجمع sysctl
باستخدام --collector.sysctl
. وهو يدعم تعريض قيم sysctl الرقمية كمقاييس باستخدام علامة --collector.sysctl.include
وقيم السلسلة كمقاييس معلومات باستخدام علامة --collector.sysctl.include-info
. يمكن تكرار الأعلام. بالنسبة إلى sysctl الذي يحتوي على قيم رقمية متعددة، يمكن توفير تعيين اختياري لكشف كل قيمة كمقياس خاص بها. وبخلاف ذلك، يتم استخدام تسمية index
لتحديد الحقول المختلفة.
باستخدام --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
يمكن أن يحتوي sysctl على قيم متعددة، على سبيل المثال:
net.ipv4.tcp_rmem = 4096 131072 6291456
باستخدام --collector.sysctl.include=net.ipv4.tcp_rmem
سيكشف المجمع:
node_sysctl_net_ipv4_tcp_rmem{index="0"} 4096
node_sysctl_net_ipv4_tcp_rmem{index="1"} 131072
node_sysctl_net_ipv4_tcp_rmem{index="2"} 6291456
إذا كانت الفهارس قد حددت معنى كما في هذه الحالة، فيمكن تعيين القيم إلى مقاييس متعددة عن طريق إلحاق التعيين بعلامة --collector.sysctl.include: استخدام --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
الذي سيكشفه المجمع:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
يجب أن يتم عرض قيم السلسلة كمقياس معلومات. يقوم المستخدم بتحديدها باستخدام علامة --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
بالنظر إلى النظام التالي:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
سيؤدي الإعداد --collector.sysctl.include-info=kernel.seccomp.actions_avail
إلى:
node_sysctl_info{key="kernel.seccomp.actions_avail", index="0", value="kill_process"} 1
node_sysctl_info{key="kernel.seccomp.actions_avail", index="1", value="kill_thread"} 1
...
يشبه مُجمع textfile
Pushgateway، حيث أنه يسمح بتصدير الإحصائيات من المهام المجمعة. ويمكن استخدامه أيضًا لتصدير المقاييس الثابتة، مثل الدور الذي يلعبه الجهاز. يجب استخدام Pushgateway لمقاييس مستوى الخدمة. وحدة textfile
مخصصة للمقاييس المرتبطة بالجهاز.
لاستخدامه، قم بتعيين علامة --collector.textfile.directory
على سطر أوامر node_exporter
. سيقوم المجمع بتحليل جميع الملفات الموجودة في هذا الدليل والتي تطابق glob *.prom
باستخدام تنسيق النص. ملاحظة: الطوابع الزمنية غير مدعومة.
لدفع وقت الانتهاء ذريًا لوظيفة cron:
echo my_batch_job_completion_time $(date +%s) > /path/to/directory/my_batch_job.prom.$$
mv /path/to/directory/my_batch_job.prom.$$ /path/to/directory/my_batch_job.prom
لتعيين أدوار الجهاز بشكل ثابت باستخدام التصنيفات:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
سوف يعرض node_exporter
جميع المقاييس من المجمعات الممكّنة بشكل افتراضي. هذه هي الطريقة الموصى بها لجمع المقاييس لتجنب الأخطاء عند مقارنة مقاييس العائلات المختلفة.
للاستخدام المتقدم، يمكن تمرير node_exporter
إلى قائمة اختيارية للمجمعات لتصفية المقاييس. يمكن استخدام المعلمات collect[]
exclude[]
عدة مرات (ولكن لا يمكن دمجها). في تكوين Prometheus، يمكنك استخدام بناء الجملة هذا ضمن تكوين Scrape.
اجمع فقط مقاييس أداة تجميع cpu
و meminfo
:
params:
collect[]:
- cpu
- meminfo
اجمع كل مقاييس المجمع الممكّنة ولكن استبعد netdev
:
params:
exclude[]:
- netdev
يمكن أن يكون هذا مفيدًا في قيام خوادم Prometheus المختلفة بجمع مقاييس محددة من العقد.
المتطلبات الأساسية:
glibc-static
.مبنى:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
لرؤية جميع علامات التكوين المتاحة:
./node_exporter -h
make test
تجريبي
يدعم المصدر TLS عبر ملف تكوين ويب جديد.
./node_exporter --web.config.file=web-config.yml
راجع تكوين الويب لمجموعة أدوات المصدر لمزيد من التفاصيل.