Skip to content

Commit f6708f8

Browse files
committed
docs(monitoring): style pass on fleet monitoring phase 1 docs
Fix missing .mdx suffixes on relative links, remaining virtual/host cluster terminology, contractions, Flow step verbs, run-on sentences, and the vClusters trademark plural in a dashboard panel table.
1 parent d46d71c commit f6708f8

12 files changed

Lines changed: 82 additions & 82 deletions

platform/maintenance/monitoring/central-hostpath-mapper.mdx

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import FeatureTable from '@site/src/components/FeatureTable';
1717

1818
You can install a common logging solution such as Fluentd or the ELK stack on the Control Plane Cluster and use it within the tenant cluster. However, in some scenarios, installing these tools directly on the tenant cluster is preferred.
1919

20-
These logging solutions access pod and container logs by mounting node host paths and using specific filename formats to associate logs with the correct pods. This approach doesnt work in a vCluster because the vCluster rewrites pod names to a vCluster-specific format when syncing them to the Control Plane Cluster.
20+
These logging solutions access pod and container logs by mounting node host paths and using specific filename formats to associate logs with the correct pods. This approach doesn't work in a tenant cluster because vCluster rewrites pod names to a vCluster-specific format when syncing them to the Control Plane Cluster.
2121

22-
The HostPath Mapper collects logs from tenant clusters. It works by matching virtual pod and container names to their physical names on the host and does this through symbolic links.
22+
The HostPath Mapper collects logs from tenant clusters. It works by matching virtual pod and container names to their physical names on the host through symbolic links.
2323

2424
To enable HostPath Mapper for a tenant cluster, install a DaemonSet in the same namespace. This setup works well for small environments with few nodes and tenant clusters.
2525

@@ -32,7 +32,7 @@ To use this feature, install the Central HostPath Mapper on the Control Plane Cl
3232
:::
3333

3434
:::warning Templates
35-
This feature is only configurable from the UI for tenant clusters created without a template. When using a custom template that has the feature enabled, the UI does not display the configuration in **Advanced Options** as described below. In this case, configure the feature using the CLI or by modifying the manifests.
35+
This feature is only configurable from the UI for tenant clusters created without a template. When using a custom template that has the feature enabled, the UI doesn't display the configuration in **Advanced Options** as described below. In this case, configure the feature using the CLI or by modifying the manifests.
3636
:::
3737

