gelf2azure
1.0.0
gelf2azure 是一个 Docker 容器,它从 UDP 接收 GELF 格式的日志,并使用 REST API 将其转发到 Azure Monitor。
它旨在与输入中的 gelf 内置 Docker 日志记录插件以及输出中的 Azure Monitor HTTP 数据收集器 API 完美集成。
作为额外的好处,它还公开了一个小型 Web 应用程序,可以在日志到达时显示日志,从而提供类似尾巴的体验。
打开终端并启动 gelf2azure docker 容器:
docker run --rm -it -p 12201:12201/udp -p 54313:54313 gimmi/gelf2azure:latest
用浏览器打开http://127.0.0.1:54313
打开另一个终端并从 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!'
您应该看到日志“Hello world!”出现在浏览器窗口中:
消息可以从任何源发送,只要使用 GELF 格式即可。
与netcat
nc.exe -u 127.0.0.1 12201
{ "host": "example.org", "short_message": "xoxo", "timestamp": 1602850875.683, "_container_name": "agitated_goldberg" }
或者在bash中
echo -n '{"host":"example.org","short_message":"xoxo","timestamp":1602850875.683,"_container_name":"agitated_goldberg"}' > /dev/udp/127.0.0.1/12201
配置是通过传递环境变量来完成的:
环境变量 | 默认 | 描述 |
---|---|---|
AZURE_CUSTOMER_ID | Azure API 的CustomerID (又名工作区 ID)参数。不设置此选项将禁止向 Azure 发送数据。 | |
AZURE_SHARED_KEY | Azure API 的SharedKey (又名主键)参数 | |
AZURE_LOG_TYPE | Azure API 的Log-Type 参数 | |
AZURE_BATCH_MS | 5000 | 收集数据并发送给 Azure Monitor 的频率 |
AZURE_TIMEOUT_MS | 30000 | Azure Monitor REST 调用超时 |
HTTPS_代理 | 如果需要,设置代理,例如http://my.proxy.com:80 | |
调试 | 使用 value app:* 启用内部日志记录。对于故障排除很有用 |
在 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 设计为与 gelf 内置 Docker 日志记录插件一起使用。要启用它,请修改/etc/docker/daemon.json
,如下所示:
{
"log-driver" : " gelf " ,
"log-opts" : {
"gelf-address" : " udp://172.16.0.13:12201 "
}
}
docker build --pull --no-cache -t gimmi/gelf2azure:latest .