在此,使用一个简单的示例开始 Heka 的使用。
示例
该示例将加载本地的一个日志文件,使用空白符及换行分隔,打印至标准输出,配置文件 test.toml 如下:
[log-test-input] type = "LogstreamerInput" log_directory = "/root/work" file_match = 'test\.log' splitter = "log-test-splitter" [log-test-splitter] type = "RegexSplitter" delimiter = '\s+' delimiter_eol = false [log-test-encoder] append_newlines = true type = "PayloadEncoder" prefix_ts = false [log-test-output] type = "LogOutput" message_matcher = "TRUE" encoder = "log-test-encoder"
创建日志文件 /root/work/test.log,然后启动 hekad 进程:
hekad -config test.toml
向日志中输入一些内容:
echo -e "Hello world.\n This is a demo of heked." >> test.log
查看日志文件中的内容:
Hello world. This is a demo of heked.
heked 的标准输出:
2017/04/30 10:00:27 Hello 2017/04/30 10:00:27 world. 2017/04/30 10:00:27 This 2017/04/30 10:00:27 is 2017/04/30 10:00:27 a 2017/04/30 10:00:27 demo 2017/04/30 10:00:27 of 2017/04/30 10:00:27 heked.
配置释义
Heka 的配置文件采用 TOML 格式,使用 [] 来区分一段段配置:
- [log-test-input] 命名Input配置。
- type = “LogstreamerInput”;配置段的类型,可以直接将此类型当作配置段的名称,就可以省略此配置。
- log_directory = “/root/work”; 配置日志文件的目录。LogstreamerInput 会递归搜索目录及子目录下的日志文件。
- file_match = ‘test\.log’;配置匹配日志文件的正则表达式;使用单引号来配置,若使用双引号,则为:”test\\.log”。
- splitter = “log-test-splitter”;指定日志分隔器名称。
- [log-test-splitter] 命名分隔器。
- type = “RegexSplitter”;指定分隔器的类型为正则表达式分隔器:RegexSplitter。
- delimiter = ‘\s+’;正则表达式分隔字符。
- delimiter_eol = false;是否识别正则表达式 捕获组。
- [log-test-encoder] 命名输出序列化工具。
- append_newlines = true;配置是否输出自动增加新行。
- type = “PayloadEncoder”;序列化插件类型。
- prefix_ts = false;是否增加前缀时间戳。
- [log-test-output] 命名输出插件。
- type = “LogOutput”;输出插件类型。
- message_matcher = “TRUE”;配置 输出插件对 heka 消息进行匹配的规则;TRUE为全部匹配。
- encoder = “log-test-encoder”;指定输出的序列化工具。
例子中的 LogstreamerInput 会记录日志读取的游标,当使用 Ctrl-C 停止 hekad 后,再重新启动 hekad,将不会读取之前已经读取过的数据;默认情况下,Heka 会将此记录在目录 /var/cache/hekad/logstreamer/LogstreamerInput 下;如果删除了此文件,重新启动后,将会从头读取文件内容。
转载请注明:子暃之路 » Heka指南 – 入门示例及配置(3)