Exportador Prometheus para métricas de hardware e sistema operacional expostas por kernels *NIX, escritos em Go com coletores de métricas conectáveis.
O exportador do Windows é recomendado para usuários do Windows. Para expor as métricas da GPU NVIDIA, prometheus-dcgm pode ser usado.
Se você é novo no Prometheus e node_exporter
há um guia passo a passo simples.
O node_exporter
escuta na porta HTTP 9100 por padrão. Veja a saída --help
para mais opções.
Para instalações automatizadas com Ansible, existe a função da comunidade Prometheus.
O node_exporter
foi projetado para monitorar o sistema host. A implantação em contêineres requer cuidado extra para evitar o monitoramento do próprio contêiner.
Para situações em que a implantação em contêiner é necessária, alguns sinalizadores extras devem ser usados para permitir o acesso do node_exporter
aos namespaces do host.
Esteja ciente de que quaisquer pontos de montagem não raiz que você deseja monitorar precisarão ser montados por ligação no contêiner.
Se você iniciar o contêiner para monitoramento de host, especifique o argumento path.rootfs
. Este argumento deve corresponder ao caminho na montagem de ligação da raiz do host. O node_exporter usará path.rootfs
como prefixo para acessar o sistema de arquivos host.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Para a composição do Docker, são necessárias alterações de sinalizador semelhantes.
---
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 '
Em alguns sistemas, o coletor timex
requer um sinalizador Docker adicional, --cap-add=SYS_TIME
, para acessar as syscalls necessárias.
Há suporte variado para coletores em cada sistema operacional. As tabelas abaixo listam todos os coletores existentes e os sistemas suportados.
Os coletores são habilitados fornecendo um sinalizador --collector.
. Os coletores habilitados por padrão podem ser desabilitados fornecendo um sinalizador --no-collector.
. Para ativar apenas alguns coletores específicos, use --collector.disable-defaults --collector.
.
Alguns coletores podem ser configurados para incluir ou excluir determinados padrões usando sinalizadores dedicados. Os sinalizadores de exclusão são usados para indicar "todos exceto", enquanto os sinalizadores de inclusão são usados para dizer "nenhum exceto". Observe que esses sinalizadores são mutuamente exclusivos em coletores que suportam ambos.
Exemplo:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Lista:
Coletor | Escopo | Incluir bandeira | Excluir sinalizador |
---|---|---|---|
arp | dispositivo | --collector.arp.device-include | --collector.arp.device-exclude |
CPU | insetos | --collector.cpu.info.bugs-include | N / D |
CPU | bandeiras | --collector.cpu.info.flags-include | N / D |
estatísticas de disco | dispositivo | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
ettool | dispositivo | --collector.ethtool.device-include | --collector.ethtool.device-excluir |
ettool | métricas | --collector.ethtool.metrics-include | N / D |
sistema de arquivos | tipos fs | N / D | --collector.filesystem.fs-types-exclude |
sistema de arquivos | pontos de montagem | N / D | --collector.filesystem.mount-points-exclude |
hwmon | chip | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
hwmon | sensor | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
interrompe | nome | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
netdev | dispositivo | --collector.netdev.device-include | --collector.netdev.device-exclude |
disco q | dispositivo | --collector.qdisk.device-include | --collector.qdisk.device-excluir |
informações sobre laje | nomes de lajes | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
sysctl | todos | --collector.sysctl.include | N / D |
sistema | unidade | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
Nome | Descrição | SO |
---|---|---|
arp | Expõe estatísticas ARP de /proc/net/arp . | Linux |
bcache | Expõe estatísticas do bcache de /sys/fs/bcache/ . | Linux |
ligação | Expõe o número de escravos configurados e ativos de interfaces de ligação do Linux. | Linux |
btrfs | Expõe estatísticas btrfs | Linux |
tempo de inicialização | Expõe o tempo de inicialização do sistema derivado do sysctl kern.boottime . | Darwin, Libélula, FreeBSD, NetBSD, OpenBSD, Solaris |
conexão | Mostra estatísticas do conntrack (não faz nada se não houver /proc/sys/net/netfilter/ presente). | Linux |
CPU | Expõe estatísticas da CPU | Darwin, Libélula, FreeBSD, Linux, Solaris, OpenBSD |
CPUfreq | Expõe estatísticas de frequência da CPU | Linux, Solaris |
estatísticas de disco | Expõe estatísticas de E/S de disco. | Darwin, Linux, OpenBSD |
dmi | Expor informações da Interface de gerenciamento de desktop (DMI) de /sys/class/dmi/id/ | Linux |
edac | Expõe estatísticas de detecção e correção de erros. | Linux |
entropia | Expõe a entropia disponível. | Linux |
executivo | Expõe estatísticas de execução. | Libélula, FreeBSD |
canal de fibra | Expõe informações e estatísticas do Fibre Channel de /sys/class/fc_host/ . | Linux |
arquivofd | Expõe estatísticas do descritor de arquivo de /proc/sys/fs/file-nr . | Linux |
sistema de arquivos | Expõe estatísticas do sistema de arquivos, como espaço em disco usado. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
hwmon | Exponha o monitoramento de hardware e os dados do sensor de /sys/class/hwmon/ . | Linux |
banda infinita | Expõe estatísticas de rede específicas para configurações InfiniBand e Intel OmniPath. | Linux |
ipvs | Expõe o status IPVS de /proc/net/ip_vs e estatísticas de /proc/net/ip_vs_stats . | Linux |
carga média | Expõe a média de carga. | Darwin, Libélula, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
mdadm | Expõe estatísticas sobre dispositivos em /proc/mdstat (não faz nada se não houver /proc/mdstat presente). | Linux |
meminfo | Expõe estatísticas de memória. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
netclass | Expõe informações da interface de rede de /sys/class/net/ | Linux |
netdev | Expõe estatísticas da interface de rede, como bytes transferidos. | Darwin, Libélula, FreeBSD, Linux, OpenBSD |
netisr | Expõe estatísticas do netisr | FreeBSD |
netstat | Expõe estatísticas de rede de /proc/net/netstat . Esta é a mesma informação que netstat -s . | Linux |
nfs | Expõe estatísticas do cliente NFS de /proc/net/rpc/nfs . Esta é a mesma informação que nfsstat -c . | Linux |
nfsd | Expõe estatísticas do servidor kernel NFS de /proc/net/rpc/nfsd . Esta é a mesma informação que nfsstat -s . | Linux |
nvme | Expõe informações NVMe de /sys/class/nvme/ | Linux |
sistema operacional | Exponha informações de versão do sistema operacional em /etc/os-release ou /usr/lib/os-release | qualquer |
classe de alimentação | Expõe estatísticas da fonte de alimentação de /sys/class/power_supply | Linux |
pressão | Expõe estatísticas de travamento de pressão de /proc/pressure/ . | Linux (kernel 4.20+ e/ou CONFIG_PSI) |
rapl | Expõe várias estatísticas de /sys/class/powercap . | Linux |
schedstat | Expõe estatísticas do agendador de tarefas de /proc/schedstat . | Linux |
selinux | Expõe estatísticas do SELinux. | Linux |
meiasstat | Expõe várias estatísticas de /proc/net/sockstat . | Linux |
softnet | Expõe estatísticas de /proc/net/softnet_stat . | Linux |
estatística | Expõe várias estatísticas de /proc/stat . Isso inclui tempo de inicialização, bifurcações e interrupções. | Linux |
tapestats | Expõe estatísticas de /sys/class/scsi_tape . | Linux |
arquivo de texto | Expõe estatísticas lidas do disco local. O sinalizador --collector.textfile.directory deve ser definido. | qualquer |
térmico | Expõe estatísticas térmicas como pmset -g therm . | Darwin |
zona_térmica | Expõe estatísticas da zona térmica e do dispositivo de resfriamento de /sys/class/thermal . | Linux |
tempo | Expõe a hora atual do sistema. | qualquer |
timex | Expõe estatísticas de chamada do sistema adjtimex(2) selecionadas. | Linux |
udp_queues | Expõe os comprimentos totais UDP de rx_queue e tx_queue de /proc/net/udp e /proc/net/udp6 . | Linux |
sem nome | Expõe informações do sistema conforme fornecidas pela chamada do sistema uname. | Darwin, FreeBSD, Linux, OpenBSD |
vmstat | Expõe estatísticas de /proc/vmstat . | Linux |
cão de guarda | Expõe estatísticas de /sys/class/watchdog | Linux |
xfs | Expõe estatísticas de tempo de execução do XFS. | Linux (kernel 4.4+) |
zfs | Expõe estatísticas de desempenho do ZFS. | FreeBSD, Linux, Solaris |
node_exporter
também implementa vários coletores que estão desabilitados por padrão. As razões para isso variam de acordo com o colecionador e podem incluir:
scrape_interval
ou scrape_timeout
do Prometheus Você pode ativar coletores adicionais conforme desejado, adicionando-os à configuração de inicialização do sistema init ou do supervisor de serviço para node_exporter
, mas é aconselhável ter cuidado. Habilite no máximo um de cada vez, testando primeiro em um sistema que não seja de produção e depois manualmente em um único nó de produção. Ao ativar coletores adicionais, você deve monitorar cuidadosamente a alteração observando a métrica scrape_duration_seconds
para garantir que a coleta seja concluída e não expire. Além disso, monitore a métrica scrape_samples_post_metric_relabeling
para ver as mudanças na cardinalidade.
Nome | Descrição | SO |
---|---|---|
informações do amigo | Expõe estatísticas de fragmentos de memória conforme relatado por /proc/buddyinfo. | Linux |
grupos | Um resumo do número de cgroups ativos e habilitados | Linux |
vulnerabilidades_da_cpu | Expõe informações de vulnerabilidade da CPU do sysfs. | Linux |
devstat | Expõe estatísticas do dispositivo | Libélula, FreeBSD |
drm | Exponha métricas de GPU usando sysfs/DRM, amdgpu é o único driver que expõe essas informações através de DRM | Linux |
drbd | Expõe estatísticas de dispositivos de blocos replicados distribuídos (para a versão 8.4) | Linux |
ettool | Expõe informações da interface de rede e estatísticas do driver de rede equivalentes a ethtool , ethtool -S e ethtool -i . | Linux |
interrompe | Expõe estatísticas detalhadas de interrupções. | Linux, OpenBSD |
ksmd | Expõe estatísticas do kernel e do sistema de /sys/kernel/mm/ksm . | Linux |
lnstat | Expõe estatísticas de /proc/net/stat/ . | Linux |
faça login | Expõe contagens de sessão do logind. | Linux |
meminfo_numa | Expõe estatísticas de memória de /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | Linux |
estatísticas de montagem | Expõe estatísticas do sistema de arquivos de /proc/self/mountstats . Expõe estatísticas detalhadas do cliente NFS. | Linux |
rota_rede | Expõe a tabela de roteamento como métricas | Linux |
desempenho | Expõe métricas baseadas em desempenho (Aviso: as métricas dependem da configuração e das configurações do kernel). | Linux |
processos | Expõe estatísticas agregadas do processo de /proc . | Linux |
qdisc | Expõe estatísticas de disciplina de filas | Linux |
informações sobre laje | Expõe estatísticas de laje de /proc/slabinfo . Observe que a permissão de /proc/slabinfo geralmente é 0400, então defina-a apropriadamente. | Linux |
softirqs | Expõe estatísticas detalhadas do softirq de /proc/softirqs . | Linux |
sysctl | Exponha os valores sysctl de /proc/sys . Use --collector.sysctl.include(-info) para configurar. | Linux |
sistema | Expõe o status do serviço e do sistema do systemd. | Linux |
tcpstat | Expõe informações de status da conexão TCP de /proc/net/tcp e /proc/net/tcp6 . (Aviso: a versão atual apresenta possíveis problemas de desempenho em situações de alta carga.) | Linux |
Wi-fi | Expõe estatísticas de dispositivos e estações WiFi. | Linux |
xfrm | Expõe estatísticas de /proc/net/xfrm_stat | Linux |
informações da zona | Expõe métricas da zona de memória NUMA. | Linux |
Esses coletores estão obsoletos e serão removidos na próxima versão principal.
Nome | Descrição | SO |
---|---|---|
NTP | Expõe a integridade do daemon NTP local para verificar o tempo | qualquer |
runit | Expõe o status do serviço do runit. | qualquer |
supervisor | Expõe o status do serviço do supervisord. | qualquer |
O coletor perf
pode não funcionar imediatamente em alguns sistemas Linux devido à configuração do kernel e às configurações de segurança. Para permitir o acesso, defina o seguinte parâmetro sysctl
:
sysctl -w kernel.perf_event_paranoid=X
Dependendo do valor configurado, diferentes métricas estarão disponíveis; na maioria dos casos, 0
fornecerá o conjunto mais completo. Para obter mais informações, consulte man 2 perf_event_open
.
Por padrão, o coletor perf
coletará apenas métricas das CPUs nas quais node_exporter
está sendo executado (ou seja, runtime.NumCPU
. Se isso for insuficiente (por exemplo, se você executar node_exporter
com sua afinidade de CPU definida para CPUs específicas), você poderá especificar uma lista de CPUs alternativas usando o sinalizador --collector.perf.cpus
Por exemplo, para coletar métricas nas CPUs 2 a 6, você especificaria: --collector.perf --collector.perf.cpus=2-6
. A configuração da CPU é indexada em zero e também pode assumir um valor de avanço, por exemplo, --collector.perf --collector.perf.cpus=1-10:5
seria coletado nas CPUs 1; , 5 e 10.
O coletor perf
também é capaz de coletar contagens de tracepoints ao usar o sinalizador --collector.perf.tracepoint
. Tracepoints podem ser encontrados usando perf list
ou debugfs. E um exemplo de uso disso seria --collector.perf.tracepoint="sched:sched_process_exec"
.
O coletor sysctl
pode ser habilitado com --collector.sysctl
. Ele suporta a exposição de valores numéricos sysctl como métricas usando o sinalizador --collector.sysctl.include
e valores de string como métricas de informação usando o sinalizador --collector.sysctl.include-info
. As bandeiras podem ser repetidas. Para sysctl com vários valores numéricos, um mapeamento opcional pode ser fornecido para expor cada valor como sua própria métrica. Caso contrário, um rótulo index
será usado para identificar os diferentes campos.
Usando --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
Um sysctl pode conter vários valores, por exemplo:
net.ipv4.tcp_rmem = 4096 131072 6291456
Usando --collector.sysctl.include=net.ipv4.tcp_rmem
o coletor irá expor:
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
Se os índices tiverem significado definido como neste caso, os valores podem ser mapeados para múltiplas métricas anexando o mapeamento ao sinalizador --collector.sysctl.include: Usando --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
o coletor irá expor:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Os valores da string precisam ser expostos como métrica de informação. O usuário os seleciona usando o sinalizador --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Dado o seguinte sysctl:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
Definir --collector.sysctl.include-info=kernel.seccomp.actions_avail
produzirá:
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
...
O coletor textfile
é semelhante ao Pushgateway, pois permite a exportação de estatísticas de trabalhos em lote. Também pode ser usado para exportar métricas estáticas, como a função de uma máquina. O Pushgateway deve ser usado para métricas de nível de serviço. O módulo textfile
é para métricas vinculadas a uma máquina.
Para usá-lo, configure o sinalizador --collector.textfile.directory
na linha de comando node_exporter
. O coletor analisará todos os arquivos nesse diretório que correspondam ao glob *.prom
usando o formato de texto. Observação: carimbos de data/hora não são suportados.
Para enviar atomicamente o tempo de conclusão de um cron job:
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
Para definir funções estaticamente para uma máquina usando rótulos:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
O node_exporter
exporá todas as métricas dos coletores habilitados por padrão. Esta é a forma recomendada de coletar métricas para evitar erros ao comparar métricas de famílias diferentes.
Para uso avançado, o node_exporter
pode receber uma lista opcional de coletores para filtrar métricas. Os parâmetros collect[]
e exclude[]
podem ser usados múltiplas vezes (mas não podem ser combinados). Na configuração do Prometheus, você pode usar esta sintaxe na configuração do scrape.
Colete apenas métricas do coletor cpu
e meminfo
:
params:
collect[]:
- cpu
- meminfo
Colete todas as métricas do coletor ativadas, mas exclua netdev
:
params:
exclude[]:
- netdev
Isso pode ser útil para que diferentes servidores Prometheus coletem métricas específicas de nós.
Pré-requisitos:
glibc-static
.Prédio:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
Para ver todos os sinalizadores de configuração disponíveis:
./node_exporter -h
make test
EXPERIMENTAL
O exportador oferece suporte a TLS por meio de um novo arquivo de configuração da web.
./node_exporter --web.config.file=web-config.yml
Consulte a configuração da web do exporter-toolkit para obter mais detalhes.