*NIX 커널에 의해 노출된 하드웨어 및 OS 측정항목을 위한 Prometheus 내보내기 프로그램으로, 플러그형 측정항목 수집기와 함께 Go로 작성되었습니다.
Windows 사용자에게는 Windows 내보내기 프로그램을 권장합니다. NVIDIA GPU 메트릭을 노출하려면 prometheus-dcgm을 사용할 수 있습니다.
Prometheus 및 node_exporter
처음 사용하는 경우 간단한 단계별 가이드가 있습니다.
node_exporter
기본적으로 HTTP 포트 9100에서 수신 대기합니다. 더 많은 옵션을 보려면 --help
출력을 참조하세요.
Ansible을 사용한 자동 설치의 경우 Prometheus 커뮤니티 역할이 있습니다.
node_exporter
는 호스트 시스템을 모니터링하도록 설계되었습니다. 컨테이너에 배포하려면 컨테이너 자체를 모니터링하지 않도록 각별한 주의가 필요합니다.
컨테이너화된 배포가 필요한 상황에서는 node_exporter
호스트 네임스페이스에 액세스할 수 있도록 몇 가지 추가 플래그를 사용해야 합니다.
모니터링하려는 루트가 아닌 마운트 지점은 컨테이너에 바인드 마운트되어야 합니다.
호스트 모니터링을 위해 컨테이너를 시작하는 경우 path.rootfs
인수를 지정합니다. 이 인수는 호스트 루트의 바인드 마운트 경로와 일치해야 합니다. 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 Compose의 경우 유사한 플래그 변경이 필요합니다.
---
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 '
일부 시스템에서는 필요한 syscall에 액세스하기 위해 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/.+)( $ |/)
목록:
수집기 | 범위 | 플래그 포함 | 플래그 제외 |
---|---|---|---|
아르프 | 장치 | --collector.arp.device-include | --collector.arp.device-제외 |
CPU | 버그 | --collector.cpu.info.bugs-include | 해당 없음 |
CPU | 깃발 | --collector.cpu.info.flags-include | 해당 없음 |
디스크 통계 | 장치 | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
에툴 | 장치 | --collector.ethtool.device-include | --collector.ethtool.device-제외 |
에툴 | 측정항목 | --collector.ethtool.metrics-include | 해당 없음 |
파일 시스템 | fs 유형 | 해당 없음 | --collector.filesystem.fs-types-exclude |
파일 시스템 | 마운트 지점 | 해당 없음 | --collector.filesystem.mount-points-exclude |
흥몬 | 칩 | --collector.hwmon.chip-include | --collector.hwmon.chip-제외 |
흥몬 | 감지기 | --collector.hwmon.sensor-include | --collector.hwmon.sensor-제외 |
인터럽트 | 이름 | --collector.interrupts.name-include | --collector.interrupts.name-제외 |
넷데브 | 장치 | --collector.netdev.device-include | --collector.netdev.device-제외 |
qdisk | 장치 | --collector.qdisk.device-include | --collector.qdisk.device-제외 |
슬래브인포 | 슬래브 이름 | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-제외 |
sysctl | 모두 | --collector.sysctl.include | 해당 없음 |
체계화된 | 단위 | --collector.systemd.unit-include | --collector.systemd.unit-제외 |
이름 | 설명 | 운영체제 |
---|---|---|
아르프 | /proc/net/arp 에서 ARP 통계를 노출합니다. | 리눅스 |
캐시 | /sys/fs/bcache/ 에서 bcache 통계를 노출합니다. | 리눅스 |
본딩 | Linux 본딩 인터페이스의 구성 및 활성 슬레이브 수를 노출합니다. | 리눅스 |
btrfs | btrfs 통계를 노출합니다. | 리눅스 |
부팅 시간 | kern.boottime sysctl에서 파생된 시스템 부팅 시간을 노출합니다. | 다윈, 드래곤플라이, FreeBSD, NetBSD, OpenBSD, 솔라리스 |
콘트랙 | conntrack 통계를 표시합니다( /proc/sys/net/netfilter/ 가 없으면 아무 작업도 수행하지 않음). | 리눅스 |
CPU | CPU 통계를 노출합니다. | 다윈, 드래곤플라이, FreeBSD, 리눅스, 솔라리스, OpenBSD |
CPU 주파수 | CPU 주파수 통계를 노출합니다. | 리눅스, 솔라리스 |
디스크 통계 | 디스크 I/O 통계를 노출합니다. | 다윈, 리눅스, OpenBSD |
디미 | /sys/class/dmi/id/ 에서 DMI(Desktop Management Interface) 정보를 노출합니다. | 리눅스 |
에닥 | 오류 감지 및 수정 통계를 노출합니다. | 리눅스 |
엔트로피 | 사용 가능한 엔트로피를 노출합니다. | 리눅스 |
간부 | 실행 통계를 노출합니다. | 잠자리, FreeBSD |
파이버 채널 | /sys/class/fc_host/ 에서 파이버 채널 정보 및 통계를 노출합니다. | 리눅스 |
filefd | /proc/sys/fs/file-nr 에서 파일 설명자 통계를 노출합니다. | 리눅스 |
파일 시스템 | 사용된 디스크 공간과 같은 파일 시스템 통계를 노출합니다. | 다윈, 드래곤플라이, FreeBSD, 리눅스, OpenBSD |
흥몬 | /sys/class/hwmon/ 에서 하드웨어 모니터링 및 센서 데이터를 노출합니다. | 리눅스 |
인피니밴드 | InfiniBand 및 Intel OmniPath 구성과 관련된 네트워크 통계를 표시합니다. | 리눅스 |
IPV | /proc/net/ip_vs 에서 IPVS 상태를 노출하고 /proc/net/ip_vs_stats 에서 통계를 노출합니다. | 리눅스 |
평균 부하 | 부하 평균을 노출합니다. | 다윈, 드래곤플라이, FreeBSD, 리눅스, NetBSD, OpenBSD, 솔라리스 |
mdadm | /proc/mdstat 에 있는 장치에 대한 통계를 표시합니다( /proc/mdstat 가 없으면 아무 작업도 수행하지 않음). | 리눅스 |
메모 | 메모리 통계를 노출합니다. | 다윈, 드래곤플라이, FreeBSD, 리눅스, OpenBSD |
넷클래스 | /sys/class/net/ 에서 네트워크 인터페이스 정보를 노출합니다. | 리눅스 |
넷데브 | 전송된 바이트와 같은 네트워크 인터페이스 통계를 노출합니다. | 다윈, 드래곤플라이, FreeBSD, 리눅스, OpenBSD |
네티스 | netisr 통계를 노출합니다. | FreeBSD |
netstat | /proc/net/netstat 에서 네트워크 통계를 노출합니다. 이는 netstat -s 와 동일한 정보입니다. | 리눅스 |
nfs | /proc/net/rpc/nfs 에서 NFS 클라이언트 통계를 노출합니다. 이는 nfsstat -c 와 동일한 정보입니다. | 리눅스 |
nfsd | /proc/net/rpc/nfsd 에서 NFS 커널 서버 통계를 공개합니다. 이는 nfsstat -s 와 동일한 정보입니다. | 리눅스 |
nvme | /sys/class/nvme/ 에서 NVMe 정보를 노출합니다. | 리눅스 |
운영 체제 | /etc/os-release 또는 /usr/lib/os-release 에서 OS 릴리스 정보를 노출합니다. | 어느 |
전원 공급 장치 클래스 | /sys/class/power_supply 에서 전원 공급 장치 통계를 노출합니다. | 리눅스 |
압력 | /proc/pressure/ 에서 압력 정지 통계를 노출합니다. | Linux(커널 4.20+ 및/또는 CONFIG_PSI) |
라플 | /sys/class/powercap 에서 다양한 통계를 노출합니다. | 리눅스 |
일정 | /proc/schedstat 에서 작업 스케줄러 통계를 노출합니다. | 리눅스 |
세리눅스 | SELinux 통계를 노출합니다. | 리눅스 |
양말 | /proc/net/sockstat 에서 다양한 통계를 노출합니다. | 리눅스 |
소프트넷 | /proc/net/softnet_stat 에서 통계를 노출합니다. | 리눅스 |
통계 | /proc/stat 에서 다양한 통계를 노출합니다. 여기에는 부팅 시간, 포크 및 인터럽트가 포함됩니다. | 리눅스 |
태피스트 | /sys/class/scsi_tape 에서 통계를 노출합니다. | 리눅스 |
텍스트파일 | 로컬 디스크에서 읽은 통계를 노출합니다. --collector.textfile.directory 플래그를 설정해야 합니다. | 어느 |
열의 | pmset -g therm 과 같은 열 통계를 표시합니다. | 다윈 |
열 구역 | /sys/class/thermal 에서 열 구역 및 냉각 장치 통계를 노출합니다. | 리눅스 |
시간 | 현재 시스템 시간을 노출합니다. | 어느 |
타이멕스 | 선택된 adjtimex(2) 시스템 호출 통계를 노출합니다. | 리눅스 |
udp_queues | /proc/net/udp 및 /proc/net/udp6 에서 rx_queue 및 tx_queue의 UDP 총 길이를 노출합니다. | 리눅스 |
이름을 밝히다 | uname 시스템 호출을 통해 제공되는 시스템 정보를 노출합니다. | 다윈, FreeBSD, 리눅스, OpenBSD |
vmstat | /proc/vmstat 에서 통계를 노출합니다. | 리눅스 |
지키는 개 | /sys/class/watchdog 에서 통계를 노출합니다. | 리눅스 |
xfs | XFS 런타임 통계를 노출합니다. | Linux(커널 4.4+) |
zfs | ZFS 성능 통계를 공개합니다. | FreeBSD, 리눅스, 솔라리스 |
node_exporter
기본적으로 비활성화된 여러 수집기도 구현합니다. 그 이유는 수집가에 따라 다르며 다음이 포함될 수 있습니다.
scrape_interval
또는 scrape_timeout
초과하는 런타임 연장 node_exporter
에 대한 초기화 시스템 또는 서비스 감독자의 시작 구성에 추가하여 원하는 대로 추가 수집기를 활성화할 수 있지만 주의하는 것이 좋습니다. 한 번에 최대 하나씩 활성화하고 먼저 비프로덕션 시스템에서 테스트한 다음 단일 프로덕션 노드에서 수동으로 테스트합니다. 추가 수집기를 활성화할 때 scrape_duration_seconds
지표를 관찰하여 변경 사항을 주의 깊게 모니터링하여 수집이 완료되고 시간 초과되지 않는지 확인해야 합니다. 또한 scrape_samples_post_metric_relabeling
지표를 모니터링하여 카디널리티의 변경 사항을 확인하세요.
이름 | 설명 | 운영체제 |
---|---|---|
친구 정보 | /proc/buddyinfo에 의해 보고된 메모리 조각의 통계를 공개합니다. | 리눅스 |
cgroup | 활성 및 활성화된 cgroup 수 요약 | 리눅스 |
CPU_취약점 | sysfs에서 CPU 취약점 정보를 노출합니다. | 리눅스 |
개발자 | 장치 통계를 노출합니다 | 잠자리, FreeBSD |
drm | sysfs/DRM을 사용하여 GPU 메트릭을 노출합니다. amdgpu DRM을 통해 이 정보를 노출하는 유일한 드라이버입니다. | 리눅스 |
drbd | Distributed Replicated Block Device 통계 공개(버전 8.4) | 리눅스 |
에툴 | ethtool , ethtool -S 및 ethtool -i 에 해당하는 네트워크 인터페이스 정보 및 네트워크 드라이버 통계를 표시합니다. | 리눅스 |
인터럽트 | 자세한 인터럽트 통계를 공개합니다. | 리눅스, 오픈BSD |
ksmd | /sys/kernel/mm/ksm 에서 커널 및 시스템 통계를 노출합니다. | 리눅스 |
인스텟 | /proc/net/stat/ 에서 통계를 노출합니다. | 리눅스 |
로그인됨 | 로그인된 세션 수를 노출합니다. | 리눅스 |
meminfo_numa | /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat 에서 메모리 통계를 노출합니다. | 리눅스 |
마운트 통계 | /proc/self/mountstats 에서 파일 시스템 통계를 노출합니다. 자세한 NFS 클라이언트 통계를 표시합니다. | 리눅스 |
네트워크_경로 | 라우팅 테이블을 메트릭으로 노출합니다. | 리눅스 |
성능 | 성능 기반 메트릭을 노출합니다(경고: 메트릭은 커널 구성 및 설정에 따라 다름). | 리눅스 |
프로세스 | /proc 에서 집계 프로세스 통계를 노출합니다. | 리눅스 |
qdisc | 큐잉 규칙 통계를 노출합니다. | 리눅스 |
슬래브인포 | /proc/slabinfo 에서 슬랩 통계를 노출합니다. /proc/slabinfo 의 권한은 일반적으로 0400이므로 적절하게 설정하십시오. | 리눅스 |
소프트키스 | /proc/softirqs 에서 자세한 Softirq 통계를 공개합니다. | 리눅스 |
sysctl | /proc/sys 에서 sysctl 값을 노출합니다. 구성하려면 --collector.sysctl.include(-info) 사용하십시오. | 리눅스 |
체계화된 | systemd에서 서비스 및 시스템 상태를 노출합니다. | 리눅스 |
tcpstat | /proc/net/tcp 및 /proc/net/tcp6 에서 TCP 연결 상태 정보를 노출합니다. (경고: 현재 버전은 부하가 높은 상황에서 잠재적인 성능 문제가 있습니다.) | 리눅스 |
와이파이 | WiFi 장치 및 스테이션 통계를 노출합니다. | 리눅스 |
xfrm | /proc/net/xfrm_stat 에서 통계를 노출합니다. | 리눅스 |
구역 정보 | NUMA 메모리 영역 측정항목을 노출합니다. | 리눅스 |
이러한 수집기는 더 이상 사용되지 않으며 다음 주요 릴리스에서 제거될 예정입니다.
이름 | 설명 | 운영체제 |
---|---|---|
ntp | 시간을 확인하기 위해 로컬 NTP 데몬 상태를 노출합니다. | 어느 |
런잇 | runit에서 서비스 상태를 노출합니다. | 어느 |
감독자 | 감독자로부터 서비스 상태를 노출합니다. | 어느 |
커널 구성 및 보안 설정으로 인해 일부 Linux 시스템에서는 perf
수집기가 기본적으로 작동하지 않을 수 있습니다. 액세스를 허용하려면 다음 sysctl
매개변수를 설정하십시오.
sysctl -w kernel.perf_event_paranoid=X
구성된 값에 따라 다양한 측정항목을 사용할 수 있으며 대부분의 경우 0
가장 완벽한 세트를 제공합니다. 자세한 내용은 man 2 perf_event_open
참조하세요.
기본적으로 perf
수집기는 node_exporter
실행 중인 CPU(예: runtime.NumCPU
)의 측정항목만 수집합니다. 이것이 충분하지 않은 경우(예: CPU 선호도를 특정 CPU로 설정하여 node_exporter
실행하는 경우) 다음 목록을 지정할 수 있습니다. --collector.perf.cpus
플래그를 사용하여 CPU를 대체합니다. 예를 들어 CPU 2~6에서 측정항목을 수집하려면 --collector.perf --collector.perf.cpus=2-6
지정합니다. --collector.perf --collector.perf.cpus=2-6
CPU 구성은 0 인덱스이며 스트라이드 값을 사용할 수도 있습니다. 예를 들어 --collector.perf --collector.perf.cpus=1-10:5
CPU 1에서 수집됩니다. , 5, 10.
perf
수집기는 --collector.perf.tracepoint
플래그를 사용할 때 추적점 수를 수집할 수도 있습니다. 추적점은 perf list
사용하거나 debugfs에서 찾을 수 있습니다. 그리고 이것의 사용 예는 --collector.perf.tracepoint="sched:sched_process_exec"
입니다.
sysctl
수집기는 --collector.sysctl
사용하여 활성화할 수 있습니다. --collector.sysctl.include
플래그를 사용하여 숫자 sysctl 값을 메트릭으로 노출하고 --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
사용 --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
다음 sysctl이 주어지면:
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
모듈은 시스템에 연결된 측정항목을 위한 것입니다.
이를 사용하려면 node_exporter
명령줄에서 --collector.textfile.directory
플래그를 설정하세요. 수집기는 텍스트 형식을 사용하여 glob *.prom
과 일치하는 해당 디렉터리의 모든 파일을 구문 분석합니다. 참고: 타임스탬프는 지원되지 않습니다.
크론 작업 완료 시간을 자동으로 푸시하려면 다음 안내를 따르세요.
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 구성에서는 스크랩 구성에서 이 구문을 사용할 수 있습니다.
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
자세한 내용은 내보내기 툴킷 웹 구성을 참조하세요.