gelf2azure ist ein Docker-Container, der Protokolle im GELF-Format von UDP empfängt und sie mithilfe der REST-API an Azure Monitor weiterleitet.
Dies ist so konzipiert, dass es sich gut mit dem in Gelf integrierten Docker-Protokollierungs-Plugin in der Eingabe und der Azure Monitor HTTP Data Collector-API in der Ausgabe integrieren lässt.
Als zusätzlichen Bonus stellt es auch eine kleine Webanwendung zur Verfügung, die die Protokolle anzeigt, sobald sie eintreffen, und so ein schwanzähnliches Erlebnis bietet.
Öffnen Sie ein Terminal und starten Sie den Docker-Container gelf2azure:
docker run --rm -it -p 12201:12201/udp -p 54313:54313 gimmi/gelf2azure:latest
Öffnen Sie mit Ihrem Browser http://127.0.0.1:54313
Öffnen Sie ein anderes Terminal und senden Sie ein Beispielprotokoll aus einem Docker-Container
docker run --rm -it
--name my_container
--log-driver gelf
--log-opt gelf-address=udp://127.0.0.1:12201
alpine echo 'Hello world!'
Sie sollten das Protokoll „Hallo Welt!“ sehen. erscheinen im Browserfenster:
Die Nachricht kann von jeder Quelle gesendet werden, solange das GELF-Format verwendet wird.
Mit netcat
nc.exe -u 127.0.0.1 12201
{ "host": "example.org", "short_message": "xoxo", "timestamp": 1602850875.683, "_container_name": "agitated_goldberg" }
Oder im Bash
echo -n '{"host":"example.org","short_message":"xoxo","timestamp":1602850875.683,"_container_name":"agitated_goldberg"}' > /dev/udp/127.0.0.1/12201
Die Konfiguration erfolgt durch Übergabe von Umgebungsvariablen:
Umgebungsvariable | Standard | Beschreibung |
---|---|---|
AZURE_CUSTOMER_ID | CustomerID Parameter (auch bekannt als Workspace-ID) für die Azure-API. Wenn Sie diese Option nicht festlegen, wird das Senden von Daten an Azure deaktiviert. | |
AZURE_SHARED_KEY | SharedKey Parameter (auch Primärschlüssel genannt) für die Azure-API | |
AZURE_LOG_TYPE | Log-Type Parameter für die Azure-API | |
AZURE_BATCH_MS | 5000 | Wie oft Daten zum Senden an Azure Monitor erfasst werden |
AZURE_TIMEOUT_MS | 30000 | Zeitüberschreitung für Azure Monitor REST-Aufruf |
HTTPS_PROXY | Legen Sie bei Bedarf einen Proxy fest, etwa http://my.proxy.com:80 | |
DEBUGGEN | Verwenden Sie den Wert app:* um die interne Protokollierung zu aktivieren. Nützlich zur Fehlerbehebung |
Führen Sie die folgenden Befehle in der Azure CLI aus:
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 ist für die Verwendung mit dem integrierten Docker-Protokollierungs-Plugin von gelf konzipiert. Um es zu aktivieren, ändern Sie /etc/docker/daemon.json
wie folgt:
{
"log-driver" : " gelf " ,
"log-opts" : {
"gelf-address" : " udp://172.16.0.13:12201 "
}
}
docker build --pull --no-cache -t gimmi/gelf2azure:latest .