ELK全家桶基本使用(I)文件收集Filebeat

  created  by  鱼鱼 {{tag}}
创建于 2020年03月15日 14:53:27 最后修改于 2020年03月16日 23:51:05

     Filebeat是Elastic中的轻量文件收集系统,相比于功能更强悍的Logstash,当我们需求很单一,读取文件内容且对文件内容没有过多复杂处理时,最好使用FileBeat取代Logstash,以免造成不必要的内存开销。文档链接

     基本功能

    Filebeat负责收集文件并发送给下游服务。核心行为包含输入、处理过滤和输出。当然也有集成好配置的模块,通过模块与Es和Kibana链接可以直接在Kibana上看到组件的可视化。同时不难看出Filebeat其实对数据库的支持不是很健壮

    Input(输入)类型

    截止7.6版本,开源的Filebeat可支持以下几种消息输入类型:

  1. log    用得最多的输入类型;

  2. stdin    标准的输入,从process或是piepline读取(可理解为脚本运行通道直接输入),一旦配置了这种input方式,其他 input将不再生效文档地址

  3. container    容器日志,例如docker、kubernate;

  4. kafka    允许从Kafka队列中读取消息;

  5. redis    从redis中读取slow log,截止到7.6版本,这还是个测试性的input类型;

  6. udp    使用udp协议监听端口输入;

  7. docker    从docker中读取日志,这一类型已在稍新的版本被container类型取代

  8. tcp    使用tcp协议监听端口输入;

  9. syslog    使用udp或ycp协议监听端口,监听指定的BSD(RFC 3164)格式消息;

    Output(输出)类型

    截止7.6版本,开源的Filebeat可支持以下几种消息输出类型:

  1. elasticsearch    通过Http API直接传给es存储

  2. logstash    传输给Logstash进行处理

  3. kafka    发送给Kafka消息队列

  4. stdout    直接在控制台输出

  5. redis    输出给redis服务

  6. file    输出在另一个文件中

    Modules(模块)

    Filebeat有很多模块,其实就是写好了配置的yml,会将一些支持的应用日志发送给es,其消息格式还能让我们直接在Kibana上看到示例的可视化。例如Nginx module直接收集了Nginx的sccess和error日志,配置并启动后我们能直接通过Kibana看到访客来源、UA、状态码等的分布示例图。其他模块也是类似的,我们只需要配置可能并非默认的log文件目录和输出的es地址就可以轻松的实现对不同组件的监控,Filebeat提供的module非常丰富,可以去这里的官方文档查看。

QuickStart

    这里只收录linux系统的部署,其他系统请前往官方文档查看命令行。

    安装和部署

    比较建议直接下载对应版本的tar.gz包,使用curl或者直接用wget,以7.6.1为例:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-linux-x86_64.tar.gz

    然后解压到想要的目录:

tar xzvf filebeat-7.6.1-linux-x86_64.tar.gz -C /home/ubuntu/filebeat

    当然,也可以使用deb或是rpm:

# deb
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-amd64.deb
sudo dpkg -i filebeat-7.6.1-amd64.deb
# rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-x86_64.rpm
sudo rpm -vi filebeat-7.6.1-x86_64.rpm

    文件配置-input

    配置input,此处的type就是我们的输入类型,以log为例,更加详尽的设置可以去官网文档查看。注意此处的type是一个数组,所以我们可以让它同时运行多个input type,就像下面这样。但是官方文档中说明:有一点必须注意,多个type间涉及的消息或是文件一定不要有交集,可能会引起无法预料的异常

    默认的配置文件为filebeat目录下的filebeat.yml

#=========================== Filebeat inputs =============================

filebeat.inputs:
- type: log
  enabled: true
  # Paths that should be crawled and fetched. Glob based paths.
  # 路径 可以指定多个
  paths:
    - /home/ubuntu/*/log.out
  # Exclude lines. A list of regular expressions to match. It drops the lines that are
  # matching any regular expression from the list.
  #按正则匹配,符合要求的行会被排除掉,这里指排除掉所有DBG开头的行
  exclude_lines: ['^DBG']

  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list.
  #按正则匹配,只会导出符合要求的行,这里指只保留所有含ERR和WARN的行
  #include_lines: ['ERR', 'WARN']

  # Exclude files. A list of regular expressions to match. Filebeat drops the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #按正则匹配,符合路径要求的文件会被排除掉,这里指定了一个文件,和以.gz结尾的任何未见
  exclude_files: ['.gz$','/home/ubuntu/test/log.out']
  #是否从文件末尾开始取
  tail_files: true
  tags: ["javalog"]
  # Optional additional fields. These fields can be freely picked
  # to add additional information to the crawled log files for filtering
  #fields:
  #  level: debug
  #  review: 1
- type: log
  enabled: true
  paths:
    - /home/uftp/*/log.out
  exclude_lines: ['^DBG']
  include_lines: ['INFO']
  tail_files: true
  tags: ["javalog-2"]
  ### Multiline options

  # Multiline can be used for log messages spanning multiple lines. This is common
  # for Java Stack Traces or C-Line Continuation

  # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
  #multiline.pattern: ^\[

  # Defines if the pattern set under pattern should be negated or not. Default is false.
  #multiline.negate: false

  # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
  # that was (not) matched before or after or as long as a pattern is not matched based on negate.
  # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
  #multiline.match: after

    运行

    filebeat对权限要求很高,所以要以root权限启动,如果你是tar.gz解压的filebeat,可以执行:

