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