摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期
一、背景
筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK這種神器,搜索了一下,發現利用docker搭建似乎并不麻煩,于是進行了一番嘗試,結果還比較順利,將此過程完整記錄下來,希望留給有需要的讀者進行參考。
筆者這次實踐的過程當中參考了較多的文檔與筆記,參考的鏈接地址有:
Docker ElK安裝部署使用教程 、
Docker Hub官網、
Docker ELK使用文檔
服務安裝與運行
數據導入與校驗
繪圖配置與展示
三、服務安裝與運行安裝ELK有很多種方式,比如源碼、rpm包,或docker;不過docker又分為了單個安裝與ELK打包安裝,筆者這里是通過docker打包安裝,因為這樣的方式相比來說最為簡單,因為只需要下載鏡像,然后運行起來就可以了
3.1 鏡像下載ELK鏡像已經被docker官方收錄,因此只需要簡單的命令即可拉取到鏡像;但考慮到ELK鏡像比較大,在拉取過程當中存在比較慢的情況,因此筆者使用了阿里云的加速器來提速;筆者使用的是MAC版本的docker,參考配置方法如下:
3.1.1 鏡像加速右鍵點擊桌面頂欄的 docker 圖標,選擇 Preferences ,在 Daemon 標簽下的 Registry mirrors 列表中將 https://k0pf39f8.mirror.aliyuncs.com加到registry-mirrors的數組里,點擊 Apply & Restart按鈕,等待Docker重啟并應用配置的鏡像加速器,如下截圖
3.1.2 鏡像獲取設置好加速地址之后,筆者就可以開始拉取ELK鏡像,參考命令如下:
docker pull sebp/elk
筆者當前鏡像laster對應的版本為6.2.4,如果讀者以后看到此文章,在搭建的時候遇到一些問題,可以在命令后面加上:6.2.4來指定該版本,減少意外產生;
下載鏡像之后可以使用docker的命令來驗證是否成功,參考命令如下:
docker images
筆者執行后docker返回結果如下
REPOSITORY TAG IMAGE ID CREATED SIZE sebp/elk latest c916150705cc 2 weeks ago 1.49GB
在結果當中可以看出,ELK鏡像已經下載下來,占用了將近1.5GB空間
3.2 容器運行運行此容器的時候,需要將宿主機的端口轉發到該容器,其中ES端口為9200,kibana端口為5601,logbate端口為5044;另外筆者建議將配置文件和數據存放在宿主機,便于后期維護,因此還需要將宿主機目錄掛載到容器/data當中;最后構造的命令如下:
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -v /Users/song/dockerFile:/data -it -d --name elk sebp/elk
筆者在運行容器的參數當中加入了后臺運行-d參數,這樣筆者就不怕誤操作突然把容器停止了,但放置于后臺運行,ELK的服務器啟動過程是不可見的,這個啟動時間根據你機器的性能所決定,筆者電腦大約在10秒鐘左右;如果覺得啟動失敗,也可以將該容器刪除,然后重新創建一個容器,上述命令中的-d刪除即可看到啟動過程。
3.3 數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問kibana和ES的頁面是否成功來判斷。
3.3.1 檢查Kibana通過瀏覽器訪問kibana,如果正常出現界面,則代表啟動成功,URL地址如下:
http://localhost:5601/
當瀏覽器訪問成功之后,參考如下圖所示:
3.3.2 ES服務檢查驗證kibana啟動成功之后,接著繼續驗證ES服務是否啟動成功,URL地址如下
http://localhost:9200/_search?pretty
訪問之后,此時ES里面應該是沒有數據的,出現的界面如下
四、配置與驗證在保證es和kibana服務啟動完成之后,筆者還需要進行一些數據導入步驟
4.1 logstash配置logstash配置主要有三個地方要處理,首先是輸入源在什么位置,然后是對數據進行過濾或者格式化,最后是需要將數據輸出到什么地方;筆者在下方的配置只做了其中兩項,因為在nginx日志當中已經將日志格式化了,編輯配置文件命令參考如下:
vim /Users/song/dockerFile/config/logstash.conf
配置文件內容參考如下
input { file { path => "/data/logs/access.log" codec => "json" } } output { elasticsearch { hosts => ["127.0.0.1:9200"] } stdout { codec => rubydebug } }
在配置文件當中,可以看到日志文件存放的位置在 "/data/logs/access.log"當中,輸出的地址是127.0.0.1:9200,這是本機的ES服務
4.2 nginx日志格式因為筆者對logstash的配置文件語法不太熟悉,在里面寫過濾器和篩選項比較費時間,所以選擇直接更改nginx中的日志格式,將nginx的日志文件設置為json格式,在更改nginx配置文件之前,需要獲取nginx配置文件路徑,參考如下命令
sudo nginx -t
返回結果
Password: nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
在返回的結果當中已經可以看到配置文件所在的位置,使用vim編輯配置文件,參考命令
vim /usr/local/etc/nginx/nginx.conf
在http級別下增加自定義日志格式,和日志路徑,參考配置如下:
log_format json "{"@timestamp":"$time_iso8601", "@version":"1","host":"$server_addr", "client":"$remote_addr", "size":"$body_bytes_sent", "responsetime":"$request_time", "domain":"$host","url":"$uri","status":"$status"}"; access_log /data/logs/access.log json;
筆者配置截圖如下所示
4.3 啟動logstash前面已經將日志格式與logstash配置好,現在筆者需要啟動logstash開始收集日志,啟動logstash之前需要先進入容器里面,進入容器參考命令如下:
docker exec -it elk bash
進入容器之后,筆者需要啟動logstash來收集數據,啟動的時候需要帶兩個參數進去,第一個是logstash的數據暫存位置,第二個是使用的配置文件,因此構造的命令如下所示:
/opt/logstash/bin/logstash --path.data /tmp/logstash/data -f /data/config/logstash.conf4.4 添加數據
現在只要nginx產生日志,logstash就會實時將日志發送到ES服務當中,在發送數據時,終端窗口也會發生變化,如下圖所示
五、 繪圖配置與展示當數據導入之后,筆者才可以使用kibana的圖形化來查看數據了,所以首先確認一下ES中是否有數據,確認有數據后就可以進行繪圖配置,配置完成之后就可以進行篩選日志等操作了。
5.1 ES數據檢查當數據添加到ES服務器當中后,筆者可以通過ES服務提供的URL來查看其中的數據,URL地址如下所示:
http://localhost:9200/_search?pretty
就會看到筆者剛剛輸入的日志內容,如下圖所示
當看到total數量變大,并在下面的數據項中看到了nginx日志信息時,則代表筆者導入數據成功了。
5.2 kibana索引配置通過瀏覽器訪問kibana,URL地址如下
http://127.0.0.1:5601/app/kibana#/management/kibana/index?_g=()
點擊左側導航欄的Discover鏈接,便可進入創建索引模式界面,如下圖所示
點擊頁面右下方的next按鈕,會跳轉到下一個頁面,在此頁面還需要選擇一個時間維度,如下圖所示
在此點擊下一步,便創建kibana的索引完成,此時再次點擊左側導航欄的Discover鏈接,便可以看到剛才創建索引的一些視圖,如下圖所示
在圖中有一個input輸入框,筆者可以在里面填寫篩選所需要的關鍵詞;如果沒有篩選出結果,也可檢查左側的時間篩選項是否設置正確,如筆者的時間篩選項設置的是Today,也就代表篩選當天的數據。
ELK的整體操作流程比較簡單,首先是logstash收集各種日志并進行過濾,然后將過濾后的內容發送到ES服務中,最后用戶通過Kibana的頁面查看ES中的日志數據;
作者:湯青松
微信:songboy8888
日期:2018-08-25
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40085.html
摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期 一、背景 筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK...
摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期 一、背景 筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK...
摘要:漢化使用中文界面實踐一背景筆者在上一篇文章使用快速部署分析日志實踐當中有提到如何快速搭建分析日志,但是這只是第一步,后面還有很多儀表盤需要配置,而對于大部分人來說,英文并不是那么好,但都是英文界面,這就阻礙了筆者熟悉的一些操作所以筆者思考能 Kibana漢化使用中文界面實踐 一、背景 筆者在上一篇文章使用Docker快速部署ELK分析Nginx日志實踐當中有提到如何快速搭建ELK分析N...
摘要:漢化使用中文界面實踐一背景筆者在上一篇文章使用快速部署分析日志實踐當中有提到如何快速搭建分析日志,但是這只是第一步,后面還有很多儀表盤需要配置,而對于大部分人來說,英文并不是那么好,但都是英文界面,這就阻礙了筆者熟悉的一些操作所以筆者思考能 Kibana漢化使用中文界面實踐 一、背景 筆者在上一篇文章使用Docker快速部署ELK分析Nginx日志實踐當中有提到如何快速搭建ELK分析N...
摘要:概述應用一旦容器化以后,需要考慮的就是如何采集位于容器中的應用程序的打印日志供運維分析。 showImg(https://segmentfault.com/img/remote/1460000014146680); 概述 應用一旦容器化以后,需要考慮的就是如何采集位于Docker容器中的應用程序的打印日志供運維分析。典型的比如 SpringBoot應用的日志 收集。本文即將闡述如何利...
閱讀 3995·2021-11-18 13:22
閱讀 1823·2021-11-17 09:33
閱讀 2882·2021-09-26 09:46
閱讀 1213·2021-08-21 14:11
閱讀 2891·2019-08-30 15:53
閱讀 2710·2019-08-30 15:52
閱讀 1894·2019-08-30 10:52
閱讀 1521·2019-08-29 15:30