数据采集

最近更新时间:2021-04-09 16:32:45

查看PDF

本文通过介绍如何使用Filebeat采集云主机KEC的Nginx日志数据为例,说明如何实现数据实时采集。当前除了兼容开源Filebeat采集外,还支持API方式实时推送数据。详见API上传数据

前提条件

在华北1(北京)已创建云服务器实例,且服务器上有待采集的日志数据。

安装Filebeat采集器

  1. 下载KLog提供的Filebeat采集器。
  • 最新Linux版本的klog-filebeat可以点击此处下载
  • 或直接在您的服务器上下载:
wget "https://ks3-cn-beijing.ksyun.com/klog/filebeat/klog-filebeat.latest.tar.gz"
  1. 安装Filebeat采集器,把安装包解压缩到您需要的路径即可。
tar xvf klog-filebeat.latest.tar.gz

配置采集任务

接下来以采集/var/log/nginx/access.log日志文件为例,配置数据采集任务。 日志示例如下:

10.168.255.134 [01/Sep/2016:11:04:48 +0800] "GET /account/fund/fundDetail.html?1472699086917 HTTP/1.1" - 200 3777 "https://wenjinbao.winfae.com/account/myAccount.html" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/7.1.0.12633" 0.000 115.226.250.21 

字段格式定义如下:

log_format  main  '$remote_addr [$time_local] "$request" '
                      '$request_body $status $body_bytes_sent "$http_referer" "$http_user_agent" '
                      '$request_time $http_x_forwarded_for';

klog-filebeat需要2个配置文件,分别是filebeat.ymlcredential.ini,这两个配置文件均在klog-filebeat压缩包中,解压后即可看到。

credential.ini

这个配置文件的内容是您的金山云access_keysecret_key。内容示例:

[klog]
access_key = AKLT6-bcdesfg-ajsIjfiejI9
secret_key = Jf2390j9E9finfiDIOFJFD8483+dfsDVdOCTFazCnDEAw+mxA/7Lfeh3ugErwoKKb5wNOIei==

filebeat.yml

这个是主配置文件,内容示例如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    # 需要采集的日志文件
    - /var/log/nginx/access.log

output.klog:
  endpoint: https://klog-cn-beijing.ksyun.com
  credential:
    path: credential.ini
    check_interval: 60
  targets:
    - project_name: project_demo
      pool_name: project_demo
      fields:
        - key: message
          skip_root: true
        - key: grok
          skip_root: true
        
  processors:
  #grok处理器可以把普通文本日志解析为json对象。
  #由于grok是基于正则表达式的,所以开启该选项会增加filebeat的资源消耗。
  - grok:
      # 解析哪个字段
      source_field: message

      # 解析结果保存到哪个字段
      target_field: grok

      # 用于解析的表达式
      pattern: "%{IPORHOST:clientip} \[%{HTTPDATE:time}\] \"%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}\" \- %{NUMBER:http_status_code} %{NUMBER:bytes} \"(?<http_referer>\S+)\" \"(?<http_user_agent>(\S+\s+)*\S+)\" (%{BASE16FLOAT:request_time}) (%{IPORHOST:http_x_forwarded_for}|-)"

关于output.klog的详细配置说明可参考klog-filebeat。其余详细配置可参考filebeat官方文档

注意:在输出到klog的情况下,filebeatmodules功能无法使用。

启动采集器

执行如下命令,启动klog-filebeat。启动后,会在指定的日志池中看到写入的日志数据。

./filebeat -e

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