日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Indexing Service實現數據流管理

通過使用阿里云Elasticsearch 7.10內核增強版Indexing Service系列,可以為您實現云托管寫入加速和按流量付費(即您無需按集群峰值寫入吞吐預留資源),能夠極低成本實現海量時序日志分析。本文為您介紹如何基于Indexing Service系列實現數據流管理以及日志場景分析。

背景信息

在復雜業務場景下,海量服務器、物理機、Docker容器、移動設備和IoT傳感器等設備中往往存在著結構分散、種類多樣且規模龐大的各類指標和日志數據,而除了底層系統的各類指標和日志數據外,往往還存在著規模龐大的業務數據,例如用戶行為、行車軌跡等。當面對海量時序數據和日志數據寫入出現性能瓶頸時,您可以根據業務需求選擇使用阿里云Elasticsearch 7.10內核增強版Indexing Service系列,此功能基于讀寫分離架構以及寫入按量付費的Serverless模式,實現了Elasticsearch集群的云端寫入托管和降本提效的目標。

在阿里云Elasticsearch 7.10內核增強版Indexing Service系列中,推薦使用數據流管理,可以幫您實現跨多索引存儲僅追加時間序列數據,為請求提供唯一的命名資源;并且您可以根據關聯的索引模板和Rollover策略實現自動取消托管,從而達到云端托管數據的自動清理和成本優化。數據流管理非常適用于日志、事件、指標和其他連續生成數據的場景。除此之外,您還可以通過使用索引生命周期管理(ILM)定期管理后備索引,幫助您降低成本及開銷。

Elasticsearch集群中既可以存在數據流(Data Stream),也可以存在獨立索引(Index)對象。除系統索引不托管外,其他索引均默認開啟云端托管功能。獨立索引支持增、刪、改、查操作,操作前需要您手動取消云端托管。為了幫助您更好的使用數據流管理云端托管索引,阿里云Elasticsearch控制臺分別提供了數據流管理、索引管理創建索引模板功能模塊,通過白屏化的方式為您實現數據流一站式管理。

使用場景

本文通過將采集到的nginx服務日志數據,寫入到阿里云Elasticsearch 7.10內核增強版Indexing Service系列實例中,通過數據流管理和索引生命周期管理,實現日志數據的分析和檢索。

注意事項

  • 因為數據流寫入依賴時間字段@timestamp,所以請確保寫入數據中存在@timestamp字段的數據,否則數據流寫入過程中會報錯。如果源數據中沒有@timestamp字段數據,您可以使用ingest pipeline指定_ingest.timestamp,獲取元數據值,從而引入@timestamp字段數據。

  • Indexing Service提供了寫入Serverless保護機制,因此使用前請參見使用限制,提前優化配置,以避免使用過程中出現不合規的情況。

  • Indexing Service日志增強版實例與用戶集群進行數據同步時,依賴于apack/cube/metadata/sync任務(可通過GET _cat/tasks?v命令獲取該任務信息),不建議手動清理該任務。如果被清理,請盡快使用POST /_cube/meta/sync命令恢復,否則會影響業務寫入。

操作流程

  1. 步驟一:創建Indexing Service實例

    創建一個阿里云Elasticsearch 7.10內核增強版Indexing Service系列的實例。

  2. 步驟二:創建索引模板

    在使用數據流之前,需要創建索引模板,通過模板對數據流后備索引進行結構配置。

  3. 步驟三:創建數據流

    創建數據流并寫入數據。

  4. 步驟四:管理托管索引

    對數據流或者獨立索引進行云端托管管理。

  5. 步驟五:查看集群信息

    在節點可視化頁面,查看集群當天寫入的總流量以及寫入托管總數量。

  6. 步驟六:分析日志

    在Kibana控制臺中,查看基于Indexing Service實現的數據流管理的實時日志流和實時數據指標。

步驟一:創建Indexing Service實例

購買內核增強版7.10版本,并開通高級增強特性Indexing Service索引構建服務。操作步驟,請參見創建阿里云Elasticsearch實例

說明

開通Indexing Service索引構建服務后,寫入Serverless模塊將按實際寫入流量及托管存儲空間進行按量計費,詳情請參見阿里云ES計費

步驟二:創建索引模板

說明

如果您的業務存在頻繁的Put Mapping操作,為避免消耗大量計算資源,對托管服務穩定性造成影響,建議您寫數據前提前定義索引模板,降低Put Mapping操作對集群穩定性影響。

  1. 登錄阿里云Elasticsearch控制臺
  2. 進入目標實例。
    1. 在頂部菜單欄處,選擇資源組和地域。
    2. Elasticsearch實例中單擊目標實例ID。
  3. 在左側導航欄,選擇配置與管理 > 索引管理中心。

  4. 單擊索引模板管理頁簽。

  5. 單擊創建索引模板。

  6. 可選:創建索引模板面板,參考下圖配置索引生命周期策略。

    說明

    如果您無需對數據流后備索引進行生命周期策略管理,單擊跳過此步即可。

    部分參數說明如下。未提及參數請參考頁面上的具體說明。

    參數

    示例值

    說明

    索引生命周期策略

    新建索引生命周期策略

    • 新建索引生命周期策略:創建新的索引生命周期策略。

      說明

      Indexing Service架構下,不支持在索引生命周期中自定義freeze。

    • 選擇已有索引生命周期策略:集群中存在服務業務邏輯策略,點擊下拉框選擇即可。

    策略名稱

    nginx_policy

    新建索引生命周期策略時,需要自定義輸入;選擇已有索引生命周期策略時,需要在下拉列表中選擇集群中已存在的生命周期策略。

    取消托管時間

    3天

    默認3天取消托管,請根據具體業務場景評估取消托管時間。

    刪除時間

    7天

    設置索引保留多少天后會被自動刪除。

    本步驟使用的命令示例如下。

    {      
            "policy": {
                "phases": {
                    "hot": {
                        "min_age": "0s",
                        "actions": {
                            "cube_unfollow": {
                                "max_age": "3d",
                                "force_merge": true,
                                "force": false,
                                "read_only": true
                            },
                            "rollover": {
                                "max_size": "30gb",
                                "max_age": "1d",
                                "max_docs": 10000
                            },
                            "set_priority": {
                                "priority": 1000
                            }
                        }
                    },
                    "delete": {
                        "min_age": "7d",
                        "actions": {
                            "delete": {
                                "delete_searchable_snapshot": true
                            }
                        }
                    }
                }
            }
    }

    以上新建的索引生命周期策略表示,當托管索引滿足以下任意條件時,將觸發滾動更新,生成新的后備索引,原索引保留7天后將自動刪除:

    • 寫入文件數超過1000000。

    • 索引大小達到30 GB。

    • 索引從創建開始滿1天。

  7. 單擊保存并下一步,配置索引模板信息。

    參數

    示例值

    說明

    模板名稱

    nginx_telplate

    定義的模板名稱。

    索引模式

    nginx-*

    定義索引模式,使用通配符(*)表達式匹配數據流及索引名稱,不允許使用空格和字符\/?"<>|。

    創建數據流

    開啟

    開啟數據流模式。如果未開啟,索引模式無法生成數據流。詳細信息,請參見Data stream。

    優先級

    100

    定義模板優先級,數值越大,優先級越高。

    索引生命周期策略

    nginx_policy

    只能引用一個索引生命周期策略。

    內容模板配置

    Settings配置如下:

    {
       "index.number_of_replicas": "1",
       "index.number_of_shards": "6",
       "index.refresh_interval": "5s"
    }

    配置索引Settings、MappingsAliases組合內容模板。

    重要
    • 寫入到數據流中的每個文檔都要求包含一個@timestamp字段,建議在索引模板中為@timestamp字段指定映射。如果不指定,該字段會映射為Elasticsearch中的date或者date_nanos類型的字段。

    • 配置格式嚴格按照Elastic官方配置。

    本步驟使用的命令示例值如下:

    PUT /_index_template/nginx_telplate
    {
      "index_patterns": [ "nginx-*" ],
      "data_stream": { },
      "template": {
        "settings": {
          "index.number_of_replicas": "1",
          "index.number_of_shards": "6",
          "index.refresh_interval": "5s",
          "index.lifecycle.name": "nginx_policy",
          "index.apack.cube.following_index": true
        }
      },
      "priority": 100
    }
    重要
    • 通過命令創建模板時,務必將index.apack.cube.following_index設置為true。

    • 云端托管集群上index.refresh_interval參數已默認配置最優,手動配置不生效。如果需要通過手動配置index.refresh_interval生效,需要先取消云托管功能。

  8. 單擊確認,索引模板列表中會顯示您創建的模板。

