Beats入门

Beats

简介

Beats集合了多种单一用途的数据采集器,主要有以下几种类型

  • filebeat:采集日志文件
  • metricbeat:采集系统和软件指标
  • packetbeat:采集网络数据

如果数据不需要经过处理,可以直接传给Elasticsearch中

如果数据需要经过处理,可以传给logstash处理,然后再发送给Elasticsearch

Filebeat:轻量级的日志采集器

为什么要用Filebeat

当服务器很多时,ssh登录查看会比较麻烦。启动 Filebeat 后,打开 Logs UI,直接在 Kibana 中观看对您的文件进行 tail 操作的过程

Filebeat工作流程

  • 指定数据源
  • 匹配到日志后,使用Harvester组件读取日志
  • 日志传递到spooler,然后再传到elasticsearch或logstash中

下载安装

选择对应系统的安装包,下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

image.png

下载后,传到服务器上

# 解压
tar xf filebeat-7.13.0-linux-x86_64.tar.gz
# 移动并重命名
mv filebeat-7.13.0-linux-x86_64 /usr/local/filebeat

创建从控制台读取数据的配置文件

cd /usr/local/filebeat

vim mybeat.yml
# 添加以如下内容
filebeat.inputs:
- type: stdin
  enabled: true
output.console:
  pretty: true
  enable: true

启动

./filebeat -e -c mybeat.yml
image.png

输出hello,可以控制台看到json输出

image.png

创建从日志中读取数据的配置文件

vim mybeat1.yml
# 输出以下内容
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/logs/message
output.console:
  pretty: true
  enable: true
# 再次启动
 ./filebeat -e -c mybeat1.yml

# 往messages里追加一点内容
echo "hello" >> /var/log/messages

可以看到刚刚追加的内容


image.png

自定义字段

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/logs/message
  fields_under_root: true  # 自定义字段作为根节点显示 
    # 自定义字段 
  fields:
    myfields: test

output.console:
  pretty: true
  enable: true

输出到Elasticsearch中

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
  fields:
    myfields: test
  fields_under_root: true 
output.elasticsearch:
  hosts: ["192.168.0.14:9200"]
image.png
自定义索引名称
output.elasticsearch:
  hosts: ["192.168.0.14"]
  index: "message-%{+yyyy-MM}"

setup.ilm.enabled: false
setup.template.enabled: false
setup.template.name: "index"
setup.template.pattern: "index-*"

安装chrome插件Elasticsearch Head查看结果


image.png

还可以按日志类型定义索引名称

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  # 自定义标签
  tags: "access"
- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log

  tags: "error"
output.elasticsearch:
  hosts: ["192.168.0.14:9200"]
  indices:
    - index: "nginx-access-%{+yyyy.MM}"
      when.contains:
        tags: "access"
    - index: "nginx-error-%{+yyyy.MM}"
      when.contains:
        tags: "error"

setup.ilm.enabled: false
setup.template.name: "index"
setup.template.pattern: "index-*"
setup.template.enabled: false

image.png

filebeat的组件

harvester
  • 读取单个文件内容
  • 每个文件启动一个harvester,并且harvester负责打开和关闭这些文件
  • 每个文件启动一个harvester
  • 在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat就会续读这个文件,这就会造成一个问题,就是只要负责这个文件的harvester没用关闭,那么磁盘空间就不会被释放,默认情况下,Filebeat保存问价你打开直到close_inactive到达
prospector
  • 管理harvester,找到所有读取的文件来源
  • 如果输入类型为日志,则为每个文件启动一个harvester
  • filebeat支持的prospector:stdin和log

module

前面的日志采集都是手动配置,在Filebeat中,有大量的Module,可以简化配置,并且做了简单的处理

# 查看module列表
./filebeat modules list
# 启用module
./filebeat modules enable nginx
# 禁用module
./filebeat modules disable nginx

修改module配置

vim modules.d/nginx.yml


- module: nginx
  # Access logs
  access:
    enabled: true
    # 添加日志文件
    var.paths: ["/var/log/nginx/access.log*"]

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Error logs
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

配置filebeat,添加module

filebeat.inputs:
output.elasticsearch:
  hosts: ["192.168.0.20:9200"]
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

测试

image.png

可以看到刚写入的数据己经采集到了


image.png

更多玩法,可参考官方文档:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

Metricbeat

Metricbeat的组成
  • module:收集的对象,如mysql,redis,操作系统等
  • metricset:收集指标的集合:如CPU,memory,network等

使用Metricbeat的module收集Nginx数据

# 启用nginx module
./metricbeat modules enable nginx

# 配置nginx的status
location /status {
    stub_status on;
    access_log off;
}
# reload
systemctl reload nginx

vim modules.d/nginx.yml

html
  - module: nginx
#metricsets:
# - stubstatus
  period: 10s
# Nginx hosts
  hosts: ["http://127.0.0.1"]
# status的uri
  server_status_path: "status"

./metricbeat -e

测试


image.png

你可能感兴趣的:(Beats入门)