3838
<Tabs
@@ -45,28 +45,28 @@ This feature is only configurable from the UI for tenant clusters created withou
4545
<TabItem value="creation">
4646
<Flow id="enable-central-hpm-virtualcluster-creation">
4747
<Step>
48-
From the project drop-down menu, select the project you'd like to create
49-
the tenant cluster in.
48+
From the project drop-down menu, click the project where you want to
49+
create the tenant cluster.
5050
</Step>
5151
<Step>
52-
Click the <Button>New Tenant Cluster</Button> button above the list of tenant clusters
52+
Click the <Button>New Tenant Cluster</Button> button above the list of tenant clusters.
5353
</Step>
5454
<Step>
55-
<b>[Optional]</b> select the cluster in which to create the tenant
55+
<b>[Optional]</b> Click the cluster where you want to create the tenant
5656
cluster.
5757
</Step>
5858
<Step>
5959
Leave the <Label>Select a template</Label> section blank and click the <Button>Configure</Button> to continue.
6060
</Step>
6161
<Step>
6262
Click the <Label>Advanced Options</Label> configuration tab and expand
63-
the 'Host Path Mapper' section.
63+
the **Host Path Mapper** section.
6464
</Step>
6565
<Step>
66-
Toggle the slider <Label>Enable</Label>. This will add the
67-
'loft.sh/hpm-enabled' annotation to the template metadata which will be
68-
automatically synced to the tenant cluster on creation. Secondly, it
69-
will add `enabled: true` & `central: true` under the '[controlPlane.hostPathMapper](/docs/vcluster/configure/vcluster-yaml/control-plane/components/host-path-mapper)' field in the vcluster.yaml.
66+
Toggle the slider <Label>Enable</Label>. This adds the
67+
`loft.sh/hpm-enabled` annotation to the template metadata, which syncs
68+
automatically to the tenant cluster on creation. It also sets
69+
`enabled: true` and `central: true` under the [controlPlane.hostPathMapper](/docs/vcluster/configure/vcluster-yaml/control-plane/components/host-path-mapper) field in the vcluster.yaml.
7070
</Step>
7171
<Step>
7272
Finish configuring anything else on your tenant cluster,
@@ -78,21 +78,22 @@ This feature is only configurable from the UI for tenant clusters created withou
7878
<TabItem value="existing">
7979
<Flow id="enable-central-hpm-virtualcluster-existing">
8080
<Step>
81-
Select the project that contains the tenant cluster you want to enable Central HostPath Mapper on from the project drop-down menu.
81+
From the project drop-down menu, click the project that contains the
82+
tenant cluster where you want to enable Central HostPath Mapper.
8283
</Step>
8384
<Step>
84-
Hover over the tenant cluster you would like to enable Central HostPath Mapper on to see an <Label>Edit</Label> button displayed.
85+
Hover over the tenant cluster where you want to enable Central HostPath Mapper to reveal the <Label>Edit</Label> button.
8586
Click <Label>Edit</Label>.
8687
</Step>
8788
<Step>
8889
Click the <Label>Advanced Options</Label> configuration tab and expand
8990
the **Host Path Mapper** section.
9091
</Step>
9192
<Step>
92-
Toggle the slider <Label>Enable</Label>. This will add the
93-
'loft.sh/hpm-enabled' annotation to the template metadata which will be
94-
automatically synced to the tenant cluster on creation. Secondly, it
95-
will add `enabled: true` & `central: true` under the '[controlPlane.hostPathMapper](/docs/vcluster/configure/vcluster-yaml/control-plane/components/host-path-mapper)' field in the vcluster.yaml.
93+
Toggle the slider <Label>Enable</Label>. This adds the
94+
`loft.sh/hpm-enabled` annotation to the template metadata, which syncs
95+
automatically to the tenant cluster on creation. It also sets
96+
`enabled: true` and `central: true` under the [controlPlane.hostPathMapper](/docs/vcluster/configure/vcluster-yaml/control-plane/components/host-path-mapper) field in the vcluster.yaml.
9697
</Step>
9798
<Step>
9899
Finish configuring anything else on your tenant cluster,

platform/maintenance/monitoring/fleet-monitoring-otel.mdx

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ The architecture comprises the following:
122122
- Collector architecture:
123123
- A central Prometheus with the remote write receiver enabled.
124124
- One OTel Collector Deployment with Target Allocator per Control Plane Cluster (scrapes shared-nodes tenant clusters and their control planes using ServiceMonitors).
125-
- One OTel Collector DaemonSet per private-nodes vCluster (scrapes local kubelet, cAdvisor, and API server metrics from inside the vCluster).
125+
- One OTel Collector DaemonSet per private-nodes tenant cluster (scrapes local kubelet, cAdvisor, and API server metrics from inside the tenant cluster).
126126

127127
## How it works
128128

@@ -170,7 +170,7 @@ which also prevents duplicate series with any existing Prometheus scrapes.
170170

171171
### Private nodes
172172

173-
The private-nodes collector runs inside each vCluster as a DaemonSet with one
173+
The private-nodes collector runs inside each tenant cluster as a DaemonSet with one
174174
pod per node. Each pod scrapes only its local node's kubelet `/metrics`,
175175
cAdvisor `/metrics/cadvisor`, and API server `/metrics` endpoints.
176176

