Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when working with WizTelemetry Logging extension for KubeSphere, including installation, configuration, and log query API
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 199% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 215% | 0% |
WizTelemetry Logging is an extension component in the KubeSphere Observability Platform for log collection, processing, and storage.
| Component | Description | Default Enabled | |-----------|-------------|-----------------| | vector-logging | Container log collection (collects stdout/stderr from Docker/Containerd) | true | | logsidecar-injector | Disk log collection (collects logs from files inside containers) | false |
REQUIRED: Complete all steps in order before generating InstallPlan.
⚠️ CRITICAL: DO NOT proceed until target clusters are determined.
Step 1.1: Get available clusters
bashkubectl get clusters -o jsonpath='{.items[*].metadata.name}'
Step 1.2: Determine target clusters
Ask user (if not specified):
Available clusters: host, dev
Which clusters do you want to deploy WizTelemetry Logging to?MUST do this to get the latest version:
bashkubectl get extensionversions -l kubesphere.io/extension-ref=whizard-logging -o jsonpath='{range .items[*]}{.spec.version}{"\n"}{end}' | sort -V | tail -1
This outputs the latest version (e.g., 1.4.0). Note this down - you'll use it in the InstallPlan.
⚠️ IMPORTANT: Complete prerequisite steps BEFORE this step.
Based on your selections:
⚠️ CRITICAL: InstallPlan metadata.name MUST be whizard-logging. DO NOT use any other name.
⚠️ CRITICAL: config field is YAML format. You MUST:
⚠️ CRITICAL: All placeholders MUST be replaced with actual values. DO NOT leave them as placeholders.
yamlapiVersion: kubesphere.io/v1alpha1 kind: InstallPlan metadata: name: whizard-logging spec: extension: name: whizard-logging version: <VERSION> # From Step 2 enabled: true upgradeStrategy: Manual clusterScheduling: placement: clusters: - <TARGET_CLUSTERS>
Replace placeholders:
<VERSION>: From Step 2 (e.g., 1.4.0)<TARGET_CLUSTERS>: User-confirmed cluster namesNote: OpenSearch sink configuration (endpoints, auth) is provided by the vector extension. Make sure vector is installed and configured with OpenSearch before installing logging.
To enable disk log collection, add logsidecar-injector to the config:
yamlapiVersion: kubesphere.io/v1alpha1 kind: InstallPlan metadata: name: whizard-logging spec: extension: name: whizard-logging version: <VERSION> # From Step 2 enabled: true upgradeStrategy: Manual config: | logsidecar-injector: enabled: true vector-logging: filter: extraLabelSelector: "app.kubernetes.io/name!=kube-events-exporter" calico: enabled: true systemd: docker: enabled: true kubelet: enabled: true sinks: opensearch: enabled: true index: prefix: "{{ .cluster }}-logs" timestring: "%Y.%m.%d" clusterScheduling: placement: clusters: - <TARGET_CLUSTERS>
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | logsidecar-injector.enabled | bool | false | Enable disk log collection | | logsidecar-injector.sidecar.sidecarType | string | vector | Sidecar type | | logsidecar-injector.resources.limits.cpu | string | 100m | CPU limit | | logsidecar-injector.resources.limits.memory | string | 100Mi | Memory limit | | logsidecar-injector.resources.requests.cpu | string | 10m | CPU request | | logsidecar-injector.resources.requests.memory | string | 10Mi | Memory request |
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | vector-logging.filter.extraLabelSelector | string | "app.kubernetes.io/name!=kube-events-exporter" | Extra label selector | | vector-logging.filter.extraNamespaceLabelSelector | string | "" | Extra namespace label selector | | vector-logging.filter.includeNamespaces | list | ] | List of namespaces to collect | | vector-logging.filter.excludeNamespaces | list | ] | List of namespaces to exclude |
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | vector-logging.calico.enabled | bool | true | Enable Calico log collection | | vector-logging.calico.logPath | list | "/var/log/calico/cni/cni.log"] | Calico log paths |
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | vector-logging.systemd.docker.enabled | bool | true | Enable Docker systemd log collection | | vector-logging.systemd.kubelet.enabled | bool | true | Enable Kubelet systemd log collection | | vector-logging.systemd.directory | string | /var/log/journal | Systemd journal directory |
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | vector-logging.sinks.opensearch.enabled | bool | true | Enable OpenSearch sink | | vector-logging.sinks.opensearch.index.prefix | string | "{{ .cluster }}-logs" | Index prefix | | vector-logging.sinks.opensearch.index.timestring | string | "%Y.%m.%d" | Index time format |
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | vector-logging.ism_policy.enable | bool | false | Enable Index State Management policy | | vector-logging.ism_policy.min_index_age | string | "7d" | Minimum index retention period |
bashcurl -X GET "http://whizard-telemetry-apiserver.extension-whizard-telemetry.svc:80/kapis/logging.kubesphere.io/v1alpha2/logs?operation=query&log_query=error&size=10&cluster=host&sort=desc" \ -H "X-Remote-User: admin"
Query Parameters:
| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | operation | string | query | Operation type: query/statistics/histogram/export | | namespaces | string | | Comma-separated list of namespaces | | namespace_query | string | | Fuzzy match namespace names | | workloads | string | | Comma-separated list of workloads | | workload_query | string | | Fuzzy match workload names | | pods | string | | Comma-separated list of pods | | pod_query | string | | Fuzzy match pod names | | containers | string | | Comma-separated list of containers | | container_query | string | | Fuzzy match container names | | log_query | string | | Log content keywords (case-insensitive) | | interval | string | 15m | Time interval for histogram (e.g., 15m, 1h, 1d) | | start_time | string | | Start time (seconds since epoch) | | end_time | string | | End time (seconds since epoch) | | sort | string | desc | Sort order: asc/desc | | from | int | 0 | Offset | | size | int | 10 | Number of results | | cluster | string | host | Cluster name | | exportLineLimit | int | | Max lines for export |
bashkubectl get installplan whizard-logging kubectl get extensionversions -l kubesphere.io/extension-ref=whizard-logging
Uninstall from all clusters:
bashkubectl delete installplan whizard-logging
Uninstall from specific cluster:
To remove WizTelemetry Logging from a specific cluster, update the InstallPlan by removing that cluster from clusterScheduling.placement.clusters:
yamlapiVersion: kubesphere.io/v1alpha1 kind: InstallPlan metadata: name: whizard-logging spec: extension: name: whizard-logging version: <VERSION> enabled: true upgradeStrategy: Manual clusterScheduling: placement: clusters: - <REMAINING_CLUSTERS> # Remove the cluster you want to uninstall from
Other measured skills in the registry, with their headline benchmark lift.