一,构建一个 简易版 轻量级 的elk(实际上没有logstash,叫efk?)
- 为何不使用logstash?
- logstash太占内存了,用起来不舒服;
- 如果仅仅是日志量不大的情况下,这套efk也完全足以
- logstash的日志格式化功能 在filebeat中也能简单处理
二,首先开一台linux机器,这里使用centos7.x的。
-
我的是window,直接vmware 弄了一台虚拟机,然后安装centos7.x的iso镜像
-
安装docker并启动
sudo yum update
yum install docker
systemctl start docker
-
配置docker阿里云的加速镜像
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors -
启动elasticsearch (单节点),多节点集群参考 官方介绍文档
docker run -d -p 0.0.0.0:9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" elasticsearch:7.5.2
- 浏览器访问http://ip:9200/ 看见类似如下即说明启动成功了
{
"name" : "b79d7d5cada9",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "8sgM5FFzTzCdQuvGu7fuig",
"version" : {
"number" : "7.5.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "8bec50e1e0ad29dad5653712cf3bb580cd1afcdf",
"build_date" : "2020-01-15T12:11:52.313576Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
- 启动kibana 官方介绍文档
docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana:7.5.2
- 等待一会儿 访问http://ip:5601 , 应该可以访问kibana的web界面了
- filebeat 官方文档
filebeat是一个日志(文件)收集器,特点就是轻量,可以定义多种input,output,比如es、logstash、kafka.....
(1) filebeat依赖filebeat.xml,最简单的filebeat.xml应该是
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/logs/*.log #匹配这个路径下的日志
# 选择了es作为输出的地方
output.elasticsearch:
hosts: ["elasticsearch:9200"]
(2)使用该配置启动, 启动后应该就可以在看见filebeat收集日志,在kibana可以中可以看见 filebeat-xxx类似的index
# ~/elk/logs/ 是我的实际的日志宿主机的路径
docker run --rm -it --name filebeat --link elasticsearch -v ~/elk/filebeat.yml:/usr/share/filebeat/filebeat.yml -v ~/elk/logs/:/home/logs/ docker.elastic.co/beats/filebeat:7.5.2
(3)在实际使用中,可以方便的收集json格式的日志(主要是json方便处理,有自带的decode_json_fields处理器),而配置如下
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/logs/*.log
json.keys_under_root: true #关键的json配置
setup.ilm.enabled: false # 由于7.5.2有bug,要使用自定义index得使用这个
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"
# 处理器 可以添加字段 也可以对某些字段单独处理
#processors:
# - add_fields:
# target: ""
# fields:
# name: 'Nothing'
# - decode_json_fields:
# fields: ["msg"]
# target: "msg"
# overwrite_keys: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
index: "filebeat-node-%{+yyyy.MM.dd}" # 自定义的index格式
- 然后再重启filebeat的docker
# 强制删除
docker container rm -f filebeat
# 启动命令
docker run --rm -it --name filebeat --link elasticsearch -v ~/elk/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v ~/elk/logs/:/home/logs/ docker.elastic.co/beats/filebeat:7.5.2
网友评论