1. 准备
- 在Linux环境中搭建好Elasticsearch
- 下载filebeat:
https://www.elastic.co/downloads/beats
2. 部署运行,读取日志文件并输出到Elasticsearch
# 创建一个目录
mkdir /beats
# 解压文件
tar -xvf filebeat-6.5.4-linux-x86_64.tar.gz
cd filebeat-6.5.4-linux-x86_64
创建如下配置文件 test.yml
filebeat.inputs:
- type: log # 输入类型:log日志
enabled: true
paths:
- /beats/logs/*.log # 日志文件路径
tags: ["my-test"] # 标签字段
fields: # 自定义字段
from: my-test
fields_under_root: false # 字段是否添加到根目录
setup.template.settings:
index.number_of_shards: 3 #指定索引的分区数
output.elasticsearch: #指定ES的配置,我的ES集群只有两个节点
hosts:["192.168.241.130:9200","192.168.241.130:9201"]
启动filebeat
./filebeat -e -c test.yml -d "publish"
参数说明
-e: 输出到标准输出,默认输出到syslog和logs下
-c: 指定配置文件
-d: 输出debug信息
3. 读取Redis日志文件并输出到Elasticsearch
前面要想实现日志数据的读取以及处理都是自己手动配置的,其实,在Filebeat中,有大量的Module,可以简化我们的配置,直接就可以使用,如下:
./filebeat modules list
可以看到,内置了很多的module,但是都没有启用,如果需要启用需要进行enable操作:
./filebeat modules enable redis #启动
./filebeat modules disable redis #禁用
redis module结构
module目录:
.
├── log #日志
│ ├── config
│ │ └── log.yml
│ ├── ingest
│ │ └── pipeline.json
│ └── manifest.yml
├── module.yml
└── slowlog #慢查询日志
├── config
│ └── slowlog.yml
├── ingest
│ └── pipeline.json
└── manifest.yml
配置 redis module
# 启动redis module
./filebeat modules enable redis
cd modules.d/
vim redis.yml
# 主要配置redis的日志文件路径
- module: redis
# Main logs
log:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/data/redis-data/node01/*.log"]
# Slow logs, retrieved via the Redis API (SLOWLOG)
slowlog:
enabled: false
# The Redis hosts to connect to.
#var.hosts: ["localhost:6379"]
# Optional, the password to use when connecting to Redis.
#var.password:
注:Redis默认是不开启日志文件的,如若创建Redis的时候没有指定日志文件,就需要重新创建Redis容器。
删除旧的Redis容器并重新创建:
docker create --name redis-node01 -v /data/redis-data/node01:/data -p 6379:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-01.conf --loglevel debug --logfile nodes-node-01.log
docker create --name redis-node02 -v /data/redis-data/node02:/data -p 6380:6379 redis:5.0.2 --cluster-enabled yes --cluster-config-file nodes-node-02.conf --loglevel debug --logfile nodes-node-02.log
loglevel 日志等级分为:debug、verbose、notice、warning
其中,debug 会有大量信息,对开发、测试有用;
verbose 等于log4j 中的info,有很多信息,但是不会像debug那样乱;
notice 一般信息;
warning 只有非常重要/关键的消息被记录。
配置 filebeat
#vim test-redis.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /beats/log/*.log # 这个不用的话无所谓
setup.template.settings:
index.number_of_shards: 3
output.console:
pretty: true
enable: true
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 重点
reload.enabled: false
测试
./filebeat -e -c test-redis.yml --modules redis
测试发现,数据已经写入到了Elasticsearch中,我懒得没截图。
其他的Module的用法可以参考官方文档:
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html
4. 安装仪表盘到Kibana
# 在filebeat配置文件中添加
setup.kibana: # 指定kibana的配置
host: "192.168.241.130:5601"
# 启动,安装仪表盘到kibana
./filebeat -c haoke-redis.yml setup