本篇文章主要讲解如下安装Logstash,logstash依赖于Java环境,首先安装Java,安装脚本如下:

 yum install java

logstash安装

Logstash的安装脚本如下:

 # 下载logstash的压缩包
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.zip
# 解压压缩包
upzip logstash-7.2..zip
# 将解压的包移到/usr/share目录下
mv logstash-7.2. /usr/share/
cd /usr/share/logstash-7.2./

stash第一个事件

Logstash管道有两个必需元素,输入和输出,以及一个可选元素filter。 输入插件使用来自源的数据,过滤器插件在您指定时修改数据,输出插件将数据写入目标。
如下图

要测试Logstash安装成功,运行最基本的Logstash管道。 执行以下的命令

 bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e标志使您可以直接从命令行指定配置。 通过在命令行指定配置,可以快速测试配置,而无需在迭代之间编辑文件。 示例中的管道从标准输入stdin获取输入,并以结构化格式将输入移动到标准输出stdout。
启动Logstash后,等到看到“Pipeline main started”,然后在命令提示符下输入hello world,显示的如下:

 hello world
{
"host" => "VM_0_13_centos",
"message" => "hello world",
"@version" => "",
"@timestamp" => --02T06::.684Z
}

配置logstash输出到elasticsearch

修改logstash的安装目录的config目录下的logstash-sample.conf文件,配置如下:

 input {
beats {
port =>
}
} output {
elasticsearch {
hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}

在上面的配置中,输入数据源为filebeat,关于filebeat见下一小节,输出源为elasticsearch。更多的输入和输出源的配置见官网https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

用下面的命令从后台启动logstash:

 ./bin/logstash -f config/logstash-sample.conf >logstash.log  >& &

logstash结合filebeat
在分布式系统中,一台主机可能有多个应用,应用将日志输出到主机的指定目录,这时由logstash来搬运日志并解析日志,然后输出到elasticsearch上。由于于
logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器上显得非常的笨重。最常见的做法是用filebeat部署在应用的机器上,logstash单独部署,然后由
filebeat将日志输出给logstash解析,解析完由logstash再传给elasticsearch。

下载filebeat,下载命令如下:

 wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
tar -zxvf filebeat-7.2.-linux-x86_64.tar.gz
mv filebeat-7.2.-linux-x86_64 /usr/share/
cd /usr/share/filebeat-7.2.-linux-x86_64/

vim filebeat.yml修改配置:

 filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/service-hi.log
output.logstash:
hosts: ["192.168.1.4:5044"]

主要配置的是日志的搜集目录为/var/log/service-hi.log,这个目录是应用service-hi输出日志的文件。输出到logstsh的地址为192.168.1.4

启动filebeat,执行一下命令:

 sudo chown root filebeat.yml
sudo ./filebeat -e >filebeat.log >& &

Spring Boot整合ELK+Filebear构建日志系统

在SpringBoot应用service-hi,定时输出日志如下:

 @SpringBootApplication
public class ElkTestApplication {
Logger logger= LoggerFactory.getLogger(ElkTestApplication.class);
Random random=new Random(); public static void main(String[] args) {
SpringApplication.run(ElkTestApplication.class, args);
new ElkTestApplication().initTask();
} private void initTask(){
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
logger.info("seed:"+random.nextInt());
}
},,, TimeUnit.MILLISECONDS);
}
}

然后在部署了filebeat的机器上部署该应用,应用的输出文件为/var/log/service-hi.log,应用启动命令如下:

 nohup java -jar  elk-test-0.0.-SNAPSHOT.jar > /var/log/service-hi.log >&  &

应用启动成功后日志输出如下:

 -- ::13.530  INFO  --- [pool--thread-] com.example.elktest.ElkTestApplication   : seed:
-- ::13.630 INFO --- [pool--thread-] com.example.elktest.ElkTestApplication : seed:
-- ::13.730 INFO --- [pool--thread-] com.example.elktest.ElkTestApplication : seed:
-- ::13.830 INFO --- [pool--thread-] com.example.elktest.ElkTestApplication : seed:
-- ::13.930 INFO --- [pool--thread-] com.example.elktest.ElkTestApplication : seed:

这时的日志数据的传输路径如下图:

在kibana组件上查看,可以看到创建了一个filebeat开头的数据索引,如下图:

在日志搜索界面,可以看到service-hi应用输出的日志,如图所示:

参考资料
https://www.elastic.co/guide/en/logstash/7.2/installing-logstash.html#_yum
https://www.elastic.co/guide/en/logstash/7.2/first-event.html
https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

