设为首页 收藏本站
查看: 1150|回复: 0

[经验分享] 基于Docker的ELK日志平台搭建

[复制链接]

尚未签到

发表于 2017-12-6 07:08:08 | 显示全部楼层 |阅读模式
  1.安装Docker
  Docker可简单理解为一个轻量级的虚拟机。Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docker和传统虚拟化方式的不同。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而Docker内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便:资源利用率高、启动迅速、迁移方便等。
   DSC0000.png
DSC0001.png

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相关技术知识。
--------------------------------------------------------------------
DSC0002.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421028-1-1.html 上篇帖子: docker.service启动失败:Unit not found 下篇帖子: docker 内部组件结构 -- docker daemon, container,runC
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表