Как отправить журнал в Cloud Watch в приложении C # - PullRequest
0 голосов
/ 13 марта 2019

Я хочу иметь возможность отправлять журналы приложений на Cloud Watch Log. и я узнал, что есть служба Cloud Watch Agent, которая работает в фоновом режиме и читает журналы из файла журнала и отправляет только дельту (дополнительные журналы) на Cloud Watch Log. Все это имеет смысл для меня. Затем я узнал о NLog C # каркасе ведения журналов и написал ниже POC для отправки журналов.

static void Main(string[] args)
{
    ConfigureNLog();
    var logger = NLog.LogManager.GetCurrentClassLogger();
    logger.Info("Hello World");
    logger.Log(LogLevel.Info, "Sample informational message");
}
static void ConfigureNLog()
{
        var accessKey = ConfigurationManager.AppSettings.Get("AWSAccessKey");
        var secretKey = ConfigurationManager.AppSettings.Get("AWSSecretKey");
        var config = new LoggingConfiguration();
        var awsTarget = new AWSTarget()
        {
            LogGroup = "NLog.ProgrammaticConfigurationExample",
            Region = "us-east-1",
            Credentials = new BasicAWSCredentials(accessKey, secretKey)
        };
        config.AddTarget("aws", awsTarget);
        config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, awsTarget));

        LogManager.Configuration = config;
}

Теперь, когда я запускаю вышеуказанный код, я могу отправить журнал в Cloud Watch. Но сейчас я в замешательстве, в чем же смысл агента Cloud Watch?

  1. Поскольку я отправляю данные журнала напрямую, означает ли это, что в моем сценарии мне не нужен агент Cloud Watch?

  2. В случае, если я хочу использовать Cloud Watch Agent, тогда мне нужно использовать FILE в качестве цели для журналов по NLog, а затем указать агенту Cloud Watch отправить этот файл журнала в Cloud Watch Log ??

Правильно ли мое понимание? Пожалуйста, помогите мне понять поток.

Правильно ли ниже расход?

Запись журнала NLog в File -> Cloud Agent читает журнал оттуда -> Send log в облачные часы

Вопрос: Как использовать агент Cloud Watch в вышеуказанном POC для отправки данных через NLog?

Ответы [ 2 ]

2 голосов
/ 13 марта 2019

Cloud Watch Agent работает на вашем сервере и может просматривать журналы файлов, которые создаются. Эти файлы журналов могут быть любыми: журналы IIS, журналы времени, журнал событий и т. Д. Когда файл журнала обновляется, CWA получает обновления и отправляет их в Cloud Watch. Это общее поведение CWA и отлично подходит для журналов событий и журналов ОС.

Изменяя JSON-файл AWS.EC2.Windows.CloudWatch.json CWA, вы можете настроить его на просмотр файлов журнала для определенных форматов и отправку изменений в CW вне стандартных / примеров, которые он делает по умолчанию. Вы можете обновить json в соответствии с форматом записи NLog, чтобы он следил за этим конкретным форматом в файле. CW Имеет задержку отправки.

Теперь у вас есть Nlog, который записывает файлы журнала. Вы можете сделать так, чтобы NLog отправлял записи журнала в файл, а агент наблюдения за облаком наблюдал за этим файлом, принимал изменения и отправлял их, или вы можете сделать так, чтобы NLog отправлял записи непосредственно в CW. Поскольку вы пишете напрямую в CW через цель NLog, вам не нужен облачный агент для ваших файлов NLog. Я предлагаю сохранить CWA для других файлов журналов, таких как IIS или журналы событий.

Я полагаю, предпочтение отдается тому, как вы это делаете. Я думаю, что NLog Targets с макетами проще, чем иметь дело с json-файлом CloudWatch, чтобы попытаться сопоставить формат журнала. Я использую только CWA для отправки файлов журналов, которые я не контролирую, и использую цель NLog для отправки своих записей NLog.

Я могу опубликовать пример фрагмента json CWA для стороннего файла журнала, который я отслеживаю с CWA, если вам нужен пример.

0 голосов
/ 13 марта 2019

Когда приложение просто должно записать в файл, оно живет очень простой жизнью с небольшими проблемами.

Когда приложение внезапно должно обрабатывать сетевой трафик (с таймаутами, отключениями, повторными попытками, подключением,задержка и т. д.) затем внезапно возникнут проблемы с очередями, захватом памяти, использованием сокетов, сборкой мусора, остановками и т. д. (и потерей всех ожидающих событий в случае сбоя)

В зависимости от времени жизниваше приложение и критическое из ваших приложений, то это может быть полезно, чтобы дать ему простую жизнь.И пусть друг как Cloud Watch Agent беспокоится о сетевых вещах.

См. Также https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-cloud-logging-with-Azure-function-or-AWS-lambda

...