Как использовать агент Datadog в службе приложений Azure?

Я запускаю веб-приложения как контейнеры Docker в Службе приложений Azure. Я хотел бы добавить агент Datadog в каждый контейнер, например, для чтения файлов журналов в фоновом режиме и публикации их в системе управления журналами Datadog. Вот что я пробовал:

1) Установка агента Datadog в качестве расширения, как описано в эта почта. Этот параметр недоступен для приложений службы приложений, он доступен только на виртуальных машинах.

2) Использование многоконтейнерных приложений, как описано в этом посте. Однако мы не нашли простого способа интегрировать это с Конвейеры выпуска Azure DevOps. Я предполагаю, что можно было бы создать настраиваемую задачу развертывания, обертывающую команды Azure CLI?

3) Включение агента Datadog в наши файлы Docker, следуя тому, как Datadog Dockerfiles построены. Процесс кажется довольно сложным и добавляет множество дополнительных зависимостей в наш Dockerfile. Мы также не хотели бы наследовать наши Dockerfile от Datadog Dockerfile с FROM datadog/agent.

Я предполагаю, что это довольно стандартная проблема для пользователей Azure + Datadog. Есть идеи, какой вариант самый чистый?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
4
0
1 754
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Я сомневаюсь, что агент Datadog когда-либо будет работать с веб-приложением App Services, поскольку у вас нет доступа к работающему хосту, он был разработан для виртуальных машин. Вы пробовали этот https://www.datadoghq.com/blog/azure-monitoring-enhancements/? Говорят, что поддерживают AppServices

Спасибо за ваш ответ! Мы действительно используем Azure Monitoring для служб приложений, но они предоставляют только предварительно определенные метрики. Мы хотим увеличивать пользовательские метрики с помощью агента DataDog. Но вы, вероятно, правы, в настоящее время нет возможности использовать агент со службами приложений.

saaskis 16.01.2019 10:14

Я создал расширение службы приложений для Datadog: github.com/payscale/datadog-app-service-extension

Robert Glickman 17.07.2019 01:57

Чтобы ответить на ваш комментарий о желании использовать специальные показатели, это все еще возможно без агента в том же месте. После установки пакета данных nuget под названием statsdclient вы можете настроить его для отправки настраиваемых показателей агенту, расположенному в другом месте. Пример ниже:

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

Спасибо за ваш комментарий! Мы действительно используем аналогичный пакет под названием datadog-метрики для отправки пользовательских показателей в Datadog API. Я бы хотел использовать агент Datadog в качестве вспомогательного средства для сбора журналов из контейнера службы приложений. Но в итоге мы отправили журналы в Redis, а затем через Logstash в Datadog API.

saaskis 29.04.2019 08:30

Если я правильно понимаю то, что вы пишете, на мой взгляд, вам не стоит этого хотеть. Если вы хотите напрямую отправлять свои журналы в DataDog вместо того, чтобы сначала сохранять их самостоятельно, интеграция ваших журналов с другими системами окажется очень сложной. Например, что, если вы хотите отправить свои журналы также в анализатор журналов для проверки безопасности? Отправить это из вашего собственного хранилища журналов намного проще, чем сначала извлечь свои собственные журналы из DataDog.

FireStormHR 30.04.2019 09:15

Я написал расширение службы приложений для отправки метрик Datadog APM с ядром .NET и предоставил инструкции по его настройке здесь: https://github.com/payscale/datadog-app-service-extension

Дайте мне знать, если у вас возникнут какие-либо вопросы или это не относится к вашей ситуации.

Журналы из служб приложений также можно отправлять в хранилище BLOB-объектов и пересылать оттуда с помощью функции Azure. В отличие от трассировок и настраиваемых показателей из служб приложений, для этого не требуется виртуальная машина, на которой запущен агент. Документы и код для функции доступны здесь:

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())
            );

Полный исходный код и необходимые пакеты NuGet находятся здесь:

Другие вопросы по теме