Filebeat
使用 Filebeat 作为客户端的日志文件收集工具, 相比于 Logstash , 它资源占用更少, 下面介绍如何在window和docker上进行搭建
官方文档链接: https://www.elastic.co/guide/en/beats/filebeat/7.x/configuration-filebeat-options.html
1. 从官网下载filebeat压缩包,解压
2. 修改根目录下的filebeat.yml配置文件
# 配置文件输入
filebeat.prospectors:
- type: log
paths:
- C:\Users\yjh\git\shop-parent\build\*.json
fields: # 添加自定义字段
type: syslog
#以下json的配置至少需要配置一个,来开启filebeat解析json的功能
#keys_under_root可以让字段位于根节点,默认为false
keys_under_root: true
#对于同名的key,覆盖原有key值
json.overwrite_keys: true
#message_key是用来合并多行json日志使用的,如果配置该项还需要配置multiline的设置,后面会讲
json.message_key: message
#将解析错误的消息记录储存在error.message字段中
json.add_error_key: true
# 配置文件输出到logstash
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"] #logstash的地址和端口
3. 启动
./filebeat -e -c filebeat.yml -d publish
在后台启动
nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 & 将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
停止
ps -ef |grep filebeat
kill -9 进程号
Logstash
Logstash 汇集 Filebeat 收集的日志文件, 处理后统一发送给 Elasticsearch 处理, 环境为 window 10 pro或者docker官方镜像
1. 安装logstash
1.1 从官网下载logstash压缩包, 版本需要跟elasticsearch一致, 这里使用的版本是6.7.2,解压缩
1.2 使用docker官方镜像 docker pull logstash:6.7.2
2. 修改配置文件
- windows 在logstash根目录下添加一个配置文件 first-pipeline.conf
- docker 在config目录下 修改logstash-sample.confg
2.1 配置解析日志格式为json 参考链接 https://blog.csdn.net//jiao_fuyou/article/details/49174269
input {
beats {
port => 5044
format => json
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
2.2 其它类型配置 目前没有作用 先拷贝一段 以后需要的时候再来看
input {
beats {
codec => json
port => "5044"
}
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
filter {
grok {
match => {
# "message" => [
# "severity2: %{LOGLEVEL:severity}"
# "Rest: %{GREEDYDATA:rest}"
# ]
"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:severity} %{DATA:service} %{DATA:trace} %{DATA:span} %{DATA:exportable} %{DATA:pid} %{DATA:thread} %{DATA:class} %{GREEDYDATA:rest}"
# # "message" => "%{TIMESTAMP_ISO8601:timestamp}\s+%{LOGLEVEL:severity}\s+\[%{DATA:service},%{DATA:trace},%{DATA:span},%{DATA:exportable}\]\s+%{DATA:pid}---\s+\[%{DATA:thread}\]\s+%{DATA:class}\s+:\s+%{GREEDYDATA:rest}"
}
}
}
output {
elasticsearch {
hosts => ["192.168.100.48:9200"]
# action => "index"
}
file {
path => "C:\Users\yjh\git\shop-parent\build2\xinlianshiye-shop-user.json"
}
# stdout { codec => rubydebug }
}
3. 启动
bin/logstash -f first-pipeline.conf --config.test_and_exit # 测试配置文件是否编写正确, 测试完成后自动退出
bin/logstash -f first-pipeline.conf --config.reload.automatic # 当配置文件发生变动时, 自动加载
Elasticsearch
在 docker 上进行搭建, 默认安装的 Elasticsearch 不需要额外配置, 下面的内容仅作为记录
1.安装
安装docker官方镜像 docker pull elasticsearch:6.7.2
2.配置
配置文件位置: 安装目录/config/elasticsearch.yml
配置项:
- cluster.name: 簇名字
- node.name: 节点名字
- network.host: 发布地址
- http.port: 发布端口
3.启动
访问 发布地址:发布端口 如 localhost:9600
若启动正常 会返回如下格式的数据
{
"name" : "zA4LkIn", # 节点名字
"cluster_name" : "docker-cluster", # 簇名字
"cluster_uuid" : "h7KzYjkhS1OdTIpZPyr6xA",
"version" : {
"number" : "6.7.2",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "56c6e48",
"build_date" : "2019-04-29T09:05:50.290371Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Kibana
在 docker 上搭建
1.安装
安装docker官方镜像 docker pull kibana
2. 配置
修改 kibana根目录/config/kibana.yml 配置文件 并重新启动
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://192.168.100.48:9200" ] # 指定elasticsearch的地址和端口
xpack.monitoring.ui.container.elasticsearch.enabled: true
Log4J
为了兼容ELK读取json格式的日志, 需要调整log4j的配置, 以json格式输出日志文件
配置文件如下, 在输出到文件的配置中添加 JsonLayout 节点