基于Centos 7.4 搭建ELK整合SpringBoot日志收集

基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集

注:Skywalking和logstash可共用一个ES,根据实际性能要求判断是否需要独立使用。

ELK简介:

  ELK是Elasticsearch+Logstash+Kibana简称

  1. Elasticsearch:是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
  2. Logstash: 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。
  3. Kibana: 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。

  ELK实现的日志采集的核心是,通过 logstash 将应用系统的日志通过 input 收集,然后通过内部整理,通过 output 输出到 Elasticsearch 中,其实就是建立了一个 index,然后 kibana作为可视化平台,将 ES 的index进行输出到平台,通过图表的方式进行展示。

 

 

环境准备:

  JDK: 1.8

  OS: CentOS Linux release 7.4.1708 (Core)

  elasticsearch:7.12.0

  kibana:7.12.0

  logstash:7.12.0

环境搭建:

  其中 elasticsearch 的搭建可以参考 https://www.cnblogs.com/yizhipanghu/p/14738492.html, 在这里就不介绍了。

  启动 Elasticsearch

一、安装Kibana

1、进入安装包路径
[root@skywalking skywalking]# cd /usr/local/skywalking
2、解压软件包
[root@localhost skywalking]# tar -zxvf kibana-7.12.0-linux-x86_64.tar.gz
3、修改配置文件
[root@skywalking skywalking]# vim /usr/local/skywalking/kibana-7.12.0-linux-x86_64/config/kibana.yml

# 服务端口号:
server.port: 5601

# 服务IP地址:
#server.host: "localhost"
server.host: "10.10.10.10"

# ES链接地址:
#elasticsearch.hosts: "localhost"
elasticsearch.hosts: "http://10.10.10.10:9200"

# 配置pid文件存储运行Kibana时的进程号,便于用kill -9 `cat /var/run/kibana.pid`来杀进程。
pid.file: /usr/local/skywalking/kibana-7.12.0-linux-x86_64/run/kibana.pid
# 配置Kibana的日志输出位置:
logging.dest: /usr/local/skywalking/kibana-7.12.0-linux-x86_64/kibana-log/kibana.log
#创建日志文件夹和进程文件夹
[root@skywalking skywalking]# mkdir -p /usr/local/skywalking/kibana-7.12.0-linux-x86_64/run/
[root@skywalking skywalking]# mkdir -p /usr/local/skywalking/kibana-7.12.0-linux-x86_64/kibana-log/
4、开放端口
[root@skywalking skywalking]# firewall-cmd --list-ports
[root@skywalking skywalking]# firewall-cmd --zone=public --add-port=5601/tcp --permanent
[root@skywalking skywalking]# firewall-cmd --reload
5、目录赋权限
[root@skywalking skywalking]# chown -R es:es /usr/local/skywalking/kibana-7.12.0-linux-x86_64
6、启动
[root@skywalking skywalking]# cd /usr/local/skywalking/kibana-7.12.0-linux-x86_64/bin/
[root@skywalking bin]# su es
[es@skywalking bin]$ nohup ./kibana &

#在后台不输出日志方式运行
[es@skywalking bin]$ nohup ./kibana > /dev/null 2>&1 &
7、访问kibana页面

http://10.10.10.10:5601

 

8.设置systemd服务
[root@localhost bin]# cat /usr/lib/systemd/system/kibana.service
[Unit]
Description=Kibana
Wants=network-online.target
After=network-online.target elasticsearch.service
[Service]
User=es
Group=es
ExecStart=/usr/local/kibana/bin/kibana
StandardOutput=journal
StandardError=inherit
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of bytes of memory that may be locked into RAM
# Set to "infinity" if you use the 'bootstrap.memory_lock: true' option
# in elasticsearch.yml and 'MAX_LOCKED_MEMORY=unlimited' in /etc/sysconfig/elasticsearch
#LimitMEMLOCK=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=0
# SIGTERM signal is used to stop the Java process
KillSignal=SIGTERM
Restart=on-failure
# Java process is never killed
SendSIGKILL=no
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
[root@localhost bin]#
[root@localhost bin]# systemctl enable kibana.service
[root@localhost bin]# systemctl start kibana
[root@localhost bin]# systemctl stop kibana
[root@localhost bin]# ss -antp | grep 5601

*注:启动后稍微等待一会,有个启动过程才会看到进程

  参考链接:https://linxiaohui.gitee.io/notes/2020/07/08/2020-07-08-install-elastic-and-kibana/

二、安装logstash

1、进入安装包路径

