行百里er 行百里er
首页
  • 分类
  • 标签
  • 归档
设计模式
  • JVM
  • Java基础
MySQL
Elastic Stack
Redis
  • Kafka
  • RocketMQ
分布式
Spring Cloud Alibaba
云原生
数据结构与算法
关于
GitHub (opens new window)

行百里er

Java程序员一枚
首页
  • 分类
  • 标签
  • 归档
设计模式
  • JVM
  • Java基础
MySQL
Elastic Stack
Redis
  • Kafka
  • RocketMQ
分布式
Spring Cloud Alibaba
云原生
数据结构与算法
关于
GitHub (opens new window)
  • Elasticsearch初体验-第一次使用就感觉他很勇,搜索界的扛把子!
  • 近距离感受一下Elasticsearch的CRUD:ES Java API之增删改查
  • 这些 Elasticsearch 7 部署的问题,你遇到过吗
  • 10分钟部署一个ELK日志采集系统
    • 安装Logstash
    • 安装Kibana
    • 使用ELK收集SpringBoot项目的Logback日志
  • 比快更快的 ELK 8 安装使用指南-Elasticsearch,Kibana,Logstash
  • Elastic Stack
行百里er
2021-05-22
目录

10分钟部署一个ELK日志采集系统

作者:行百里er

博客:https://chendapeng.cn (opens new window)

提示

这里是 行百里er 的博客:行百里者半九十,凡事善始善终,吾将上下而求索!

ELK(Elasticsearch,Logstash,Kibana),用来收集日志还有进行日志分析,最后通过可视化UI进行展示。在大量日志产生的项目场景中,ELK是收集、分析日志的利器!

在 这些Elasticsearch 7.10部署的问题,你遇到过吗 (opens new window) 这篇文章中,我已经部署过Elasticsearch了,本次导航将完成Logstash和Kibana的部署,并写一个SpringBoot小项目演示ELK的日志收集。

# 安装Logstash

ELK三大组件的安装都很简单,几行命令就能搞定:

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2-linux-x86_64.tar.gz

tar -zxvf logstash-7.10.2-linux-x86_64.tar.gz
1
2
3

前面我们安装的Elasticsearch版本是7.10.2,所以Logstash和接下来要安装的Kibana都要安装7.10.2这个版本。

解压完成以后,为了启动时不每次进入到Logstash家目录,我们来配置一下环境变量:

vi ~/.bash_profile
# 在后面添加
export LOGSTASH_HOME=/home/elastic/logstash-7.10.2
export PATH=$PATH:$LOGSTASH_HOME/bin
1
2
3
4

关于版本问题,ELK令我感觉很爽的一点就是Elastic Stack中的Elasticsearch、Logstash、Kibana这些版本号都是一致的,这其实省去了很多麻烦。

还有下载的时候,如果想下载其他版本,直接在链接上改版本号就可以下载到对应版本的文件。

拷贝一份$LOGSTASH_HOME/config/logstash-sample.conf配置文件,命名为logstash-app-search.conf,修改其内容为:

input {
  tcp {
    # Logstash 作为服务
    mode => "server"
    host => "192.168.242.120"
    # 开放9001端口进行采集日志
    port => 9001
    # 编解码器
    codec => json_lines
  }
}

output {
  elasticsearch {
    # 配置ES的地址
    hosts => ["http://192.168.242.120:9200"]
    # 在ES里产生的index的名称
    index => "app-search-log-collection-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
  stdout {
    codec => rubydebug
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

启动Logstash:

logstash -f $LOGSTASH_HOME/config/logstash-app-search.conf

# 后台启动
# nohup logstash -f $LOGSTASH_HOME/config/logstash-app-search.conf &
1
2
3
4

# 安装Kibana

依然很easy:

# 下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz

# 解压
tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz

# 重命名
mv kibana-7.10.2-linux-x86_64.tar.gz kibana-7.10.2

# 配置环境变量
# 编辑 ~/.bash_profile
# 最终ELK的环境变量配置
export ES_HOME=/home/elastic/elasticsearch-7.10.2
export KIBANA_HOME=/home/elastic/kibana-7.10.2
export LOGSTASH_HOME=/home/elastic/logstash-7.10.2
export PATH=$PATH:$ES_HOME/bin:$KIBANA_HOME/bin:$LOGSTASH_HOME/bin
# 使之生效
source ~/.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

先修改$KIBANA_HOME/config/kibana.yml配置文件的下面几项:

# Logstash端口
server.port: 5601
# Logstash的IP地址
server.host: "192.168.242.120"
# ES实例URL
elasticsearch.hosts: ["http://192.168.242.120:9200"]
1
2
3
4
5
6

直接使用如下命令(配置了环境变量的前提下)启动:

kibana
1

Kibana启动日志

启动成功,访问http://192.168.242.120:5601:

Kibana首页

# 使用ELK收集SpringBoot项目的Logback日志

主要看一下SpringBoot的日志配置文件logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 在logstash启动文件logstash-app-search.conf中配置的IP地址和端口 -->
        <destination>192.168.242.120:9001</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

这个配置我是直接从logstash-logback-encoder这个项目的GitHub上拷贝过来的,改了其中的IP地址和端口。

GitHub地址:

https://github.com/logstash/logstash-logback-encoder (opens new window)

启动SpringBoot服务:

有错误信息,没有启动成功,这时候我们猜想一下,Logstash的日志中应该会显示这段错误日志,看一下:

Ok,有了,但是这样看还不如直接看SpringBoot的日志呢,没有起到ELK应有的快感,结合Kibana看,先到Index管理页面:

这里看到了已经有在Logstash配置文件配置为index名称了。

创建一个Index Pattern:

这时就能在Discover面板看到日志了:

现在我们根据这个报错信息修复一下,重新启动SpringBoot。

根据报错信息可以看到,

Could not find an appender named [CONSOLE]
1

原因是logback-spring.xml配置文件中没有配置CONSOLE的appender,补上就行了,或者不需要控制台输出的话删掉<appender-ref ref="CONSOLE" />这一句。

这里为了方便在控制台看,和ELK对比,我们把输出到控制台的也加上:

<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/>
<!-- 输出到CONSOLE控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>${pattern}</pattern>
    </encoder>
</appender>
1
2
3
4
5
6
7

启动SpringBoot,通过Kibana查看Logstash收集的日志:

舒服了!

本次导航结束,休息!


首发公众号 行百里er ,欢迎老铁们关注阅读指正。

#日志#Elasticsearch#ELK
上次更新: 2022/09/05, 15:54:38
这些 Elasticsearch 7 部署的问题,你遇到过吗
比快更快的 ELK 8 安装使用指南-Elasticsearch,Kibana,Logstash

← 这些 Elasticsearch 7 部署的问题,你遇到过吗 比快更快的 ELK 8 安装使用指南-Elasticsearch,Kibana,Logstash→

最近更新
01
重要数据不能丢!MySQL数据库定期备份保驾护航!
05-22
02
分布式事务解决方案之 Seata(二):Seata AT 模式
09-09
03
Seata 番外篇:使用 docker-compose 部署 Seata Server(TC)及 K8S 部署 Seata 高可用
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2023 行百里er | MIT License | 豫ICP备2022020385号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式