[英]How to use Datadog agent in Azure App Service?
我在Azure應用服務中將Web應用作為Docker容器運行。 我想將Datadog代理添加到每個容器中,例如,在后台讀取日志文件並將其發布到Datadog日志管理中。 這是我嘗試過的:
1)安裝Datadog劑作為擴展作為在描述此信息 。 該選項似乎不適用於App Service應用程序,僅在VM上可用。
2)利用多容器應用如所描述的在這篇文章 。 但是,我們還沒有找到一種將其與Azure DevOps發布管道集成的簡單方法。 我猜可能可以創建包裝Azure CLI命令的自定義部署任務嗎?
3)通過遵循Datadog Dockerfile 的構建方式,將 Datadog代理包含到我們的Dockerfile 中 。 該過程似乎非常復雜,並為我們的Dockerfile添加了許多額外的依賴項。 我們也不想使用FROM datadog/agent
從Datadog Dockerfile繼承我們的Dockerfile。
我認為對於Azure + Datadog用戶,這一定是一個非常標准的問題。 有什么想法是最干凈的選擇嗎?
我懷疑Datadog代理是否會在App Services Web應用程序上正常工作,因為您無權訪問正在運行的主機,該主機是為VM設計的。 您是否嘗試過https://www.datadoghq.com/blog/azure-monitoring-enhancements/ ? 他們說他們支持AppServices
來自App Services的日志也可以發送到Blob存儲,並通過Azure功能從那里轉發。 與來自App Services的跟蹤和自定義指標不同,這不需要運行代理的VM。 該功能的文檔和代碼在此處提供:
https://github.com/DataDog/datadog-serverless-functions/tree/master/azure/blobs_logs_monitoring
為了回應您對需要自定義指標的評論,在沒有座席位於相同位置的情況下仍然可以實現。 安裝名為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 Core發送Datadog APM指標,並提供了有關如何在此處進行設置的說明: https : //github.com/payscale/datadog-app-service-extension
讓我知道您是否有任何疑問,或者這不適用於您的情況。
如果要使用DataDog從App Service的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())
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.