轻量型日志采集器,用于转发和汇总日志与文件。
官网: https://www.elastic.co/cn/beats/filebeat
至少一台Kafka节点。
#上传Filebeat至任意目录下
cd /usr/local/software
tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
mv filebeat-6.6.0-linux-x86_64/ filebeat-6.6.0
vim /usr/local/filebeat-5.6.2/filebeat.yml
##可参考下方配置信息
启动:
cd /usr/local/filebeat-6.6.0
./filebeat -c filebeat.yml -configtest
/usr/local/filebeat-6.6.0/filebeat &
#查看是否启动成功
ps -ef | grep filebeat
Filebeat配置参考信息
###################### Filebeat Configuration Example #########################
filebeat.prospectors:
input_type: log
paths:
input_type: log
paths:
output.kafka:
enabled: true
hosts: ["192.168.204.139:9092"]
topic: '%{[fields.logtopic]}'
partition.hash:
reachable_only: true
compression: gzip
max_message_bytes: 1000000
required_acks: 1
logging.to_files: true
略
这个时候一切正常的话,Filebeat就会将数据推送至Kafka。可以进入到kafka的“kafka-logs/{topic-partition}”目录下查看日志文件等,当对程序进行访问时相应的日志信息将会被Filebeat采集推送到Kafka指定的topic上。
Logstash安装及基础命令:https://www.cnblogs.com/monument/p/12950290.html
input {
kafka {
## app-log-服务名称
topics_pattern => "app-log-.*"
bootstrap_servers => "192.168.11.51:9092"
codec => json
consumer_threads => ## 因为只设置了一个partition,所以消费者线程数设置为1
decorate_events => true
#auto_offset_rest => "latest"
group_id => "app-log-group"
}
kafka {
## error-log-服务名称
topics_pattern => "error-log-.*"
bootstrap_servers => "192.168.11.51:9092"
codec => json
consumer_threads =>
decorate_events => true
#auto_offset_rest => "latest"
group_id => "error-log-group"
}
}
filter {
## 时区转换
ruby {
code => "event.set('index_time',event.timestamp.time.localtime.strftime('%Y.%m.%d'))"
}
if "app-log" in [fields][logtopic]{
grok {
## 表达式
match => ["message", "\[%{NOTSPACE:currentDateTime}\] \[%{NOTSPACE:level}\] \[%{NOTSPACE:thread-id}\] \[%{NOTSPACE:class}\] \[%{DATA:hostName}\] \[%{DATA:ip}\] \[%{DATA:applicationName}\] \[%{DATA:location}\] \[%{DATA:messageInfo}\] ## (\'\'|%{QUOTEDSTRING:throwable})"]
}
}
if "error-log" in [fields][logtopic]{
grok {
## 表达式
match => ["message", "\[%{NOTSPACE:currentDateTime}\] \[%{NOTSPACE:level}\] \[%{NOTSPACE:thread-id}\] \[%{NOTSPACE:class}\] \[%{DATA:hostName}\] \[%{DATA:ip}\] \[%{DATA:applicationName}\] \[%{DATA:location}\] \[%{DATA:messageInfo}\] ## (\'\'|%{QUOTEDSTRING:throwable})"]
}
}
}
output {
stdout { codec => rubydebug }
}
output {
if "app-log" in [fields][logtopic]{
## es插件
elasticsearch {
# es服务地址
hosts => ["192.168.11.35:9200"]
# 用户名密码
user => "elastic"
password => ""
## 索引名,+ 号开头的,就会自动认为后面是时间格式:
## javalog-app-service-2019.01.
index => "app-log-%{[fields][logbiz]}-%{index_time}"
# 是否嗅探集群ip:一般设置true;http://192.168.11.35:9200/_nodes/http?pretty
# 通过嗅探机制进行es集群负载均衡发日志消息
sniffing => true
# logstash默认自带一个mapping模板,进行模板覆盖
template_overwrite => true
}
}
if "error-log" in [fields][logtopic]{
elasticsearch {
hosts => ["192.168.11.35:9200"]
user => "elastic"
password => ""
index => "error-log-%{[fields][logbiz]}-%{index_time}"
sniffing => true
template_overwrite => true
}
}
}
过程较慢,CPU、内存占用极高。启动完成后可以在控制台(上一步配置的是将消息输出到控制台)看到消息输出。
待续(太耗资源了,机器内存有限,装不了这么多节点,待扩容、整理后再写。)。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章