今天,你將學到如何使用 Elastic Cloud(後面簡稱 EC)從你的應用程式讀入、閱讀和分析一般的日誌(logs),日誌搭配指標(metrics)和 APM traces,都是在建構系統的可觀察性方面上,非常重要的元素。
本篇的主題包含有:
那我們就開始吧!
舉例來說,如果系統中一個程序(process)失敗了,我會想知道它到底為什麼失敗,以便我可以修正防止未來再次遇到這個問題;然而,可觀測性的概念不僅僅於此,對於同一個失敗的程序,我還想更進一步的知道:哪一個顧客/使用者被影響了、他們怎麼應對,以及造成了多少的金錢損失,這就從技術層面的觀測拓展至了商業層面上。
一個可觀測的系統,會由四個重要的支柱所構成:
那麼 Elasticsearch(之後簡稱ES) 在可觀測性上提供了什麼樣的解決方案呢?很好的問題!你可以將所有觀測到的內容,送進 ES 中,並且使用 Kibana 來視覺化、分析你的觀測資料。
當日誌有著共同的格式(format)時,就可以使用一個叫做 Filebeat 的模組,快速地將日誌送進 ES 做分析
舉例來說,今天你收到數筆資料如下圖示,那麼你可能會想要分析的部分就會有:IP、時間、函數名稱...等等,接下來的實作,將會帶你使用 EC 來對日誌做簡單的送入、分析。
test_logging
GCP
I/O Optimized
,都好了之後就可以按下 Create Deployment
囉!Download
按鈕下載下來,以便我們後面設定 Filebeat 會用到歐!Open Kibana
按鈕,讓我們先從這邊開始吧!Explore on my own
。Add sample data
,然後 Add data
添加裡面的 Sample web logs 吧!View data
,按下去選擇 Logs
,就可以看到日誌的資料摟。Dashboard
有什麼有用好玩的功能吧!按下後,會看到剛才的 Sample 資料,點選一下 Web Traffic
進去。這一部分的實作,我們將可以學到:
Add log data
,裡面的 System logs
。curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.9.0-darwin-x86_64.tar.gz
cd filebeat-7.9.0-darwin-x86_64/
filebeat.yml
這個檔案,把我們 EC 的資訊加進去裡面,而其中的 <password>
,就填入剛才下載下來 EC 的帳號密碼。cloud.id: "test_logging:YXNpYS1lYXN0MS5nY3AuZWxhc3RpYy1jbG91ZC5jb20kOWE3ZjdjMzkzYjY0NGNkZWE3ZTM5Y2JjZjZjYTNiZGIkYmY2MTcyMDlmZmVmNDM3MWE0NWE0YzEzMWQwYzg3M2M="
cloud.auth: "elastic:<password>"
./filebeat modules enable system
setup
指令來讀取 Kibana 儀表板;若已經連接過儀表板,就直接執行 Filebeat 就可以了。# 第一次連結才需要執行
./filebeat setup
# 啟動 Filebeat
./filebeat -e
Check data
,檢查連結是否正確,這樣就差不多啦!接下來就是視覺化資料的部分了。Visualize
選進去,裡面也有各式各樣的視覺化(Visualizations)任君挑選!前面的實作是一般常見的日誌格式,可以輕鬆的藉由 Filebeat 送進 ES 做分析,然而大人的世界總是這麼地複雜,如果格式不是那麼單純的話,那該怎麼辦呢?沒關係,大人的問題就用大人的方法來解決吧!嘿嘿嘿嘿...
這一部分的實作,我們將可以學到:
Upload data from log file
。Grok pattern
部分,是使用機器學習將上傳的日誌內容做分析,可以想像成是一種類似正規表示法(Regular Expression)的方式,這邊也可以體會到機器學習的妙用啊!我們試著自己修改部分設定,按下 Override settings
。Apply
。Grok pattern
的部分,最後面依據我們的修改變成了 linenumber 了!接著我們要將 myapp.log 檔案輸入進去,按下畫面左下角的 Import
按鈕。Import
按鈕,Create Filebeat configuration
,來看看 Data Visualizer 產生的組態設定吧!filebeat.yml
檔案,在下面的輸入設定區添加如下內容,路徑 path
的部分,就填上一開始下載 myapp.log 檔案存放的路徑。Logs
,把想看的 Log indices 改成剛才建立的 myapp_log。大功告成~可喜可賀!有沒有注意到日誌檔案紀錄的內容,時間都集中發生在早上 6:00 左右,莫非...日誌也有早起的習慣嗎!?哈哈哈哈哈!!!
哇!沒想到官網寫 15 分鐘的影片內容,看完整理之後,竟然有這麼多啊...第二天就這麼硬,後面情況不太樂觀啊!!!能看完本篇的你,相信一定也是非常有病不簡單,了不起!
今天我們學到了如何將日誌,透過本地端的 Filebeat 與雲端的 Elastic 和 Kibana 連接,送進 EC 上做分析和視覺化結果,明天我們將要來了解指標(Metrics)是蝦米東東!