Logstash日志收集案例;

文章详细介绍了Logstash的部署过程,包括基于file、http、redis和beats的input插件收集数据,以及output插件将数据发送到stdout、redis、本地file和ES的案例。内容涵盖了日志聚合、TCP监听、HTTP接收以及与filebeat集成使用的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、部署Logstash

需要jdk环境
[root@localhost ~]# java -version 
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

(1)下载解压lostash
[root@localhost ~]# mkdir -p /hqtbj/hqtwww/
[root@localhost ~]# wget -cP /hqtbj/hqtwww/ https://artifacts.elastic.co/downloads/logstash/logstash-7.17.6-linux-x86_64.tar.gz
[root@localhost ~]# cd /hqtbj/hqtwww/
[root@localhost hqtwww]# tar -zxf logstash-7.17.6-linux-x86_64.tar.gz
[root@localhost hqtwww]# mv logstash-7.17.6 logstash_workspace

(2)修改配置文件编写测试案例
[root@localhost ~]# mkdir -pv /hqtbj/hqtwww/logstash_workspace/conf-logstash
[root@localhost ~]# cd /hqtbj/hqtwww/logstash_workspace/
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/01-stdin-stdout.conf << EOF
input {
  stdin {}
}

output {
  stdout {}
}
EOF

(3)运行测试案例
[root@localhost ~]# sh /hqtbj/hqtwww/logstash_workspace/bin/logstash -f /hqtbj/hqtwww/logstash_workspace/conf-logstash/01-stdin-stdout.conf 

在这里插入图片描述

2、input插件基于file案例

[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/02-log-stdout.conf << EOF
input {
  file {
    #指定收集的路径
    path => "/tmp/logstash/*.log"
    #指定文件的读取位置,仅在".sincedb*"文件中没有记录的情况下生效
    start_position => "beginning"
    #默认的文件读取位置,从末尾开始读取数据
    #start_position => "end"
  }
}

output {
  stdout {}
}
EOF

3、logstash实现日志聚合案例

#也是input插件基于TCP收集数据的案例
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/03-tcp-stdout.conf << EOF
input {
  tcp {
    #监听的端口
    port => 9999
  }
  
  tcp {
    #监听的端口
    port => 8888
  }
}

output {
  stdout {}
}
EOF

4、input插件基于http收集数据案例

[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/04-http-stdout.conf << EOF
input {
  http {
    port => 9999
  }
  http {
    port => 8888
  }
}

output {
  stdout {}
}
EOF

5、input插件基于redis收集数据案例/output插件将数据发送到redis案例

###filebeat的配置文件【将数据推送到redis当作缓存】###
[root@localhost ~]# cat >> /hqtbj/hqtwww/filebeat_workspace/20-log-to-redis.yml  << EOF
filebeat.inputs:
- type: log
  paths:
    - /tmp/test.log

output.redis:
  #写入redis的主机地址
  hosts: ["192.168.1.2:6379"]
  #指定redis的认证口令(登录密码)
  password: "123.com.cn"
  #指定的key的值,可自定义
  key: "filebeat-test-redis"
  #指定redis桶(数据库)编号
  db: 7
  #规定超时时间
  timeout: 5
EOF

###logstash的配置文件【将filebeat推送到redis的数据拿出来输出在终端】###
```bash
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/05-redis-stdout.conf << EOF
input {
  redis{
    #指定的是redis的键(key)的类型
    #list类型将在redis拿过来一条数据,删除redis上的一条数据
    #例如本例就是将redis的数据拿过来输出在终端上后,就会把redis里的数据删除;
    #注意只会删除redis里的数据,并不会删除原文件(filebeat收集的/tmp/test.log)的数据;
    data_type => "list"  
    
    #指定redis的主机地址,默认值为localhost
    host => "192.168.1.2"
    #指定数据库的端口号,默认值为6379
    port => 6379
    #指定redis的桶编号,默认值为0号桶
    db => 7
    #指定redis的认证密码
    password => "123.com.cn"
    #指定从redis的哪个key获取数据
    key => "filebeat-test-redis"
  }
}

output {
  stdout {}
}
EOF

6、input插件基于beats收集数据案例

###filebeat配置###
[root@localhost ~]# cat >> /hqtbj/hqtwww/filebeat_workspace/21-log-to-logstash.yml  << EOF
filebeat.inputs:
- type: log
  paths:
    - /tmp/test.log

output.logstash:
  #指定logstash监听的IP和端口
  hosts: ["192.168.1.4:5044"] 
EOF

###logstash配置###
[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/06-beats-stdout.conf << EOF
input {
  #监听的类型
  beats {
  #监听的本地端口
    port => 5044
  }
}

output {
  stdout {}
}
EOF

7、output插件将数据落地到本地file案例

[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/07-tcp-file.conf << EOF
input {
  tcp {
    port => 9999
  }
}

output {
  stdout {}

  file {
    #指定磁盘的落地位置
    path => "/tmp/20221214.log"
  }
}
EOF

8、output将数据发送到es案例

ES手动创建索引模版
【左侧菜单栏】–>【stack management】–>【索引管理】–>【索引模版】–>【创建模版】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# cat >> /hqtbj/hqtwww/logstash_workspace/conf-logstash/08-tcp-es.conf << EOF
input {
  tcp {
    port => 9999
  }
}

output {
  stdout {}

  elasticsearch {
    #定义es集群的主机地址
    hosts => ["10.8.0.2:9200","10.8.0.6:9200","10.8.0.9:9200"]
    #定义索引名称
    index => "hqt-application-pro-%{+YYYY.MM.dd}"
  }
}
EOF

在这里插入图片描述
运行完这个案例之后就可以看到我们创建的索引应用的就是我们刚才手动创建的索引模版,主分片是3,副本分片是2;

生产环境建议10分片/2副本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知名运维:

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值