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

运维小路

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

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

相关推荐
lytao12320 小时前
MySQL高可用集群部署与运维完整手册
运维·数据库·mysql·database
末日汐20 小时前
库的制作与原理
linux·后端·restful
tmacfrank20 小时前
Binder 预备知识
linux·运维·binder
cnstartech20 小时前
esxi-vmware 虚拟机互相打开
linux·运维·服务器
mcdx20 小时前
bootm的镜像加载地址与uImage镜像的加载地址、入口地址之间的关系
linux
不知疲倦的仄仄20 小时前
第四天:Netty 核心原理深度解析&EventLoop、Future/Promise 与 Pipeline
linux·服务器·网络
dajun18112345620 小时前
模型输出偏见的量化与消减
运维
橘颂TA20 小时前
【Linux 网络编程】网络是怎么 “跑” 起来的?从协议入门到 TCP/ IP 模型的底层逻辑
linux·运维·服务器·网络
looking_for__20 小时前
【Linux】进程间通信
linux
oMcLin20 小时前
如何在 Oracle Linux 8.3 上通过配置 LVM 与 RAID 结合,提升存储系统的性能与数据冗余性
linux·数据库·oracle