gelf2azure est un conteneur Docker qui reçoit les journaux au format GELF depuis UDP et les transmet à Azure Monitor à l'aide de l'API REST.
Ceci est conçu pour s'intégrer parfaitement au plug-in de journalisation Docker intégré à Gelf en entrée et à l'API Azure Monitor HTTP Data Collector en sortie.
En prime, il expose également une petite application Web qui affiche les journaux au fur et à mesure de leur arrivée, offrant une expérience semblable à celle d'une queue.
Ouvrez un terminal et lancez le conteneur Docker gelf2azure :
docker run --rm -it -p 12201:12201/udp -p 54313:54313 gimmi/gelf2azure:latest
Ouvrez avec votre navigateur http://127.0.0.1:54313
Ouvrez un autre terminal et envoyez un exemple de journal à partir d'un conteneur 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!'
Vous devriez voir le journal « Hello world ! » apparaissent dans la fenêtre du navigateur :
Le message peut être envoyé depuis n’importe quelle source, à condition que le format GELF soit utilisé.
Avec netcat
nc.exe -u 127.0.0.1 12201
{ "host": "example.org", "short_message": "xoxo", "timestamp": 1602850875.683, "_container_name": "agitated_goldberg" }
Ou en bash
echo -n '{"host":"example.org","short_message":"xoxo","timestamp":1602850875.683,"_container_name":"agitated_goldberg"}' > /dev/udp/127.0.0.1/12201
La configuration se fait en passant des variables d'environnement :
Variable d'environnement | Défaut | Description |
---|---|---|
AZURE_CUSTOMER_ID | Paramètre CustomerID (AKA Workspace ID) pour l’API Azure. Si cette option n’est pas définie, l’envoi de données à Azure sera désactivé. | |
AZURE_SHARED_KEY | Paramètre SharedKey (AKA Primary Key) pour l'API Azure | |
AZURE_LOG_TYPE | Paramètre Log-Type pour l'API Azure | |
AZURE_BATCH_MS | 5000 | À quelle fréquence les données sont collectées pour être envoyées à Azure Monitor |
AZURE_TIMEOUT_MS | 30000 | Délai d’expiration pour l’appel REST Azure Monitor |
HTTPS_PROXY | Définissez un proxy si nécessaire, quelque chose comme http://my.proxy.com:80 | |
DÉBOGUER | Utilisez value app:* pour activer la journalisation interne. Utile pour le dépannage |
Exécutez les commandes suivantes dans Azure CLI :
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 est conçu pour être utilisé avec le plugin de journalisation Docker intégré à Gelf. Pour l'activer, modifiez /etc/docker/daemon.json
comme suit :
{
"log-driver" : " gelf " ,
"log-opts" : {
"gelf-address" : " udp://172.16.0.13:12201 "
}
}
docker build --pull --no-cache -t gimmi/gelf2azure:latest .