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

运维小路

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

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

相关推荐
小卒过河01048 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
Empty_7778 小时前
DevOps理念
运维·devops
叶之香8 小时前
CentOS/RHEL 7、8安装exfat和ntfs文件系统
linux·运维·centos
一世琉璃白_Y8 小时前
pg配置国内数据源安装
linux·python·postgresql·centos
不过普通话一乙不改名8 小时前
Linux 内核开发入门:从环境配置到 Hello World 实战
linux·运维
乖乖是干饭王8 小时前
Linux 内核 Kbuild 中的 ld 调用机制
linux·c·makefile
Trouvaille ~9 小时前
【Linux】理解“一切皆文件“与缓冲区机制:Linux文件系统的设计哲学
linux·运维·服务器·操作系统·进程·文件·缓冲区
ITKEY_9 小时前
archlinux 通过wpa_supplicant 连接wifi固定ip设置方法
linux·固定ip
小五传输9 小时前
隔离网闸的作用是什么?新型网闸如何构筑“数字护城河”?
大数据·运维·安全