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

通過X-Pack Watcher實(shí)現(xiàn)CCR異常報警通知

Elasticsearch X-Pack Watcher可跟蹤網(wǎng)絡(luò),具備對基礎(chǔ)設(shè)施、索引數(shù)據(jù)和集群健康等指標(biāo)的監(jiān)控和報警能力。您可以在Kibana控制臺上獲取跨集群復(fù)制CCR(Cross Cluster Replication)功能相關(guān)的監(jiān)控,并通過X-Pack Watcher監(jiān)控CCR異常實(shí)現(xiàn)報警。本文介紹如何將CCR獲取的讀數(shù)據(jù)請求耗時及CCR Checkpoint作為預(yù)警條件,實(shí)現(xiàn)CCR異常報警通知。

前提條件

  • 已創(chuàng)建阿里云Elasticsearch實(shí)例。 具體操作,請參見創(chuàng)建阿里云Elasticsearch實(shí)例

    說明
    • 舊網(wǎng)絡(luò)架構(gòu)下,X-Pack Watcher功能僅支持單可用區(qū)Elasticsearch實(shí)例,不支持多可用區(qū)實(shí)例。

    • 新網(wǎng)絡(luò)架構(gòu)下,需要配置實(shí)例私網(wǎng)連接打通網(wǎng)絡(luò)限制。具體操作,請參見配置實(shí)例私網(wǎng)連接

    關(guān)于網(wǎng)絡(luò)架構(gòu),請參見【通知】網(wǎng)絡(luò)架構(gòu)調(diào)整

  • 已開啟Elasticsearch實(shí)例的X-Pack Watcher功能。 具體操作,請參見配置YML參數(shù)

  • 已在用戶VPC下創(chuàng)建ECS實(shí)例。具體操作,請參見自定義購買實(shí)例

    說明

    阿里云Elasticsearch的X-Pack Watcher功能不支持直接與公網(wǎng)通訊,需要基于實(shí)例的私網(wǎng)地址(專有網(wǎng)絡(luò)VPC環(huán)境)通訊。因此,用戶VPC下的ECS實(shí)例需要持有公網(wǎng)IP或通過配置SNAT實(shí)現(xiàn)公網(wǎng)訪問。更多信息,請參見綁定彈性公網(wǎng)IP配置SNAT

操作步驟

步驟一:創(chuàng)建并配置釘釘機(jī)器人

  1. 創(chuàng)建一個釘釘報警接收群。具體操作,請參見釘釘入門教程

  2. 在群的右上角單擊設(shè)置.png圖標(biāo),在群設(shè)置面板中,單擊機(jī)器人

  3. 單擊添加機(jī)器人

  4. 機(jī)器人對話框中,單擊添加機(jī)器人

  5. 單擊自定義機(jī)器人,單擊添加

  6. 選中自定義關(guān)鍵詞,并輸入關(guān)鍵詞。

    重要

    關(guān)鍵詞必須包含在您設(shè)置的報警信息中。

  7. 選中免責(zé)條款后,單擊完成

  8. 單擊Webhook后的復(fù)制,復(fù)制機(jī)器人的Webhook地址。

    請保管好Webhook地址,以備后用。同時不要將其公布在外部網(wǎng)站上,泄露Webhook地址有安全風(fēng)險。

更多信息,請參見獲取自定義機(jī)器人Webhook安全設(shè)置

