Skip to content

antony@notes:~/data-platform$ cat "ELK-Overview.md"

ELK-Overview

2022-08-07· data-platform ·系統工程

ELK-Overview

[TOC]


ELK Stack Architecture

What is ELK Stack ?

ELK Stack 統一為 log 收集儲存過濾和視覺畫的工具

logstash 可以預處理與收集資料 Beats 收吃資料,功耗較小


What is Elasticsearch?

在企業遇到的資料主要會分為結構化資料與非結構化資料

  • 結構化資料
    • 具有固定的格式以及有限長度的資料
    • 也就是 Database
  • 非結構化資料
    • 長度不一定且沒有固定格式的資料
    • ex. email的內容

Elasticsearch Introduction

  • Apache License
    • Basic Apache Lucene
  • Flexible Architecture
    • RESTful API
    • JSON Format
      • 他的格式是一個物件,前提開頭和結尾都是大括號,使用逗號做分割,key、value 之間用 冒號 連結,每組 key、value 之間是由 逗號 分割
      • {
        "region":  "US",
        "age": 30
        }
  • Distributed
    • Scalability
    • High Availability
  • Document Oriented (文件導向儲存體)
    • Schema Free (不需預先定義 Schema)
      • Storage 本身會去偵測資料的樣子,然後定義一個基本的版本
  • Near Realtime Search (近即時收尋)
    • Full-text Search (全文檢索,像是在查字典)
      • 資料進來時,會先建立資料索引,當資料索引建立好後,在資料量很大時,搜索的速度會優於傳統式資料庫按照順序一行一行在掃描
      • 平常在網站上搜尋也是全文檢索

Elasticsearch 裡的名詞解釋

ElasticsearchRDB
IndexDatabase
TypeTable
DocumentRow(Record)
FieldColumn
MappingSchema
Everything is indexedIndex
ShardPartition
Query DSLSQL
TextText
Replica
NodeInstance
ClusterCluster

Elasticsearch Node

  • Master
    • Coordinator Node
    • Create/Delete Index
    • 本身不做 Document 處理,會丟給 Data Node 處理,資源需求相對 Data Node 低
    • 會定期發 ping 確認其他 Node 的存在
    • Master 預設可以當 Data node,所以我們要把它關掉,以免他太忙
  • Data
    • Storage Data
    • 負責儲存和查詢資料
    • 需要的硬體資源 cpu memory 和硬碟的資源較高
  • Ingest
    • Data Process
    • 在數據儲存之前,它負責做數據的預處理
  • Coordinating
    • 當 master 要新增或刪除資料時,會讓 Data node 作處理,而 Data node 處理完的資料,就會由 Coordinating node 匯總處理完的資料,再傳給 clinet 端
    • Coordinating 本身不負責儲存資料
    • 它的存在可以降低 Master 和 Data 兩個 node 的負擔

Elasticsearch Shard & Replica

  • Shard
    • Index split
    • Shard <= 30G
    • 單個 Shard 盡量在 50 GB 以下
  • Replica
    • High Availability


Elasticsearch Indexing Process

資料進來時,會先存到 memory buffer (),然後每秒會 refresh 到 filesystem cache(Data node 的記憶體裡),最後每30分鐘或 translog 大於512 MB時,會將所有資料寫入硬碟

CharacterFiliters 負責把不同語言的標籤去掉,只保留內容

Tokenizer 分詞器,將資料的詞分割

Token Filter 去掉贅字

translog 相當於 Hadoop 的 etcd ,會紀錄資料新增/修改/刪除的動作,防止資料在傳送的過程中,突然斷電,導致動作中斷


Elasticsearch Inverted Index

Inverted Index 反向索引,讓全文索引加速


Elasticsearch Template & Mapping

  • Template (Refresh頻率、索引名稱、欄名)
    • Setting: index config
      • refresh_interval (根據機器效能和任務需求決定)
    • Mapping: define index and Field
  • Mapping (產生 Schema)
    • Dynamic (自動產生 Schema)
    • Static (自訂 Schema)
      • Default analyzed: standard (預設分詞器: standard)
      • Default doc_value:true (根據相關性分數作排序)
      • Text Type:
    • Text (會經tokenizer處理)
    • keyword (不經tokenizer處理)

反向索引: 從字詞去找文件

  • Example

Elasticsearch Analysis

  • Analyzer
    • Character Filters:
      • HTML Strip Character Filters
      • Mapping Character Filters
      • Pattern Replace Character Filters
    • Tokenizer
      • Standard、Whitespace、Letter…
      • smartch、ik
    • Token Filters
      • Lowercase、Length…


Elasticsearch Hot-Warm

  • Elasticsearch Hot-Warm(冷、暖、熱區的定義)
    • 定義資料的生命週期(Data life-circle)自訂判定條件,減少人為處理流程
    • 依照取用的頻繁程度分別定義資料為
    • “data”:”hot” 熱資料|新增、常用的資料
    • “data”:”warm” 暖資料|過了一段時間,依然有進行存取的資料
    • “data”:”cold” 冷資料|已經長時間未使用的資料

What is Logstash & Beats?

  • 根據現有的欄位做處理產生新的欄位,好處是可以根據結果來做搜尋
  • 可將非結構化的資料變成結構化的資料
  • 通常 Logstash 不會只有一個,會有很多 input 和 output 的插件
    • 資源的數據來源有 log

如果主機直接對連 Logstash ,當 Logstash 壞了,Beats 還是會一直丟資料給 Logstash ,有可能就會造成資料遺失。

在 Logstash 和 Beats 之間,加 Broker layer 資料中繼站,做完彙整後, logstash 會再把資料拉回來,好處是可避免資料遺失。

Logstash Syntax

start_position 時間戳,代表會從檔案的第一筆開始讀一直到最後更新那筆,如果不加就只會讀最後更新那筆 sincedb_path ignore_older => 0 不要忽略資料

Logstash Performance Tuning

Beats Introduction

Data Shippers:

  • Filebeat 收集檔案
  • Metricbeat
  • Packetbeat 收集 http
  • Winlogbeat 收集 windows 的 log
  • Auditbeat 收集人的行為
  • Third Party 第三方插件

Beats Filebeat

Input Harvester 逐行處理資料的程序 Spooler 緩衝處理程序(緩衝區),將每一個Harvester收集到的資料處理過後,output 到 Elasticsearch、Logstash、Kafka和Redis…等

Filebeat Syntax

Logstash|主要任務:將非結構化資料 » 結構化資料,擔任中央數據處理引擎

  • 使用 Java 語言開發,重裝型的資料收集器

Beats|主要任務:抽取、整合資料,擔任前端的資料收割機

  • 使用 go 語言開發,較輕量型的資料收集器
tags: 系統工程