[root@skywalking skywalking]# cd /usr/local/skywalking
[root@skywalking skywalking]# ll
drwxrwxr-x. 11 1001 1002       185 4月  30 17:05 apache-skywalking-apm-bin-es7
-rw-r--r--.  1 root root 184816700 4月  30 16:59 apache-skywalking-apm-es7-8.5.0.tar.gz
drwxr-xr-x. 10 es   es         167 4月  30 15:10 elasticsearch-7.12.0
-rw-r--r--.  1 root root 327497331 4月  30 15:03 elasticsearch-7.12.0-linux-x86_64.tar.gz
drwxr-xr-x. 12 es   es         239 4月  30 15:49 kibana-7.12.0-linux-x86_64
-rw-r--r--.  1 root root 281022115 4月  30 15:04 kibana-7.12.0-linux-x86_64.tar.gz
-rw-r--r--.  1 root root 368429061 5月   8 14:42 logstash-7.12.0-linux-x86_64.tar.gz
[root@skywalking skywalking]#

2、解压软件包

[root@localhost skywalking]# tar -zxvf logstash-7.12.0-linux-x86_64.tar.gz

3、在config文件夹下添加 test.conf 文件,内容如下:

[root@skywalking skywalking]# cat logstash-7.12.0/config/test.conf
input{
        tcp {
                mode => "server"
                host => "10.10.10.10"   ##监听发送日志的主机地址
                port => 9061            #logstash服务端口,进行采集的端口
                codec => json_lines     #解码器,有的版本需单独安装
        }
}
output{
        elasticsearch{
                hosts=>["10.10.10.10:9200"]    #ES地址和端口
                index => "springboot-%{project}-%{+YYYY.MM.dd}"       #在ES生成的索引名称,%{project}为获取微服务logback-spring.xml中配置的project的值
                }
        stdout{codec => rubydebug}
}
[root@skywalking skywalking]#

4、启动logstash

[root@skywalking skywalking]# cd logstash-7.12.0/
[root@skywalking logstash-7.12.0]# ./logstash -f  ../config/test.conf

5、Spring boot微服务中添加依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.0</version>
</dependency>

6、在resources下添加logback-spring.xml   只需把下面ip地址和project修改一下即可,(添加了skywalking的tract)

 

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

<configuration>
    <!-- ELK日志, 发送至 appender -->
    <appender name="log-logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- logstash地址和端口 -->
        <destination>10.10.10.1:9061</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <!-- skywalking插件, log加tid -->
            <provider class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.logstash.TraceIdJsonProvider" />
            <customFields>{"project":"iservice"}</customFields>
        </encoder>
    </appender>

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
    <property name="LOG_HOME" value="/home" />

    <appender name="eventFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${LOG_HOME}/log/iservice-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>50GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- root级别   INFO -->
    <root level="INFO">
    <!-- logstash输出 -->
    <appender-ref ref="log-logstash"/>
    <appender-ref ref="eventFile" />
    </root>
</configuration>

 

7、application.properties 修改配置:

logging.config = classpath:logback-spring.xml

8.然后启动springboot ,在对应的controller 里面打印一些日志,然后就可以看到启动 Logstash 的 控制台有所输出,就可以了。

9.登录kibana http://10.10.10.1:5601/ ,点击导航栏 monitoring 模块 --->  点击 Indices :增加索引,查看日志就可以了

 

 

 

 

logstash配置文件详解:https://blog.csdn.net/weixin_41436549/article/details/82222344

logback-spring详细介绍:https://www.cnblogs.com/mahoshojo/p/12920473.html

配置参考:https://www.cnblogs.com/xiaoyao-001/p/13273198.html

logback配置详解:https://blog.csdn.net/weixin_43944305/article/details/103794594

logback使用详解:https://blog.csdn.net/lhl1124281072/article/details/79852582

logback日志级别配合nacos使用:https://blog.csdn.net/DPnice/article/details/94650402

springboot日志输出到logstash:https://www.jianshu.com/p/869093fe0246?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

springtboot集成skywalking日志:http://javadaily.cn/articles/2020/04/01/1585670887771.html

 logback日志配置SizeAndTimeBasedRollingPolicy文件大小分割不生效问题:https://blog.csdn.net/mathlpz126/article/details/107344123

日志不删除问题:https://blog.csdn.net/zt011052/article/details/117444173?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

Logback配置文件自定义配置从Nacos动态获取+ELK:https://blog.csdn.net/DPnice/article/details/94650402

posted @ 2021-05-10 10:54  香菜哥哥  阅读(579)  评论(0编辑  收藏  举报