前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用docker五步搭建ELK日志收集分析系统

使用docker五步搭建ELK日志收集分析系统

作者头像
字母哥博客
发布2020-09-23 11:29:32
1.4K0
发布2020-09-23 11:29:32
举报
文章被收录于专栏:写字母的代码哥

向您推荐

Dcoker入门与实践系列文章

框架概览

  • ElasticSearch 有强大的搜索功能的无模式数据库,可以简单的很想扩展,索引每一个字段,可以聚合分组数据。
  • Logstash 用Ruby编写的,我们可以使用管道输入和输出数据到任何位置。一个可以抓取,转换,存储事件到ElasticSearch的ETL管道。打包版本在JRuby上运行,并使用几十个线程进行并行的数据处理,利用了JVM的线程功能。
  • Kibana 基于web的数据分析,为ElasticSearch仪表板的工具。充分利用ElasticSearch的搜索功能,以秒为单位可视化数据。支持Lucene的查询字符串的语法和Elasticsearch的过滤功能。

前提

  • 本文中架构基于docker搭建,需要您了解docker的基本概念,基本操作和docker1.9之后的自定义overlay网络

本文只介绍了最简化搭建。如果您用于生产,还需要在如下方面完善 1.elastic是有存储目录,需要在docker中进行数据卷映射。配置文件elasticsearch.yml需要根据自己需求自行配置。请参考:https://hub.docker.com/_/elasticsearch/ 2.Dockerhub官方提供的镜像基于不同的基础镜像,不利于网络传输!建议根据自己组织内部镜像重新创建!

Docker搭建ELK的javaweb应用日志收集存储分析系统

第一步:启动elasticsearch

代码语言:javascript
复制
docker run -d --name myes  \
           --net=multihost --ip=192.168.2.51 \
           elasticsearch:2.3
  • 采用docker自定义overlay网络multihost,设置容器ip为192.168.2.51

第二步:启动kibana

代码语言:javascript
复制
docker run --name mykibana \
      -e ELASTICSEARCH_URL=http://192.168.2.51:9200 \
      --net=multihost \
      -p 5601:5601 \
      -d kibana:4.5
  • 采用自定义网络multihost,ip随机分配
  • 在宿主机启动kibana,容器端口5601映射到宿主机端口5601,可以通过http://<宿主机ip>:5601访问kibana
  • 参数ELASTICSEARCH_URL指向第一步中启动的elasticsearch

第三步:logstash配置文件

  • logstash.conf,这个文件名字可以随便起
代码语言:javascript
复制
input { 
  log4j {
    mode => "server"
    host => "0.0.0.0"
    port => 3456
    type => "log4j"
  }
}
output {
  elasticsearch { hosts => ["192.168.2.51"] }
}
  • 输入模式log4j的服务,监听于当前容器的3456端口。也就是数据源需要向容器的3456端口发送日志。

第四步:启动logstash

代码语言:javascript
复制
docker run  -d \
            -v "$PWD":/config-dir \
            -p 3456:3456 \
            --net multihost \
            logstash:2.3 \
            logstash -f /config-dir/logstash.conf
  • 采用自定义网络multihost,ip随机分配
  • 在宿主机启动logstash,容器端口3456映射到宿主机端口3456.(这么做是假设您的应用不是docker化的,所以ip不在自定义网络multihost内.如果web应用docker化,并与logstash共同使用同一个自定义网络,则端口不需要对外映射)
  • 容器配置文件/config-dir/logstash.conf映射到宿主机当前目录下面。即你需要将logstash.conf放到当前目录"$PWD"下启动。(这个目录可以调整)

第五步:web应用log4j日志TCP输出

  • 为log4j.properties添加tcp输出,代码片段如下:
代码语言:javascript
复制
log4j.rootLogger = DEBUG,tcp

log4j.appender.tcp=org.apache.log4j.net.SocketAppender
log4j.appender.tcp.Port=3456
log4j.appender.tcp.RemoteHost=192.168.1.158
log4j.appender.tcp.ReconnectionDelay=10000
log4j.appender.tcp.Application=ssmm
  • RemoteHost是logstash所在的宿主机ip.如果您的web应用docker化,可以是容器ip
  • 发送日志到3456端口 > 最重要的事不要忘了,启动您的web应用。日志才能发过去!

绝不忽悠,看看结果

  • 以下为原始日志,您可以用kibana强大的配置来展现您的日志分析

向您推荐

Dcoker入门与实践系列文章

喜欢 (6)or分享 (0)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-26),如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向您推荐
  • 框架概览
  • 前提
  • Docker搭建ELK的javaweb应用日志收集存储分析系统
    • 第一步:启动elasticsearch
      • 第二步:启动kibana
        • 第三步:logstash配置文件
          • 第四步:启动logstash
            • 第五步:web应用log4j日志TCP输出
            • 绝不忽悠,看看结果
            • 向您推荐
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档