StatsD
用途說明#
發送紀錄服務、路由的指標到 StatsD server。
欄位配置說明#
啟用時可以看到以下畫面:

對應的配置說明如下:
| 參數 | 類型 | 預設值 | 說明 | 必填 |
|---|---|---|---|---|
| host | string | localhost | 數據欲發送的 StatsD server 之 IP 位址或主機名。 例如: 10.18.66.1。 | |
| port | integer | 8125 | 數據欲發送的 StatsD server 之端口。 可以輸入的範圍為 0 至 65535。 | |
| prefix | string | kong | 每個指標名稱之前綴字串。 | |
| metrics | array of record elements | 所有指標(metrics) | 要記錄的指標列表。 指標可用值可參考指標(Metrics)說明。 | V |
指標 (Metrics)說明#
| 指標 (Metric) | 說明 | 命名空間 |
|---|---|---|
| request_count | 請求數量。 | kong.<service_name>.request.count |
| request_size | 請求的 body 大小 (in bytes)。 | kong.<service_name>.request.size |
| response_size | 回應的 body 大小 (in bytes)。 | kong.<service_name>.response.size |
| latency | 請求開始直到收到上游服務器之回應的時間間隔。 | kong.<service_name>.latency |
| status_count | 每個回應返回的狀態碼。 注意:僅有 stat_type 為 counter 時才支援。 | kong.<service_name>.request.status.<status>.count and kong. <service_name>.request.status.<status>.total |
| unique_user | 向服務/路由發送請求的唯一用戶。 注意:僅有 stat_type 為 set,以及有設定 customer_identifier 時才支援。 | kong.<service_name>.user.uniques |
| request_per_user | 請求/用戶。 注意:僅有 stat_type 為 counter,以及有設定 customer_identifier 時才支援。 | kong.<service_name>.user.<consumer_id>.request.count |
| upstream_latency | 最終服務處理請求所花費的時間。 | kong.<service_name>.upstream_latency |
| kong_latency | 運行所有插件所需的內部延遲。 | kong.<service_name>.kong_latency |
| status_count_per_user | 請求/狀態/用戶。 注意:僅有 stat_type 為 counter,以及有設定 customer_identifier 時才支援。 | kong.<service_name>.user.<customer_id>.request.status.<status> and kong. <service_name>.user.<customer_id>.request.status.total |
如果請求 URI 與任何路由都不匹配,則會發送以下指標 (Metric):
| 指標 (Metric) | 說明 | 命名空間 |
|---|---|---|
| request_count | 請求數量。 | kong.global.unmatched.request.count |
| request_size | 請求的 body 大小 (in bytes)。 | kong.global.unmatched.request.size |
| response_size | 回應的 body 大小 (in bytes)。 | kong.global.unmatched.response.size |
| latency | 請求開始直到收到上游服務器之回應的時間間隔。 | kong.global.unmatched.latency |
| status_count | 每個回應返回的狀態碼。 注意:僅有 stat_type 為 counter 時才支援。 | kong.global.unmatched.status.<status>.count |
| kong_latency | 運行所有插件所需的內部延遲。 | kong.global.unmatched.kong_latency |
Metric Fields#
該插件可以配置任意指標組合,每個 entry 包含以下 fields:
| Field | 說明 | 資料類型 | 允許值 |
|---|---|---|---|
| name | StatsD 指標的名稱。 | String | Metrics |
| stat_type | 決定指標代表哪種事件。 | String | gauge、timer、counter、histogram、meter 以及 set。 |
| sample_rate | 採樣率。 | Number | number |
| consumer_identifier | 經過身份驗證的用戶詳細資訊。 | String | 可以選擇以下其中之一:consumer_id、custom_id、username、null。 |
Metric 行為#
默認情況下,所有指標都會被記錄下來。
stat_type 設置為 counter 或 gauge 的指標同樣必須定義 sample_rate。
unique_users 指標僅適用於 stat_type=set 的時候。
status_count、status_count_per_user 和 request_per_user 僅使用 stat_type=counter 的時候。
status_count_per_user、request_per_user 和 unique_users 必須定義 customer_identifier。
用法示例#
在全局啟用插件#
- 從網站左邊 Menu 中
外掛插件頁面中,點選右上角的新增外掛插件:

- 點選後,選擇
日誌頁籤,並啟用 StatsD,填寫內容參考欄位配置說明,設定成功後,任何請求(不分服務、路由、用戶)的日誌都會發送到所配置的 StatsD 遠端主機上。
在服務端上啟用插件#
- 從網站左邊 Menu 中
服務 > 服務列表頁面中,選擇要啟用此插件的服務,假設為google,點選對應的編輯按鈕:

- 在編輯畫面中,點選上方的
外掛插件頁籤,再點選頁籤內容上方的新增外掛插件按鈕:

點選後,選擇 日誌 頁籤,並啟用 StatsD,填寫內容參考欄位配置說明,設定成功後,僅有此服務(範例為google)請求的日誌會發送到所配置的 StatsD 遠端主機上。
在路由端上啟用插件#
可以由兩種方式來選擇路由,並啟用插件:
方式一:路由列表#
- 從網站左邊 Menu 中
服務 > 路由列表頁面中,選擇要啟用此插件的路由,假設為google,點選對應的編輯按鈕 :

方式二:服務 > 服務列表 > 路由列表#
- 從網站左邊 Menu 中
服務 > 服務列表頁面中,選擇要啟用此插件的路由 所屬之服務(假設為google),點選對應的編輯按鈕。
在編輯畫面中,點選上方的 路由 頁籤,選擇要啟用此插件的路由(假設為 google),點選對應的編輯按鈕:

- 承第1步,點擊上述兩種方式之一的編輯按鈕後,在編輯畫面中,點選上方的
外掛插件頁籤,再點選頁籤內容上方的新增外掛插件按鈕:

點選新增外掛插件 按鈕後,選擇 日誌 頁籤,並啟用 StatsD,填寫內容參考欄位配置說明,設定成功後,僅有此路由(範例為google)請求的日誌會發送到所配置的 StatsD 遠端主機上。
在用戶端上啟用插件#
- 從網站左邊 Menu 中
訂閱用戶 > 用戶列表頁面中,選擇要啟用此插件的用戶,假設為portaladmin,點選對應的編輯按鈕 :

- 在編輯畫面中,點選上方的
外掛插件頁籤,再點選頁籤內容上方的新增外掛插件按鈕:

點選後,選擇 日誌 頁籤,並啟用 StatsD,填寫內容參考欄位配置說明,設定成功後,僅有此用戶(範例為 portaladmin)請求的日誌會發送到所配置的 StatsD 遠端主機上。
驗證#
啟用插件後,並設定對應指標(metrics),透過 GOC API Gateway 去呼叫服務後,再登入 StatsD 的服務頁面,即可看到如下圖的資料:
