1 文档编写目的
在正常使用CDSW的情况下,我们也需要对CDSW服务的监控状况进行监控,CDSW默认的工程存储路径是在服务器的/var/lib/cdsw/current/projects/projects/0的目录下,由于所有的工程存储均是以编号来标识,无法确定每个工程对应的用户,不便于维护管理。本篇文章Fayson主要介绍通过CDSW API的方式获取到用户与工程名和编号的对应关系。
- 测试环境
1.RedHat7.4
2.CDSW版本为1.4.2
3.CM和CDH版本为5.16.1
2 涉及API接口
在这篇文章中Fayson主要介绍通过API接口获取CDSW所有的业务用户以及每个用户创建的Project列表,本篇文章涉及到的API接口如下:
- 获取CDSW的所有用户列表API
请求地址:http://{cdsw_domain}/api/v1/site/users?limit=30&offset=0&order_by=last_seen_at&order_sort=desc
请求类型:GET
返回值:[{
"id": 2,
"username": "fayson",
"username_hash": "7456d089ce96f523773a3c581065f55c5f28eb8ea5d39c46ab4cb719f163116c",
"type": "user",
"email": "fayson@qq.com",
"name": "fayson",
"api_key": "uboqugrcjx6qqftj0wfazhxye5f7vd3l",
"custom_payment": false,
"admin": false,
"last_login_at": "2019-02-18T13:28:14.395Z",
"joined_on": "2019-02-18T13:28:14.395Z",
"onboarding_complete": false,
"onboarding_step": 0,
"last_seen_at": "2019-03-11T10:28:20.065Z",
"last_logout_at_tz": "2019-03-11T10:29:05.282Z",
"followers": 0,
"public_projects": 0,
"organization_projects": 0,
"private_projects": 2,
"running_dashboards": 0,
"usage_credits": 5,
"outstanding_balance": 0,
"last_context_id": 2,
"banned": false,
"deactivated": false,
"memory_hours": 0.0424611877777778,
"cpu_hours": 0.0212305938888889,
"gpu_hours": 0,
"avg_session_duration": 0,
"jobs_run": 0,
"sessions_run": 2,
"cc_onfile": false,
"html_url": "http://cdsw.fayson.com/fayson",
"url": "http://cdsw.fayson.com/api/v1/users/fayson"
}]
- 获取指定用户下所有的Project列表
请求地址:http://{cdsw_domain}/api/v1/users/{user}/projects
请求类型:GET
返回值:[{
"id": 5,
"name": "testpython",
"slug": "fayson1/testpython",
"slug_raw": "testpython",
"owner": {
"id": 3,
"username": "fayson1",
"name": "fayson1",
"email": "fayson1@qq.com",
"type": "user",
"html_url": "http://cdsw.fayson.com/fayson1",
"url": "http://cdsw.fayson.com/api/v1/users/fayson1"
},
"creator": {
"id": 3,
"username": "fayson1",
"name": "fayson1",
"url": "http://cdsw.fayson.com/api/v1/users/fayson1",
"html_url": "http://cdsw.fayson.com/fayson1"
},
"description": "",
"stars": 0,
"starred": null,
"forks": 0,
"forked": false,
"running_dashboards": 0,
"history": [{
"day": "2019-03-11 00:00:00Z",
"count": 2
}],
"public": false,
"project_visibility": "private",
"created_at": "2019-03-11T15:06:43.876Z",
"updated_at": "2019-03-11T15:17:05.263Z",
"user_updated_at": "2019-03-11T15:27:45.400Z",
"html_url": "http://cdsw.fayson.com/fayson1/testpython",
"url": "http://cdsw.fayson.com/api/v1/projects/fayson1/testpython"
}]
3 获取用户工程列表
本章节测试主要使用curl命令方式调用API接口,获取所用CDSW业务用户创建的Project详细信息。
1.使用管理员账号执行如下命令获取所有的cdsw业务用户
[root@ip-172-31-13-38 ~]# curl -u 'admin:123456' -X GET http://cdsw.fayson.com/api/v1/site/users
通过如上API接口可以获取到所有用户的详细信息,如上图有几个关键的信息,用户的username以及api_key信息,在接下来的接口请求中会用到。
2.使用如下命令,获取指定用户的Project列表
[root@ip-172-31-13-38 ~]# curl -X GET http://cdsw.fayson.com/api/v1/users/fayson1/projects --user "uxwejvsrw4ur1taqr2a2q8ozl1mluf11:"
通过上述接口可以获取到每个CDSW用户的Project列表,包含了Project的详细信息(ID,name等)。
4 总结
1.使用管理员账号通过API接口首先获取到CDSW集群中所有的用户信息,主要是获取用户的username以及api_key信息。
2.通过username和api_key参数结合获取用户Project列表的API接口,获取到指定用户的所有Project信息,信息中包含了每个工程的ID就可以与磁盘上的工程目录对应起来,监控每个用户工程磁盘使用情况。
3.在使用获取Project API接口时需要注意两个参数{user}和–user,{user}需要替换为每个业务用户的username,–user参数指定的为业务用户的api_key,注意最后面需要添加“:”。