步驟二:配置Nginx代理和ECS安全組

  1. 在ECS上配置Nginx代理。

    Nginx代理的作用是轉(zhuǎn)發(fā)報警信息。Elasticsearch的X-Pack Watcher服務(wù)把報警信息發(fā)送到Nginx上,Nginx再把報警信息轉(zhuǎn)發(fā)到釘釘或者企業(yè)微信中。

    1. 在ECS上安裝Nginx。

      安裝方法,請參見Nginx安裝配置

    2. 配置nginx.conf文件。

      使用以下配置替換nginx.conf文件中server部分的配置。

      server
        {
          listen 8080;#監(jiān)聽端口
          server_name localhost;#域名
          index index.html index.htm index.php;
          root /usr/local/webserver/nginx/html;#站點(diǎn)目錄
            location ~ .*\.(php|php5)?$
          {
            #fastcgi_pass unix:/tmp/php-cgi.sock;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
          }
          location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
          {
            expires 30d;
            # access_log off;
          }
          location / {
            proxy_pass <Webhook地址>;
          }
          location ~ .*\.(js|css)?$
          {
            expires 15d;
            # access_log off;
          }
          access_log off;
        }

      <Webhook地址>替換為接收報警消息的釘釘機(jī)器人的Webhook地址。

    3. 加載修改后的配置文件并重啟Nginx。

      /usr/local/webserver/nginx/sbin/nginx -s reload            # 重新載入配置文件
      /usr/local/webserver/nginx/sbin/nginx -s reopen            # 重啟Nginx
  2. 配置ECS安全組。

    允許ECS上的Nginx代理接收來自Elasticsearch實(shí)例的報警信息。

    1. 登錄阿里云ECS控制臺

    2. 在左側(cè)導(dǎo)航欄,單擊實(shí)例

    3. 實(shí)例頁面,單擊目標(biāo)實(shí)例名稱。

    4. 單擊安全組頁簽。

    5. 安全組列表頁簽,單擊目標(biāo)安全組名稱。

    6. 入方向頁簽,單擊手動添加

    7. 填寫相關(guān)參數(shù)。

      參數(shù)

      說明

      授權(quán)策略

      選擇允許

      優(yōu)先級

      保持默認(rèn)。

      協(xié)議類型

      選擇自定義TCP

      端口范圍

      填寫您常用的端口(配置Nginx時需要用到,本文以8080為例)。

      授權(quán)對象

      添加您購買的阿里云Elasticsearch實(shí)例所有節(jié)點(diǎn)的IP地址。

      說明

      參見查看節(jié)點(diǎn)的基本信息,獲取Elasticsearch實(shí)例中所有節(jié)點(diǎn)的IP地址。

      描述

      輸入對規(guī)則的描述。

    8. 單擊保存

