1. 程式人生 > >【Consul】Consul實踐指導-Watch機制

【Consul】Consul實踐指導-Watch機制

        Watches是檢視指定資料資訊的一種方法,比如檢視nodes列表、鍵值對、健康檢查。當監控到更新時,可以呼叫外部處理程式——可以自定義。比如,發現健康狀態發生變化可以通知外部系統健康異常。

        Watches在呼叫http api介面使用阻塞佇列。Agent會自動呼叫合適的API介面倆監控資料的變化。

        Watches可以作為Agent配置的一部分。在Agent初始化時就執行,並且支援重新載入配置——執行時新新增或刪除配置。

        Alternatively, the watch command enables a watch to be started outsideof the agent. This can be used by an operator to inspect data in Consul or toeasily pipe data into processes without being tied to the agent lifecycle.

        在任意情況下,watches的type都必須指定。Watch支援的每一個type需要的不同的引數,一些是必須的一些事非必須的。這些都是通過JSON來設定的。

1.1.1  Handle

        Watch配置可以指定監控的資料。一旦資料發生變化,可以執行指定的處理程式——可以是任意可執行的程式。

        處理程式可以從標準輸入中讀取輸入,也可以讀取json資料。資料格式依賴於watch型別。Watch型別與Json格式是想物件的。因為watch是直接呼叫HTTP API,因此輸入資料要格式化。

Additionally, the CONSUL_INDEX environment variable will beset. This maps to theX-Consul-Index value in responses from the 

HTTP API.

1.1.2  GlobalParameters

        除了每一種型別支援的引數外,還有一些全域性引數:

datacenter – 資料中心名字

token – ALC token

handler – 監控到資料變化後的呼叫程式。

1.1.3  Watches型別

        支援如下型別:

  1. Key – 監視指定K/V鍵值對
  2. Keyprefix – Watch a prefix in the KV store
  3. Services – 監視服務列表
  4. nodes – 監控節點列表
  5. service – 監視服務例項
  6. checks- 監視健康檢查的值
  7. event – 監視使用者事件

1.1.3.1     型別key

        Key watch型別通常用來監視指定鍵值對的變化。要求提供key引數

例項

{
  "type": "key",
  "key": "foo/bar/baz",
  "handler": "/usr/bin/my-key-handler.sh"
}

        使用命令列:

$ consul watch -type key -key foo/bar/baz/usr/bin/my-key-handler.sh

輸出資訊:

{
  "Key": "foo/bar/baz",
  "CreateIndex": 1793,
  "ModifyIndex": 1793,
  "LockIndex": 0,
  "Flags": 0,
  "Value": "aGV5",
  "Session": ""
}

1.1.3.2     型別keyprefix

        Keyprefix型別是用來監視KV儲存中keys的字首。必須提供prefix引數。

        監視會返回匹配prefix的所有鍵值對。

示例:

{
  "type": "keyprefix",
  "prefix": "foo/",
  "handler": "/usr/bin/my-prefix-handler.sh"
}

命令列:

$ consul watch -typekeyprefix -prefix foo/ /usr/bin/my-prefix-handler.sh

輸出結果:

[
  {
    "Key": "foo/bar",
    "CreateIndex": 1796,
    "ModifyIndex": 1796,
    "LockIndex": 0,
    "Flags": 0,
    "Value": "TU9BUg==",
    "Session": ""
  },
  {
    "Key": "foo/baz",
    "CreateIndex": 1795,
    "ModifyIndex": 1795,
    "LockIndex": 0,
    "Flags": 0,
    "Value": "YXNkZg==",
    "Session": ""
  },
  {
    "Key": "foo/test",
    "CreateIndex": 1793,
    "ModifyIndex": 1793,
    "LockIndex": 0,
    "Flags": 0,
    "Value": "aGV5",
    "Session": ""
  }
]

1.1.3.3     型別services

        監視一系列有效的service,無引數

        內部介面/v1/catalog/services

命令列輸出資訊如下:

{
  "consul": [],
  "redis": [],
  "web": []
}

1.1.3.4     型別nodes

        監視一系列有效的節點,無引數。

        內部API:/v1/catalog/nodes

輸出資訊:

[
  {
    "Node": "nyc1-consul-1",
    "Address": "192.241.159.115"
  },
  {
    "Node": "nyc1-consul-2",
    "Address": "192.241.158.205"
  },
  {
    "Node": "nyc1-consul-3",
    "Address": "198.199.77.133"
  },
  {
    "Node": "nyc1-worker-1",
    "Address": "162.243.162.228"
  },
  {
    "Node": "nyc1-worker-2",
    "Address": "162.243.162.226"
  },
  {
    "Node": "nyc1-worker-3",
    "Address": "162.243.162.229"
  }
]

