在EC2上的NXLog配置中查找实例ID

时间:2013-12-02 20:27:26

标签: windows perl logging amazon-ec2

我有几个在Windows上运行应用程序的ec2实例。已请求保留日志。为了进行记录和审计,选择了Loggly。

对于windows实例,我已经安装了nxlog并按照Loggly的建议进行了配置。我想将文本INSTANCEID替换为网址http://169.254.169.254/latest/meta-data/instance-id

返回的值

我还没有找到一个很好的例子,但文档说配置类似于PERL。

示例conf文件

define ROOT C:\Program Files (x86)\nxlog
define CERTDIR %ROOT%\cert

define CUSTOMER_TOKEN 12345678-abcd-abcd-abcd-123456789012

Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log

<Extension json>
    Module      xm_json
</Extension>

<Extension syslog>
   Module xm_syslog
</Extension>

<Input internal>
   Module im_internal
   Exec  $Message = to_json(); 
</Input>

# Watch any file you'd like
<Input file_watch>
   Module   im_file
   File     "C:\\Program Files (x86)\\nxlog\data\\nxlog.log"
   SavePos  TRUE
   Exec  $Message = $raw_event; 
</Input>

<Input eventlog>
    Module im_msvistalog
    Exec  $Message = to_json(); 
</Input>

<Output out>
   Module om_tcp
   Host logs-01.loggly.com
   Port 514
   Exec to_syslog_ietf();\
$raw_event = replace($raw_event, 'NXLOG@14506', '%CUSTOMER_TOKEN%@41058 tag="windows" tag="INSTANCEID"] [', 1);
</Output>

<Route 1>
   Path internal, file_watch, eventlog => out
</Route>

1 个答案:

答案 0 :(得分:0)

您应该在启动nxlog服务之前运行一个脚本,该服务将使用从url获取的值替换 nxlog.conf 中的 INSTANCEID 。 我想INSTANCEID是固定的,并且在实例启动时不会改变。