-
Who Am I?
- 喬叔 (Joe Wu)
- Software Developer: 20y+ Exp.
- Software Dev Team Manager: Team Coach & Agile Development (CSPO & CSM)
- Entrepreneur: KiriTech, OneDoggo, SolFren
- Dog slave - ig: @mixququ
-
Elastic Stack Expert
- 9y+ Elasticsearch 實戰經驗
- 6y+ Elastic Stack 教育訓練 & 顧問服務經驗
- 2018, Taiwan 1st Elastic Certified Engineer
- 2021, Elastic Certified Observability Engineer
- iThome 鐵人賽 13th (Elastic Stack on Cloud) & 14th (DevOps) 冠軍
- 2021, 2022 Elastic Contributor Silver Award
- 喬叔帶你上手Elastic Stack:Elasticsearch的最佳實踐與最佳化技巧
-
Elastic Certification 簡介
-
Elastic Certification 的種類
(https://www.elastic.co/training/certification)
- Elastic Certified Engineer
Elasticsearch 的使用專家 (管理 Cluster, 設計 Indexing & Search Solution)
- Elastic Certified Observability Engineer
收集與管理 logs, metrics, APM traces 以及使用這些資料進行問題排查。
- Elastic Certified Analyst
Kibana 的資料分析與視覺化專家
(還沒去考,這次無法分享)
-
考試的費用
- Elastic Certified Engineer: $400 USD per attempt
- Elastic Certified Observability Engineer: $400 USD per attempt
- Elastic Certified Analyst: $300 USD per attempt
- 購物車結帳了之後,1 年之內要考完
- 有效期限:二年之後會過期,過期前可以考另一張證照來延長期限
-
為什麼想考? 什麼樣的人適合考?
-
我自己的心路歷程
- Elastic Certified Engineer: 自己教 & 用 ES 多年了,出了認證,不考嗎?
- Elastic Certified Observability Engineer: 參加鐵人賽順便考,一舉兩得,也評估開設新課程。
-
你可以參考的想法
- 市場需求 (DB-Engines Search Engines 排名)
- 稀缺性:這個證照其實不好考,絕對是實力的證明,我在招募 Elasticsearch 的人才,若有這證照我就會直接相信他有一定的實力。
- 價值:在對岸的大型企業有在找搜尋人才的,年薪 300 萬台幣以上,這個認證有加不少分
(台灣...要看產業別與市場需求...)
- Developer? SRE? Operator? IT? Tech Lead?
- 專業能力提升:只要有用到 Elasticsearch 其實就建議可以考,透過考試會讓你對這個技術更深層的掌握。
-
考試的準備
-
考試的重點
- 考的是"實戰能力"而不只是"懂原理"
(所以可以查看官方文件)
- 實際動手配置、操作、完成指定目標的能力
- 故障的排解
-
認真檢視每一項考試的 Topics
- Elastic Certified Engineer Exam 網頁
- Elastic Certified Observability Engineer Exam 網頁
- 準備到什麼程度?
看到每一個 Topic 裡的 Item,你都很清楚知道這是做什麼的、怎麼運作、裡面大約有哪些細節、而且"你都有動手操作過"
-
準備的方式
- 確認使用的版本 (官方的 Certification FAQ)
-
會使用+熟悉官方文件
- 考試時沒有"谷哥"可以用,你知道怎麼找到官方文件的位置嗎?
- 善用正確的搜尋方式
(記得要使用到對應的版本)
-
熟悉 Kibana 的操作
- 這是你一定要會,而且也是當下最好用的工具了
-
Dev Tools
- - 不少題目會直接要你 paste Dev Tools 的 request body。
- 善用各種快速鍵
- execute (ctrl/cmd + enter)
- auto-indent (ctrl/cmd + i)
-
Elastic 官方網站 Free Training
- https://www.elastic.co/training/free
- Observability Fundamentals 2 小時的免費訓練
-
Youtube Video
- 官方 YouTube: Preparing for the Elastic Certified XXX Exam 系列
- 官方有些 Training Video 是有提供 Preview 版 (長達 1 個多小時…),也能有不錯的收獲
- 喬叔整理了播放清單:https://www.youtube.com/playlist?list=PLvrFZXi4F_cobpZSJwQSIa47M1fVMtDds
-
官方的 YouTube Channels
- https://www.youtube.com/c/Elastic
- https://www.youtube.com/c/OfficialElasticCommunity
- YouTube 都英文的,英文不夠好?
-
系統化的課程
- 原廠 USD $2200 起跳,還只是 Video 沒有真人能問問題。
- 喬叔的課 (https://training.onedoggo.com),高 C/P 值的 Elastic 教育訓練!
-
報名與預約考試時間
- 1. 上網購買考試
2. 透過 Email 連到 TrueAbility 網站註冊,預約時間,並選擇使用 Examity 考試平台。
3. Examity 會要你先上傳 ID, 設定安全問題,確認時區。
4. 預約時間 (最好提前二天以上預約)
(網站會有 Computer Requirement Check)
-
考試過程的經驗
- 身份+環境檢查 (很嚴格、英文溝通)
- 我第一次考試時,書桌上的小書架上有其他東西,被要求清空,花了 20 分鐘在檢查環境,而且這些時間也被計算在考試的 3 小時內…
- 全程遠端被監控 (WebCam + 桌面操作畫面)
-
考試環境
- 只會用到 Web Browser (Chrome)
- CentOS VM
- Mac copy/paste 要自己切換成 ctrl+c & ctrl+v
- Kibana 的 Dev Tools 快速鍵也記得要改成用 ctrl
- 要熟悉 Linux 的基本操作,包含 SSH、文字編輯器(vim)
-
考試的過程
- 時間:3小時
- Elastic Certified Engineer 考試時我遇到的"題組"數量: 12
- Elastic Certified Observability Engineer 考試時我遇到的"題組"數量: 10
-
應試的技巧
- 先把題目都看過一遍,有個底,做時間分配
- 卡住太久的先跳過,最後再回來
- 千萬不要交白卷,不能放棄!!!
- 看清楚題目,大部份貼上 Dev Tools 的 request JSON body,但有遇到過有一題要包含 header (POST /index/xxx)
-
你有可能會遇到類似的題目
-
Elastic Certified Engineer
-
有 4 個 Cluster,讓 Cluster 都能正常運作…
- 1. 沒啟動的 Cluster 要自己手動啟動
2. 紅燈的 Cluster 要能自己找到為什麼 Shard 沒辦法正確的被 Allocation (使用 allocation explain API),配合 elasticsearch.yml config 的檢查,發現居然有一個設定打錯字! rakc -> rack,改完要重啟。
3. 某個 index 的 replica shard 還是無法 allocate,發現 index setting 裡的 routing 有指定 allocation.include,但發現機器數量根本不夠用,只能多加上別的 attribute。
-
把 index_a 資料 re-index 到新的 index_b 裡
- 1. 新的 index 裡要增加一個數值欄位,值是 index_a 的 field_x 的值的長度。
2. 新的 index 裡要增加一個字串欄位,並且將 field_y 裡的文字內容,以空隔切開,變成 Array 存放在裡面。(例如:"foo bar" 要變成 ["foo", "bar"]。
-
讓 match_phrase 如何 search "and" 和 "&" 時得到同樣的結果
- - 你會知道 match_phrase 是 term based query,比對最小單位是 term,所以要從 term 下手。
- 要掌握 Index Analyzer 的設定方式。
- 懂得用 _analyze 來查看執行結果。
- 要知道 standard tokenizer 會將 "&" 移掉,所以要換 whitespace tokenizer。
- 配合用 Synonym Token Filter 來將 "&" 和 "and" 設成同義字。
- 指定 Search Template 的名字,以及查詢的 query + params 和預期的結果,要你寫好 Search Template。
- 安裝x-pack(檔案已下載好),設定密碼,建新的role
& user,指派 role 給 user。(目前的新版 security 已不用另外安裝了)
-
Aggregation 的應用情境
- - 基本的 Metrics Aggregation (例如計算某個欄位的平均值)
- 執行 Aggregation 時,要配合 Filter,過濾 tags 這個欄位的 array 值只能有 1 個 (會要寫 script 取 array.length)
- 配合 Terms Bucketing Aggregation 取前五名的 Terms。
-
Query 的應用情境
- - 知道如何處理 Nested Object (這在 ES 是特殊的資料結構,要在 Mapping 宣告),並且會使用 Nested Query。
- 使用 Query String 查詢,並且同時查詢四個不同的欄位,並且給予不同的權重。
- 設置 Cross Cluster Search,產生指定的 Cross Cluster Query。
- 還可能會遇到陷阱,某個 Cluster 是掛掉的,要先解決問題才能正常的取得執行結果…
-
Elastic Certified Observability Engineer
-
架設好 APM,以收集某個 Application APM Client 所傳送的資訊,同時也要收集前端的 RUM (Real-time User Monitoring),並取得指定的數據值。
- 1. SSH 進入 APM server 的機器,設定好 ES 的配置,啟用 RUM,啟動 APM server。
2. 回到 Kibana 取得題目的答案:哪個 Service 的 avg duration 最高?
-
收集某個 Service 的 System Metrics,並且設置 Machine Learning Jobs
- Setup Metricbeat + System Module
1. 針對指定的某個 Service,SSH 進去,設定 Metricbeat,並且啟用 System Module。
2. 回到 Kibana 確認 Metrics 正常寫入 ES,並且在 Kibana 設定對應的三種基本 Machine Learning Jobs。
-
收集 Frontend 寫的 log,並且設置 Alert,針對指定的時間+出現特定的關鍵字,就要發 Alert。
- 1. SSH 到指定 Frontend 的機器,設定 FileBeat,收集機器上的 log files,傳送到 ES。
2. 回到 Kibana 確認資料有收到,並且依需求建立 Alert,將結果寫到指定的 Kibana server log 之中。
-
替 4 個指定的服務設定 Heartbeat Monitoring,並且設定 Alert。
- 設定 Observability 中的 Uptime
1. 在指定的 host 上,配置 heartbeat,建立好指定的四種服務的 Heartbeat monitors (HTTP + TCP + 2個 ICMP),
2. 在 Kibana 上確認 Uptime 有收集到這些資訊,並且設定好 Alert 將警報寫到 Kibana server log。
-
針對指定的服務所產生的 Log 進行特殊 ETL 加工處理,再寫到 ES
- - 針對特定格式的 json log 使用 filebeat 送到 es。
- 會要求 under_root 配置。
- 移除指定的欄位 dataset.fieldtype,並將某一個 log.level 要寫成 object
- 因為預設會是 log.level 整個字串當成欄位名字
(我最後用 processors: rename + copy + remove 完成,差點要用 ingest pipeline 處理...)
- 設置 Machine Learning Job
依指定的 time bucket: 1 min, 依照特定的欄位,建立 anomaly detection job。
-
依已收集到的某些資料,建立 Kibana Dashboard
- - 針對 index: metricbeat* ,建立一個指定名字的 dashboard
- 裡面有兩個圖
一個 line chart, 用 percentile + 10 sec period,拉 system.load.1 + 5 + 10 三條線。
- 另一個是 number of process 的數字。(我覺得這應該是要 unique count,所以是使用 unique count 拉 system.process.pid)
-
替不斷寫入的資料,設定 ILM (Index Lifecycle Management),做好生命週期的管理
- 針對 filebeat* 的資料,設定
1. Hot phase rollover 250G or 24hr rollover
2. Warm phase enabled 但是進入的時間應該要保持 0 天,也就是 rollover 後馬上進入,並設定 force merge: 1 & replica: 1
3. Cold phase,48天之後進入,並且要將 index frozen。
只要 filebeat 有設定好 index template + ilm,其實只要進去改原先的 ilm。
多檢查 index template 的設定都有正常使用 ilm,才會讓新產生的 index 也套用到 ilm。
-
將 ES 和 Kibana 的 monitoring 資料送到 ES stack monitoring
- - 將 ES + Kibana 的 metricbeat 啟用 modules 收集 -xpack 的 monitoring 資料。
- 有強調不要送 system metrics. 要記得 disable。
題目有說不用 ingesting logs,不過我時間還剩蠻多,就還是有把 logs 透過 filebeat 傳入。 (錯誤示範 XD)
-
FAQ
- https://www.elastic.co/training/certification/faq
-
很難通過嗎?
- 不會公佈成績,只有通過或不通過
- 網路上看到,對岸 Elastic 中文社群的第一大佬第一次考就沒通過…
- 認證推出 2 年後,大陸社群調查不到 100 人取得認證。
- 大陸網友普查,至少要 80% 全對,剩下 20% 也一定要有部份答對才有機會通過。
也就是每一題都要作答,當中有小錯誤還是可以過的,但有任一題沒答的基本上就不會通過。
- 我的經驗來評難度 1~10 (10是最難)
Elastic Certified Engineer: 9
Elastic Certified Observability Engineer: 7
-
考試費用不便宜,除了ㄠ公司補助,有沒有其他的折扣?
- 2018 第一次考的時候: 沒過可免費重考一次 (但我沒用到,浪費了…)
- 考完的下個月,為了促銷,半價……
- 這些都不定期的,目前好像沒有折扣
- [情報] 得到 Elastic Contributor Program 銀牌或金牌,可免費考一次。(每年 1 月結算一次)
-
最後一件重要的事
- Elasticsearch 基礎實務班
2022.07.02(六) & 07.03(日)
- Elasticsearch 進階運維班
2022.07.23(六) & 07.30(六)
- 5 月底前有早鳥 9 折優惠!
- https://training.onedoggo.com
- Facebook 粉絲頁:喬叔 - Elastic Stack 技術交流
https://www.facebook.com/Joe.ElasticStack
- AMA
(Ask Me Anything)
- Floating Topic