作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS
Elasticsearch ES (本章节)
我们前面介绍了ELK在早期的时候是一个整体,哪个时候还没有我们上个小节介绍的Beat家族,采集&过滤均是采用Logstash来进行的,虽然目前他使用并不多,所以这个小节我们还是来做一个简单介绍。
采集路径按照下面的流程来,我们利用Logstash的分析处理能力,当然Kibana是我们下个小节的内容。
1.安装Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.29-linux-x86_64.tar.gz
tar xvf logstash-7.17.29-linux-x86_64.tar.gz
2.配置Fliebeat
让Fliebeat采集数据,输出到Logstash。
# 最简配置 - 仅需10行
filebeat.inputs:
- type: filestream
paths:
- /var/log/nginx/access.log
fields:
log_type: "nginx"
output.logstash:
hosts: ["localhost:5044"] # Logstash 地址
3.配置Logstash
# vi /root/logstash-7.17.29/config/nginx-pipeline.conf
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
target => "@timestamp"
}
ruby {
code => '
event.set("minute_timestamp", event.get("@timestamp").time.strftime("%Y.%m.%d.%H%M"))
'
}
mutate {
remove_field => ["timestamp"]
}
}
output {
elasticsearch {
hosts => ["http://192.168.31.171:9200","http://192.168.31.172:9200","http://192.168.31.173:9200"]
index => "nginx-logs-%{minute_timestamp}"
}
stdout {
codec => rubydebug {
metadata => true
}
}
}
4.启动Logstash
注:logstash并不要求必须要非root启动,这里是采用前台启动,会产生大量的标准输出。
cd /root/logstash-7.17.29
./bin/logstash -f ./config/nginx-pipeline.conf
5.查询ES索引
[root@localhost ~]# curl -X GET "http://192.168.31.171:9200/_cat/indices?v" |grep log
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 14430 100 14430 0 0 331k 0 --:--:-- --:--:-- --:--:-- 335k
green open nginx-logs-2025.08.05.1430 ZVqOZ3SzTCCJZno-sTfzvw 1 1 60109 0 5.2mb 2.5mb
green open nginx-logs-2025.08.05.1431 OQNrQkzfQcmer3zrn9HYHw 1 1 60070 0 5.8mb 2.9mb
green open nginx-logs-2025.08.05.1432 JAQDlK9vS9aQh2FFJ17n4A 1 1 8987 0 940.6kb 514.4kb
green open nginx-logs-2025.08.05.1423 xhr_N-XYSSmRjLBUnPduxg 1 1 11724 0 1.4mb 757.3kb
6.对比数据
经过logstash处理过的数据
未经过Logstash的原始数据
7.区别
当然Logstash还有很多功能,这里只是通过一个简单的例子来介绍他的数据处理能力。