1.1.3.5     型別service

        監控指定的單個service。必須提供引數service。tag和passingonly引數可選。

        內部介面:/v1/health/service

配置示例:

{
  "type": "service",
  "service": "redis",
  "handler": "/usr/bin/my-service-handler.sh"
}

命令列:

$ consul watch -typeservice -service redis /usr/bin/my-service-handler.sh

輸出資訊:

[
  {
    "Node": {
      "Node": "foobar",
      "Address": "10.1.10.12"
    },
    "Service": {
      "ID": "redis",
      "Service": "redis",
      "Tags": null,
      "Port": 8000
    },
    "Checks": [
      {
        "Node": "foobar",
        "CheckID": "service:redis",
        "Name": "Service'redis' check",
        "Status": "passing",
        "Notes": "",
        "Output": "",
        "ServiceID": "redis",
        "ServiceName": "redis"
      },
      {
        "Node": "foobar",
        "CheckID": "serfHealth",
        "Name": "SerfHealth Status",
        "Status": "passing",
        "Notes": "",
        "Output": "",
        "ServiceID": "",
        "ServiceName": ""
      }
    ]
  }
]

1.1.3.6     型別checks

        監視指定service的checks或指定狀態的checks。

        內部介面/v1/health/state//v1/health/checks/

[
  {
    "Node": "foobar",
    "CheckID": "service:redis",
    "Name": "Service'redis' check",
    "Status": "passing",
    "Notes": "",
    "Output": "",
    "ServiceID": "redis",
    "ServiceName": "redis"
  }
]

1.1.3.7     型別event

        監視使用者事件。

        內部介面:v1/event/list

配置檔案示例:

{
  "type": "event",
  "name": "web-deploy",
  "handler": "/usr/bin/my-deploy-handler.sh"
}

命令列引數:

$ consul watch -typeevent -name web-deploy /usr/bin/my-deploy-handler.sh

輸出

[
  {
    "ID": "f07f3fcc-4b7d-3a7c-6d1e-cf414039fcee",
    "Name": "web-deploy",
    "Payload": "MTYwOTAzMA==",
    "NodeFilter": "",
    "ServiceFilter": "",
    "TagFilter": "",
    "Version": 1,
    "LTime": 18
  },
  ...
]
 

相關推薦

ConsulConsul實踐指導-Watch機制

        Watches是檢視指定資料資訊的一種方法,比如檢視nodes列表、鍵值對、健康檢查。當監控到更新時,可以呼叫外部處理程式——可以自定義。比如,發現健康狀態發生變化可以通知外部系統健康異常。         Watches在呼叫http api介面使用阻塞佇

ConsulConsul實踐指導-Agent

       ConsulAgent是Consul的核心程序,Agent的工作是維護成員關係資訊、註冊服務、健康檢查、響應查詢等等。Consul叢集的每一個節點都必須執行agent程序。 Agent有

ConsulConsul實踐指導-健康檢查(Checks)

        Consul的一個基本功能是提供系統級和應用級健康檢查。如果健康檢查與某個服務關聯,則稱為是應用級的;如果不予服務關聯,則監控整個節點的健康。 check定義在配置檔案中,或執行時通過HTTP介面新增。Check是通過HTTP與節點保持一致。 有五種che

ConsulConsul實踐指導-服務註冊(Service)

        服務發現是consul的另一主要功能。Consul Agent提供簡單的Service定義格式用於申報服務的可用性,並與健康檢查相關聯。如果健康檢查與服務關聯,則認為服務是應用級的。服務可以定義在配置檔案中或在執行時通過HTTP介面新增。  1.1.1  S

Consul負載均衡策略

Consul是一個免費的開源工具, 它提供服務發現、健康檢查、負載均衡和全域性分佈的鍵值儲存。此外, 它還提供了一組用於構建業務流程工作流和工具的基礎元素。在微服務體系結構中, 應用程式通常跨越多個IP地址執行, 並繫結到各種埠。服務發現有助於查詢這些不同的服務, 而不管它們位於何處。 由於同一個服務的多個例

Consul 1.4:多資料中心服務網路

NOV 14 2018 THE CONSUL TEAM 我們很高興地宣佈HashiCorp Consul1.4 將將可廣泛使用。Consul 是一個分散式服務網格, 可用於在任何執行平臺以及公共或私有云之間的連線、安全和配置服務。此版本引入了一個完全重新設計的 ACL系統和第一個具有多資料中心支援的企業級Co

