Merge pull request #1685 from huanggze/monitoring-doc

add monitoring dev guides
This commit is contained in:
KubeSphere CI Bot
2020-02-24 16:29:35 +08:00
committed by GitHub
5 changed files with 91 additions and 2 deletions

View File

@@ -69,7 +69,10 @@ TODO(@soulseen)
### KubeSphere Monitoring developer
TODO(@huanggze)
1. Read kubesphere's [Concepts And Designs for Monitoring](../concepts-and-designs/kubesphere-monitoring.md). Understand KubeSphere's monitoring stack.
2. For Prometheus and its wider eco-system setup, go to [kube-prometheus](https://github.com/kubesphere/prometheus-operator/tree/ks-v0.27.0/contrib/kube-prometheus).
3. For KubeSphere builtin metric rules, see [metrics_rules.go](https://github.com/kubesphere/kubesphere/blob/master/pkg/models/metrics/metrics_rules.go) and [kubernetes-mixin](https://github.com/kubesphere/kubernetes-mixin/blob/ks-v0.27.0/rules/rules.libsonnet).
4. For developers who are interested in KubeSphere monitoring backend, read [Development Guide for Monitoring](kubesphere-monitoring-development-guide.md) and [API doc](https://kubesphere.com.cn/docs/v2.1/api/kubesphere#tag/Cluster-Metrics).
### KubeSphere Logging developer

View File

@@ -0,0 +1,49 @@
# Monitoring
This documentation contains backend development guides for interaction with Prometheus. The monitoring backend provides the capabilities of:
- Metrics query
- Metrics sorting
- Multi-tenant isolation
## File Tree
The listing below covers all folders related to the monitoring backend.
```
/pkg
├─api
│ └─monitoring # declares structs for api responses
│ └─v1alpha2
├─apiserver # implements handler for http requests
│ └─monitoring
├─kapis # registers APIs and routing
│ └─monitoring
│ ├─install
│ └─v1alpha2
├─models
│ └─metrics
│ ├─constants.go
│ ├─metrics.go # proxies prometheus metrics query
│ ├─metrics_rules.go # promql expressions for builtin metrics
│ ├─namespaces.go # appends metric info to namespace resource request
│ ├─types.go
│ └─util.go # metrics sorting
└─simple
├─factory.go # factory functions for prometheus client options
└─client
└─prometheus
├─options.go # prometheus client options
└─prometheus.go # prometheus client code
```
## API Design
To support multi-tenant isolation, the monitoring backend proxies Prometheus query requests. KubeSphere's APIs have the format like below:
```
GET /namespaces/{namespace}/pods
GET /namespaces/{namespace}/pods/{pod}
```
KubeSphere API gateway will decode the URL and conduct authorization. A person who doesn't belong to a namespace will be rejected to make a request. Besides, note that the two examples above have slightly different meanings. The first is to retrieve all pod-level metrics in the namespace, while the latter is for a specific pod.