如何在 Azure 应用服务中使用 Datadog 代理?
How to use Datadog agent in Azure App Service?
我 运行 Web 应用作为 Azure 应用服务中的 Docker 容器。我想将 Datadog 代理添加到每个容器,例如,在后台读取日志文件并将它们 post 到 Datadog 日志管理。这是我试过的:
1) 按照 this post 中的说明安装 Datadog 代理作为扩展。此选项似乎不适用于 App Service 应用程序,只能在 VM 上使用。
2) 按照 in this post. However, we have not found a simple way to integrate this with Azure DevOps release pipelines 所述使用多容器应用程序。我想也许可以创建一个包含 Azure CLI 命令的自定义部署任务?
3) 按照 Datadog Docker 文件 are built 的方式将 Datadog 代理包含到我们的 Docker 文件中。这个过程看起来相当复杂,并且向我们的 Docker 文件添加了许多额外的依赖项。我们也不希望使用 FROM datadog/agent
.
从 Datadog Docker 文件继承我们的 Docker 文件
我认为这对于 Azure+Datadog 用户来说一定是一个非常标准的问题。知道什么是最干净的选择吗?
我怀疑 Datadog 代理是否可以在 App Services 网络应用程序上运行,因为您无权访问 运行 主机,它是为 VM 设计的。
你试过这个 https://www.datadoghq.com/blog/azure-monitoring-enhancements/ 了吗?他们说他们支持 AppServices
为了回应您关于想要自定义指标的评论,即使代理不在同一地点,这仍然是可能的。安装名为 statsdclient 的 datadog 的 nuget 包后,您可以将其配置为将自定义指标发送到位于其他地方的代理。下面的示例:
using StatsdClient;
var dogstatsdConfig = new StatsdConfig
{
StatsdServerName = "127.0.0.1", // Optional if DD_AGENT_HOST environment variable set
StatsdPort = 8125, // Optional; If not present takes the DD_DOGSTATSD_PORT environment variable value, else default is 8125
Prefix = "myTestApp", // Optional; by default no prefix will be prepended
ConstantTags = new string[1] { "myTag:myTestAppje" } // Optional
};
StatsdClient.DogStatsd.Configure(dogstatsdConfig);
StatsdClient.DogStatsd.Increment("fakeVisitorCountByTwo", 2); //Custom metric itself
我已经编写了一个应用程序服务扩展,用于使用 .NET 核心发送 Datadog APM 指标,并在此处提供了如何设置它的说明:https://github.com/payscale/datadog-app-service-extension
如果您有任何问题或者这不适用于您的情况,请告诉我。
来自应用服务的日志也可以发送到 Blob 存储并通过 Azure 函数从那里转发。与应用服务中的跟踪和自定义指标不同,这不需要 VM 运行 代理。该函数的文档和代码可在此处获得:
https://github.com/DataDog/datadog-serverless-functions/tree/master/azure/blobs_logs_monitoring
如果您想使用 DataDog 从应用服务的 Azure 功能进行日志记录,您可以使用 Serilog 和 DataDog Sink 到日志文件:
services
.AddLogging(loggingBuilder =>
loggingBuilder.AddSerilog(
new LoggerConfiguration()
.WriteTo.DatadogLogs(
apiKey: "REPLACE - DataDog API Key",
host: Environment.MachineName,
source: "REPLACE - Log-Source",
service: GetServiceName(),
configuration: new DatadogConfiguration(),
logLevel: LogEventLevel.Infomation
)
.CreateLogger())
);
我 运行 Web 应用作为 Azure 应用服务中的 Docker 容器。我想将 Datadog 代理添加到每个容器,例如,在后台读取日志文件并将它们 post 到 Datadog 日志管理。这是我试过的:
1) 按照 this post 中的说明安装 Datadog 代理作为扩展。此选项似乎不适用于 App Service 应用程序,只能在 VM 上使用。
2) 按照 in this post. However, we have not found a simple way to integrate this with Azure DevOps release pipelines 所述使用多容器应用程序。我想也许可以创建一个包含 Azure CLI 命令的自定义部署任务?
3) 按照 Datadog Docker 文件 are built 的方式将 Datadog 代理包含到我们的 Docker 文件中。这个过程看起来相当复杂,并且向我们的 Docker 文件添加了许多额外的依赖项。我们也不希望使用 FROM datadog/agent
.
我认为这对于 Azure+Datadog 用户来说一定是一个非常标准的问题。知道什么是最干净的选择吗?
我怀疑 Datadog 代理是否可以在 App Services 网络应用程序上运行,因为您无权访问 运行 主机,它是为 VM 设计的。 你试过这个 https://www.datadoghq.com/blog/azure-monitoring-enhancements/ 了吗?他们说他们支持 AppServices
为了回应您关于想要自定义指标的评论,即使代理不在同一地点,这仍然是可能的。安装名为 statsdclient 的 datadog 的 nuget 包后,您可以将其配置为将自定义指标发送到位于其他地方的代理。下面的示例:
using StatsdClient;
var dogstatsdConfig = new StatsdConfig
{
StatsdServerName = "127.0.0.1", // Optional if DD_AGENT_HOST environment variable set
StatsdPort = 8125, // Optional; If not present takes the DD_DOGSTATSD_PORT environment variable value, else default is 8125
Prefix = "myTestApp", // Optional; by default no prefix will be prepended
ConstantTags = new string[1] { "myTag:myTestAppje" } // Optional
};
StatsdClient.DogStatsd.Configure(dogstatsdConfig);
StatsdClient.DogStatsd.Increment("fakeVisitorCountByTwo", 2); //Custom metric itself
我已经编写了一个应用程序服务扩展,用于使用 .NET 核心发送 Datadog APM 指标,并在此处提供了如何设置它的说明:https://github.com/payscale/datadog-app-service-extension
如果您有任何问题或者这不适用于您的情况,请告诉我。
来自应用服务的日志也可以发送到 Blob 存储并通过 Azure 函数从那里转发。与应用服务中的跟踪和自定义指标不同,这不需要 VM 运行 代理。该函数的文档和代码可在此处获得:
https://github.com/DataDog/datadog-serverless-functions/tree/master/azure/blobs_logs_monitoring
如果您想使用 DataDog 从应用服务的 Azure 功能进行日志记录,您可以使用 Serilog 和 DataDog Sink 到日志文件:
services
.AddLogging(loggingBuilder =>
loggingBuilder.AddSerilog(
new LoggerConfiguration()
.WriteTo.DatadogLogs(
apiKey: "REPLACE - DataDog API Key",
host: Environment.MachineName,
source: "REPLACE - Log-Source",
service: GetServiceName(),
configuration: new DatadogConfiguration(),
logLevel: LogEventLevel.Infomation
)
.CreateLogger())
);