61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
# Logging
|
|
|
|
This documentation contains backend development guides for interaction with key components behind KubeSphere logging system. Logging backend provides the capabilities of:
|
|
|
|
- Log search
|
|
- Log export
|
|
- Log output configuration
|
|
- Multi-tenant isolation
|
|
|
|
## File Tree
|
|
|
|
The listing below covers all folders related to the logging backend.
|
|
|
|
```
|
|
/pkg
|
|
├─api
|
|
│ └─logging # declares structs for api responses
|
|
│ └─v1alpha2
|
|
├─apiserver # implements handler for http requests
|
|
│ ├─logging
|
|
│ └─tenant
|
|
├─kapis # registers APIs and routing
|
|
│ ├─logging
|
|
│ │ ├─install
|
|
│ │ └─v1alpha2
|
|
│ ├─tenant
|
|
│ │ ├─install
|
|
│ │ └─v1alpha2
|
|
├─models
|
|
│ ├─log # constants, utils and fluent-bit crd operation
|
|
│ │ ├─constants.go
|
|
│ │ ├─logcollector.go # some utils
|
|
│ │ ├─logcrd.go # interacts with fluent-bit crd
|
|
│ │ └─types.go
|
|
│ └─tenant
|
|
└─simple
|
|
├─factory.go # contains factory functions for es client options
|
|
└─client
|
|
├─elasticsearch # wraps es search apis
|
|
│ ├─esclient.go # constructs es search body
|
|
│ ├─interface.go # general interface methods for es clients
|
|
│ ├─options.go # es client options
|
|
│ └─versions # client code by es versions
|
|
│ ├─v5
|
|
│ ├─v6
|
|
│ └─v7
|
|
└─fluentbit # autogenerated client code for fluent-bit crd
|
|
```
|
|
|
|
## API Design
|
|
|
|
There are two types of APIs in logging. One for log query, and the other for interacting with the CustomResourceDefinition used by [Fluent-bit Operator](https://github.com/kubesphere/fluentbit-operator). For information about CRD and Fluent-bit Operator, please go to its own repo.
|
|
|
|
To support multi-tenant isolation, KubeSphere's logging query APIs have the format like below, though the underlying logic is using Elastic Search APIs:
|
|
|
|
```
|
|
GET /namespaces/{namespace}/pods/{pod}/containers/{container}
|
|
```
|
|
|
|
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.
|