我想解析一些自定义(网络设备)系统日志文件来创建我自己的格式化输出。
由于我是 syslog-ng 和 patterndb 的新手,我一直在尝试使用文档构建一个示例 - 到目前为止我的工作在这里:https : //gist.github.com/linickx/8002981
在示例中,我想读取 syslog 文件 (testfile.log):
Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2
Accepted password for user from 10.51.0.27 port 4256 ssh2
Run Code Online (Sandbox Code Playgroud)
并只输出用户名和 IP 地址的列表,例如:
sampleuser; 10.50.0.247;
user; 10.51.0.27;
Run Code Online (Sandbox Code Playgroud)
为了解析日志文件,我创建了以下模式数据库(example.xml):
<patterndb version='4' pub_date='2010-10-17'>
<ruleset name='ssh' id='123456678'>
<pattern>ssh</pattern>
<rules>
<rule provider='me' id='182437592347598' class='system'>
<patterns>
<pattern>Accepted @ESTRING:SSH.AUTH_METHOD: @for @ESTRING:SSH_USERNAME: @from @ESTRING:SSH_CLIENT_ADDRESS: @port @NUMBER:SSH_PORT_NUMBER:@ ssh2</pattern>
</patterns>
<examples>
<example>
<test_message program="ssh">Accepted password for sampleuser from 10.50.0.247 port 42156 ssh2</test_message>
<test_values>
<test_value name="SSH.AUTH_METHOD">password</test_value>
<test_value name="SSH_USERNAME">sampleuser</test_value>
<test_value name="SSH_CLIENT_ADDRESS">10.50.0.247</test_value>
<test_value name="SSH_PORT_NUMBER">42156</test_value>
</test_values>
</example>
</examples>
</rule>
</rules>
</ruleset>
</patterndb>
Run Code Online (Sandbox Code Playgroud)
但是,当我在 syslog-ng.conf 中使用 SSH_USERNAME & SSH_CLIENT_ADDRESS 变量时
destination test_output {
file("/home/nick/output.log"
template("${SSH_USERNAME}; ${SSH_CLIENT_ADDRESS}; \n")
template_escape(no)
);
};
Run Code Online (Sandbox Code Playgroud)
--[完整版可以在GIST中看到]--
输出文件(output.log)为空
; ;
; ;
Run Code Online (Sandbox Code Playgroud)
在 syslog-ng.conf 中是否有一些层次结构或特殊方法可以使用我缺少的自定义或 patterndb 变量?
提前致谢!
归档时间: |
|
查看次数: |
1290 次 |
最近记录: |