sudo chown root filebeat.yml 

sudo nohup ./filebeat -e & >/dev/null 2>&1 &

    而对于deb或是rpm,直接以服务形式启动:

sudo service filebeat start

    会使用配置好的默认的filebeat.yml和module.d下已经启动的module。

版本兼容性

        来自Elastic官网的版本对照表,不难看出版本兼容性较为严苛,建议使用相同的一套版本进行开发。

Elasticsearch Kibana X-Pack Beats^* Logstash^* ES-Hadoop (jar)* APM Server App Search
5.0.x 5.0.x 5.0.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.1.x 5.1.x 5.1.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.2.x 5.2.x 5.2.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.3.x 5.3.x 5.3.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.4.x 5.4.x 5.4.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.5.x 5.5.x 5.5.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.6.x 5.6.x 5.6.x 1.3.x-6.0.x 2.4.x-6.0.x 5.0.x-6.0.x

6.0.x 6.0.x 6.0.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x

6.1.x 6.1.x 6.1.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x

6.2.x 6.2.x 6.2.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.3.x 6.3.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.4.x 6.4.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.5.x 6.5.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.6.x 6.6.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.7.x 6.7.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.8.x 6.8.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
7.0.x 7.0.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x***
7.1.x 7.1.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x***
7.2.x 7.2.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.2.x
7.3.x 7.3.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.3.x
7.4.x 7.4.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.4.x
7.5.x 7.5.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.5.x
7.6.x 7.6.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.6.x


评论区
评论
{{comment.creator}}
{{comment.createTime}} {{comment.index}}楼
评论

ELK全家桶基本使用(I)文件收集Filebeat

ELK全家桶基本使用(I)文件收集Filebeat

     Filebeat是Elastic中的轻量文件收集系统,相比于功能更强悍的Logstash,当我们需求很单一,读取文件内容且对文件内容没有过多复杂处理时,最好使用FileBeat取代Logstash,以免造成不必要的内存开销。文档链接

     基本功能

    Filebeat负责收集文件并发送给下游服务。核心行为包含输入、处理过滤和输出。当然也有集成好配置的模块,通过模块与Es和Kibana链接可以直接在Kibana上看到组件的可视化。同时不难看出Filebeat其实对数据库的支持不是很健壮

    Input(输入)类型

    截止7.6版本,开源的Filebeat可支持以下几种消息输入类型:

  1. log    用得最多的输入类型;

  2. stdin    标准的输入,从process或是piepline读取(可理解为脚本运行通道直接输入),一旦配置了这种input方式,其他 input将不再生效文档地址

  3. container    容器日志,例如docker、kubernate;

  4. kafka    允许从Kafka队列中读取消息;

  5. redis    从redis中读取slow log,截止到7.6版本,这还是个测试性的input类型;

  6. udp    使用udp协议监听端口输入;

  7. docker    从docker中读取日志,这一类型已在稍新的版本被container类型取代

  8. tcp    使用tcp协议监听端口输入;

  9. syslog    使用udp或ycp协议监听端口,监听指定的BSD(RFC 3164)格式消息;

    Output(输出)类型

    截止7.6版本,开源的Filebeat可支持以下几种消息输出类型:

  1. elasticsearch    通过Http API直接传给es存储

  2. logstash    传输给Logstash进行处理

  3. kafka    发送给Kafka消息队列

  4. stdout    直接在控制台输出

  5. redis    输出给redis服务

  6. file    输出在另一个文件中

    Modules(模块)

    Filebeat有很多模块,其实就是写好了配置的yml,会将一些支持的应用日志发送给es,其消息格式还能让我们直接在Kibana上看到示例的可视化。例如Nginx module直接收集了Nginx的sccess和error日志,配置并启动后我们能直接通过Kibana看到访客来源、UA、状态码等的分布示例图。其他模块也是类似的,我们只需要配置可能并非默认的log文件目录和输出的es地址就可以轻松的实现对不同组件的监控,Filebeat提供的module非常丰富,可以去这里的官方文档查看。

QuickStart

    这里只收录linux系统的部署,其他系统请前往官方文档查看命令行。

    安装和部署

    比较建议直接下载对应版本的tar.gz包,使用curl或者直接用wget,以7.6.1为例:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-linux-x86_64.tar.gz

    然后解压到想要的目录:

