зеркало из https://github.com/microsoft/pai.git
Update readme file. Refine the code for Grafana.
This commit is contained in:
Родитель
10269c440e
Коммит
99236b7072
|
@ -0,0 +1 @@
|
||||||
|
.env*
|
|
@ -2,62 +2,66 @@
|
||||||
|
|
||||||
Pylon is a service that enables users to access PAI functionalities through a single integrated entry point. This service is necessary particularly in a common situation: the cluster is shielded behind a gateway in which only a few jump machines are exposed. In this situation, none of the system services can be accessed directly because only the jump machines have public IPs. The only way to use the system is to setup Pylon on these jump machines as a proxy between the internal services and the outside world.
|
Pylon is a service that enables users to access PAI functionalities through a single integrated entry point. This service is necessary particularly in a common situation: the cluster is shielded behind a gateway in which only a few jump machines are exposed. In this situation, none of the system services can be accessed directly because only the jump machines have public IPs. The only way to use the system is to setup Pylon on these jump machines as a proxy between the internal services and the outside world.
|
||||||
|
|
||||||
## PAI Web Portal
|
|
||||||
|
|
||||||
PAI's webportal can be accessed via Pylon:
|
|
||||||
|
|
||||||
```
|
|
||||||
http://<pylon_server>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Built-In Redirected APIs
|
## Built-In Redirected APIs
|
||||||
|
|
||||||
APIs of various system components can also be accessed via Pylon. Usage:
|
APIs of various system components can also be accessed via Pylon. Usage:
|
||||||
|
|
||||||
```
|
```
|
||||||
http://<pylon_server>/<service>/api/...
|
http://<pylon_server>/<service>/api/<version>/...
|
||||||
```
|
```
|
||||||
|
|
||||||
Available services:
|
Available services:
|
||||||
|
|
||||||
- `rest-server`: PAI's REST server.
|
- PAI's REST server: `http://<pylon_server>/rest-server/api/v1/...`
|
||||||
- `kubernetes`: Kubernetes API server.
|
- Kubernetes API server: `http://<pylon_server>/kubernetes/api/v1/...`
|
||||||
- `prometheus`: Prometheus API server.
|
- WebHDFS API server: `http://<pylon_server>/webhdfs/api/v1/...`
|
||||||
- `webhdfs`: Web HDFS API server.
|
- Prometheus API server: `http://<pylon_server>/prometheus/api/v1/...`
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
- Rest-server api: http://10.0.3.9/restserver/api/v1/jobs
|
- Rest-server API: http://10.0.3.9/rest-server/api/v1/jobs
|
||||||
- Kubernetes api: http://10.0.3.9/kubernetes/api/v1/nodes
|
- Kubernetes API: http://10.0.3.9/kubernetes/api/v1/nodes
|
||||||
- Prometheus api: http://10.0.3.9/prometheus/api/v1/query?query=up
|
- WebHDFS API: http://10.0.3.9/webhdfs/api/v1/?op=LISTSTATUS
|
||||||
- Webhdfs api: http://10.0.3.9/webhdfs/api/v1/?op=LISTSTATUS
|
- Prometheus API: http://10.0.3.9/prometheus/api/v1/query?query=up
|
||||||
|
|
||||||
## General-Purpose Reverse Proxy
|
## Web Portals
|
||||||
|
|
||||||
Pylon also has a general-purpose reverse proxy:
|
The following web portals can be accessed via Pylon:
|
||||||
|
|
||||||
```
|
- K8s dashboard: `http://<pylon_server>/kubernetes/dashboard/`
|
||||||
http://<pylon_server>/r/http/<api_server_ip>/<api_server_port>...
|
- WebHDFS dashboard: `http://<pylon_server>/webhdfs/dashboard/`
|
||||||
```
|
- Grafana: `http://<pylon_server>/grafana/`
|
||||||
|
- PAI web portal: `http://<pylon_server>/`
|
||||||
|
|
||||||
For example:
|
## Developer's Guide
|
||||||
|
|
||||||
- Rest-server api: http://10.0.3.9/r/http/10.0.3.9/9186/api/v1/jobs
|
### Local Debugging
|
||||||
- Kubernetes api: http://10.0.3.9/r/http/10.0.3.9/8080/api/v1/nodes
|
|
||||||
- Prometheus api: http://10.0.3.9/r/http/10.0.1.9/9090/api/v1/query?query=up
|
|
||||||
- Webhdfs api: http://10.0.3.9/r/http/10.0.3.9/50070/webhdfs/v1/?op=LISTSTATUS
|
|
||||||
|
|
||||||
|
Steps:
|
||||||
|
- (In Windows command line) Run the following .bat file:
|
||||||
|
```
|
||||||
|
set REST_SERVER_URI=...
|
||||||
|
set K8S_API_SERVER_URI=...
|
||||||
|
set WEBHDFS_URI=...
|
||||||
|
set PROMETHEUS_URI=...
|
||||||
|
set K8S_DASHBOARD_URI=...
|
||||||
|
set GRAFANA_URI=...
|
||||||
|
set WEBPORTAL_URI=...
|
||||||
|
```
|
||||||
|
- Run: `python render.py`
|
||||||
|
- Copy the generated `nginx.conf` to the nginx configuration folder.
|
||||||
|
|
||||||
## Deployment
|
### Deploy to a PAI Cluster
|
||||||
|
|
||||||
The [readme](../service-deployment/README.md) in service deployment introduces the overall installation process.
|
The [readme](../service-deployment/README.md) in service deployment introduces the overall installation process.
|
||||||
|
|
||||||
The following parameter in the [clusterconfig.yaml](../service-deployment/clusterconfig-example.yaml) are of interest:
|
The following parameters in the [clusterconfig.yaml](../service-deployment/clusterconfig-example.yaml) should be correctly configured:
|
||||||
|
|
||||||
- `rest_server_uri`: String. The root url of the REST server.
|
- `rest_server_uri`: String. The root url of the REST server.
|
||||||
- `k8s_api_server_uri`: String. The root url of Kubernetes's API server.
|
- `k8s_api_server_uri`: String. The root url of Kubernetes's API server.
|
||||||
- `prometheus_uri`: String. The root url of Prometheus's API server.
|
|
||||||
- `webhdfs_uri`: String. The root url of WebHDFS's API server.
|
- `webhdfs_uri`: String. The root url of WebHDFS's API server.
|
||||||
|
- `prometheus_uri`: String. The root url of Prometheus's API server.
|
||||||
|
- `k8s_dashboard_uri`: String. The root url of the Kubernetes dashboard.
|
||||||
|
- `grafana_uri`: String. The root url of Grafana.
|
||||||
- `webportal_uri`: String. The root url of the web portal.
|
- `webportal_uri`: String. The root url of the web portal.
|
||||||
- `port`: Integer. The port number to access the Pylon service.
|
- `port`: Integer. The port number to access the Pylon service.
|
||||||
|
|
||||||
|
|
|
@ -120,6 +120,7 @@ http {
|
||||||
}
|
}
|
||||||
location ~ ^/grafana(.*)$$ {
|
location ~ ^/grafana(.*)$$ {
|
||||||
proxy_pass {{GRAFANA_URI}}$1$is_args$args;
|
proxy_pass {{GRAFANA_URI}}$1$is_args$args;
|
||||||
|
sub_filter_types *;
|
||||||
sub_filter_once off;
|
sub_filter_once off;
|
||||||
sub_filter
|
sub_filter
|
||||||
'<base href="/" />'
|
'<base href="/" />'
|
||||||
|
@ -127,6 +128,9 @@ http {
|
||||||
sub_filter
|
sub_filter
|
||||||
'{{PROMETHEUS_URI}}'
|
'{{PROMETHEUS_URI}}'
|
||||||
'$scheme://$http_host/prometheus';
|
'$scheme://$http_host/prometheus';
|
||||||
|
sub_filter
|
||||||
|
'{{GRAFANA_URI}}'
|
||||||
|
'$scheme://$http_host/grafana';
|
||||||
}
|
}
|
||||||
|
|
||||||
# PAI web portal
|
# PAI web portal
|
||||||
|
|
|
@ -642,7 +642,7 @@
|
||||||
"decimals": 0,
|
"decimals": 0,
|
||||||
"link": true,
|
"link": true,
|
||||||
"linkTooltip": "Click to view usage of each GPU",
|
"linkTooltip": "Click to view usage of each GPU",
|
||||||
"linkUrl": "/dashboard/script/gpu.js?orgId=1&host=$__cell_2&rows=$__cell_4",
|
"linkUrl": "{{ clusterinfo['grafanainfo']['grafana_url'] }}:{{ clusterinfo['grafanainfo']['grafana_port'] }}/dashboard/script/gpu.js?orgId=1&host=$__cell_2&rows=$__cell_4",
|
||||||
"pattern": "instance",
|
"pattern": "instance",
|
||||||
"preserveFormat": false,
|
"preserveFormat": false,
|
||||||
"sanitize": false,
|
"sanitize": false,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче