如何透過 Amazon ElasticSearch 進行資料分析
在這資訊量爆炸的時代,許多公司紛紛都透過大數據分析,優化營運流程,打造更好的使用者體驗。而在進行大數據分析時,有許多軟體工具可以做選擇,其中 ElasticSearch 為當今火紅的工具之一,像是 Netflix、Tinder⋯等企業都正在使用,到底為什麼能夠在數據分析佔有一席之地呢?讓我們一探究竟吧!
什麼是 ElasticSearch?
Elasticsearch(ES)是一個開源的分散式搜尋及分析引擎,近乎 Real-time 的儲存、檢索資料,且支援許多資料類型,包括文字、數字、地理空間、結構化和非結構化資料。可以擴充套件到上百臺伺服器,處理 PB 等級的資料。
ElasticSearch 具有以下優勢:
- 分散式儲存:能夠在多台機器上執行 ES 程序,意味著如果資料量越來越多時,ES 可以快速地擴展機器(節點),同時具備資料冗餘(Redundancy)的特性,能輕鬆地進行資料複製。
- 高擴充性:支援許多可以擴充的 plugin。
- RESTful API:可以透過 Restful API,簡單對 ES 做操作。
- 執行速度快:由於 ES 底層是透過 Lucene 建構,是可以達到 Real-time 的效果,也就是資料變更完成後,可以很快變成索引的狀態。
可以使用在哪些場景?
- 日誌處理和分析
- 應用程式效能分析
- 地理空間資料分析
- 安全分析
- 業務分析
什麼是 Amazon ElasticSearch?
Amazon Elasticsearch Service 是 AWS 提供的全託管服務,你可以透過 AWS Console 去配置 ES,不需要去擔心底層的問題,AWS 會自動檢測機器的狀態,當 ES 底下的機器(節點)發生問題時,AWS 會自動替換故障的機器,讓你更專注在開發上。除此之外,內建 Kibana 可以做資料視覺化!
如何操作 Amazon ElasticSearch
一開始進到 Amazon ElasticSearch,選擇需要的版本及部署型態後。就要去設置 Data Node,選擇要開什麼 Instance Type、要開在哪幾個 AZ 以及每個 AZ 底下要開幾個機器(節點),像這些 Infra 設定僅需要透過 Console 點選就可以取得運算資源,免去 Infra 準備的麻煩。
以下操作以 7.10 版本為例,在不同版本下功能設定可能有所差異。
以及輕鬆配置每個節點需要的儲存空間。
ES 在網路部署提供了兩種方式:
- 放在 VPC 裡面:可以透過 Private IP 去做溝通,透過 Security Group 做網路存取控制。
- Public Access:可以透過 Access policy 去限制存取。
在權限控管方面,可以指定 IAM User 為 Master User 或是直接創一個 Master User。
注意:如果選擇 IAM User 為 Master User,想使用 Kibana,必須要啟用 Amazon Cognito 或是 SAML 授權認證。
以及透過 ES 的 Access Policy 去管控權限,其實就跟 IAM Policy 設定的方式一樣,在這裡 AWS 提供四種選項:
- 撰寫 JSON policy
- 透過點選的方式編輯 policy
- 全開
- 複製其他 Domain 的 policy
可以根據需求去選擇。
想透過 Amazon ElasticSearch 上的 Kibana 進行資料分析,不用額外去安裝 Kibana,Amazon ElasticSearch 直接內建!ES 創建完成後,在控制台上看到 Kibana 的連結,就可以進到 Kibana 的介面。
如果要透過 Kibana 做資料視覺化,就要在設定如何讓資料寫入,完成後,索引要分析的資料,選擇要呈現的模樣,就可以達成資料視覺化的效果!
Data Source 是來自 AWS 上的 VPC Flow logs,可以從圖表看到流量是透過哪個 Security Group、Port、哪個地區的 IP 進來到 VPC 環境,隨時監控環境是否有異常的事件發生。
結論
AWS ElasticSearch 提供簡易的方式,讓使用者更快速部署 ES,也能透過 Policy 的方式進行權限控管,安全地進行資料分析。不僅如此,假設資料存放在 Amazon Kinesis Data Firehose 或 Amazon CloudWatch Logs,可以在該服務下選擇將資料推送到 ElasticSearch,那如果是 Amazon S3、Amazon DynamoDB 或Amazon Kinesis Data Streams,也可以透過 AWS Lambda function 將資料寫入 ElasticSearch,達到 Real-time 的資料分析。當某個資料異常,超過閥值時,還可以透過 Alert 的方式通知管理人員,這也是為什麼那麼多人喜愛透過 Amazon ElasticSearch 進行營運分析的原因。