閱讀999 返回首頁    go 群英


自定義監控__日誌和監控_用戶指南_容器服務-阿裏雲

容器監控服務集成了阿裏雲雲監控服務,為您提供涵蓋容器、應用、集群、節點的監控與告警服務,滿足了容器監控的基本需求。但是在很多業務場景中,您可能需要自定義監控以滿足您係統和應用的監控需求,所以容器監控服務在基礎監控能力以外,還提供了兩種自定義監控方式來允許您通過自己編寫數據采集腳本或者自己暴露 HTTP 監控數據接口來上報自定義的監控數據。容器服務監控框架會按照每分鍾采集一次的頻率來執行腳本或者調用 HTTP 接口來采集數據。

前提條件

使用自定義監控功能之前,您必須將容器監控服務與第三方監控方案進行集成 (詳細信息參見 第三方監控方案集成)。

注意:目前,容器服務監控集成默認隻支持 InfluxDB 和 Prometheus。

您的自定義監控數據會上報給您的 InfluxDB 或 Prometheus,然後再對接您的數據展示和分析服務。

使用自定義監控腳本上報監控數據

  1. 構建 Docker 鏡像,在鏡像中添加自定義的數據采集腳本。

    采集腳本的輸出數據必須遵守 InfluxDB 的數據格式協議,如下所示。

    1. weather,location=us-midwest temperature=82 1465839830100400200
    2. | -------------------- -------------- |
    3. | | | |
    4. | | | |
    5. +-----------+--------+-+---------+-+---------+
    6. |measurement|,tag_set| |field_set| |timestamp|
    7. +-----------+--------+-+---------+-+---------+

    更詳細的數據格式協議,參見 InfluxDB 數據協議 Line Protocol

  2. 登錄 容器服務管理控製台,使用編排模板創建應用,使用 aliyun.monitoring.script 標簽聲明監控服務用於采集數據的腳本。

    示例模板如下所示:

    1. custom-script:
    2. image: '您自己的鏡像倉庫地址'
    3. labels:
    4. aliyun.monitoring.script: "sh gather_mem.sh"

    aliyun.monitoring.script 定義了監控服務執行應用容器內什麼命令來收集監控數據。對應的 label 配置方式如下所示。

    1. labels:
    2. aliyun.monitoring.script: "執行腳本的命令"
  3. 打開 InfluxDB 的 web 端管理界麵,查看以數據指標名稱為表名的數據庫表。

    有關如何查看數據庫表,參見 第三方監控方案集成 中的相關信息。

使用自定義 HTTP 監控數據接口采集數據

  1. 構建 Docker 鏡像,在應用中對外暴露 HTTP 接口。

    該接口輸出監控數據。您可以自定義監控數據的格式,隻需符合 JSON 語法即可。此外,由於係統不能分辨自定義的 HTTP 接口返回的 JSON 數據中哪些是數據指標字段,哪些是數據指標的元數據標簽,所以您還需要另外一個配置項來指明 JSON 數據中哪些數據的屬性是 tag。具體可參考 Telegraf JSON 數據格式

  2. 登錄 容器服務管理控製台,使用編排模板創建應用。您需要在模板中填加 aliyun.monitoring.http 標簽來聲明采集數據的接口,使用 aliyun.monitoring.tags: "您自己的 tag 屬性名 1, 您自己的 tag 屬性名 2, ……" 聲明 HTTP 數據接口返回的數據字段中哪些的屬性是 tag。

    參考模板:

    1. nodejsapp:
    2. command: "bash /run.sh"
    3. ports:
    4. - "3000:3000"
    5. image: '您自己的鏡像倉庫地址'
    6. labels:
    7. aliyun.monitoring.http: "https://container:3000/metrics/data"
    8. aliyun.monitoring.tags: "tag1,tag2"

    nodejsapp 應用對外暴露的數據接口 https://container:3000/metrics/data 返回的數據如下所示:

    1. {
    2. "tag1": "tag1value",
    3. "tag2": "tag2value",
    4. "field1": 1,
    5. "field2": 2,
    6. "field3": true,
    7. "field4": 1.5
    8. }

    使用 aliyun.monitoring.tags: "tag1,tag2" 定義上報的 JSON 數據中,tag1 屬性和 tag2 屬性為上報數據的 tag。

  3. 打開 InfluxDB 的 web 端管理界麵,查看以 httpjson_ 前綴加容器名稱為表名的的數據庫表。

    例如,容器名稱為 nodejsapp_nodejsapp_1,則 InfluxDB 中數據庫表的表名為 httpjson_nodejsapp_nodejsapp_1

    有關如何查看數據庫表,參見 第三方監控方案集成 中的相關信息。

最後更新:2016-12-12 16:48:18

  上一篇:go 第三方監控方案集成__日誌和監控_用戶指南_容器服務-阿裏雲
  下一篇:go 節點自動伸縮__日誌和監控_用戶指南_容器服務-阿裏雲