diff --git a/README.md b/README.md index fb53e80..68ab551 100644 --- a/README.md +++ b/README.md @@ -1 +1,59 @@ -# heartbeat \ No newline at end of file +# heartbeat + +Serviço systemd que coleta métricas do sistema a cada 5 minutos e envia um ping para o [Healthchecks.io](https://healthchecks.io), permitindo monitorar se a máquina está viva e saudável. + +## Arquivos + +| Arquivo | Destino | Descrição | +|---|---|---| +| `heartbeat.sh` | `/usr/local/bin/heartbeat.sh` | Script que coleta métricas e envia o ping | +| `heartbeat.service` | `/etc/systemd/system/heartbeat.service` | Unit systemd que executa o script | +| `heartbeat.timer` | `/etc/systemd/system/heartbeat.timer` | Timer que dispara o serviço a cada 5 minutos | + +## Métricas enviadas + +O script coleta e envia as seguintes informações em JSON: + +- `timestamp` — data e hora da execução (ISO 8601) +- `uptime` — tempo de atividade da máquina +- `load` — carga média do sistema (1, 5 e 15 minutos) +- `disk_free` — espaço livre em disco na raiz (`/`) +- `mem_free` — memória disponível + +## Instalação + +```bash +# Copiar o script +sudo cp heartbeat.sh /usr/local/bin/heartbeat.sh +sudo chmod +x /usr/local/bin/heartbeat.sh + +# Copiar os units systemd +sudo cp heartbeat.service /etc/systemd/system/ +sudo cp heartbeat.timer /etc/systemd/system/ + +# Recarregar e habilitar +sudo systemctl daemon-reload +sudo systemctl enable --now heartbeat.timer +``` + +## Configuração + +Antes de instalar, edite `heartbeat.sh` e substitua a URL do ping pela URL do seu check no Healthchecks.io: + +```bash +# Linha a editar no heartbeat.sh +https://hc-ping.com/SEU-UUID-AQUI +``` + +## Verificar status + +```bash +# Ver se o timer está ativo +systemctl status heartbeat.timer + +# Ver próxima execução +systemctl list-timers heartbeat.timer + +# Ver log da última execução +journalctl -u heartbeat.service -n 20 +``` diff --git a/heartbeat.service b/heartbeat.service new file mode 100644 index 0000000..5bc429f --- /dev/null +++ b/heartbeat.service @@ -0,0 +1,7 @@ +[Unit] +Description=Heartbeat para Healthchecks.io + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/heartbeat.sh + diff --git a/heartbeat.sh b/heartbeat.sh new file mode 100755 index 0000000..f957ca7 --- /dev/null +++ b/heartbeat.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Coleta informações em tempo real +UPTIME=$(uptime -p) +LOAD=$(cut -d' ' -f1-3 /proc/loadavg) +DISK_FREE=$(df -h / --output=avail | tail -1 | xargs) +MEM_FREE=$(free -h | awk '/^Mem:/ {print $7}') +TIMESTAMP=$(date -Iseconds) + +# Monta o JSON +JSON=$(cat <