基于Docker的ELK日志平台搭建
1.安装Docker
Docker可简单理解为一个轻量级的虚拟机。Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docker和传统虚拟化方式的不同。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而Docker内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便:资源利用率高、启动迅速、迁移方便等。


1) 安装
官网有各种平台的安装指南,可参考:
https://docs.docker.com/engine/installation/
不同平台Docker安装大同小异,这里以MacOS系统为例:
a. 直接下载安装即可(命令注意输入法的中英文)
https://docs.docker.com/docker-for-mac/
b. 命令安装
$ brew install docker
2) 安装成功检测
输入如下命令:
$ docker --version
$ docker-compose --version
$ docker-machine –version
3) 镜像加速
鉴于国内的环境,可以采用VPN或阿里云等进行镜像加速,加快镜像软件的下载。
2. JavaWeb镜像软件制作
1) 安装CentOS
拉取最新稳定版本
$ docker pull centos
拉取特定版本
$ docker pull centos:centos6
注:若出现权限问题,命令行前面加sudo
查看当前所有镜像,确保安装成功
$ docker images
2) 创建CentOS容器
$ docker run –i -t centos /bin/bash
完整创建CentOS容器命令
& docker run -i -t --name centos1 -v /Users/devin/Documents/:/usr/local/ centos /bin/bash
注:-v<宿主机目录>:<容器目录>表示需要将本地哪个目录挂载到容器中,--name centos1表示创建的容器名字
退出容器命令行
& exit
停止容器
& docker stop容器ID
启动容器
& docker start 容器ID
进入容器命令
& docker exec -i -t 容器ID /bin/bash
查看容器命令
& docker ps 默认显示运行的容器
& docker ps –a 显示所有容器
删除容器
& docker rm 容器ID
删除镜像
& docker rmi 镜像ID
3) 安装JDK环境
进入CentOS命令环境,进入jdk存放存放目录,解压
# tar -zxvf jdk8.tar.gz
把jdk移动到/usr/local/java目录下
# mv jdk1.8.0_121 java
配置环境变量
# vi /etc/profile
在最后一行插入(快捷键G->o)
export JAVA_HOME=/usr/local/java/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/java/tomcat-8.5.12
export CATALINA_BASE=/usr/local/java/tomcat-8.5.12
按ESC退到命令模式,按:wq保存文件并退出vi,运行如下命令使保存生效
# source /etc/profile
查看是否安装成功
# java –version
4) 安装Tomcat
# tar -zxvf tomcat-8.5.tar.gz
把Tomcat移动到/usr/local/java目录下
# mv tomcat-8.5.12 java
启动Tomcat
# cd tomcat-8.5.12/bin
# ./startup.sh #./shutdown.sh 关闭
5) 创建带JDK和Tomcat的镜像tempos
docker commit af7 tempos
在tempos镜像的基础上配置环境变量
a. 创建一个Dockerfile的目录,在里面建立一个Dockerfile文件,内容如下:
FROM tempos
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/java/tomcat-8.5.12
ENV CATALINA_BASE /usr/java/tomcat-8.5.12
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口,多个端口可以继续换行EXPOSE 9200
EXPOSE 8080
b. 命令行中进入Dockerfile目录所在的路径,创建新的镜像javaweb
docker build -t tempos Dockerfile
镜像javaweb即是最终我们要的带开发环境和环境变量的镜像
& docker run -p 8080:8080 -i -t --name javaweb1 javaweb /bin/bash
如果暴露多个端口:-p <host_p1>:<container_p1> -p <host_p2>:<container_2>
启动Tomcat测试
# cd /usr/local/java/tomcat-8.5.12/bin ./startup.sh
3. ELK环境搭建
1) 安装和配置ElasticSearch
官网下载ElasticSearch
https://www.elastic.co/
安装ElasticSearch(需安装JDK8及以上版本),并移动至相应目录
# tar -zxvf elasticsearch-5.2.2.tar.gz
# mv elasticsearch-5.2.2 java
配置ElasticSearch
# vi config/elasticsearch.yml
network.host: 0.0.0.0 #设置这个配置,保证本机可以访问(Docker下)
启动ElasticSearch,进入elasticsearch-5.2.2/bin目录,执行
# ./elasticsearch # ./elasticsearch –d 不显示控制台信息
注:出于安全考虑,ElasticSearch不能用root账户启动,切换账户即可。
root切换为普通用户:su - username
普通切换为root用户:su - (docker exit退出)
添加用户、修改密码、删除用户
# adduser devin # passwd devin # userdel devin
查看用户信息
用户列表文件:/etc/passwd
用户组列表文件:/etc/group
查看所有用户:cut -d : -f 1 /etc/passwd
查看可登录用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
通过下面命令查看是否成功:
curl http://127.0.0.1:9200 #直接输出网站前端源码
2) 安装和配置logstash
官网下载logstash、安装并移到java目录
https://www.elastic.co/downloads/logstash
# tar -zxvf logstash-5.2.2.tar.gz
# mv logstash-5.2.2 java
创建logstash配置文件:
# cd logstash-5.2.2/config
# vi logstash.conf
启动logstash(在目录elasticsearch-5.2.2下执行)
bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => "127.0.0.1:9200"} }'
其中也可以直接配置logstash的文件
input { stdin { } }
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
# ./bin/logstash -f config/logstash.conf
简单测试
bin/logstash -e 'input { stdin { } } output { stdout {} }'
Logstash检测
检测:bin/logstash -f config/logstash.conf --config.test_and_exit
开始:bin/logstash -f config/logstash.conf --config.reload.automatic
3) 安装和配置kibana
官网下载kibana
https://www.elastic.co/downloads/kibana
安装并移到java目录
# tar -zxvf kibana-5.2.2.tar.gz
# mv kibana-5.2.2 java
配置kibana
# cd java/kibana-5.2.2
# vi config/kibana.yml
server.port: 5601
server.host: "0.0.0.0" #本机可访问
elasticsearch.url: http://127.0.0.1:9200
kibana.index: ".kibana"
启动kibana:
# ./bin/kibana
浏览器访问即可: http://localhost:5601
4) 安装和配置Filebeat
官网下载Filebeat
https://www.elastic.co/downloads/beats
安装并移到java目录
# tar -zxvf filebeat-5.2.2.tar.gz
# mv filebeat-5.2.2 java
编辑filebeat.yml(输出到elasticsearch)
paths:
- /usr/local/appLogs/*
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["127.0.0.1:9200"]
启动filebeat
./filebeat -e -c filebeat.yml -d "publish"
5) 整合Filebeat、Logstash和ElasticSearch
修改Logstash配置文件logstash.conf
input {
beats {
port => 5044
}
}
修改Filebeat配置文件,注释掉其他的Outputs项,打开logstash的Outputs项
output.logstash:
# The Logstash hosts
hosts: ["127.0.0.1:5044"]
--------------------------------------------------------------------
PS: 欢迎关注公众号"Devin说",会不定期更新Java相关技术知识。
--------------------------------------------------------------------

基于Docker的ELK日志平台搭建的更多相关文章
- elk日志平台搭建小记
最近抽出点时间,搭建了新版本的elk日志平台 elastaicsearch 和logstash,kibana和filebeat都是5.6版本的 中间使用redis做缓存,版本为3.2 使用的系统为ce ...
- ELK日志平台搭建
功能: 1. 查看当天的服务器日志信息(要求:在出现警告甚至警告级别以上的都要查询)2. 能够查看服务器的所有用户的操作日志3. 能够查询nginx服务器采集的日志(kibana作图)4. 查看tom ...
- Springboot项目使用aop切面保存详细日志到ELK日志平台
上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例.这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统.同时,由于往往 ...
- ELK 日志平台构建
elastic中文社区 https://elasticsearch.cn/ 完整参考 ELK实时日志分析平台环境部署--完整记录 https://www.cnblogs.com/kevingrace/ ...
- 基于Docker的TensorFlow机器学习框架搭建和实例源码解读
概述:基于Docker的TensorFlow机器学习框架搭建和实例源码解读,TensorFlow作为最火热的机器学习框架之一,Docker是的容器,可以很好的结合起来,为机器学习或者科研人员提供便捷的 ...
- Springboot项目搭配ELK日志平台
上一篇讲过了elasticsearch和kibana的可视化组合查询,这一篇就来看看大名鼎鼎的ELK日志平台是如何搞定的. elasticsearch负责数据的存储和检索,kibana提供图形界面便于 ...
- 基于Docker&Kubernetes构建PaaS平台基础知识梳理
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 基于Docker&Kubernetes构建Paa ...
- 亿级 ELK 日志平台构建部署实践
本篇主要讲工作中的真实经历,我们怎么打造亿级日志平台,同时手把手教大家建立起这样一套亿级 ELK 系统.日志平台具体发展历程可以参考上篇 「从 ELK 到 EFK 演进」 废话不多说,老司机们座好了, ...
- Docker 运行ELK日志监测系统,汉化Kibana界面
1.ELK日志监控简介 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
随机推荐
- 企业级分布式监控系统-Zabbix基础
1.基础分部 1.1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 1.2监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/ ...
- MySQL 性能优化的最佳20多条经验分享(二)(转)
11. 尽可能的使用 NOT NULL 除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL.这看起来好像有点争议,请往下看. 首先,问问你自己"Empt ...
- UWP 图片缩放
给Image外面包裹一个ScrollViewer,你会回来感激我的. 哦,对了,PC上需要按住Ctrl键,滑动鼠标滑轮即可:手机上双指就可以缩放. <ScrollViewer ZoomMode= ...
- 虚拟DOM详解
虚拟DOM简介 Virtual Dom可以看做一棵模拟了DOM树的JavaScript对象树,其主要是通过vnode,实现一个无状态的组件,当组件状态发生更新时,然后触发Virtual Dom数据的变 ...
- php的过滤器功能
1.简介 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 1.1 外部数据: 来自表单的输入数据 Cookies Web services data 服务器变量 数据库查询结果 1 ...
- java线程池的创建使用
利用java的多线程编程可以大大的提高系统的并发运行效率,线程越多并发执行的任务就越多,但是并不意味着效率会一直提高,相反会得到适得其反的效果. java中的多线程编程一共有三种方法: 继承Threa ...
- 如何在BIOS里设置定时关机?
如何在BIOS里设置定时关机? 通过CMOS设置实现定时开机的设置过程如下: 首先进入"CMOS SETUP"程序(大多数主板是在计算机启动时按DEL键进入): 然后将光条移到&q ...
- gcc 源代码分析-前端篇3
3. GCC怎样函表示一个函数 对c语言来说.函数是其核心,全部的东西都在环绕着函数在转.对于一个函数来说.它基本的一些特性例如以下: 1. 有一个返回值,在这里我们没有把返回值的函数觉得它 ...
- 从Trie树到双数组Trie树
Trie树 原理 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,能在常数时间O(len)内实现插入和查 ...
- WebGL学习(3) - 3D模型
原文地址:WebGL学习(3) - 3D模型 相信很多人是以创建逼真酷炫的三维效果为目标而学习webGL的吧,首先我就是