Skip to content

Commit

Permalink
update whizard readme
Browse files Browse the repository at this point in the history
Signed-off-by: frezes <[email protected]>
  • Loading branch information
frezes committed Aug 14, 2024
1 parent 9d4457d commit f9d6a84
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 19 deletions.
16 changes: 16 additions & 0 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
## Maintainers of Whizard

| Name | Email | GitHub | Company |
|-------------------|---------------------------|------------------------------------------------------|--------------------------------|
| Benjamin Huo | [email protected] | [@benjaminhuo](https://github.com/benjaminhuo) | QingCloud Technologies |
| Junhao Zhang | [email protected] | [@frezes](https://github.com/frezes) | QingCloud Technologies |
| junot | [email protected] | [@junotx](https://github.com/junotx) | QingCloud Technologies |
| Wanjun Lei | [email protected] | [@wanjunlei](https://github.com/wanjunlei) | QingCloud Technologies |


Please reach any of the maintainers on email if you want to help.

## Notes

This document is heavily inspired by Thanos MANTAINERS.md file. <3
If you find anything not clear in this file feel free to open an issue or reach out to one of the maintainers.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified

.PHONY: deploy
deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
cd config/manager && $(KUSTOMIZE) edit set image controller=${CONTROLLER_MANAGER_IMG}
$(KUSTOMIZE) build config/default | $(KUBECTL) apply --server-side -f -

.PHONY: undeploy
Expand Down
77 changes: 59 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,71 @@
# Whizard

Whizard is a Cloud Native observability platform for Cloud Native and traditional infrastructure and applications.
Currently, Whizard supports managing massive metrics data from multiple tenants, and the support for managing logs and tracing data will be added in the future.
## Overview

The Whizard provides [Kubernetes](https://kubernetes.io/) native deployment and management of [Thanos](https://thanos.io/) and related monitoring components.

The Whizard includes, but is not limited to, the following features:

- **Cloud-Native Deployment and Operation**: All components support definition and maintenance via Custom Resource Definitions (CRDs), simplifying configuration and operation. This includes Thanos components (Router, Ingester, Compactor, Store, Query, QueryFrontend, Ruler) and Whizard-specific components (Service, Tenant, Storage).
- **Tenant-Based Automatic Horizontal Scaling**: Recognizing that Horizontal Pod Autoscalers (HPA) based on CPU and Memory may not meet the stability requirements of enterprise-level stateful workloads, Whizard introduces a tenant-based workload scaling mechanism. Components such as Ingester, Compactor, and Ruler scale horizontally with tenant creation and deletion, ensuring stable operation and providing tenant-level horizontal scaling and resource reclamation.
- **Support for Multi-Cluster Management in K8s**: To enhance monitoring and alerting for multi-cluster K8s environments, Whizard's maintainers developed the whizard-adapter. This tool automatically creates or deletes Whizard tenants based on the creation or deletion of K8s or KubeSphere clusters, triggering the automatic scaling of Thanos stateful workloads.

For an introduction to the Whizard, see the [getting started](https://whizardtelemetry.github.io/docs/whizard-docs/intro) guide.

## Architecture

<div align=center><img src=docs/images/whizard.svg></div>

## Status
## CustomResourceDefinitions

A core feature of the Whizard is to monitor the Kubernetes API server for changes
to specific objects and ensure that the current component deployments match these objects.
The Operator acts on the following [Custom Resource Definitions (CRDs)](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions/):

- **Compactor**: Defines the Compactor component, which does the block compaction and life cycle management for the object storages.
- **Gateway**: Defines the Gateway component, which provides a unified entry point for metrics read and write requests.
- **Ingester**: Defines the Ingester component, which receives metrics data from routers, caches data in memory, flushes data to disk, and finally upload metrics blocks to object storage.
- **Query**: Defines the Query component, which fetches data from the ingesters and/or stores and then evaluates the query.
- **QueryFrontend**: Defines the Query Frontend component, which improves the query performance by request splitting and result cache.
- **Router**: Defines the Router component, which routes and replicates the metrics to the ingesters.
- **Ruler**: Defines the Ruler component, which evaluates recording and alerting rules.
- **Service**: Defines a Whizard Service, which connects different whizard components together to provide a complete monitoring service. It also contains shared configurations of different components.
- **Storage**: Defines the Storage instance, which contains the object storage configuration, and a block manager component for the block inspection and GC.
- **Store**: Defines the Store instance, which facilitates metrics reads from the object storage.
- **Tenant**: Defines a tenant which is the basic unit of resource isolation and auto-scaling.

The Whizard automatically detects changes in the Kubernetes API server to any of the above objects, and ensures that matching deployments and configurations are kept in sync.

## Quickstart

### Prerequisites

Kubernetes v1.19.0+ is necessary for running Whizard.

### Deploy Whizard with YAML

To quickly try out *just* the Whizard inside a cluster, **choose a release** and run the following command:

```sh
kubectl create --server-side -f config/bundle.yaml
```

### Deploy Whizard with Helm

> Note: For the helm based install, Helm v3.2.1 or higher is needed
```sh
helm install whizard --create-namespace -n kubesphere-monitoring-system charts/whizard/
```

## Contributing

| Component | Function | Status | Comment
|--------|-----------|--------|--------|
| *whizard-controller-manager* | `Service` (CRD) | | Define one Service instance, which contains *monitoring-gateway*, *Query* and *Router* to handle and route metric read and write requests.
|| `Ingester` (CRD) | | Define one *Receive Ingester* instance which lands metric data.
|| `Store` (CRD) | | Define one Store instace for long term storage.
|| `Ruler` (CRD) | | Define one *Ruler* instance.
| *monitoring-gateway* | Auth/Proxy for monitoring service | |
| *monitoring-agent-proxy* | Proxy for prometheus agent
| *whizard-apiserver* |
We welcome contributions to this repository! If you have ideas for additional tests or would like to contribute code, please submit a pull request.

## Install
## Security

- Install whizard-controller-manager:
If you find a security vulnerability related to the Prometheus Operator, please do not report it by opening a GitHub issue, but instead please send an e-mail to the maintainers of the project found in the [MAINTAINERS.md](MAINTAINERS.md) file.

```shell
kubectl apply -f https://raw.githubusercontent.com/kubesphere/whizard/master/config/bundle.yaml
```
## Issues

- See [here](./docs/monitoring/examples.md) to deploy your monitoring service accross clusters.
If you encounter any issues while using Whizard or running the tests in this repository, please submit an issue on this repository.

0 comments on commit f9d6a84

Please sign in to comment.