步驟三:創建數據流

  1. 索引管理中心頁面,單擊數據流管理頁簽。

  2. 單擊創建數據流。

  3. 創建數據流面板,單擊預覽已有索引模板,根據對應的索引模板,輸入可匹配索引模板的數據流名稱。

    本步驟使用的命令示例值如下。

    PUT /_data_stream/nginx-log
    重要
    • 創建數據流之前必須存在數據流可匹配的索引模板,該模板包含用于配置數據流的后備索引映射及設置。

    • 數據流名稱支持以短劃線(-)結尾,不支持通配符星號(*)。

  4. 單擊確定,系統會自動生成數據流及后備索引。

    每個數據流創建成功后,都會自動生成一個統一格式的后備索引,格式如下。

    .ds-<data-stream>-<yyyy.MM.dd>-<generation>

    參數

    說明

    .ds

    隱藏索引名統一標識,數據流生成的后備索引名,默認均以.ds開頭。

    <data-stream>

    數據流名稱。

    <yyyy.MM.dd>

    后備索引創建日期。

    <generation>

    每個數據流都會生成一個六位數,默認從000001開始的累積整數值,generation值更大的后備索引包含更多新數據。

  5. 寫入數據,具體操作請參見最佳實踐。

    數據寫入過程中,必須帶@timestamp字段,否則寫入失敗。本場景采用filebeat+kafka+logstash架構將日志采集寫入到Elasticsearch實例中,采集過程中會自動生成@timestamp字段。命令示例如下。

    POST /nginx-log/_doc/
    {
      "@timestamp": "2099-03-07T11:04:05.000Z",
      "user": {
        "id": "vlb44hny"
      },
      "message": "Login attempt failed"
    }

步驟四:管理托管索引

  1. 索引管理中心頁面,單擊索引管理頁簽,查看處于云托管狀態的索引。

    管理托管索引

    參數

    說明

    僅查看托管中的索引

    系統默認展示集群中的所有索引(不包括系統索引),選擇僅查看托管中的索引后,系統僅展示托管中的索引,幫助您快速獲取處于托管的數據。

    云端托管索引總大小

    當前時刻,正處于云端寫入托管中的索引總大小。

    重要

    云端托管索引總大小為實時變化數值,不是歷史索引總大小。

    索引個數

    當前時刻,正處于云端寫入托管中的索引總個數。 該數值為當前系統中的實時數值。

    重要

    索引個數為實時變化數值,不是歷史索引總個數。

    寫入托管狀態

    • 開啟:該索引的云端寫入托管處于開啟狀態。默認開啟。

    • 關閉:取消該索引的云端寫入托管。支持手動關閉,關閉后不支持開啟。

    說明
    • 手動關閉某一索引的云端寫入托管,數據將直接寫入用戶集群中。請在關閉前確認該索引是否持續有數據寫入,以及用戶集群負載情況,否則可能出現用戶集群負載較高風險。

    • Indexing Service按照寫入托管索引總大小和寫入流量進行按量計費,業務上建議使用數據流(Data Stream)和索引生命周期管理(ILM)滾動策略實現云端托管空間最優化。

    • Indexing Service場景,索引處于托管狀態,不兼容ILM Action中的shrink操作,建議當索引處于未托管狀態時,執行shrink配置。詳細信息,請參見ILM-shrink

    • 在獨立索引的云端寫入托管過程中,索引數據會全量存儲在云托管服務Indexing Service中,將會增加云托管費用。請根據業務使用場景(如索引是否仍有數據寫入)評估是否需要手動關閉該索引的寫入托管。

    說明

    由于數據流nginx-log配置了索引滾動策略,所以在云托管服務上,每次僅保存最新生成的后備索引(本場景中的.ds-nginx-log-2021.04.26-000004),舊的后備索引會自動從云托管上關閉。

  2. 取消索引托管。

    獨立索引或未設置滾動策略的索引將一直在云托管服務保存,需要手動關閉。關閉后,對應索引的寫入托管狀態會處于關閉狀態。關閉獨立索引

    重要
    • 取消云托管后,無法再次開啟云端Indexing Service寫入托管功能。

    • Elasticsearch集群中既可以存在數據流(Data Stream),又可以存在獨立索引(Index)對象,除系統索引不托管外,其他索引均默認開啟托管功能。

    • 您可以通過Indexing Service API獲取更多Indexing Service托管集群信息。

    1. 索引管理頁簽中,單擊對應索引右側寫入托管狀態列下的開啟開關。

    2. 取消托管彈框中,單擊確認

      本步驟對應的命令示例如下。

      POST /.ds-nginx-log-xxx/_cube/unfollow

