美文网首页
Docker搭建ELK并集成微服务

Docker搭建ELK并集成微服务

作者: 碧海云天夜夜心 | 来源:发表于2020-05-29 18:59 被阅读0次

    拉取ELK集成镜像

    docker pull sebp/elk
    

    启动ELK

    [root@localhost /]# echo "vm.max_map_count=262144" > /etc/sysctl.conf
    [root@localhost /]# sysctl -p
    [root@localhost /]# docker run -dit --name elk \
        -p 5601:5601 \
        -p 9200:9200 \
        -p 5044:5044 \
        -v /opt/elk-data:/var/lib/elasticsearch \
        -v /etc/localtime:/etc/localtime \
        sebp/elk:740
    注:-p 指定映射端口,5601kibana访问,9200es端口,5044 logstash收集日志端口;-v 指定es数据目录。
    

    配置ELK(以下内容全部在容器内操作)

    进入docker容器

    [root@localhost /]# docker exec -it elk /bin/bash
    /etc/logstash/        ## logstash 配置文件路径
    /etc/elasticsearch/   ## es 配置文件路径
    /var/log/             ## 日志路径
    

    配置Logstash

    [root@localhost /]# vim /etc/logstash/conf.d/02-beats-input.conf
    
    # 数据输入配置:port -> 端口号;codec -> 输入格式。这里以logback为例。
    input {
      tcp {
        port => 5044
        codec=>json_lines
      }
    }
    
    # 数据输出配置:hosts -> 主机集合;index -> 你将要创建的索引名称。这里es为例。
    output {
      elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "%{[appName]}-%{+YYYY.MM.dd}"
      }
    }
    注:这个配置文件可以在/etc/logstash/conf.d/目录下创建,也可直接修改原有配置文件,看个人需求。
    

    配置kibana中文

    [root@localhost /]# vim /opt/kibana/config/kibana.yml
    注:打开文件后,在文件内追加 i18n.locale: "zh-CN" ,重启服务即可。
    

    常用服务操作命令

    [root@localhost /]# service logstash start/restart/stop/status
    [root@localhost /]# service elasticsearch start/restart/stop/status
    [root@localhost /]# service kibana start/restart/stop/status
    注:上面是各个服务 启动 / 重启 / 停止 / 状态,服务较大操作会比较缓慢,不要重复执行命令。
    

    集成到Spring Boot(LogBack)

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

    logback-spring.xml

    <springProperty name="appName" source="spring.application.name"/>
    
     <appender name="logstash"
                  class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>10.1.20.16:5044</destination>
            <!-- 日志输出编码 -->
    <!--        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">-->
            <encoder class="net.logstash.logback.encoder.LogstashEncoder">
                <customFields>{"appname":"${appName}"}</customFields>
                <providers>
                    <timestamp>
                        <timeZone>UTC</timeZone>
                    </timestamp>
                    <pattern>
                        <pattern>
                            {
                            "severity": "%level",
                            "service": "${springAppName:-}",
                            "trace": "%X{X-B3-TraceId:-}",
                            "span": "%X{X-B3-SpanId:-}",
                            "exportable": "%X{X-Span-Export:-}",
                            "pid": "${PID:-}",
                            "thread": "%thread",
                            "class": "%logger{40}",
                            "rest": "%message"
                            }
                        </pattern>
                    </pattern>
                </providers>
            </encoder>
        </appender>
    

    参考:# 使用docker快速部署elk、对接SpringBoot

    相关文章

      网友评论

          本文标题:Docker搭建ELK并集成微服务

          本文链接:https://www.haomeiwen.com/subject/uoffzhtx.html