【发布时间】:2019-08-03 12:01:06
【问题描述】:
我希望能够将应用程序日志发送到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 Agent 的意义在哪里?
由于我是直接发送日志数据,这是否意味着我的场景中不需要 Cloud Watch Agent?
如果我想使用
Cloud Watch Agent,那么我需要使用FILE作为NLog的日志目标,然后告诉 Cloud Watch Agent 将该日志文件发送到 Cloud Watch Log??
我的理解正确吗?请帮助我理解流程。
下面的流程正确吗?
NLog 将日志写入文件 -> 云代理从那里读取日志 -> 发送日志 到云端观看
问题:如何使用上述POC中的Cloud Watch Agent通过NLog发送数据?
【问题讨论】:
-
日志监控代理通常被赋予目录来查看它从哪里拉取日志。如果您使用 API 将日志发送到 Cloud Watch,并且不希望获得代理的任何其他监控优势,则无需安装代理。
-
那么,如果我需要捕获应用级日志,那么我不需要使用任何代理?
-
不,你可以只与一个 API 交互,如果一个被暴露。但是,您可以使用该代理来提取其他日志源,以便更好地监控您的基础架构。
-
@ColinM: 好的,假设我明确想要使用代理,那么在这种情况下,我必须将
NLog日志框架目标设置为某个文件,以便我可以指示我的代理去查找该文件并发送数据。 -
是的..有什么问题?
标签: c# amazon-web-services nlog amazon-cloudwatch amazon-cloudwatchlogs