tar xzvf filebeat-7.6.1-linux-x86_64.tar.gz -C /home/ubuntu/filebeat

    当然,也可以使用deb或是rpm:

# deb
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-amd64.deb
sudo dpkg -i filebeat-7.6.1-amd64.deb
# rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.1-x86_64.rpm
sudo rpm -vi filebeat-7.6.1-x86_64.rpm

    文件配置-input

    配置input,此处的type就是我们的输入类型,以log为例,更加详尽的设置可以去官网文档查看。注意此处的type是一个数组,所以我们可以让它同时运行多个input type,就像下面这样。但是官方文档中说明:有一点必须注意,多个type间涉及的消息或是文件一定不要有交集,可能会引起无法预料的异常

    默认的配置文件为filebeat目录下的filebeat.yml

#=========================== Filebeat inputs =============================

filebeat.inputs:
- type: log
  enabled: true
  # Paths that should be crawled and fetched. Glob based paths.
  # 路径 可以指定多个
  paths:
    - /home/ubuntu/*/log.out
  # Exclude lines. A list of regular expressions to match. It drops the lines that are
  # matching any regular expression from the list.
  #按正则匹配,符合要求的行会被排除掉,这里指排除掉所有DBG开头的行
  exclude_lines: ['^DBG']

  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list.
  #按正则匹配,只会导出符合要求的行,这里指只保留所有含ERR和WARN的行
  #include_lines: ['ERR', 'WARN']

  # Exclude files. A list of regular expressions to match. Filebeat drops the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #按正则匹配,符合路径要求的文件会被排除掉,这里指定了一个文件,和以.gz结尾的任何未见
  exclude_files: ['.gz$','/home/ubuntu/test/log.out']
  #是否从文件末尾开始取
  tail_files: true
  tags: ["javalog"]
  # Optional additional fields. These fields can be freely picked
  # to add additional information to the crawled log files for filtering
  #fields:
  #  level: debug
  #  review: 1
- type: log
  enabled: true
  paths:
    - /home/uftp/*/log.out
  exclude_lines: ['^DBG']
  include_lines: ['INFO']
  tail_files: true
  tags: ["javalog-2"]
  ### Multiline options

  # Multiline can be used for log messages spanning multiple lines. This is common
  # for Java Stack Traces or C-Line Continuation

  # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
  #multiline.pattern: ^\[

  # Defines if the pattern set under pattern should be negated or not. Default is false.
  #multiline.negate: false

  # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
  # that was (not) matched before or after or as long as a pattern is not matched based on negate.
  # Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
  #multiline.match: after

    运行

    filebeat对权限要求很高,所以要以root权限启动,如果你是tar.gz解压的filebeat,可以执行:

sudo chown root filebeat.yml 

sudo nohup ./filebeat -e & >/dev/null 2>&1 &

    而对于deb或是rpm,直接以服务形式启动:

sudo service filebeat start

    会使用配置好的默认的filebeat.yml和module.d下已经启动的module。

版本兼容性

        来自Elastic官网的版本对照表,不难看出版本兼容性较为严苛,建议使用相同的一套版本进行开发。

Elasticsearch Kibana X-Pack Beats^* Logstash^* ES-Hadoop (jar)* APM Server App Search
5.0.x 5.0.x 5.0.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.1.x 5.1.x 5.1.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.2.x 5.2.x 5.2.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.3.x 5.3.x 5.3.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.4.x 5.4.x 5.4.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.5.x 5.5.x 5.5.x 1.3.x-5.6.x 2.4.x-5.6.x 5.0.x-5.6.x

5.6.x 5.6.x 5.6.x 1.3.x-6.0.x 2.4.x-6.0.x 5.0.x-6.0.x

6.0.x 6.0.x 6.0.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x

6.1.x 6.1.x 6.1.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x

6.2.x 6.2.x 6.2.x 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.3.x 6.3.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.4.x 6.4.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.5.x 6.5.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.6.x 6.6.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.7.x 6.7.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
6.8.x 6.8.x N/A** 5.6.x-6.8.x 5.6.x-6.8.x 6.0.x-6.8.x 6.2.x-6.8.x
7.0.x 7.0.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x***
7.1.x 7.1.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x***
7.2.x 7.2.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.2.x
7.3.x 7.3.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.3.x
7.4.x 7.4.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.4.x
7.5.x 7.5.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.5.x
7.6.x 7.6.x N/A** 6.8.x-7.6.x 6.8.x-7.6.x 6.8.x-7.6.x 7.0.x-7.6.x*** 7.6.x



ELK全家桶基本使用(I)文件收集Filebeat2020-03-16鱼鱼

{{commentTitle}}

评论   ctrl+Enter 发送评论