Apache 日志采集
简介
采集 Apache 日志上报到 DataFlux 中
前置条件
- 已安装 DataKit(DataKit 安装文档)
配置
apache 日志采集通过 tailf 采集器实现,tailf 采集器的详细使用方法请参照 tailf采集器使用方法。
进入 DataKit 安装目录下的 conf.d/log 目录,复制 tailf.conf.sample 并命名为 tailf.conf。示例如下:
[[inputs.tailf]]
# 日志文件列表,可以指定绝对路径,支持使用 glob 规则进行批量指定
# 推荐使用绝对路径
logfiles = ["/my/apache/access.log"]
# 文件路径过滤,使用 glob 规则,符合任意一条过滤条件将不会对该文件进行采集
ignore = [""]
# 数据源,必填
source = "tailf_source"
# 自定义 tags
# [inputs.tailf.tags]
# tags1 = "tags1"
配置好后,重启 DataKit 即可生效
从日志内容中提取标签
__content 的内容代表了一行apache日志, DataFlux 支持通过配置标签提取规则对日志的文本内容进行切割,从而提取出特定的字段作为标签或者日志的时间戳。
进入 DataFlux Studio 控制台的日志面板, 点击右上角 "提取标签"
新建规则,解析方式选择grok方式,根据提取需求结合日志内容确定Grok表达式并填入:
grok示例
apache access log:
log content: 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
grok表达式: %{IPV4:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:apache_timestamp}\] \"%{WORD:method} /%{NOTSPACE:request_page} HTTP/%{NUMBER:http_version}\" %{NUMBER:server_response}
apache error log:
log content: [Fri Sep 09 10:42:29.902022 2011] [core:error] [pid 35708:tid 4328636416] [client 72.15.99.187] File does not exist: /usr/local/apache2/htdocs/favicon.ico
grok表达式: \[(?<timestamp>%{DAY:day} %{MONTH:month} %{MONTHDAY} %{TIME} %{YEAR})\] \[.*:%{LOGLEVEL:loglevel}\] \[pid %{NUMBER:pid}:tid %{NUMBER:tid}\] \[client %{IPV4:clientip}.*\] %{GREEDYDATA:errormsg}