簡體   English   中英

如何在Azure App Service中使用Datadog代理?

[英]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())
            );

完整的源代碼和所需的NuGet軟件包在這里:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM