例如:
path:/opt/audit_logs/mysql-audit/10.3.5.50_142xxxxx.log
日志中没有数据库的 IP 字段。所以把日志命名成 IP+时间戳.log
我想取 10.3.5.50 作为 IP , logstah 如何操作呢?
1
huangzxx 2017-03-22 16:54:49 +08:00 1
格式统一的话, filter 里用 grok 正则匹配就行了吧。
举个例子: ``` grok { match => { "http_x_forwarded_for" => "((?<client_ip>[0-9\.]+),?.*)" } } ``` 再复杂的话,直接写 ruby 。 |
2
wildcat007 OP @huangzxx
先感谢 比如我的日志是 root,query,127.0.0.1,select * from test.test 这个 IP127.0.0.1 是操作这条 sql 的主机 IP 。但是我不知道这个日志是哪个服务器的,所以日志的命名是 10.3.5.50_20170322.log 所以我现在想去取 日志的 文件名的一部分,就是 IP 这个一部分 作为一个字段,方便 elk 去搜索。 grok 不知道能不能正则 文件名。 |
3
wklken 2017-03-22 17:14:07 +08:00 1
两种
- 如果采集时可以控制, 采集 agent 将 agent_ip 灌入到发送的 json 里面就行, logstash/filebeat 都 ok - 如果文件名已有, 在 path 里面, grok 直接解析到一个字段 |
4
wildcat007 OP |