Elasticsearch(ES)-Logstash

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS

Elasticsearch ES (本章节)

我们前面介绍了ELK在早期的时候是一个整体,哪个时候还没有我们上个小节介绍的Beat家族,采集&过滤均是采用Logstash来进行的,虽然目前他使用并不多,所以这个小节我们还是来做一个简单介绍。

采集路径按照下面的流程来,我们利用Logstash的分析处理能力,当然Kibana是我们下个小节的内容。

1.安装Logstash

ruby 复制代码
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。

yaml 复制代码
# 最简配置 - 仅需10行
filebeat.inputs:
- type: filestream
  paths:
    - /var/log/nginx/access.log
  fields: 
    log_type: "nginx"

output.logstash:
  hosts: ["localhost:5044"]  # Logstash 地址

3.配置Logstash

ini 复制代码
# 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启动,这里是采用前台启动,会产生大量的标准输出。

bash 复制代码
cd /root/logstash-7.17.29
./bin/logstash -f ./config/nginx-pipeline.conf

5.查询ES索引

ruby 复制代码
[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还有很多功能,这里只是通过一个简单的例子来介绍他的数据处理能力。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
lht6319356125 小时前
Ubuntu Server系统安装谷歌浏览器
linux·运维·ubuntu
hkNaruto6 小时前
【DevOps】基于Nexus部署内网ubuntu 2204系统APT代理镜像仓库操作手册
运维·ubuntu·devops
JanelSirry6 小时前
DevOps是什么,有什么作用,一般用来干嘛
linux·运维·devops
云中隐龙6 小时前
mac使用本地jdk启动elasticsearch解决elasticsearch启动时jdk损坏问题
java·elasticsearch·macos
---学无止境---6 小时前
Linux中控制台初始化console_init函数的实现
linux
老坛程序员6 小时前
Coze 与 n8n 深度对比:AI智能体平台与工作流自动化的核心博弈
运维·人工智能·自动化
望获linux6 小时前
【实时Linux实战系列】FPGA 与实时 Linux 的协同设计
大数据·linux·服务器·网络·数据库·fpga开发·操作系统
Zz_waiting.6 小时前
多机部署,负载均衡
运维·负载均衡
武文斌776 小时前
复习总结最终版:计算机网络
linux·开发语言·学习·计算机网络