OpenStack Monitor Quotas Service
216
本專案為 OpenStack Monitor Quotas Service 的 Docker 套件,透過該套件監控叢集資源使用狀況,並轉換為 APIs 方式存取。
從 Docker Hub 下載 Image:
docker pull imaccloud/docker-quotas-service:1.0.0
執行 Quotas Service Container:
docker run -d --name quotas-service \
-p <expose_port>:8080 \
-e MYSQL_HOST="10.21.20.118" \
-e MYSQL_USER="root" -e MYSQL_PASSWORD="password" \
-e KEYSTONE_HOST="10.21.20.118" -e KEYSTONE_PORT="5000" \
imaccloud/docker-quotas-service:1.0.0 -d
<expose_port>是 quotas service 容器要對應的服務 port,若沒安裝Swift套件,並使用到8080的話,可以輸入該 port,若該 port 已被使用,請使用其他無服務的 port。
MYSQL_HOST是外部 MySQL 的 Domain name 或 IP,請提供一個 OpenStack 使用的 MySQL。
MYSQL_USER是外部 MySQL 的使用者帳號,請提供一個 OpenStack 使用的 MySQL 帳號。
MYSQL_PASSWORD是外部 MySQL 的使用者密碼,請提供一個 OpenStack 使用的 MySQL 密碼。
KEYSTONE_HOST是 OpenStack 的 Keystone 套件的 Domain name 或 IP。
KEYSTONE_PORT是 OpenStack 的 Keystone 套件的服務 port。
執行 Quotas Servicer Contrainer 的 Debug 模式:
docker run --name quotas-service -ti \
-p 8080:8080 \
-e MYSQL_HOST="10.21.20.118" \
-e MYSQL_USER="root" -e MYSQL_PASSWORD="password" \
-e KEYSTONE_HOST="10.21.20.118" -e KEYSTONE_PORT="5000" \
imaccloud/docker-quotas-service:1.0.0 bash
此模式可以進入 Container 進行 Debug,也可以看到 APIs 的 response 狀態。
使用外部的 MongoDB 儲存 Quotas 資料:
docker run -d --name quotas-service \
-p <expose_port>:8080 \
-e MYSQL_HOST="10.21.20.118" \
-e MYSQL_USER="root" -e MYSQL_PASSWORD="password" \
-e KEYSTONE_HOST="10.21.20.118" -e KEYSTONE_PORT="5000" \
-e MONGO_DB_HOST="10.21.20.118" -e MONGO_DB_PORT="27017" \
-e MONGO_DB_USER="log" -e MONGO_DB_PASSWORD="log" -e MONGO_DB="log_service" \
imaccloud/docker-quotas-service:1.0.0 -d
MONGO_DB_HOST是用來儲存與檢索 Monitor Quotas 的 MongoDB 伺服器 Domain name 或 IP。
MONGO_DB_PORT是 MongoDB 服務 port。
MONGO_DB_USER是 MongoDB 使用者帳號。
MONGO_DB_PASSWORD是 MongoDB 使用者密碼。
MONGO_DB是 MongoDB 的資料庫名稱。
當服務成功如下圖啟動了 Container 後:

我們可以透過進入 OpenStack Dashboard 選擇一個 Project,並建立一個 Instance 來讓 Quotas 記錄套件可以記錄目前變化。
每當 Instance 被新增或刪除時,Quotas 記錄套件都會記錄狀態,我們可以透過 API 的方式取得目前資訊,其 URL 格式如下:
http://<host>:<port>/quotas/<project_id>/<resource>/?start_time=<start_timestamp>&end_time=<end_timestamp>
<host>是該服務套件的主機 Domain name 或 IP。
<port>是該服務套件的主機服務 Port。
<project_id>是 OpenStack 的 Project ID(Tenant ID)。
<resource>是可取得資源的名稱。有以下幾個資源:
<start_timestamp>是所要取得的 Quotas 記錄資料的開始時間戳。
<end_timestamp>是所要取得的 Quotas 記錄資料的結束時間戳。
使用 Curl 驗證:
如果不是透過 App 進行驗證,我們要先取得 token,透過以下 command 取得:
curl -d '{ "auth": { "tenantName": "admin", "passwordCredentials": { "username": "admin", "password": "password" } } }' -H "Content-Type: application/json" http://10.21.20.118:5000/v2.0/tokens
取得 <token> 後,我們將對 API 做請求,使用以下指令取得:
curl -H "Content-Type: application/json" -H "X-Auth-Token: <token>" http://192.168.99.100:8080/quotas/61235f879e7b4908a6d2895aa26532fe/ram/?start_time=1443591059&end_time=1443691106
若成功的話,會回傳時間之內的 RAM 的 JSON 資料:
[
{
"timestamp": "1443622753.0",
"project_id": "61235f879e7b4908a6d2895aa26532fe",
"resource": "ram",
"value": "64",
"_id": "560bef6e1b0d96002ff79e71"
},
{
"timestamp": "1443622753.0",
"project_id": "61235f879e7b4908a6d2895aa26532fe",
"resource": "ram",
"value": "0",
"_id": "560bef6e1b0d96002ff79e74"
}
]
若 <token> 過期的話,會回傳以下錯誤資訊:
{
"error":{
"message":"The request you have made requires authentication. (Disable debug mode to suppress these details.)",
"code":401,
"title":"Unauthorized"
}
}
Content type
Image
Digest
Size
224.6 MB
Last updated
over 10 years ago
docker pull imaccloud/docker-quotas-service:1.0.0