使用docker五步搭建ELK日志收集分析系统
时间:2022-07-25
本文章向大家介绍使用docker五步搭建ELK日志收集分析系统,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
向您推荐
框架概览
- ElasticSearch 有强大的搜索功能的无模式数据库,可以简单的很想扩展,索引每一个字段,可以聚合分组数据。
- Logstash 用Ruby编写的,我们可以使用管道输入和输出数据到任何位置。一个可以抓取,转换,存储事件到ElasticSearch的ETL管道。打包版本在JRuby上运行,并使用几十个线程进行并行的数据处理,利用了JVM的线程功能。
- Kibana 基于web的数据分析,为ElasticSearch仪表板的工具。充分利用ElasticSearch的搜索功能,以秒为单位可视化数据。支持Lucene的查询字符串的语法和Elasticsearch的过滤功能。
前提
本文只介绍了最简化搭建。如果您用于生产,还需要在如下方面完善 1.elastic是有存储目录,需要在docker中进行数据卷映射。配置文件elasticsearch.yml需要根据自己需求自行配置。请参考:https://hub.docker.com/_/elasticsearch/ 2.Dockerhub官方提供的镜像基于不同的基础镜像,不利于网络传输!建议根据自己组织内部镜像重新创建!
Docker搭建ELK的javaweb应用日志收集存储分析系统
第一步:启动elasticsearch
docker run -d --name myes
--net=multihost --ip=192.168.2.51
elasticsearch:2.3
- 采用docker自定义overlay网络multihost,设置容器ip为192.168.2.51
第二步:启动kibana
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,这个文件名字可以随便起
input {
log4j {
mode => "server"
host => "0.0.0.0"
port => 3456
type => "log4j"
}
}
output {
elasticsearch { hosts => ["192.168.2.51"] }
}
- 输入模式log4j的服务,监听于当前容器的3456端口。也就是数据源需要向容器的3456端口发送日志。
第四步:启动logstash
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输出,代码片段如下:
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强大的配置来展现您的日志分析
向您推荐
喜欢 (6)or分享 (0)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Kubernetes】自定义资源CRDs不支持fieldselector
- Cypress系列(48)- and() 命令详解
- Java源码系列2——HashMap
- 快速学习-Saturn Console部署
- MySQL的各种日志
- 本地机器如何访问服务器上的docker容器内的tensorboard?
- MySQL是如何实现可重复读的?
- Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?
- 如何理解被 protected 修饰的成员变量?
- 重学数据结构(五、串)
- python boto和boto3操作bucket
- 对比 Redis 中 RDB 和 AOF 持久化
- Nginx负载均衡健康检查功能
- 深入浅出hiredis -- C++操作redis
- redis学习(十五)