基於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) 創建帶JDKTomcat的鏡像tempos

docker commit af7 tempos

在tempos鏡像的基礎上配置環境變量

a. 創建一個Dockerfile的目錄,在里面建立一個Dockerfile文件,內容如下:

FROM         tempos

#配置javatomcat環境變量  

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) 整合FilebeatLogstashElasticSearch

修改Logstash配置文件logstash.conf

input {  

  beats {

        port => 5044

    }

 }

修改Filebeat配置文件,注釋掉其他的Outputs項,打開logstashOutputs

output.logstash:

  # The Logstash hosts

  hosts: ["127.0.0.1:5044"]

--------------------------------------------------------------------
PS: 歡迎關注公眾號"Devin說",會不定期更新Java相關技術知識。
--------------------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM