日誌分析是目前重要的系統除錯和問題排查的重要手段之一,而目前分布式系統由於例項和機器眾多,所以構建一套統一日誌系統是非常必要的;elk提供了一整套解決方案,並且都是開源軟體,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用,是目前的主流選擇之一。
本文主要介紹如何實現一套elk日誌系統
同時給多套環境、多個系統共同使用/測試,並實現相互之間的資料與檢視相互隔離互不影響。
常見的elk
架構如下圖所示,分別由elasticsearch
、logstash
、kibana
與filebeat
組成。
分別在每個應用伺服器裡部署乙個filebeat
元件作為日誌收集器,通過輸入外掛程式從檔案中獲取資料,然後傳輸給logstash
將通過過濾外掛程式加工並結構化處理日誌資料後傳送至elasticsearch
儲存,最後通過kibana
進行視覺化展示分析。
ps:需要對上圖中elk
的各個元件分別做隔離處理
由於每台機器上都會部署乙個beat
例項作為日誌收集,所以filebeat
本身無需做任何隔離配置,但是作為資料的入口需要把所屬租戶相關的資訊傳遞給下游,如下圖所示
通過 project(專案名) 和 env(環境) 作為租戶隔離標識主要是每個專案的日誌格式可能會不一樣,所以會存在不同的個性化配置檔案,這個日誌解析配置檔案需要定義隔離規則進行分離;
使用以下命令啟動logstash
指定config/conf/
為配置存放目錄,並指定配置檔案熱載入。
為通用輸入配置,每個租戶共享,用於接收來自 filebeat 的資料
input
}
(2)02-output-es.conf為通用輸出配置,每個租戶共享,用於把日誌資料按照定義好的索引命名規則建立索引寫入到es中
需要在資料**中新增project
、env
和doctype
三個字段分別代表專案名、環境與日誌型別
output -%-%-%"
}}
ip、使用者名稱和密碼按實際情況修改(3)mp.conf為個性化日誌解析配置,每個租戶單獨新建乙個配置檔案配置自己的
filter
內容
filter
}}
ps:必需增加if
語句來確認是否屬於自己租戶的日誌資料!
通過不同的索引命名,建立各自獨立的索引實現物理隔離;由前面的logstash
在結構化資料後生成索引時,已自動通過filebeat
的入參變數動態生成規定的索引名。
索引的命名規則為:$-$-$-%
例如:mp-pre-syslog-2020.12.01可通過多工作區的方式進行隔離,每個租戶建立自己獨立的工作空間,用於隔離自己的索引資料、展示檢視等物件,並且相互不可見。
工作區的配置流程如下:
建立工作區
建立角色(配置許可權)
建立使用者(關聯角色)
2.3.1 建立工作空間
2.3.1.1 超級管理員登入
使用超級管理員賬號elastic
登入kibana,選擇預設工作區
2.3.1.2 進入管理頁面
2.3.1.3 建立工作空間
建立工作區,並可定製顯示的功能點(預設全部顯示)
2.3.2 建立角色繫結工作空間
建立乙個新的角色,並分配對應的索引許可權
與工作區許可權
等許可權給該角色
2.3.3 建立使用者
建立使用者,並繫結自己工作空間
下的角色
ps:該使用者只能看到自己所屬每個租戶需對工作區
下的索引
和儀表板
等物件
elk
的各個元件分別做隔離處理
logstash:獨立分開每個租戶的個性化filter
配置檔案
elasticsearch:通過規範的索引命名,各租戶獨立的建立索引實現物理隔離
kibana:通過多工作區的方式進行隔離,資料與儀表板等互不可見
掃碼關注有驚喜!
ES多租戶方案調研
如上圖所示,現有索引的邏輯為 1 對於每乙個使用者的每一種非結構化資料,都建立乙個對應的索引user1 log index1 2 對於每乙個索引,預設為乙個分片,副本數量為1 根據現有的邏輯,可以計算得到 單個集群中的索參數量 使用者1 使用者1使用的資料型別數量 使用者2 使用者2使用的資料型別數...
多租戶mysql架構 關於多租戶架構
多租戶架構能使oracle資料庫可用作多租戶容器資料庫 cdb 乙個多租戶容器資料庫 cdb 包含0個或多個自定義的可插拔資料庫 pdbs pdb是乙個包含schemas,schema objects,nonschema objects的集合。在12c之前,所有的oracle資料庫都是非cdb。1....
Hbase多租戶實現方案 資源限制 quotas
hbase多租戶實現方案 資源限制 quotas 上次整理了hbasde多租戶基於namespace的許可權管理實現方案,對於一些應用場景,基於namespace許可權的多租戶還不能夠很好的滿足業務的需求。業務有時候不單單需要基於許可權的多租戶,有時候還需要更複雜的基於資源限制排程的多租戶,以滿足在...