————————————————
版权声明:本文为CSDN博主「方志朋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/forezp/article/details/98322521

ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat的更多相关文章

  1. 【Elastic-2】SpringBoot整合ELK、SpringBoot写ES

    ELK相关TODO 快速开始文档(https://www.cnblogs.com/lbhym/p/15934416.html) SpringBoot整合ELK ELK接入Kafka(待Kafka快速开 ...

  2. 【Spring Cloud & Alibaba全栈开源项目实战】:SpringBoot整合ELK实现分布式登录日志收集和统计

    一. 前言 其实早前就想计划出这篇文章,但是最近主要精力在完善微服务.系统权限设计.微信小程序和管理前端的功能,不过好在有群里小伙伴的一起帮忙反馈问题,基础版的功能已经差不多,也在此谢过,希望今后大家 ...

  3. SpringBoot非官方教程 | 第八篇:springboot整合mongodb

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot8-mongodb/ 本文出自方志朋的博客 这篇文 ...

  4. SpringBoot非官方教程 | 第六篇:springboot整合mybatis

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-mybatis/ 本文出自方志朋的博客 本文主要 ...

  5. SpringBoot非官方教程 | 第五篇:springboot整合 beatlsql

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot5-beatlsql/ 本文出自方志朋的博客 Be ...

  6. SpringBoot非官方教程 | 第四篇:SpringBoot 整合JPA

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot4-jpaJ/ 本文出自方志朋的博客 JPA全称J ...

  7. SpringBoot非官方教程 | 第二十六篇: sprinboot整合elk,搭建实时日志平台

    转载请标明出处: 原文首发于https://www.fangzhipeng.com/springboot/2017/07/11/sprinboot25-elk/ 本文出自方志朋的博客 这篇文章主要介绍 ...

  8. SpringBoot整合Guacamole教程

    前言 本文主要介绍的是SpringBoot如何整合Guacamole在浏览器是远程桌面的访问. Guacamole 介绍 Apache Guacamole 是一个无客户端远程桌面网关.它支持标准协议, ...

  9. ELK教程1:ElasticSearch集群的部署ELK

    在分布式系统中,应用数量众多,应用调用链复杂,常常使用ELK作为日志收集.分析和展示的组件.本篇文章将讲讲解如何部署ELK,然后讲解如何使用Filebeat采集Spring Boot的日志输出到Log ...

随机推荐

  1. 在windows服务中使用定时器

    在windows服务中,利用winform中直接拖动timer控件的方式使用定时器是不可以的,启动服务后会发现定时器并没有执行.那么在windows服务中如何使用定时器呢?  不使用直接拖动控件的方式 ...

  2. 【面试突击】- 2019年125条常见的java面试笔试题汇总(一)

    1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部 问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二 ...

  3. App抓包代理设置

    1.设置Fiddler 打开Fiddler,Tools  -->  Fiddler Options  -->  HTPS (配置完后记得要重启Fiddler) 选中"Decrpt ...

  4. 06-jQuery进阶

    本篇主要介绍jQuery的正则.冒泡事件.委托事件.以及DOM操作.JavaScript对象以及ajax等知识: 一.正则 简而言之,正则的规则无论是各种语言均是通用的,故其规则中的字符便不再介绍了, ...

  5. Ceph添加、删除osd及故障硬盘更换

    添加或删除osd均在ceph部署节点的cent用户下的ceph目录进行. 1. 添加osd 当前ceph集群中有如下osd,现在准备新添加osd: (1)选择一个osd节点,添加好新的硬盘: (2)显 ...

  6. OpenStack核心组件-keystone

    1. Keystone介绍 keystone是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证.令牌的发放和校验.服务列表.用户权限的定义等等 ...

  7. SQL进阶系列之11让SQL飞起来

    写在前面 SQL的性能优化是数据库使用者必须面对的重要问题,本节侧重SQL写法上的优化,SQL的性能同时还受到具体数据库的功能特点影响,这些不在本节讨论范围之内 使用高效的查询 参数是子查询时,使用E ...

  8. SQL进阶系列之5外连接的用法

    写在前面 SQL本身是作为一种数据提取工具而出现,使用SQL生成各种定制化报表和非定制化报表并非SQL原本用途的功能,但这并不意味着SQL无法实现这些功能. 用外连接进行行列转换(1)(行 → 列): ...

  9. Kotlin协程作用域与构建器详解

    在上次我们是通过了这种方式来创建了一个协程: 接着再来看另一种创建协程的方式: 下面用它来实现上一次程序一样的效果,先来回顾一下上一次程序的代码: 好,下面改用runBlocking的方式: 运行一下 ...

  10. Linux系统文件/etc/fstab

    挂载可以使用命令或者修改系统文件两种方式,第一种方式使用mount命令挂载文件系统可以立即生效并使用,但计算机重启后无效.另一种方式需要修改系统文件/etc/fstab,这种方式挂载的文件系统在计算机 ...