SpringCloudconsul註冊中心註冊的服務為內網(區域網)IP

## 一、前因 最近在做公司的一個微服務專案,技術架構為spring cloud + consul + SSM。 當我寫完一個功能要在本地測試時,發現**服務執行成功,但是前後端聯調報500錯誤。** 當時的第一個想法就是gateway服務的問題,但是其他同事卻說gateway服務沒毛病。 最後想到可

原創TCP超時重傳機制探索

sender mic borde 做了 5.5 多次 字節 應用程序 實現 TCP超時重傳機制探索作者:tll (360電商技術)1)通信模型TCP(Transmission Control Protocol)是一種可靠傳輸協議。在傳輸過程中當發送方(sender)向接

數據庫鎖機制

別人 tin 索引 world 業務 無法 rom 必須 種類 1 前言 數據庫大並發操作要考慮死鎖和鎖的性能問題。看到網上大多語焉不詳(尤其更新鎖),所以這裏做個簡明解釋,為下面描述方便,這裏用T1代表一個數據庫執行請求,T2代表另一個請求,也可以理解為T1為一個線程

java的動態代理機制詳解

bar 同時 @override returns 復制 exce ins com hello 在學習Spring的時候,我們知道Spring主要有兩大思想,一個是IoC,另一個就是AOP,對於IoC,依賴註入就不用多說了,而對於Spring的核心AOP來說,我們不但要知道怎

Zookeeper學習---zookeeper 選舉機制介紹

erp change 交換 內容 數值 所有 ase 一輪 eval 【原文】https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多個實例共同構成一個集群對外提供服務以達到水平擴展的目的,每個服務器上的數據

jvmjvm的類載入機制

前言:提到jvm的類載入機制,就不得不說我當年的沙雕經歷了,當年不明白為啥面試官都喜歡問jvm的類載入機制,當時心想學這東西有啥用,它怎麼載入關我啥事呀,能寫程式碼不就好了嗎?但無奈應試教育教會了我,雖然不知道為啥要學,但人家要考,你就得學,然後學唄,學完算是知道它是怎麼載入類的了,但依舊沒能深刻理

MySQL——MySQL中的鎖機制

概述 相對其他資料庫來說,MySQL的鎖機制比較簡單,不同的儲存引擎支援不同的鎖機制。 MySQL大致可以分為以下3種鎖 表級鎖:操作物件是資料表。MySQL大多數鎖策略都支援,開銷小,加鎖快。不會出現死鎖。鎖定粒度大,發生鎖衝突的概率最高,併發度最低。

原創Java基礎之Session機制

mem wrap 增加 sha1 info 下載 head 返回 att Session機制 JSESSIONID是Session的標識,當客戶端請求服務器端的時候,服務器端會檢查是否已經給這個客戶端創建過Session,也就是看客戶端的請求中的header是否有Cooki

casbinRBAC實踐

Features What Casbin does: 1.enforce the policy in the classic {subject, object, action} form or a cu

轉載HBase實踐 | 使用Spark分析雲HBase的資料

雲HBase具有很好的線上入庫和查詢能力,不過在分析上面有比較大的欠缺,這篇文章主要介紹如何使用Spark對雲HBase中資料做複雜分析。 1 雲HBase查詢分析的現狀 HBase原生API:HBase原生API適合基於row key做點查,這個是HBase最擅長的查詢場景 Phoeni

MVC.Net實踐(一)—建立mvc框架的專案和實體模型

一、 建立MVC框架的專案 (1)像新增平常專案一樣新增一個web應用程式,檔案—>新建—>專案 (3)接著選擇MVC (4)這樣就建好一個MVC框架的專案了 二、連線資料庫 建立

MVC.NET實踐(三)—對資料庫的資料進行刪除與修改

在主介面新增修改和刪除的超連結(Index.cshtml) <table id="tbList"> <tr> <th>id&l

MVC.NET實踐(四)—新增資料到資料庫

1、在主介面Index.cshtml新增“新增”的連結 <tr> <td colspan="4"> @Html.ActionLink("新增",

java虛擬機器面試乾貨_G1 GC的回收機制

簡單來說,G1 GC的收集分為4個階段:年輕代GC,併發標記週期,混合回收和full GC。年輕代GCG1 GC的年輕代回收基本沿襲了之前的設計,通過複製演算法和一個Eden區、兩個Survivor區實現。但區別在於,大物件的分配是可以直接到大物件區間的(詳見上文)。此外,在