Este diretório contém os binários portáteis do cURL para Windows e exemplos práticos de integração para monitoramento de rotinas periódicas (como backups, sincronização de arquivos, dumps de bancos de dados e tarefas agendadas) via chamadas HTTP à API do Vigilant.
curl.exe,libcurl-x64.dll,curl-ca-bundle.crt: Binários independentes do cURL (64-bit) para execução direta no Windows, sem necessidade de instalação prévia no sistema.exemplo_backup.bat: Modelo pronto de script Batch para Windows com captura de logs e envio de notificação de Sucesso/Falha.README.md: Este guia com instruções, parâmetros e exemplos práticos.
Ao disparar um heartbeat via cURL, utilize os seguintes parâmetros no corpo da requisição (multipart/form-data ou application/json):
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
service |
string |
Sim | Nome de exibição da rotina/serviço no Dashboard. | "Backup Banco Produção" |
interval_minutes |
integer |
Não | Intervalo esperado entre execuções (em minutos). Ex: 24h = 1440. |
1440 |
grace_minutes |
integer |
Não | Tolerância adicional em minutos antes de marcar como atrasado. | 60 |
ok |
boolean |
Não | Status da execução (true = Sucesso, false = Falha). Padrão: true. |
true |
message |
string |
Não | Mensagem descritiva do status ou motivo da falha. | "Backup de 12GB concluído com sucesso." |
duration_seconds |
integer |
Não | Duração da rotina em segundos. | 185 |
notification_emails |
string |
Não | E-mails separados por vírgula para alertas de falha/atraso. | "ti@empresa.com.br, noc@empresa.com.br" |
log_file |
file |
Não | Arquivo de log anexado (.log ou .txt). |
@C:\Backups\logs\backup_hoje.log |
Important
A autenticação exige o envio do cabeçalho Authorization: Bearer clt_live_... com o token da empresa emitido no cadastro (POST /api/clients/register).
Este modelo executa um procedimento (ex: backup ou cópia de arquivos), salva a saída em um arquivo de log e notifica o Dashboard tanto em caso de sucesso quanto em caso de falha:
@echo off
setlocal EnableDelayedExpansion
REM ===== 1. CONFIGURACOES DO DASHBOARD =====
set DASHBOARD_URL=https://dashboard.servicoskayser.com.br/api/heartbeat
set API_TOKEN=clt_live_SEU_TOKEN_AQUI
set NOME_SERVICO=Backup Sistema
set INTERVALO_MINUTOS=1440
set TOLERANCIA_MINUTOS=60
set EMAILS_ALERTA=ti@empresa.com.br
REM ===== 2. CONFIGURACOES LOCAIS =====
set SCRIPT_DIR=%~dp0
set CURL_EXE=%SCRIPT_DIR%curl.exe
set LOG_DIR=C:\Backups\logs
set ARQUIVO_LOG=%LOG_DIR%\backup_%date:~-4,4%%date:~-7,2%%date:~-10,2%.log
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
echo [%date% %time%] Iniciando rotina de backup... > "%ARQUIVO_LOG%"
REM ===== 3. EXECUCAO DA SUA ROTINA (Exemplo com 7-Zip ou Robocopy) =====
REM Substitua esta linha pelo seu comando real de backup:
robocopy "C:\Sistema\Dados" "D:\Backups\Dados" /MIR /NP /R:2 /W:5 >> "%ARQUIVO_LOG%" 2>&1
REM Robocopy retorna códigos <= 1 para sucesso/sem alterações
if %ERRORLEVEL% LEQ 1 (
set STATUS_OK=true
set MSG_STATUS=Backup e sincronizacao concluidos com sucesso.
echo [%date% %time%] Sucesso no backup. >> "%ARQUIVO_LOG%"
) else (
set STATUS_OK=false
set MSG_STATUS=Falha na execucao do backup. Codigo de saida: %ERRORLEVEL%
echo [%date% %time%] ERRO: Falha no backup! >> "%ARQUIVO_LOG%"
)
REM ===== 4. ENVIO DE NOTIFICACAO AO DASHBOARD =====
echo Enviando notificacao ao Dashboard...
"%CURL_EXE%" -s -X POST "%DASHBOARD_URL%" ^
-H "Authorization: Bearer %API_TOKEN%" ^
-H "Accept: application/json" ^
-F "service=%NOME_SERVICO%" ^
-F "interval_minutes=%INTERVALO_MINUTOS%" ^
-F "grace_minutes=%TOLERANCIA_MINUTOS%" ^
-F "ok=%STATUS_OK%" ^
-F "message=%MSG_STATUS%" ^
-F "notification_emails=%EMAILS_ALERTA%" ^
-F "log_file=@%ARQUIVO_LOG%"
echo [%date% %time%] Notificacao enviada.
endlocalPara ambientes com PowerShell disponível:
$DashboardUrl = "https://dashboard.servicoskayser.com.br/api/heartbeat"
$ApiToken = "clt_live_SEU_TOKEN_AQUI"
$LogPath = "C:\Backups\logs\backup_$(Get-Date -Format 'yyyyMMdd').log"
$Headers = @{
"Authorization" = "Bearer $ApiToken"
"Accept" = "application/json"
}
$Form = @{
service = "Backup Financeiro"
interval_minutes = "1440"
grace_minutes = "60"
ok = "true"
message = "Backup concluído com sucesso via PowerShell."
notification_emails = "ti@empresa.com.br"
log_file = Get-Item -Path $LogPath
}
Invoke-RestMethod -Uri $DashboardUrl -Method Post -Headers $Headers -Form $FormIdeal para crontabs e rotinas em servidores Linux:
#!/usr/bin/env bash
set -e
DASHBOARD_URL="https://dashboard.servicoskayser.com.br/api/heartbeat"
API_TOKEN="clt_live_SEU_TOKEN_AQUI"
LOG_FILE="/var/log/backups/backup_$(date +%Y%m%d).log"
# Executa rotina (ex: mysqldump)
mysqldump -u root -p'senha' banco_producao > /backups/db.sql 2> "$LOG_FILE"
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
OK="true"
MSG="Dump MySQL realizado e compactado com sucesso."
else
OK="false"
MSG="Erro durante a criacao do dump MySQL. Codigo: $EXIT_CODE"
fi
# Dispara sinal de vida e anexa log
curl -s -X POST "$DASHBOARD_URL" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Accept: application/json" \
-F "service=Backup MySQL Producao" \
-F "interval_minutes=1440" \
-F "grace_minutes=60" \
-F "ok=$OK" \
-F "message=$MSG" \
-F "notification_emails=ti@empresa.com.br" \
-F "log_file=@$LOG_FILE"- Abra o Agendador de Tarefas (
taskschd.msc). - Clique em Criar Tarefa Básica... e dê um nome (ex:
Backup Diário e Heartbeat). - Escolha o disparador (ex: Diariamente às 23:00).
- Na ação, selecione Iniciar um programa.
- No campo Programa/script, aponte para o arquivo
.bat(ex:C:\Backups\exemplo_backup.bat). - No campo Iniciar em (opcional), insira a pasta do script (ex:
C:\Backups\). - Marque para executar mesmo que o usuário não esteja logado.