Pengekspor Prometheus untuk metrik perangkat keras dan OS yang diekspos oleh kernel *NIX, ditulis dalam Go dengan pengumpul metrik yang dapat dicolokkan.
Eksportir Windows direkomendasikan untuk pengguna Windows. Untuk mengekspos metrik GPU NVIDIA, prometheus-dcgm dapat digunakan.
Jika Anda baru mengenal Prometheus dan node_exporter
ada panduan langkah demi langkah sederhana.
node_exporter
mendengarkan pada port HTTP 9100 secara default. Lihat keluaran --help
untuk opsi lainnya.
Untuk penginstalan otomatis dengan Ansible, terdapat peran Komunitas Prometheus.
node_exporter
dirancang untuk memantau sistem host. Penempatan di container memerlukan kehati-hatian ekstra agar tidak terjadi pengawasan terhadap container itu sendiri.
Untuk situasi di mana penerapan dalam container diperlukan, beberapa tanda tambahan harus digunakan untuk mengizinkan akses node_exporter
ke namespace host.
Sadarilah bahwa setiap titik pemasangan non-root yang ingin Anda pantau harus diikat ke dalam wadah.
Jika Anda memulai wadah untuk pemantauan host, tentukan argumen path.rootfs
. Argumen ini harus cocok dengan jalur di bind-mount root host. Node_exporter akan menggunakan path.rootfs
sebagai awalan untuk mengakses sistem file host.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Untuk penulisan Docker, perubahan tanda serupa diperlukan.
---
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 '
Pada beberapa sistem, kolektor timex
memerlukan flag Docker tambahan, --cap-add=SYS_TIME
, untuk mengakses syscall yang diperlukan.
Ada beragam dukungan untuk kolektor di setiap sistem operasi. Tabel di bawah mencantumkan semua kolektor yang ada dan sistem yang didukung.
Kolektor diaktifkan dengan memberikan tanda --collector.
. Kolektor yang diaktifkan secara default dapat dinonaktifkan dengan memberikan tanda --no-collector.
. Untuk mengaktifkan hanya beberapa kolektor tertentu, gunakan --collector.disable-defaults --collector.
.
Beberapa kolektor dapat dikonfigurasi untuk menyertakan atau mengecualikan pola tertentu menggunakan tanda khusus. Bendera pengecualian digunakan untuk menunjukkan "semua kecuali", sedangkan bendera penyertaan digunakan untuk menyatakan "tidak ada kecuali". Perhatikan bahwa tanda-tanda ini eksklusif pada kolektor yang mendukung keduanya.
Contoh:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Daftar:
Pengumpul | Cakupan | Sertakan Bendera | Kecualikan Bendera |
---|---|---|---|
arp | perangkat | --collector.arp.device-include | --collector.arp.device-exclude |
CPU | bug | --collector.cpu.info.bug-termasuk | T/A |
CPU | bendera | --collector.cpu.info.flags-termasuk | T/A |
diskstats | perangkat | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
alat etnik | perangkat | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
alat etnik | metrik | --collector.ethtool.metrics-termasuk | T/A |
sistem file | tipe fs | T/A | --collector.filesystem.fs-types-exclude |
sistem file | titik pemasangan | T/A | --collector.filesystem.mount-points-exclude |
hwmon | keping | --collector.hwmon.chip-termasuk | --collector.hwmon.chip-kecualikan |
hwmon | sensor | --collector.hwmon.sensor-termasuk | --collector.hwmon.sensor-kecualikan |
menyela | nama | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
netdev | perangkat | --collector.netdev.device-include | --collector.netdev.device-exclude |
qdisk | perangkat | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
info lempengan | nama lempengan | --collector.slabinfo.slabs-termasuk | --collector.slabinfo.slabs-kecualikan |
sistem | semua | --collector.sysctl.include | T/A |
sistemd | satuan | --collector.systemd.unit-termasuk | --collector.systemd.unit-exclude |
Nama | Keterangan | sistem operasi |
---|---|---|
arp | Mengekspos statistik ARP dari /proc/net/arp . | Linux |
bcache | Mengekspos statistik bcache dari /sys/fs/bcache/ . | Linux |
ikatan | Mengekspos jumlah budak yang dikonfigurasi dan aktif dari antarmuka ikatan Linux. | Linux |
btrfs | Mengekspos statistik btrfs | Linux |
waktu boot | Mengekspos waktu boot sistem yang berasal dari sysctl kern.boottime . | Darwin, Capung, FreeBSD, NetBSD, OpenBSD, Solaris |
koneksi | Menampilkan statistik koneksi (tidak melakukan apa pun jika /proc/sys/net/netfilter/ tidak ada). | Linux |
CPU | Mengekspos statistik CPU | Darwin, Capung, FreeBSD, Linux, Solaris, OpenBSD |
cpufreq | Mengekspos statistik frekuensi CPU | Linux, Solaris |
diskstats | Menampilkan statistik I/O disk. | Darwin, Linux, OpenBSD |
dmi | Tampilkan info Antarmuka Manajemen Desktop (DMI) dari /sys/class/dmi/id/ | Linux |
pendidikan | Mengekspos statistik deteksi dan koreksi kesalahan. | Linux |
entropi | Mengekspos entropi yang tersedia. | Linux |
eksekutif | Mengekspos statistik eksekusi. | Capung, FreeBSD |
saluran serat | Mengekspos informasi dan statistik saluran fiber dari /sys/class/fc_host/ . | Linux |
filefd | Mengekspos statistik deskriptor file dari /proc/sys/fs/file-nr . | Linux |
sistem file | Mengekspos statistik sistem file, seperti ruang disk yang digunakan. | Darwin, Capung, FreeBSD, Linux, OpenBSD |
hwmon | Ekspos pemantauan perangkat keras dan data sensor dari /sys/class/hwmon/ . | Linux |
pita tak terbatas | Mengekspos statistik jaringan khusus untuk konfigurasi InfiniBand dan Intel OmniPath. | Linux |
ipvs | Mengekspos status IPVS dari /proc/net/ip_vs dan statistik dari /proc/net/ip_vs_stats . | Linux |
memuat rata-rata | Mengekspos beban rata-rata. | Darwin, Capung, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
Nyonya | Mengekspos statistik tentang perangkat di /proc/mdstat (tidak melakukan apa pun jika tidak ada /proc/mdstat ). | Linux |
meminfo | Mengekspos statistik memori. | Darwin, Capung, FreeBSD, Linux, OpenBSD |
kelas net | Mengekspos info antarmuka jaringan dari /sys/class/net/ | Linux |
netdev | Mengekspos statistik antarmuka jaringan seperti byte yang ditransfer. | Darwin, Capung, FreeBSD, Linux, OpenBSD |
netisr | Mengekspos statistik netisr | FreeBSD |
status bersih | Mengekspos statistik jaringan dari /proc/net/netstat . Ini adalah informasi yang sama dengan netstat -s . | Linux |
nfs | Mengekspos statistik klien NFS dari /proc/net/rpc/nfs . Ini adalah informasi yang sama dengan nfsstat -c . | Linux |
nfsd | Mengekspos statistik server kernel NFS dari /proc/net/rpc/nfsd . Ini adalah informasi yang sama dengan nfsstat -s . | Linux |
nvme | Mengekspos info NVMe dari /sys/class/nvme/ | Linux |
os | Tampilkan info rilis OS dari /etc/os-release atau /usr/lib/os-release | setiap |
kelas pasokan daya | Menampilkan statistik Catu Daya dari /sys/class/power_supply | Linux |
tekanan | Mengekspos statistik penghentian tekanan dari /proc/pressure/ . | Linux (kernel 4.20+ dan/atau CONFIG_PSI) |
rapl | Mengekspos berbagai statistik dari /sys/class/powercap . | Linux |
status jadwal | Mengekspos statistik penjadwal tugas dari /proc/schedstat . | Linux |
selinux | Mengekspos statistik SELinux. | Linux |
status kaus kaki | Mengekspos berbagai statistik dari /proc/net/sockstat . | Linux |
jaringan lunak | Mengekspos statistik dari /proc/net/softnet_stat . | Linux |
status | Mengekspos berbagai statistik dari /proc/stat . Ini termasuk waktu boot, fork, dan interupsi. | Linux |
tapestat | Mengekspos statistik dari /sys/class/scsi_tape . | Linux |
file teks | Mengekspos statistik yang dibaca dari disk lokal. Bendera --collector.textfile.directory harus disetel. | setiap |
panas | Mengekspos statistik termal seperti pmset -g therm . | Darwin |
zona_termal | Mengekspos statistik zona termal & perangkat pendingin dari /sys/class/thermal . | Linux |
waktu | Mengekspos waktu sistem saat ini. | setiap |
waktux | Menampilkan statistik panggilan sistem adjtimex(2) yang dipilih. | Linux |
udp_queues | Mengekspos panjang total UDP rx_queue dan tx_queue dari /proc/net/udp dan /proc/net/udp6 . | Linux |
tidak bernama | Mengekspos informasi sistem seperti yang disediakan oleh panggilan sistem yang tidak disebutkan namanya. | Darwin, FreeBSD, Linux, OpenBSD |
vmstat | Mengekspos statistik dari /proc/vmstat . | Linux |
penjaga | Menampilkan statistik dari /sys/class/watchdog | Linux |
xfs | Mengekspos statistik runtime XFS. | Linux (kernel 4.4+) |
zfs | Mengekspos statistik kinerja ZFS. | FreeBSD, Linux, Solaris |
node_exporter
juga mengimplementasikan sejumlah kolektor yang dinonaktifkan secara default. Alasannya berbeda-beda menurut kolektor, dan mungkin termasuk:
scrape_interval
atau scrape_timeout
Prometheus Anda dapat mengaktifkan kolektor tambahan sesuai keinginan dengan menambahkannya ke konfigurasi startup sistem init atau supervisor layanan Anda untuk node_exporter
tetapi disarankan untuk berhati-hati. Aktifkan paling banyak satu per satu, uji terlebih dahulu pada sistem non-produksi, kemudian secara manual pada satu node produksi. Saat mengaktifkan kolektor tambahan, Anda harus memantau perubahan secara cermat dengan mengamati metrik scrape_duration_seconds
untuk memastikan bahwa pengumpulan selesai dan tidak ada waktu habis. Selain itu, pantau metrik scrape_samples_post_metric_relabeling
untuk melihat perubahan kardinalitas.
Nama | Keterangan | sistem operasi |
---|---|---|
info teman | Mengekspos statistik fragmen memori seperti yang dilaporkan oleh /proc/buddyinfo. | Linux |
kelompok | Ringkasan jumlah cgroup yang aktif dan diaktifkan | Linux |
cpu_vulnerabilities | Mengekspos informasi kerentanan CPU dari sysfs. | Linux |
devstat | Mengekspos statistik perangkat | Capung, FreeBSD |
drm | Ekspos metrik GPU menggunakan sysfs / DRM, amdgpu adalah satu-satunya driver yang memaparkan informasi ini melalui DRM | Linux |
drbd | Mengekspos statistik Perangkat Blok Replikasi Terdistribusi (hingga versi 8.4) | Linux |
alat etnik | Mengekspos informasi antarmuka jaringan dan statistik driver jaringan yang setara dengan ethtool , ethtool -S , dan ethtool -i . | Linux |
menyela | Menampilkan statistik interupsi yang terperinci. | Linux, OpenBSD |
ksmd | Mengekspos statistik kernel dan sistem dari /sys/kernel/mm/ksm . | Linux |
dalam status | Mengekspos statistik dari /proc/net/stat/ . | Linux |
masukd | Mengekspos jumlah sesi dari logind. | Linux |
meminfo_numa | Mengekspos statistik memori dari /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | Linux |
mountstats | Mengekspos statistik sistem file dari /proc/self/mountstats . Mengekspos statistik klien NFS terperinci. | Linux |
rute_jaringan | Mengekspos tabel perutean sebagai metrik | Linux |
kinerja | Mengekspos metrik berbasis kinerja (Peringatan: Metrik bergantung pada konfigurasi dan pengaturan kernel). | Linux |
proses | Mengekspos statistik proses agregat dari /proc . | Linux |
qdisc | Menampilkan statistik disiplin antrian | Linux |
info lempengan | Mengekspos statistik lempengan dari /proc/slabinfo . Perhatikan bahwa izin /proc/slabinfo biasanya 0400, jadi aturlah dengan tepat. | Linux |
lunak | Mengekspos statistik softirq terperinci dari /proc/softirqs . | Linux |
sistem | Ekspos nilai sysctl dari /proc/sys . Gunakan --collector.sysctl.include(-info) untuk mengonfigurasi. | Linux |
sistemd | Mengekspos layanan dan status sistem dari systemd. | Linux |
tcpstat | Mengekspos informasi status koneksi TCP dari /proc/net/tcp dan /proc/net/tcp6 . (Peringatan: versi saat ini memiliki potensi masalah kinerja dalam situasi beban tinggi.) | Linux |
wifi | Mengekspos statistik perangkat dan stasiun WiFi. | Linux |
xfrm | Mengekspos statistik dari /proc/net/xfrm_stat | Linux |
info zona | Mengekspos metrik zona memori NUMA. | Linux |
Kolektor ini tidak digunakan lagi dan akan dihapus pada rilis besar berikutnya.
Nama | Keterangan | sistem operasi |
---|---|---|
tidak | Mengekspos kesehatan daemon NTP lokal untuk memeriksa waktu | setiap |
menjalankan | Mengekspos status layanan dari runit. | setiap |
pengawas | Mengekspos status layanan dari supervisord. | setiap |
Pengumpul perf
mungkin tidak langsung berfungsi pada beberapa sistem Linux karena konfigurasi kernel dan pengaturan keamanan. Untuk mengizinkan akses, atur parameter sysctl
berikut:
sysctl -w kernel.perf_event_paranoid=X
Bergantung pada nilai yang dikonfigurasi, metrik yang berbeda akan tersedia, untuk sebagian besar kasus, 0
akan memberikan rangkaian paling lengkap. Untuk informasi lebih lanjut lihat man 2 perf_event_open
.
Secara default, perf
collector hanya akan mengumpulkan metrik CPU yang menjalankan node_exporter
(yaitu runtime.NumCPU
. Jika ini tidak mencukupi (misalnya jika Anda menjalankan node_exporter
dengan afinitas CPU yang disetel ke CPU tertentu), Anda dapat menentukan daftar mengganti CPU dengan menggunakan tanda --collector.perf.cpus
. Misalnya, untuk mengumpulkan metrik pada CPU 2-6, Anda harus menentukan: --collector.perf --collector.perf.cpus=2-6
berindeks nol dan juga dapat mengambil nilai langkah; misalnya --collector.perf --collector.perf.cpus=1-10:5
akan dikumpulkan pada CPU 1, 5, dan 10.
Kolektor perf
juga dapat mengumpulkan jumlah titik jejak saat menggunakan tanda --collector.perf.tracepoint
. Tracepoint dapat ditemukan menggunakan perf list
atau dari debugfs. Dan contoh penggunaannya adalah --collector.perf.tracepoint="sched:sched_process_exec"
.
Kolektor sysctl
dapat diaktifkan dengan --collector.sysctl
. Ini mendukung pemaparan nilai sysctl numerik sebagai metrik menggunakan tanda --collector.sysctl.include
dan nilai string sebagai metrik info dengan menggunakan tanda --collector.sysctl.include-info
. Benderanya bisa diulang. Untuk sysctl dengan beberapa nilai numerik, pemetaan opsional dapat diberikan untuk mengekspos setiap nilai sebagai metriknya sendiri. Jika tidak, label index
digunakan untuk mengidentifikasi bidang yang berbeda.
Menggunakan --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
Sysctl dapat berisi banyak nilai, misalnya:
net.ipv4.tcp_rmem = 4096 131072 6291456
Menggunakan --collector.sysctl.include=net.ipv4.tcp_rmem
kolektor akan mengekspos:
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
Jika indeks telah menentukan makna seperti dalam kasus ini, nilai dapat dipetakan ke beberapa metrik dengan menambahkan pemetaan ke tanda --collector.sysctl.include: Menggunakan --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
kolektor akan mengekspos:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Nilai string perlu diekspos sebagai metrik info. Pengguna memilihnya dengan menggunakan tanda --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Mengingat sistem berikut:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
Pengaturan --collector.sysctl.include-info=kernel.seccomp.actions_avail
akan menghasilkan:
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
...
Pengumpul textfile
mirip dengan Pushgateway, yang memungkinkan ekspor statistik dari pekerjaan batch. Ini juga dapat digunakan untuk mengekspor metrik statis, seperti peran yang dimiliki mesin. Pushgateway harus digunakan untuk metrik tingkat layanan. Modul textfile
ditujukan untuk metrik yang terkait dengan mesin.
Untuk menggunakannya, setel tanda --collector.textfile.directory
pada baris perintah node_exporter
. Kolektor akan mengurai semua file dalam direktori yang cocok dengan glob *.prom
menggunakan format teks. Catatan: Stempel waktu tidak didukung.
Untuk mendorong waktu penyelesaian tugas cron secara atom:
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
Untuk menetapkan peran mesin secara statis menggunakan label:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
node_exporter
akan mengekspos semua metrik dari kolektor yang diaktifkan secara default. Ini adalah cara yang disarankan untuk mengumpulkan metrik untuk menghindari kesalahan saat membandingkan metrik dari kelompok yang berbeda.
Untuk penggunaan tingkat lanjut, node_exporter
dapat diberikan daftar kolektor opsional untuk memfilter metrik. Parameter collect[]
dan exclude[]
dapat digunakan beberapa kali (tetapi tidak dapat digabungkan). Dalam konfigurasi Prometheus Anda dapat menggunakan sintaks ini di bawah konfigurasi scrape.
Kumpulkan hanya metrik kolektor cpu
dan meminfo
:
params:
collect[]:
- cpu
- meminfo
Kumpulkan semua metrik kolektor yang diaktifkan tetapi kecualikan netdev
:
params:
exclude[]:
- netdev
Hal ini dapat berguna untuk meminta server Prometheus yang berbeda mengumpulkan metrik tertentu dari node.
Prasyarat:
glibc-static
.Bangunan:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
Untuk melihat semua tanda konfigurasi yang tersedia:
./node_exporter -h
make test
EKSPERIMENTAL
Eksportir mendukung TLS melalui file konfigurasi web baru.
./node_exporter --web.config.file=web-config.yml
Lihat konfigurasi web perangkat eksportir untuk lebih jelasnya.