<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、前言 日志分析是目前重要的系統調試和問題排查的重要手段之一,而目前分布式系統由于實例和機器眾多,所以構建一套統一日志系統是非常必要的;ELK提供了一整套解決方案,并且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用,是目前的主流選擇之一。 本文主要介紹如何實現一套`ELK日志系統`同時給**多套環境**、**多個系統**共同使用/測試,并實現相互之間的數據與視圖相互**隔離**互不影響。 ## 二、隔離方式 常見的`ELK`架構如下圖所示,分別由`Elasticsearch`、`Logstash`、`Kibana`與`FileBeat`組成。 ![](https://img.kancloud.cn/b7/95/b79543117fd52becd4f338498209ece3_1355x706.png) 分別在每個應用服務器里部署一個`FileBeat`組件作為日志收集器,通過輸入插件從文件中獲取數據,然后傳輸給`Logstash`將通過過濾插件加工并結構化處理日志數據后發送至`Elasticsearch`存儲,最后通過`Kibana`進行可視化展示分析。 > 需要對上圖中`ELK`的各個組件分別做**隔離**處理 ### 2.1. FileBeat隔離 由于每臺機器上都會部署一個`Beat`實例作為日志收集,所以`FileBeat`本身無需做任何隔離配置,但是作為數據的入口需要把所屬**租戶**相關的信息傳遞給下游,如下圖所示 ![](https://img.kancloud.cn/68/31/683198d547dfc99a558ca7f1647e192d_635x425.png) > 通過 project(項目名) 和 env(環境) 作為**租戶**隔離標識 ### 2.2. Logstash隔離 主要是每個項目的日志格式可能會不一樣,所以會存在不同的個性化配置文件,這個**日志解析配置文件**需要定義隔離規則進行分離; 使用以下命令啟動`logstash`指定`config/conf/`為配置存放目錄,并指定配置文件熱加載。 ~~~ bin/logstash -f config/conf/ --config.reload.automatic ~~~ 日志解析配置文件隔離方法可參考下圖方式: ![](https://img.kancloud.cn/8e/af/8eaff6aa35dd56a9334b9e8fa5ea2f72_613x81.png) **(1)01-input-beats.conf** 為通用**輸入**配置,每個租戶共享,用于接收來自 Filebeat 的數據 ~~~ input { beats { port => 5044 } } ~~~ **(2)02-output-es.conf** 為通用**輸出**配置,每個租戶共享,用于把日志數據按照定義好的**索引命名規則**創建索引寫入到es中 > 需要在數據來源中添加`project`、`env`和`docType`三個字段分別代表項目名、環境與日志類型 ~~~ output { elasticsearch { hosts => ["localhost"] user => "elastic" password => "changeme" index => "%{[fields][project]}-%{[fields][env]}-%{[fields][docType]}-%{+YYYY.MM.dd}" } } ~~~ > ip、用戶名和密碼按實際情況修改 **(3)mp.conf** 為個性化**日志解析**配置,每個租戶單獨新建一個配置文件配置自己的`filter`內容 ~~~ filter { if [fields][project] == "mp" and [fields][env] == "pre" and [fields][docType] == "syslog" { grok { .......... } } } ~~~ > **PS**:必需增加`if`語句來確認是否屬于自己租戶的日志數據! ### 2.3. Elasticsearch隔離 通過不同的索引命名,創建各自獨立的索引實現物理隔離;由前面的`Logstash`在結構化數據后生成索引時,已自動通過`Filebeat`的入參變量動態生成規定的索引名。 索引的命名規則為:${項目名}-${環境}-${日志類型}-%{+YYYY.MM.dd} > 例如:mp-pre-syslog-2020.12.01 ### 2.4. Kibana隔離 可通過多工作區的方式進行隔離,每個租戶創建自己獨立的工作空間,用于隔離自己的索引數據、展示視圖等對象,并且**相互不可見**。 工作區的配置流程如下: 1. 創建工作區 2. 創建角色(配置權限) 3. 創建用戶(關聯角色) #### 2.4.1 創建工作空間 ##### 2.4.1.1 超級管理員登錄 使用超級管理員賬號`elastic`登錄Kibana,選擇**默認工作區** ![](https://img.kancloud.cn/c6/74/c674eb4f715907918f6b1fe0f3626a0b_984x867.png) ##### 2.4.1.2 進入管理頁面 ![](https://img.kancloud.cn/60/93/60937a391b8473e6bce04ba8e9e5d679_323x773.png) ##### 2.4.1.3 創建工作空間 創建工作區,并可定制顯示的功能點(默認全部顯示) ![](https://img.kancloud.cn/23/db/23dbdba141e40b828da986e2d98cc183_2509x1005.png) #### 2.4.2 創建角色綁定工作空間 創建一個新的角色,并分配對應的`索引權限`與`工作區權限`等權限給該角色 ![](https://img.kancloud.cn/72/aa/72aacca3fda16128ec8d054093b632bf_2375x956.png) #### 2.4.3 創建用戶 創建用戶,并綁定自己`工作空間`下的角色 ![](https://img.kancloud.cn/20/3c/203c3434bcd53ef3f84c26e60bfd41af_1726x1165.png) > **PS**:該用戶只能看到自己所屬`工作區`下的`索引`和`儀表板`等對象 ## 三、總結 每個**租戶**需對`ELK`的各個組件分別做**隔離**處理 1. **Filebeat**:負責把區分**租戶**相關的信息傳遞給下游 2. **Logstash**:獨立分開每個租戶的個性化`Filter`配置文件 3. **Elasticsearch**:通過規范的索引命名,各租戶獨立的創建索引實現物理隔離 4. **Kibana**:通過多工作區的方式進行隔離,數據與儀表板等互不可見 > 隔離步驟雖然有點繁瑣,但是后期大家可以自行開發產品化日志系統,把上述的步驟放在圖形化界面上操作實現。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看