步驟三:配置Watcher報警

  1. 登錄目標(biāo)阿里云Elasticsearch實(shí)例的Kibana控制臺,根據(jù)頁面提示進(jìn)入Kibana主頁。
    登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺
    說明 本文以阿里云Elasticsearch 6.7.0版本為例,其他版本操作可能略有差別,請以實(shí)際界面為準(zhǔn)。
  2. 在左側(cè)導(dǎo)航欄,單擊Dev Tools
  3. Console中,執(zhí)行如下命令創(chuàng)建一個報警文檔。

    PUT _watcher/watch/ccr_watcher
    {
      "trigger": {
        "schedule": {
          "interval": "10s"
        }
      },
      "input": {
        "search": {
          "request": {
            "indices": [
              ".monitoring-es*" 
            ],
            "body": {
              "size": 0,
              "sort": [
                {
                  "timestamp": {
                    "order": "desc"
                  }
                }
              ],
              "query": {
                "bool": {
                  "must": [
                    {
                      "range": {
                        "timestamp": {
                          "gte": "now-10m"
                        }
                      }
                    },
                    {
                      "term": {
                        "type": {
                          "value": "ccr_stats"
                        }
                      }
                    },
                    {
                      "bool": {
                        "should": [
                          {
                            "range": {
                              "ccr_stats.time_since_last_read_millis": {
                                "gte": 600000
                              }
                            }
                          },
                          {
                            "script": {
                              "script": "long gap = doc['ccr_stats.leader_global_checkpoint'].value - doc['ccr_stats.follower_global_checkpoint'].value;\n            return gap>1000;"
    
    
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              },
              "aggs": {
                "NAME": {
                  "terms": {
                    "field": "ccr_stats.follower_index",
                    "size": 1000
                  }
                }
              }
            }
          }
        }
      },
      "condition": {
        "compare": {
          "ctx.payload.hits.total": {
            "gt": 0
          }
        }
      },
      "transform": {
        "script": """
        StringBuilder message = new StringBuilder();
    for (def bucket : ctx.payload.aggregations.NAME.buckets) {
      message.append(bucket.key).append('  ')
    }
        return [ 'delay_indices' : message.toString().trim()  ]
    """
      },
      "actions" : {
         "add_index": {
          "index": {
            "index": "ccr_delay_indices",
            "doc_type": "doc"
          }
        },
         "my_webhook": {
         "webhook" : {
            "method" : "POST",
            "url" : "http://<yourAddress>:8080",
            "body" : "{\"msgtype\": \"text\", \"text\": { \"content\": \"Please note: {{ctx.payload}}\"}}"
          }
        }
      }
    
    }

    部分關(guān)鍵參數(shù)說明如下。

    參數(shù)

    說明

    trigger

    檢測周期,請根據(jù)實(shí)際業(yè)務(wù)進(jìn)行配置。以上示例設(shè)置為每10s檢測一次。

    input.search.request.indices

    查詢檢測的目標(biāo)索引。.monitoring-es*索引保存集群支持的所有監(jiān)控指標(biāo),其中也包括CCR指標(biāo)。

    input.search.request.body

    查詢體。以上示例從系統(tǒng)監(jiān)控索引查詢近10分鐘的CCR狀態(tài)信息,當(dāng)查詢滿足以下條件中的其中一個,CCR將進(jìn)入下一步:

    • ccr_stats.time_since_last_read_millis>600000ms(10min):讀請求發(fā)送到Leader節(jié)點(diǎn)的延時時間大于10min。請根據(jù)您CCR的實(shí)際業(yè)務(wù)使用進(jìn)行配置。

    • ccr_stats.leader_global_checkpoint-ccr_stats.follower_global_checkpoint>1000:Follower Checkpoint落后于Leader Checkpoint的程度大于1000。請根據(jù)您CCR的實(shí)際業(yè)務(wù)使用進(jìn)行配置。

    condition

    報警條件。以上示例表示滿足input.search.request.body中的條件,且返回的聚合文檔數(shù)大于0即可報警。

    transform

    預(yù)處理。以上示例表示循環(huán)獲取buckets key值,并通過空格進(jìn)行分割,過濾出延遲索引名。

    actions

    滿足條件時,執(zhí)行的具體操作。以上示例設(shè)置兩個action:

    • add_index:將上面返回的結(jié)果寫入索引中,在調(diào)試Watcher配置環(huán)節(jié),定義index進(jìn)行調(diào)試。

    • my_webhook:通過Webhook方式發(fā)送報警信息。

    <yourAddress>

    接收報警信息的服務(wù)器的訪問地址:

    • 新網(wǎng)絡(luò)架構(gòu)下,配置為終端節(jié)點(diǎn)域名地址,請求通過終端節(jié)點(diǎn)域名進(jìn)行轉(zhuǎn)發(fā)。獲取終端節(jié)點(diǎn)域名,請參見配置阿里云Elasticsearch私網(wǎng)互通

    • 舊網(wǎng)絡(luò)架構(gòu)下,配置為以下任一地址:

      • Nginx代理IP地址:請求通過同VPC下Nginx代理經(jīng)公網(wǎng)進(jìn)行轉(zhuǎn)發(fā)。

      • 釘釘機(jī)器人的Webhook地址。

    body

    根據(jù)釘釘機(jī)器人的安全設(shè)置配置。

    例如,步驟一:創(chuàng)建并配置釘釘機(jī)器人中選擇安全設(shè)置方式為自定義關(guān)鍵詞,且添加了一個自定義關(guān)鍵詞:note,那么body中的content字段必須包含note,釘釘機(jī)器人才會推送報警信息。

    說明

    如果在執(zhí)行以上命令時,出現(xiàn)No handler found for uri [/_xpack/watcher/watch/log_error_watch_2] and method [PUT]異常,表示您購買的阿里云Elasticsearch實(shí)例未開啟X-Pack Watcher功能,請開啟后再執(zhí)行以上命令。具體步驟,請參見配置YML參數(shù)

步驟四:查看報警結(jié)果

正常情況下,當(dāng)CCR狀態(tài)達(dá)到步驟三:配置Watcher報警中配置的報警條件時,您可以釘釘群中收到如下報警信息。查看報警結(jié)果

說明

如果您不再需要執(zhí)行報警任務(wù),可執(zhí)行以下命令刪除該報警任務(wù)。

DELETE _xpack/watcher/watch/ccr_watcher