From 7d2c5f9944de37b3ccdbc5285bb6bcb9b5a198c1 Mon Sep 17 00:00:00 2001
From: Tapajit Chandra Paul
Date: Tue, 29 Oct 2024 13:35:28 +0600
Subject: [PATCH] Add druid monitoring docs
Signed-off-by: Tapajit Chandra Paul
---
docs/guides/README.md | 2 +-
docs/guides/druid/README.md | 56 +-
docs/guides/druid/autoscaler/_index.md | 2 +-
docs/guides/druid/autoscaler/compute/guide.md | 6 +-
docs/guides/druid/autoscaler/storage/guide.md | 2 +-
docs/guides/druid/backup/overview/index.md | 2 +-
docs/guides/druid/clustering/_index.md | 2 +-
.../index.md | 12 +-
.../yamls/deep-storage-config.yaml | 0
.../yamls/druid-cluster.yaml | 0
.../images/druid-architecture.svg | 0
.../index.md | 10 +-
docs/guides/druid/concepts/druid.md | 26 +-
docs/guides/druid/concepts/druidautoscaler.md | 2 +-
docs/guides/druid/concepts/druidopsrequest.md | 2 +-
docs/guides/druid/concepts/druidversion.md | 2 +-
docs/guides/druid/configuration/guide.md | 10 +-
.../druid/configuration/images/druid-ui.png | Bin 48477 -> 47241 bytes
.../configuration/yamls/config-secret.yaml | 2 +-
docs/guides/druid/monitoring/_index.md | 10 +
.../monitoring/images/druid-monitoring.png | Bin 0 -> 68080 bytes
.../monitoring/images/druid-prometheus.png | Bin 0 -> 209966 bytes
docs/guides/druid/monitoring/overview.md | 139 ++++
.../monitoring/using-builtin-prometheus.md | 372 +++++++++
.../monitoring/using-prometheus-operator.md | 343 +++++++++
.../monitoring/yamls/deep-storage-config.yaml | 16 +
.../yamls/druid-monitoring-builtin.yaml | 24 +
.../yamls/druid-with-monitoring.yaml | 23 +
.../quickstart/{overview => guide}/index.md | 10 +-
docs/guides/druid/reconfigure-tls/_index.md | 2 +-
docs/guides/druid/reconfigure/_index.md | 10 +
docs/guides/druid/reconfigure/guide.md | 704 ++++++++++++++++++
.../druid/reconfigure/images/druid-ui.png | Bin 0 -> 47241 bytes
.../reconfigure/images/druid-updated-ui.png | Bin 0 -> 48477 bytes
.../druid/reconfigure/images/reconfigure.svg | 120 +++
docs/guides/druid/reconfigure/overview.md | 54 ++
.../reconfigure/yamls/config-secret.yaml | 10 +
.../yamls/deep-storage-config.yaml | 16 +
.../reconfigure/yamls/druid-cluster.yaml | 15 +
.../yamls/reconfigure-druid-ops.yaml | 12 +
docs/guides/druid/restart/_index.md | 2 +-
docs/guides/druid/restart/guide.md | 2 +-
docs/guides/druid/scaling/_index.md | 2 +-
.../druid/scaling/horizontal-scaling/guide.md | 4 +-
.../druid/scaling/vertical-scaling/guide.md | 4 +-
docs/guides/druid/tls/_index.md | 2 +-
docs/guides/druid/tls/guide.md | 5 +-
docs/guides/druid/update-version/_index.md | 2 +-
docs/guides/druid/update-version/guide.md | 2 +-
docs/guides/druid/volume-expansion/_index.md | 2 +-
docs/guides/druid/volume-expansion/guide.md | 6 +-
.../volume-expansion/yamls/druid-cluster.yaml | 2 +-
52 files changed, 1959 insertions(+), 94 deletions(-)
rename docs/guides/druid/clustering/{topology-cluster-guide => guide}/index.md (98%)
rename docs/guides/druid/clustering/{topology-cluster-guide => guide}/yamls/deep-storage-config.yaml (100%)
rename docs/guides/druid/clustering/{topology-cluster-guide => guide}/yamls/druid-cluster.yaml (100%)
rename docs/guides/druid/clustering/{topology-cluster-overview => overview}/images/druid-architecture.svg (100%)
rename docs/guides/druid/clustering/{topology-cluster-overview => overview}/index.md (94%)
create mode 100755 docs/guides/druid/monitoring/_index.md
create mode 100644 docs/guides/druid/monitoring/images/druid-monitoring.png
create mode 100644 docs/guides/druid/monitoring/images/druid-prometheus.png
create mode 100644 docs/guides/druid/monitoring/overview.md
create mode 100644 docs/guides/druid/monitoring/using-builtin-prometheus.md
create mode 100644 docs/guides/druid/monitoring/using-prometheus-operator.md
create mode 100644 docs/guides/druid/monitoring/yamls/deep-storage-config.yaml
create mode 100644 docs/guides/druid/monitoring/yamls/druid-monitoring-builtin.yaml
create mode 100644 docs/guides/druid/monitoring/yamls/druid-with-monitoring.yaml
rename docs/guides/druid/quickstart/{overview => guide}/index.md (98%)
create mode 100644 docs/guides/druid/reconfigure/_index.md
create mode 100644 docs/guides/druid/reconfigure/guide.md
create mode 100644 docs/guides/druid/reconfigure/images/druid-ui.png
create mode 100644 docs/guides/druid/reconfigure/images/druid-updated-ui.png
create mode 100644 docs/guides/druid/reconfigure/images/reconfigure.svg
create mode 100644 docs/guides/druid/reconfigure/overview.md
create mode 100644 docs/guides/druid/reconfigure/yamls/config-secret.yaml
create mode 100644 docs/guides/druid/reconfigure/yamls/deep-storage-config.yaml
create mode 100644 docs/guides/druid/reconfigure/yamls/druid-cluster.yaml
create mode 100644 docs/guides/druid/reconfigure/yamls/reconfigure-druid-ops.yaml
diff --git a/docs/guides/README.md b/docs/guides/README.md
index e7f0486867..065bc32b01 100644
--- a/docs/guides/README.md
+++ b/docs/guides/README.md
@@ -16,7 +16,7 @@ aliases:
# Guides
Guides to show you how to perform tasks with KubeDB:
-- [Druid](/docs/guides/kafka/README.md). Shows how to manage Druid using KubeDB.
+- [Druid](/docs/guides/druid/README.md). Shows how to manage Druid using KubeDB.
- [Elasticsearch](/docs/guides/elasticsearch/README.md). Shows how to manage Elasticsearch & OpenSearch using KubeDB.
- [Kafka](/docs/guides/kafka/README.md). Shows how to manage Kafka using KubeDB.
- [FerretDB](/docs/guides/ferretdb/README.md). Shows how to manage FerretDB using KubeDB.
diff --git a/docs/guides/druid/README.md b/docs/guides/druid/README.md
index 3117d47cb3..fc7a1c97e9 100644
--- a/docs/guides/druid/README.md
+++ b/docs/guides/druid/README.md
@@ -18,20 +18,28 @@ aliases:
## Supported Druid Features
-| Features | Availability |
-|----------------------------------------------------------------------------|:------------:|
-| Clustering | ✓ |
-| Druid Dependency Management (MySQL, PostgreSQL and ZooKeeper) | ✓ |
-| Authentication & Authorization | ✓ |
-| Custom Configuration | ✓ |
-| Backup/Recovery: Instant, Scheduled ( [KubeStash](https://kubestash.com/)) | ✓ |
-| Monitoring with Prometheus & Grafana | ✓ |
-| Builtin Prometheus Discovery | ✓ |
-| Using Prometheus operator | ✓ |
-| Externally manageable Auth Secret | ✓ |
-| Reconfigurable Health Checker | ✓ |
-| Persistent volume | ✓ |
-| Dashboard ( Druid Web Console ) | ✓ |
+| Features | Availability |
+|------------------------------------------------------------------------------------|:-----:|
+| Clustering | ✓ |
+| Druid Dependency Management (MySQL, PostgreSQL and ZooKeeper) | ✓ |
+| Authentication & Authorization | ✓ |
+| Custom Configuration | ✓ |
+| Backup/Recovery: Instant, Scheduled ( [KubeStash](https://kubestash.com/)) | ✓ |
+| Monitoring with Prometheus & Grafana | ✓ |
+| Builtin Prometheus Discovery | ✓ |
+| Using Prometheus operator | ✓ |
+| Externally manageable Auth Secret | ✓ |
+| Reconfigurable Health Checker | ✓ |
+| Persistent volume | ✓ |
+| Dashboard ( Druid Web Console ) | ✓ |
+| Automated Version Update | ✓ |
+| Automatic Vertical Scaling | ✓ |
+| Automated Horizontal Scaling | ✓ |
+| Automated db-configure Reconfiguration | ✓ |
+| TLS: Add, Remove, Update, Rotate ( [Cert Manager](https://cert-manager.io/docs/) ) | ✓ |
+| Automated Reprovision | ✓ |
+| Automated Volume Expansion | ✓ |
+| Autoscaling (vertically) | ✓ |
## Supported Druid Versions
@@ -39,7 +47,7 @@ KubeDB supports The following Druid versions.
- `28.0.1`
- `30.0.1`
-> The listed DruidVersions are tested and provided as a part of the installation process (ie. catalog chart), but you are open to create your own [DruidVersion](/docs/guides/druid/concepts/catalog.md) object with your custom Druid image.
+> The listed DruidVersions are tested and provided as a part of the installation process (ie. catalog chart), but you are open to create your own [DruidVersion](/docs/guides/druid/concepts/druidversion.md) object with your custom Druid image.
## Lifecycle of Druid Object
@@ -52,14 +60,12 @@ ref : https://cacoo.com/diagrams/bbB63L6KRIbPLl95/9A5B0
## User Guide
-- [Quickstart Druid](/docs/guides/druid/quickstart/overview/index.md) with KubeDB Operator.
-
-[//]: # (- Druid Clustering supported by KubeDB)
-
-[//]: # ( - [Topology Clustering](/docs/guides/druid/clustering/topology-cluster/index.md))
-
-[//]: # (- Use [kubedb cli](/docs/guides/druid/cli/cli.md) to manage databases like kubectl for Kubernetes.)
-
+- [Quickstart Druid](/docs/guides/druid/quickstart/guide/index.md) with KubeDB Operator.
+- [Druid Clustering](/docs/guides/druid/clustering/overview/index.md) with KubeDB Operator.
+- [Backup & Restore](/docs/guides/druid/backup/overview/index.md) Druid databases using KubeStash.
+- Start [Druid with Custom Config](/docs/guides/druid/configuration/_index.md).
+- Monitor your Druid database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/druid/monitoring/using-prometheus-operator.md).
+- Monitor your Druid database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/druid/monitoring/using-builtin-prometheus.md).
- Detail concepts of [Druid object](/docs/guides/druid/concepts/druid.md).
-
-[//]: # (- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).)
\ No newline at end of file
+- Detail concepts of [DruidVersion object](/docs/guides/druid/concepts/druidversion.md).
+- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).
\ No newline at end of file
diff --git a/docs/guides/druid/autoscaler/_index.md b/docs/guides/druid/autoscaler/_index.md
index c3e1826769..a39f2bfba3 100644
--- a/docs/guides/druid/autoscaler/_index.md
+++ b/docs/guides/druid/autoscaler/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: guides-druid-autoscaler
name: Autoscaling
parent: guides-druid
- weight: 46
+ weight: 100
menu_name: docs_{{ .version }}
---
\ No newline at end of file
diff --git a/docs/guides/druid/autoscaler/compute/guide.md b/docs/guides/druid/autoscaler/compute/guide.md
index 22a2502077..b0810f67b2 100644
--- a/docs/guides/druid/autoscaler/compute/guide.md
+++ b/docs/guides/druid/autoscaler/compute/guide.md
@@ -2,9 +2,9 @@
title: Druid Topology Autoscaling
menu:
docs_{{ .version }}:
- identifier: guides-druid-autoscaler-guide
- name: Topology Cluster
- parent: guides-druid-autoscaler
+ identifier: guides-druid-autoscaler-compute-guide
+ name: Druid Compute Autoscaling
+ parent: guides-druid-autoscaler-compute
weight: 20
menu_name: docs_{{ .version }}
section_menu_id: guides
diff --git a/docs/guides/druid/autoscaler/storage/guide.md b/docs/guides/druid/autoscaler/storage/guide.md
index 0c0926898c..02b3571625 100644
--- a/docs/guides/druid/autoscaler/storage/guide.md
+++ b/docs/guides/druid/autoscaler/storage/guide.md
@@ -3,7 +3,7 @@ title: Druid Topology Autoscaling
menu:
docs_{{ .version }}:
identifier: guides-druid-autoscaler-storage-guide
- name: Topology Cluster
+ name: Druid Storage Autoscaling
parent: guides-druid-autoscaler-storage
weight: 20
menu_name: docs_{{ .version }}
diff --git a/docs/guides/druid/backup/overview/index.md b/docs/guides/druid/backup/overview/index.md
index c8adef63e6..723754834f 100644
--- a/docs/guides/druid/backup/overview/index.md
+++ b/docs/guides/druid/backup/overview/index.md
@@ -2,7 +2,7 @@
title: Backup & Restore Druid Overview
menu:
docs_{{ .version }}:
- identifier: guides-druid-backup-overview
+ identifier: guides-druid-backup-guide
name: Overview
parent: guides-druid-backup
weight: 10
diff --git a/docs/guides/druid/clustering/_index.md b/docs/guides/druid/clustering/_index.md
index 7c0d20a4ff..20b929a8a2 100644
--- a/docs/guides/druid/clustering/_index.md
+++ b/docs/guides/druid/clustering/_index.md
@@ -3,7 +3,7 @@ title: Druid Clustering
menu:
docs_{{ .version }}:
identifier: guides-druid-clustering
- name: Druid Clustering
+ name: Clustering
parent: guides-druid
weight: 30
menu_name: docs_{{ .version }}
diff --git a/docs/guides/druid/clustering/topology-cluster-guide/index.md b/docs/guides/druid/clustering/guide/index.md
similarity index 98%
rename from docs/guides/druid/clustering/topology-cluster-guide/index.md
rename to docs/guides/druid/clustering/guide/index.md
index 40b9b20b79..889ac39eb3 100644
--- a/docs/guides/druid/clustering/topology-cluster-guide/index.md
+++ b/docs/guides/druid/clustering/guide/index.md
@@ -2,8 +2,8 @@
title: Druid Topology Cluster Guide
menu:
docs_{{ .version }}:
- identifier: guides-druid-clustering-topology-cluster-guide
- name: Druid Topology Cluster Guide
+ identifier: guides-druid-clustering-guide
+ name: Druid Clustering Overview
parent: guides-druid-clustering
weight: 20
menu_name: docs_{{ .version }}
@@ -20,7 +20,7 @@ This tutorial will show you how to use KubeDB to provision a Druid Cluster.
Before proceeding:
-- Read [druid topology cluster overview](/docs/guides/druid/clustering/topology-cluster-overview/index.md) to get a basic idea about the design and architecture of Druid.
+- Read [druid topology cluster overview](/docs/guides/druid/clustering/overview/index.md) to get a basic idea about the design and architecture of Druid.
- You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/).
@@ -107,7 +107,7 @@ spec:
```
```bash
-$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/clustering/topology-cluster-guide/yamls/druid-with-config.yaml
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/clustering/guide/yamls/druid-with-monitoring.yaml
druid.kubedb.com/druid-cluster created
```
@@ -920,6 +920,6 @@ namespace "demo" deleted
## Next Steps
-- Detail concepts of [Druid object](/docs/guides/druid/concepts/database/index.md).
-- Detail concepts of [DruidDBVersion object](/docs/guides/druid/concepts/catalog/index.md).
+- Detail concepts of [Druid object](/docs/guides/druid/concepts/druid.md).
+- Detail concepts of [DruidDBVersion object](/docs/guides/druid/concepts/druidversion.md).
- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).
diff --git a/docs/guides/druid/clustering/topology-cluster-guide/yamls/deep-storage-config.yaml b/docs/guides/druid/clustering/guide/yamls/deep-storage-config.yaml
similarity index 100%
rename from docs/guides/druid/clustering/topology-cluster-guide/yamls/deep-storage-config.yaml
rename to docs/guides/druid/clustering/guide/yamls/deep-storage-config.yaml
diff --git a/docs/guides/druid/clustering/topology-cluster-guide/yamls/druid-cluster.yaml b/docs/guides/druid/clustering/guide/yamls/druid-cluster.yaml
similarity index 100%
rename from docs/guides/druid/clustering/topology-cluster-guide/yamls/druid-cluster.yaml
rename to docs/guides/druid/clustering/guide/yamls/druid-cluster.yaml
diff --git a/docs/guides/druid/clustering/topology-cluster-overview/images/druid-architecture.svg b/docs/guides/druid/clustering/overview/images/druid-architecture.svg
similarity index 100%
rename from docs/guides/druid/clustering/topology-cluster-overview/images/druid-architecture.svg
rename to docs/guides/druid/clustering/overview/images/druid-architecture.svg
diff --git a/docs/guides/druid/clustering/topology-cluster-overview/index.md b/docs/guides/druid/clustering/overview/index.md
similarity index 94%
rename from docs/guides/druid/clustering/topology-cluster-overview/index.md
rename to docs/guides/druid/clustering/overview/index.md
index e051fd7298..4168dc7421 100644
--- a/docs/guides/druid/clustering/topology-cluster-overview/index.md
+++ b/docs/guides/druid/clustering/overview/index.md
@@ -2,8 +2,8 @@
title: Druid Topology Cluster Overview
menu:
docs_{{ .version }}:
- identifier: guides-druid-clustering-topology-cluster-overview
- name: Druid Topology Cluster Overview
+ identifier: guides-druid-clustering-overview
+ name: Druid Clustering Overview
parent: guides-druid-clustering
weight: 15
menu_name: docs_{{ .version }}
@@ -18,7 +18,7 @@ Druid has a distributed architecture that is designed to be cloud-friendly and e
The following diagram shows the services that make up the Druid architecture, their typical arrangement across servers, and how queries and data flow through this architecture.
-![Druid Architecture](/docs/guides/druid/clustering/topology-cluster-overview/images/druid-architecture.svg)
+![Druid Architecture](/docs/guides/druid/clustering/overview/images/druid-architecture.svg)
Image ref:
@@ -72,7 +72,7 @@ Data servers divide operations between Historical and MiddleManager services.
[Historical](https://druid.apache.org/docs/latest/design/historical/) services handle storage and querying on historical data, including any streaming data that has been in the system long enough to be committed. Historical services download segments from deep storage and respond to queries about these segments. They don't accept writes.
#### MiddleManager service
-[MiddleManager](https://druid.apache.org/docs/latest/design/middleManager) services handle ingestion of new data into the cluster. They are responsible for reading from external data sources and publishing new Druid segments.
+[MiddleManager](https://druid.apache.org/docs/latest/design/middlemanager) services handle ingestion of new data into the cluster. They are responsible for reading from external data sources and publishing new Druid segments.
## External dependencies
In addition to its built-in service types, Druid also has three external dependencies. These are intended to be able to leverage existing infrastructure, where present.
@@ -111,5 +111,5 @@ For more details, please see the [ZooKeeper](https://druid.apache.org/docs/lates
## Next Steps
-- [Deploy Druid Group Replication](/docs/guides/druid/clustering/group-replication/index.md) using KubeDB.
+- [Deploy Druid Cluster](/docs/guides/druid/clustering/overview/index.md) using KubeDB.
- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md)
diff --git a/docs/guides/druid/concepts/druid.md b/docs/guides/druid/concepts/druid.md
index 968fdc1b56..5d3ad66d29 100644
--- a/docs/guides/druid/concepts/druid.md
+++ b/docs/guides/druid/concepts/druid.md
@@ -23,7 +23,7 @@ section_menu_id: guides
As with all other Kubernetes objects, a Druid needs `apiVersion`, `kind`, and `metadata` fields. It also needs a `.spec` section. Below is an example Druid object.
```yaml
-apiVersion: kubedb.com/v1
+apiVersion: kubedb.com/v1alpha2
kind: Druid
metadata:
name: druid
@@ -53,18 +53,6 @@ spec:
timeoutSeconds: 10
keystoreCredSecret:
name: druid-keystore-cred
- podTemplate:
- metadata:
- annotations:
- passMe: ToDatabasePod
- labels:
- thisLabel: willGoToPod
- controller:
- annotations:
- passMe: ToPetSet
- labels:
- thisLabel: willGoToPts
- storageType: Durable
deletionPolicy: DoNotTerminate
tls:
certificates:
@@ -137,6 +125,7 @@ spec:
limits:
cpu: 700m
memory: 2Gi
+ storageType: Durable
storage:
accessModes:
- ReadWriteOnce
@@ -156,6 +145,7 @@ spec:
limits:
cpu: 700m
memory: 2Gi
+ storageType: Durable
storage:
accessModes:
- ReadWriteOnce
@@ -172,7 +162,7 @@ spec:
labels:
release: prometheus
interval: 10s
- version: 3.6.1
+ version: 30.0.0
```
### spec.version
@@ -180,7 +170,7 @@ spec:
`spec.version` is a required field specifying the name of the [DruidVersion](/docs/guides/druid/concepts/druidversion.md) crd where the docker images are specified. Currently, when you install KubeDB, it creates the following `Druid` resources,
- `28.0.1`
-- `30.0.1`
+- `30.0.0`
### spec.replicas
@@ -531,9 +521,9 @@ Know details about KubeDB Health checking from this [blog post](https://appscode
## Next Steps
- Learn how to use KubeDB to run Apache Druid cluster [here](/docs/guides/druid/README.md).
-- Deploy [dedicated topology cluster](/docs/guides/druid/clustering/topology-cluster-guide/index.md) for Apache Druid
-- Deploy [combined cluster](/docs/guides/druid/clustering/combined-cluster/index.md) for Apache Druid
+- Deploy [dedicated topology cluster](/docs/guides/druid/clustering/guide/index.md) for Apache Druid
- Monitor your Druid cluster with KubeDB using [`out-of-the-box` Prometheus operator](/docs/guides/druid/monitoring/using-prometheus-operator.md).
- Detail concepts of [DruidVersion object](/docs/guides/druid/concepts/druidversion.md).
-- Learn to use KubeDB managed Druid objects using [CLIs](/docs/guides/druid/cli/cli.md).
+
+[//]: # (- Learn to use KubeDB managed Druid objects using [CLIs](/docs/guides/druid/cli/cli.md).)
- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).
diff --git a/docs/guides/druid/concepts/druidautoscaler.md b/docs/guides/druid/concepts/druidautoscaler.md
index ea52ce6c93..b22504ce2f 100644
--- a/docs/guides/druid/concepts/druidautoscaler.md
+++ b/docs/guides/druid/concepts/druidautoscaler.md
@@ -69,7 +69,7 @@ spec:
trigger: "On"
usageThreshold: 60
scalingThreshold: 50
- middleMangers:
+ middleManagers:
expansionMode: "Online"
trigger: "On"
usageThreshold: 60
diff --git a/docs/guides/druid/concepts/druidopsrequest.md b/docs/guides/druid/concepts/druidopsrequest.md
index 2df74e4cdf..6a846814f2 100644
--- a/docs/guides/druid/concepts/druidopsrequest.md
+++ b/docs/guides/druid/concepts/druidopsrequest.md
@@ -188,7 +188,7 @@ spec:
volumeExpansion:
mode: "Online"
historicals: 2Gi
- middleMangers: 2Gi
+ middleManagers: 2Gi
status:
conditions:
- lastTransitionTime: "2024-07-25T18:22:38Z"
diff --git a/docs/guides/druid/concepts/druidversion.md b/docs/guides/druid/concepts/druidversion.md
index d7770f81fe..74bd7e76f2 100644
--- a/docs/guides/druid/concepts/druidversion.md
+++ b/docs/guides/druid/concepts/druidversion.md
@@ -99,4 +99,4 @@ helm upgrade -i kubedb oci://ghcr.io/appscode-charts/kubedb \
## Next Steps
- Learn about Druid CRD [here](/docs/guides/druid/concepts/druid.md).
-- Deploy your first Druid database with KubeDB by following the guide [here](/docs/guides/druid/quickstart/druid/index.md).
+- Deploy your first Druid database with KubeDB by following the guide [here](/docs/guides/druid/quickstart/guide/index.md).
diff --git a/docs/guides/druid/configuration/guide.md b/docs/guides/druid/configuration/guide.md
index 1bae590a79..a7baf0c727 100644
--- a/docs/guides/druid/configuration/guide.md
+++ b/docs/guides/druid/configuration/guide.md
@@ -3,7 +3,7 @@ title: Configuring Druid Cluster
menu:
docs_{{ .version }}:
identifier: guides-druid-configuration-druid-cluster
- name: Guide
+ name: Configuration File
parent: guides-druid-configuration
weight: 10
menu_name: docs_{{ .version }}
@@ -102,7 +102,7 @@ secret/deep-storage-config created
## Use Custom Configuration
-Say we want to change the default log retention time and default replication factor of creating a topic of brokers. Let's create the `middleManagers.properties` file with our desire configurations.
+Say we want to change the default maximum number of tasks the MiddleManager can accept. Let's create the `middleManagers.properties` file with our desire configurations.
**middleManagers.properties:**
@@ -110,7 +110,7 @@ Say we want to change the default log retention time and default replication fac
druid.worker.capacity=5
```
-and we also want to change the metadata.log.dir of the all historicals nodes. Let's create the `historicals.properties` file with our desire configurations.
+and we also want to change the number of processing threads to have available for parallel processing of segments of the historicals nodes. Let's create the `historicals.properties` file with our desire configurations.
**historicals.properties:**
@@ -170,7 +170,7 @@ spec:
Now, create the Druid object by the following command:
```bash
-$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/configuration/yamls/druid-with-config.yaml
+$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/druid/configuration/yamls/druid-with-monitoring.yaml
druid.kubedb.com/druid-with-config created
```
@@ -256,7 +256,7 @@ Now hit the `http://localhost:8888` from any browser, and you will be prompted t
After providing the credentials correctly, you should be able to access the web console like shown below.
-
+
diff --git a/docs/guides/druid/configuration/images/druid-ui.png b/docs/guides/druid/configuration/images/druid-ui.png
index 4e53f6bb0037a9ed450111f3e3210143009edcd1..af798ee7b4500b849f698decb06b9abde3dfba0e 100644
GIT binary patch
literal 47241
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