@@ -188,14 +188,14 @@ prometheus receiver (kubelet, cAdvisor, API server)
188188
pod → vcluster_virtual_pod)
189189
```
190190

191-
Since the collector runs inside the vCluster, it can't access host-cluster
192-
namespace labels. Instead, the Platform injects `{{ .Values.loft.* }}` template
191+
Since the collector runs inside the tenant cluster, it can't access Control
192+
Plane Cluster namespace labels. Instead, the Platform injects `{{ .Values.loft.* }}` template
193193
variables at deploy time, which are set as `external_labels` on the
194-
`prometheusremotewrite` exporter. These are static per-vCluster values applied
194+
`prometheusremotewrite` exporter. These are static per-tenant-cluster values applied
195195
to all exported metrics.
196196

197197
The `metric_relabel_configs` copy `namespace` to `vcluster_virtual_namespace`
198-
and `pod` to `vcluster_virtual_pod`. Inside a private-nodes vCluster, the
198+
and `pod` to `vcluster_virtual_pod`. Inside a private-nodes tenant cluster, the
199199
`namespace` and `pod` labels already represent virtual names, so this copy
200200
ensures dashboard compatibility with the shared-nodes collector.
201201

@@ -219,7 +219,7 @@ All metrics from both apps carry a consistent set of identity labels:
219219
`vcluster_virtual_namespace` and `vcluster_virtual_pod` are missing on some
220220
metrics. These are vCluster system pods (syncer, CoreDNS) that don't have the
221221
syncer labels and annotations because they aren't user workloads synced from
222-
inside the vCluster.
222+
inside the tenant cluster.
223223
:::
224224

225225
## Prerequisites
@@ -248,7 +248,7 @@ server:
248248

249249
- kubelet scraping disabled in any existing kube-prometheus-stack to avoid
250250
duplicate cAdvisor series (`kubelet.enabled: false`).
251-
- Platform namespace labels present (added automatically by the vCluster Platform).
251+
- Platform namespace labels present (added automatically by vCluster Platform).
252252

253253
### Private nodes prerequisites
254254

@@ -593,7 +593,7 @@ spec:
593593
- **`serviceMonitorSelector: app: vcluster`**: Without filtering, the Target
594594
Allocator discovers all ServiceMonitors in the cluster, overwhelming
595595
collectors with memory pressure.
596-
- **`operator.targetallocator.mtls: true`**: Each vCluster exposes its API
596+
- **`operator.targetallocator.mtls: true`**: Each tenant cluster exposes its API
597597
server metrics over mTLS. Without this feature gate, the Target Allocator
598598
redacts TLS private keys when passing scrape configs to collectors.
599599
- **`otel/opentelemetry-collector-contrib` image**: The default image doesn't
@@ -614,7 +614,7 @@ kubectl apply -f otel-collector-shared-nodes-app.yaml
614614
<Flow id="deploy-otel-shared">
615615
<Step>
616616
Go to the <NavStep>Infra</NavStep> section using the menu on the left, and
617-
select the <NavStep>Clusters</NavStep> view.
617+
click the <NavStep>Clusters</NavStep> view.
618618
</Step>
619619
<Step>
620620
Click on the cluster where you want to deploy the collector.
@@ -623,7 +623,7 @@ kubectl apply -f otel-collector-shared-nodes-app.yaml
623623
Navigate to the <NavStep>Apps</NavStep> tab.
624624
</Step>
625625
<Step>
626-
Click <Button>Deploy App</Button> and select the
626+
Click <Button>Deploy App</Button> and click the
627627
**OTEL Collector - Shared Nodes** app.
628628
</Step>
629629
<Step>
@@ -646,7 +646,7 @@ Repeat these steps for each Control Plane Cluster.
646646
## Deploy the private nodes collector
647647
<!-- vale on -->
648648

649-
Deploy one private-nodes collector into each private-nodes vCluster. All
649+
Deploy one private-nodes collector into each private-nodes tenant cluster. All
650650
vCluster identity labels are injected automatically by the Platform using
651651
`{{ .Values.loft.* }}`.
652652

@@ -890,7 +890,7 @@ spec:
890890
ensures one collector per node, scraping only the local kubelet and cAdvisor
891891
using `${env:K8S_NODE_NAME}` filtering. No Target Allocator is needed.
892892
- **`external_labels` instead of `k8sattributes` for identity**: The collector
893-
runs inside the vCluster, so it can't access Control Plane Cluster namespace labels.
893+
runs inside the tenant cluster, so it can't access Control Plane Cluster namespace labels.
894894
The Platform injects `{{ .Values.loft.* }}` template variables at deploy time.
895895
- **`resource_to_telemetry_conversion: false`**: Setting this to `true` causes
896896
duplicate labels that break Grafana dashboards.
@@ -917,7 +917,7 @@ kubectl apply -f otel-collector-private-nodes-app.yaml
917917
Go to the <NavStep>Projects</NavStep> section using the menu on the left.
918918
</Step>
919919
<Step>
920-
Select the project containing your private-nodes tenant cluster.
920+
Click the project containing your private-nodes tenant cluster.
921921
</Step>
922922
<Step>
923923
Click on the tenant cluster, then navigate to the <NavStep>Config</NavStep>
@@ -1216,7 +1216,8 @@ with the event rate.
12161216

12171217
:::note
12181218
This section assumes Grafana is already deployed. For setup instructions, see
1219-
[Aggregating Metrics Deploy Grafana](./aggregating-metrics.mdx#deploy-grafana).
1219+
the [Deploy Grafana](./aggregating-metrics.mdx#deploy-grafana) section in
1220+
Aggregating Metrics.
12201221
:::
12211222

12221223
Two Grafana dashboards are provided for visualizing metrics collected by the
@@ -1235,14 +1236,12 @@ time, so all panels use straightforward PromQL queries without joins.
12351236
### vCluster projects dashboard
12361237
<!-- vale on -->
12371238

1238-
A platform admin overview of vCluster projects across shared and private node
1239-
tenant clusters. Use this dashboard to monitor resource consumption and API health at
1240-
the project level.
1239+
A platform admin overview of vCluster projects across Shared Nodes and Private
1240+
Nodes tenant clusters. Use this dashboard to monitor resource consumption and
1241+
API health at the project level.
12411242

12421243
**Dashboard JSON file:** [Download dashboard JSON](/media/dashboards/vcluster-projects.json)
12431244

1244-
1245-
12461245
**Template variables:**
12471246

12481247
| Variable | Description |
@@ -1256,8 +1255,8 @@ the project level.
12561255
<!-- vale off -->
12571256
| Section | Panels |
12581257
|---------|--------|
1259-
| Project summary | Total Projects, Total vClusters, Total Pods, Total CPU (cores), Total Memory, Max Error Rate (stat panels) |
1260-
| Resource usage by project | CPU by Project (cores), Memory by Project, Pods by Project, vClusters by Project (bar charts) |
1258+
| Project summary | Total Projects, Total tenant clusters, Total Pods, Total CPU (cores), Total Memory, Max Error Rate (stat panels) |
1259+
| Resource usage by project | CPU by Project (cores), Memory by Project, Pods by Project, Tenant clusters by Project (bar charts) |
12611260
| API health by project | API Request Rate, API Error Rate (5xx), API P95 Latency (time series) |
12621261
| Resource trends | CPU Usage Trend (stacked), Memory Usage Trend (stacked) (time series) |
12631262
<!-- vale on -->

platform/maintenance/monitoring/fleet/configure-edge-collectors.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ The `metrics-writer` key must include a matching `spec.scope.clusters` entry.
9898
## Scrape custom targets
9999

100100
Use the collector's `prometheus` receiver to scrape exporters such as kubelet,
101-
cAdvisor, DCGM exporter, or application endpoints. The gateway does not require a
102-
specific scrape receiver; it only requires OTLP metrics with valid authentication and
101+
cAdvisor, DCGM exporter, or application endpoints. The gateway doesn't require a
102+
specific scrape receiver. It only requires OTLP metrics with valid authentication and
103103
scope.
104104

105105
Example DCGM scrape job:
@@ -123,7 +123,7 @@ receivers:
123123

124124
## Protect platform labels
125125

126-
Do not set labels with the `vcluster_platform_*` prefix in edge collectors. The Write
126+
Don't set labels with the `vcluster_platform_*` prefix in edge collectors. The Write
127127
Gateway strips this namespace from incoming resource, scope, and datapoint attributes
128128
before stamping authenticated labels.
129129

platform/maintenance/monitoring/fleet/configure-metrics-access.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ cluster.
1717
| `metrics-writer` | Edge collectors | Write metrics for the access key's scoped cluster or tenant cluster. |
1818
| `metrics-reader` | Grafana, PromQL clients, automation | Read metrics for the access key's scoped cluster or tenant cluster. |
1919

20-
The roles are intentionally separate. A `metrics-writer` key cannot read metrics, and
21-
a `metrics-reader` key cannot write metrics. A key can carry both roles when an
20+
The roles are intentionally separate. A `metrics-writer` key can't read metrics, and
21+
a `metrics-reader` key can't write metrics. A key can carry both roles when an
2222
integration needs both paths.
2323

2424
## Scope choices
@@ -30,7 +30,7 @@ Scope metrics keys as tightly as possible:
3030
- Use `*` only for trusted fleet-wide automation.
3131

3232
The Platform authorization check still applies the permissions of the user or subject
33-
that owns the key. Scope narrows permission; it does not expand it.
33+
that owns the key. Scope narrows permission. It doesn't expand it.
3434

3535
## Create a writer key for a tenant cluster
3636

platform/maintenance/monitoring/fleet/install-observability-gateway.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Before you create the connector, prepare:
2424
- Optional CA, gateway serving certificate, or backend client certificate Secrets.
2525

2626
:::note
27-
Phase 1 does not install or size the metrics backend for you. Use your existing backend
27+
Phase 1 doesn't install or size the metrics backend for you. Use your existing backend
2828
or deploy one separately.
2929
:::
3030

platform/maintenance/monitoring/fleet/labels-reference.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ stamped from authenticated Platform context and are safe to use for dashboards,
1010
recording rules, and backend queries.
1111

1212
:::warning
13-
Do not set labels with the `vcluster_platform_*` prefix in collectors or applications.
13+
Don't set labels with the `vcluster_platform_*` prefix in collectors or applications.
1414
The Write Gateway strips caller-supplied platform labels before adding authenticated
1515
values.
1616
:::
@@ -32,7 +32,7 @@ Use either cluster scope or tenant scope, not both:
3232

3333
## Descriptive labels
3434

35-
These labels are stamped at write time for filtering and grouping, but they do not
35+
These labels are stamped at write time for filtering and grouping, but they don't
3636
authorize reads.
3737

3838
| Label | Meaning |
@@ -54,7 +54,7 @@ The Query Proxy restricts matchers on scope-controlling labels:
5454
| Negative regular expression | Rejected | `vcluster_platform_instance!~"api"` |
5555
| Wildcard regular expression | Rejected | `vcluster_platform_instance=~".*"` |
5656

57-
Descriptive labels can use normal PromQL matcher forms because they do not determine
57+
Descriptive labels can use normal PromQL matcher forms because they don't determine
5858
authorization scope.
5959

6060
## Label examples

platform/maintenance/monitoring/fleet/overview.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ An observability connector Secret tells Platform how to reach your metrics backe
5151
When the connector is present, Platform reconciles the gateway Deployment, Service,
5252
ServiceAccount, RBAC, collector ConfigMap, and Grafana datasource ConfigMaps.
5353

54-
Platform does not create the metrics backend in Phase 1. You must provide a backend
54+
Platform doesn't create the metrics backend in Phase 1. You must provide a backend
5555
that can import OTLP metrics and serve the Prometheus HTTP API. You must also configure
5656
the edge collectors that send metrics to the gateway.
5757

5858
## Security model
5959

60-
Fleet monitoring does not rely on backend tenant isolation. The gateway and query proxy
60+
Fleet monitoring doesn't rely on backend tenant isolation. The gateway and query proxy
6161
are the enforcement layer.
6262

6363
- Metrics writers must authenticate with an access key that has the `metrics-writer`

platform/maintenance/monitoring/fleet/query-fleet-metrics.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ sum by (vcluster_platform_project, vcluster_platform_instance) (
7171
```
7272

7373
The Query Proxy rejects unsafe scope matchers such as `!=`, `!~`, `.*`, or regexes
74-
that are not top-level literal alternations. Descriptive labels can use normal PromQL
75-
matchers because they do not drive authorization.
74+
that aren't top-level literal alternations. Descriptive labels can use normal PromQL
75+
matchers because they don't drive authorization.
7676

7777
## Grafana datasources
7878

0 commit comments

Comments
 (0)