gelf2azure é um contêiner Docker que recebe logs no formato GELF do UDP e os encaminha para o Azure Monitor usando a API REST.
Isso foi projetado para se integrar perfeitamente ao plug-in de log do Docker integrado ao gelf na entrada e à API do coletor de dados HTTP do Azure Monitor na saída.
Como um bônus extra, ele também expõe um pequeno aplicativo da web que mostra os logs à medida que eles chegam, proporcionando uma experiência semelhante à da cauda.
Abra um terminal e inicie o contêiner docker gelf2azure:
docker run --rm -it -p 12201:12201/udp -p 54313:54313 gimmi/gelf2azure:latest
Abra com seu navegador http://127.0.0.1:54313
Abra outro terminal e envie um log de amostra de um contêiner Docker
docker run --rm -it
--name my_container
--log-driver gelf
--log-opt gelf-address=udp://127.0.0.1:12201
alpine echo 'Hello world!'
Você deverá ver o log "Olá, mundo!" aparecer na janela do navegador:
A mensagem pode ser enviada de qualquer fonte, desde que seja utilizado o formato GELF.
Com netcat
nc.exe -u 127.0.0.1 12201
{ "host": "example.org", "short_message": "xoxo", "timestamp": 1602850875.683, "_container_name": "agitated_goldberg" }
Ou no bash
echo -n '{"host":"example.org","short_message":"xoxo","timestamp":1602850875.683,"_container_name":"agitated_goldberg"}' > /dev/udp/127.0.0.1/12201
A configuração é feita passando variáveis de ambiente:
Variável de ambiente | Padrão | Descrição |
---|---|---|
AZURE_CUSTOMER_ID | Parâmetro CustomerID (também conhecido como Workspace ID) para API do Azure. Deixar esta opção desabilitada desabilitará o envio de dados para o Azure. | |
AZURE_SHARED_KEY | Parâmetro SharedKey (também conhecido como chave primária) para API do Azure | |
AZURE_LOG_TYPE | Parâmetro Log-Type para API do Azure | |
AZURE_BATCH_MS | 5.000 | Com que frequência os dados são coletados para envio ao Azure Monitor |
AZURE_TIMEOUT_MS | 30.000 | Tempo limite para chamada REST do Azure Monitor |
HTTPS_PROXY | Defina o proxy, se necessário, algo como http://my.proxy.com:80 | |
DEPURAR | Use value app:* para ativar o registro interno. Útil para solução de problemas |
Execute os seguintes comandos na CLI do Azure:
az monitor log-analytics workspace create
--subscription my_subs
--resource-group my_group
--location westeurope
--workspace-name my-la-ws
{
"customerId": "THIS IS AZURE_CUSTOMER_ID"
}
az monitor log-analytics workspace get-shared-keys
--subscription my_subs
--resource-group my_group
--workspace-name my-la-ws
{
"primarySharedKey": "THIS IS AZURE_SHARED_KEY"
}
gelf2azure foi projetado para ser usado com o plugin de registro do Docker integrado ao gelf. Para habilitá-lo, modifique /etc/docker/daemon.json
da seguinte forma:
{
"log-driver" : " gelf " ,
"log-opts" : {
"gelf-address" : " udp://172.16.0.13:12201 "
}
}
docker build --pull --no-cache -t gimmi/gelf2azure:latest .