Prometheus: Recuperar métricas de Linux
Como recuperar métricas de servidores Linux no Prometheus usando Node Exporter
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Prometheus cloud pronta a usar que proporciona uma série de benefícios, incluindo:
Alert Managerincluído para enviar alertas paraSlack,Mattermost,PagerDuty, etc.- Servidor de email dedicado para enviar alertas de email ilimitados.
Blackboxpara sondarHTTP,ICMP,TCP, e mais.- Configuração fácil com editor de ficheiros de configuração online.
- Atualizações sem esforço com apenas um clique.
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: leva apenas 5 minutos para experimentar a solução de hospedagem cloud Prometheus da Stackhero!
O que é o Prometheus Node Exporter
Node Exporter é um software que pode ser instalado em kernels *NIX (Linux, OpenBSD, FreeBSD ou Darwin) para expor métricas do sistema para o Prometheus. É um componente essencial para monitorizar o desempenho dos servidores e a saúde da infraestrutura.
Na terminologia do Prometheus, o Node Exporter atua como um exportador e é adicionado como um alvo na sua configuração do Prometheus. O Prometheus conecta-se ao Node Exporter usando a porta TCP 9100 via HTTP em intervalos regulares para recuperar métricas.
Em resumo, o Node Exporter permite monitorizar um sistema baseado em Linux. Para sistemas Windows, pode usar o Windows Exporter.
Imagem geral do Stackhero para Prometheus
Instalar o Prometheus Node Exporter num servidor Linux
Pode descarregar o Node Exporter da sua página de releases no GitHub. É distribuído como um binário que corre diretamente no seu sistema. Como é projetado para funcionar continuamente, é recomendado configurá-lo para iniciar automaticamente quando o servidor arranca.
Por padrão, o Node Exporter abre a porta 9100 para o mundo sem autenticação ou encriptação. É altamente recomendado adicionar tanto autenticação quanto encriptação TLS (veja abaixo) e configurar um firewall para restringir o acesso à porta 9100 para que apenas o seu servidor Prometheus ou outros endereços IP autorizados possam conectar-se.
Como instalar o Prometheus Node Exporter no Ubuntu
Pode seguir estes passos no Ubuntu:
# Vá para https://github.com/prometheus/node_exporter/releases para obter o número da última versão.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"
# Descarregar e instalar node_exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
tar xvfa node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
sudo mv node_exporter-${node_exporter_version}.${node_exporter_release}/node_exporter /usr/local/bin/
rm -rf node_exporter-${node_exporter_version}.${node_exporter_release} node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
# Criar um utilizador "node_exporter"
sudo useradd -rs /bin/false node_exporter
# Criar um serviço systemd para iniciar node_exporter automaticamente no arranque
sudo bash -c 'cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/etc/prometheus_node_exporter/configuration.yml
[Install]
WantedBy=multi-user.target
EOF'
# Criar um diretório e ficheiro de configuração
sudo mkdir -p /etc/prometheus_node_exporter/
sudo touch /etc/prometheus_node_exporter/configuration.yml
sudo chmod 700 /etc/prometheus_node_exporter
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
# Iniciar o daemon node_exporter e verificar o seu estado
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Neste ponto, o binário node_exporter deve estar a correr no seu servidor. Para confirmar que está a funcionar, pode conectar-se a ele e verificar se retorna métricas:
curl http://localhost:9100/metrics
O Node Exporter abre a porta 9100 para a rede pública. Isto significa que qualquer pessoa pode conectar-se e recuperar as métricas do seu servidor! No mínimo, deve adicionar autenticação e encriptação TLS (veja abaixo) e é fortemente recomendado configurar um firewall para bloquear pedidos para a porta 9100 de IPs que não sejam o seu servidor Prometheus.
Como instalar o Prometheus Node Exporter no Debian
O processo de instalação do Node Exporter no Debian é idêntico ao método do Ubuntu descrito acima. Basta seguir as mesmas instruções.
Como instalar o Prometheus Node Exporter noutros sistemas
Os passos de instalação do Node Exporter dependem do sistema que utiliza. Embora a documentação detalhada para cada plataforma não seja fornecida, o procedimento básico envolve descarregar o binário que corresponde ao seu sistema e configurá-lo para iniciar no arranque.
Adicionar autenticação ao Prometheus Node Exporter
Por padrão, o Node Exporter não realiza autenticação, o que significa que qualquer pessoa pode recuperar as métricas expostas. Para proteger o acesso, pode adicionar autenticação básica para um utilizador.
Gerar uma palavra-passe aleatória
Gere uma palavra-passe usando os seguintes comandos:
password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Palavra-passe clara a manter para o servidor Prometheus: ${password}"
Se não tiver o binário
htpasswd, pode instalá-lo no Debian/Ubuntu usandoapt-get install --no-install-recommends apache2-utils.
Mantenha a palavra-passe clara segura, pois irá precisar dela ao configurar o Prometheus.
Adicionar o utilizador e reiniciar o Node Exporter
Adicione as seguintes linhas ao ficheiro de configuração para adicionar um utilizador chamado "prometheus" com o hash da palavra-passe gerada:
sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
prometheus: ${passwordHashed}
EOF
# Reiniciar Node Exporter
sudo systemctl restart node_exporter
Finalmente, verifique se a autenticação está a funcionar corretamente:
- Executar
curl http://localhost:9100/metricsdeve retornar "Unauthorized". - Executar
curl -u prometheus:${password} http://localhost:9100/metricsdeve retornar a lista de métricas.
Adicionar encriptação TLS ao Prometheus Node Exporter
Por padrão, o Node Exporter não encripta as comunicações. Isto significa que as credenciais, incluindo a palavra-passe definida anteriormente, são transmitidas em texto simples. Para proteger as comunicações, pode ativar a encriptação TLS da seguinte forma.
Criar certificados TLS
Execute os seguintes comandos para criar um certificado e uma chave TLS:
# Criar certificado TLS
cd /tmp
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
-keyout /etc/prometheus_node_exporter/tlsCertificate.key \
-out /etc/prometheus_node_exporter/tlsCertificate.crt \
-subj "/CN=`hostname`" \
-addext "subjectAltName = DNS:`hostname`"
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
Atualizar a configuração
Adicione as seguintes linhas ao ficheiro de configuração para adicionar as definições TLS e depois reinicie o Node Exporter:
sudo cat << 'EOF' >> /etc/prometheus_node_exporter/configuration.yml
tls_server_config:
cert_file: /etc/prometheus_node_exporter/tlsCertificate.crt
key_file: /etc/prometheus_node_exporter/tlsCertificate.key
EOF
# Reiniciar Prometheus Node Exporter
sudo systemctl restart node_exporter
Pode verificar que o TLS está ativo conectando-se via HTTPS com o seguinte comando:
curl -k -u prometheus:${password} https://localhost:9100/metrics
Note que este método não usa um certificado CA, por isso precisa passar a opção "-k" para o cURL para ignorar a verificação do certificado.
Configurar o servidor Prometheus para recolher dados do Node Exporter
Depois de instalar o Node Exporter e protegê-lo, configure o seu servidor Prometheus para recolher métricas numa agenda regular.
No Stackhero, selecione o seu serviço Prometheus e vá para o URL "Prometheus configuration". Depois adicione o seguinte à sua secção scrape_configs:
scrape_configs:
- job_name: "My servers pool"
static_configs:
- targets: [ "<yourLinuxServerDomain>:9100" ]
basic_auth:
username: "prometheus"
password: "<password>"
scheme: https
tls_config:
insecure_skip_verify: true
# Relabeling "instance" para remover a parte ":9100"
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '([^:]+)(:[0-9]+)?'
replacement: '${1}'
Guarde o ficheiro e verifique os logs do Prometheus para confirmar que foi recarregado com sucesso (pode ver os logs a partir do painel de controlo do Stackhero selecionando o seu serviço Prometheus e clicando no separador "Logs").
Finalmente, verifique se o Prometheus está a recolher métricas acedendo à interface do utilizador do Prometheus no painel de controlo do Stackhero e navegando para Status > Targets. O seu servidor Linux deve aparecer na lista de alvos como UP.
O alvo "myLinuxServer" está UP
Mostrar dados no Prometheus
Para visualizar as métricas recuperadas do Node Exporter, inicie sessão no Prometheus através do painel de controlo do Stackhero usando o URL "Prometheus UI" ou diretamente em https://<prometheusDomain>/.
No campo "Expression", digite node_memory_MemTotal_bytes e pressione enter. Se tudo estiver configurado corretamente, verá a RAM total do servidor exibida em bytes.
A quantidade total de RAM para este servidor é 4068794368 bytes, que é 3.78GB
Configurar o Grafana para mostrar dados do Prometheus recuperados do Node Exporter
O Grafana pode gerar dashboards facilmente com base nos dados do Prometheus. Para instruções detalhadas sobre como configurar o Grafana para exibir dados do Prometheus, consulte a documentação do Grafana.
Exemplo de um dashboard gerado pelo Grafana, baseado nos dados do Prometheus Node Exporter