Docker搭建ELK并集成微服务

拉取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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。