步驟五:查看集群信息

  1. 進入節點可視化頁面,查看寫入Indexing Service實時寫入流量和數據量信息。

  2. Indexing Service區域,單擊當天寫入總流量,即可查看每小時平均寫入吞吐量的曲線圖。

    每小時寫入平均吞吐量

    說明

    Indexing Service寫入總流量監控為非實時整點展示的靜態趨勢監控圖,監控數據展示延時最長為1小時。例如在14:00~14:59間寫入的總流量,需要等到15:10后,在監控頁面的14:00處獲取。

  3. 單擊查看監控詳情,將跳轉至Grafana監控展示更詳細的監控數據。

    重要

    Grafana的登錄名和密碼請從高級監控報警獲取。

  4. Indexing Service頁面,單擊寫入托管總數據量,即可查看當天寫入托管總數據量。

    當天寫入托管總數據量

    說明

    Indexing Service寫入總流量監控為非實時整點展示的靜態趨勢監控圖,監控數據展示延時最長為1小時,例如在14:00~14:59間寫入的總數據量,需要等到15:10后,在監控頁面的14:00處獲取。

步驟六:分析日志

  1. 登錄目標阿里云Elasticsearch實例的Kibana控制臺,根據頁面提示進入Kibana主頁。
    登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺
    說明 本文以阿里云Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際界面為準。
  2. 創建索引模板。

    1. 單擊左上角的進入kibana。

    2. 在左側導航欄,選擇Management > Stack Management。

    3. Stack Management頁面的Kibana區域,單擊Index Patterns。

    4. 單擊Create index pattern。

    5. Create index pattern頁面的Index pattern name文本框中,輸入索引模板名稱。

      創建索引模板

      說明

      Index pattern name不僅可以指定為數據流名稱,也可以指定為后備索引名稱。

  3. 設置Settings。

    1. 單擊左上角進入kibana。

    2. 在左側導航欄,選擇Observability > Logs。

    3. Logs頁面,單擊Settings頁簽。

    4. Log indices文本框中,輸入數據流名稱。

      本文以nginx-log數據流名稱為例,其他字段的默認配置符合數據流數據要求,可不修改。設置settings

    5. 在右下角,單擊Apply

  4. 獲取實時日志流數據。

    1. Logs頁面,單擊Stream頁簽。

    2. 在頁面右側,單擊Stream live

    3. Stream頁簽中,查看獲取到的實時數據流。

      實時數據流

  5. 獲取實時數據指標。

    1. 單擊左上角進入kibana。

    2. 在左側導航欄,選擇Kibana > Discover。

    3. Discover頁面,選擇對應索引,獲取該索引的實時數據指標。

      實時數據流指標

更多Kibana日志分析功能請參見Kibana Guide

常見問題

Q:為Indexing Service實例中的寫入托管索引配置refresh、merge等寫入參數,是否會生效?

A:不會生效。Indexing Service實例中的寫入托管索引已使用默認寫入參數配置,用戶側配置不生效。默認寫入參數配置如下。

"index.merge.policy.max_merged_segment" : "1024mb",
"index.refresh_interval" : "3s",
"index.translog.durability" : "async",
"index.translog.flush_threshold_size" : "2gb",
"index.translog.sync_interval" : "100s"