使用docker快速部署elk对接SpringBoot

15次阅读

共计 2340 个字符,预计需要花费 6 分钟才能阅读完成。

使用 docker 快速部署 elk

1. 软件 & 工具介绍

ELK 是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个 FileBeat,它是一个轻量级的日志收集处理工具 (Agent),Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash,官方也推荐此工具。

  • Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。
  • Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为 c / s 架构,client 端安装在需要收集日志的主机上,server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往 elasticsearch 上去。
  • Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat 隶属于 Beats。目前 Beats 包含四种工具:

  1. Packetbeat(搜集网络流量数据)
  2. Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
  3. Filebeat(搜集文件数据)
  4. Winlogbeat(搜集 Windows 事件日志数据)

2. 拉取 ELK 集成镜像

ELK 镜像地址 : https://hub.docker.com/r/sebp…

[root@localhost /]# docker pull sebp/elk:740

注:740 为 ELK 版本号,这里的版本号指的是 ELK 集成镜像的版本号。

3. 启动 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:660

注:-p 指定映射端口,5601kibana 访问,9200es 端口,5044 logstash 收集日志端口;-v 指定 es 数据目录。

4. 配置 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

注:上面是各个服务 启动 / 重启 / 停止 / 状态 ,服务较大操作会比较缓慢,不要重复执行命令。

5. Kibana 简单使用

参照 Kibana 用户手册,中文文档,演示的 Kibana 为英文版本。

6. 相关参照文档

Centos Docker 安装 – 菜鸟教程

7. 集成到 Spring Boot(LogBack)

<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>xxx.xxx.xxx.xxx:xxx</destination>
        <includeCallerData>true</includeCallerData>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <includeCallerData>true</includeCallerData>
            <!-- 根据应用名称创建索引 -->
            <customFields>{"appName":"appName"}</customFields>
        </encoder>
    </appender>

正文完
 0