docker 部署elk

本文将介绍:

1:使用docker一次性部署 Elasticsearch,Kibana,Logstash 三大件

2:springboot使用slf4j记录日志,并将日志推送到Elasticsearch,使用Kibana进行查看日志

本文只简单介绍搭建步骤,更多内容可以参考:elk-docker官网:https://elk-docker.readthedocs.io/

步骤开始:
1.Elasticsearch至少需要2G的容量,要不然会失败。

sysctl -w vm.max_map_count=262144

2.使用docker 拉取 elk镜像 我这里使用的是7.8.0版本,你也可以用命令:docker pull sebp/elk 拉取最新版本的镜像

docker pull sebp/elk:780

3.启动elk

 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd --name elk sebp/elk:780

4.配置logstatsh(这一步是最重要的,很多部署失败都是这一步没有操作对)
使用命令进入docker容器

docker exec -it elk bin/bash

进入logstash配置目录

cd /etc/logstash/conf.d

列出启动elk时,默认安装的conf文件

ls

创建自定义的logstash.conf文件

vim logstash.conf

将以下内容复制到 logstash.conf 保存退出。退出elk容器(键盘组合键ctrl+p+q)

input {
    tcp {
        port => 5044
        codec => "json"
    }
}
output {
  elasticsearch {
    action => "index"
    hosts => ["localhost"]
    index => "%{[appname]}-%{+YYYY.MM}"
  }
}

删除默认安装的conf文件

rm 02-beats-input.conf  10-syslog.conf  11-nginx.conf  30-output.conf

5:重启elk

docker restart elk

至此elk-docker部署完毕。


下面开始讲解与springboot进行整合
1.pom添加maven依赖

 <!--日志-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.2</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>

2.controller编写测试代码记录日志(Logger一定要选择slf4j包下的)

image.png

3.添加logback.xml文件。
logback.xml存放路径:


image.png

logback.xml内容(192.168.0.1替换成你部署elk的服务器ip):

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] %logger[:%line] - %msg%n</pattern>
        </encoder>
    </appender>

    <contextName>logback</contextName>
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID} --- [%15.15t] %-40.40logger{39} : %m%n"/>

    <appender name="LOGSTASH"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <destination>192.168.0.1:5044</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"appname":"flight-status"}</customFields>
        </encoder>
        <connectionStrategy>
            <roundRobin>
                <connectionTTL>5 minutes</connectionTTL>
            </roundRobin>
        </connectionStrategy>
    </appender>

    <!--<logger name="com.jsj.member" additivity="true">-->
        <!--<appender-ref ref="LOGSTASH"/>-->
    <!--</logger>-->
    <root level="info">
        <appender-ref ref="LOGSTASH"/>
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

4.启动springboot 浏览器输入:localhost:8080/test 执行写好的测试代码。

5.打开Kibana查看日志,浏览器输入192.168.0.1:5601,点击红圈中的Connect to your Elasticsearch index

image.png

6.点击 红圈按钮


image.png

7.创建索引


image.png

8.下一步
image.png

9.使用discover查看日志


image.png

可以看到刚才使用springboot写的日志已经展示出来了


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容