{"id":"3787d9a7-10cc-4269-9248-73520c5a861a","shortId":"fMTpnG","kind":"skill","title":"whizard-events","tagline":"Use when working with WizTelemetry Events extension for KubeSphere, including installation, configuration, and event query API","description":"# WizTelemetry Events\n\n## Overview\n\nWizTelemetry Events is an extension component in the KubeSphere Observability Platform for Kubernetes event collection, processing, and storage.\n\n## When to Use\n\n- Installing or configuring the WizTelemetry Events extension\n- Understanding event collection architecture\n- Using the event query API to query events\n\n## Components\n\n| Component | Description | Default Enabled |\n|-----------|-------------|-----------------|\n| kube-events-exporter | Kubernetes event collection and export | true |\n\n## Dependencies\n\n- **WizTelemetry Platform Service** (whizard-telemetry): Required\n- **WizTelemetry Data Pipeline** (vector): Required\n- **OpenSearch** (opensearch): Required\n\n## Installation\n\n### Prerequisites\n\n**REQUIRED: Complete all steps in order before generating InstallPlan.**\n\n#### Step 1: Get Available Clusters and Confirm Target\n\n**⚠️ CRITICAL: DO NOT proceed until target clusters are determined.**\n\n**Step 1.1: Get available clusters**\n\n```bash\nkubectl get clusters -o jsonpath='{.items[*].metadata.name}'\n```\n\n**Step 1.2: Determine target clusters**\n\n- If user **explicitly specified** target clusters in the request → Use those clusters directly, proceed to Step 2\n- If user **did NOT specify** target clusters → Ask user to confirm which clusters to deploy to, then proceed to Step 2\n\n**Ask user (if not specified):**\n```\nAvailable clusters: host, dev\nWhich clusters do you want to deploy WizTelemetry Events to?\n```\n\n#### Step 2: Get Latest Version (if not provided by user)\n\n**MUST do this to get the latest version:**\n\n```bash\nkubectl get extensionversions -l kubesphere.io/extension-ref=whizard-events -o jsonpath='{range .items[*]}{.spec.version}{\"\\n\"}{end}' | sort -V | tail -1\n```\n\nThis outputs the latest version (e.g., `1.4.0`). Note this down - you'll use it in the InstallPlan.\n\n### Install WizTelemetry Events\n\n**⚠️ IMPORTANT: Complete prerequisite steps BEFORE this step.**\n\nBased on your selections:\n- **Target clusters**: User-confirmed cluster names\n\n**⚠️ CRITICAL: InstallPlan `metadata.name` MUST be `whizard-events`. DO NOT use any other name.**\n\n**⚠️ CRITICAL: `config` field is YAML format. You MUST:**\n- Use the config structure exactly as shown in the template\n- **DO NOT** add configuration fields that are not shown in the template\n- **DO NOT** modify the structure or hierarchy\n\n**⚠️ CRITICAL: All placeholders MUST be replaced with actual values. DO NOT leave them as placeholders.**\n\n#### Template\n\n```yaml\napiVersion: kubesphere.io/v1alpha1\nkind: InstallPlan\nmetadata:\n  name: whizard-events\nspec:\n  extension:\n    name: whizard-events\n    version: <VERSION>  # From Step 2\n  enabled: true\n  upgradeStrategy: Manual\n  clusterScheduling:\n    placement:\n      clusters:\n        - <TARGET_CLUSTERS>\n```\n\n**Replace placeholders:**\n- `<VERSION>`: From Step 2 (e.g., `1.4.0`)\n- `<TARGET_CLUSTERS>`: User-confirmed cluster names\n\n**Note:** OpenSearch sink configuration (endpoints, auth) is provided by the **vector** extension. Make sure vector is installed and configured with OpenSearch before installing events.\n\n#### Enable ISM Policy\n\n```yaml\napiVersion: kubesphere.io/v1alpha1\nkind: InstallPlan\nmetadata:\n  name: whizard-events\n  namespace: kubesphere-system\nspec:\n  extension:\n    name: whizard-events\n    version: <VERSION>  # From Step 2\n  enabled: true\n  upgradeStrategy: Manual\n  config: |\n    kube-events-exporter:\n      sinks:\n        opensearch:\n          enabled: true\n          index:\n            prefix: \"{{ .cluster }}-events\"\n            timestring: \"%Y.%m.%d\"\n      ism_policy:\n        enable: true\n        min_index_age: \"7d\"\n  clusterScheduling:\n    placement:\n      clusters:\n        - <TARGET_CLUSTERS>\n```\n\n## Configuration Parameters\n\n### OpenSearch Sink Parameters\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `kube-events-exporter.sinks.opensearch.enabled` | bool | true | Enable OpenSearch sink |\n| `kube-events-exporter.sinks.opensearch.index.prefix` | string | \"{{ .cluster }}-events\" | Index prefix |\n| `kube-events-exporter.sinks.opensearch.index.timestring` | string | \"%Y.%m.%d\" | Index time format |\n\n### ISM Policy Parameters\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `kube-events-exporter.ism_policy.enable` | bool | false | Enable Index State Management policy |\n| `kube-events-exporter.ism_policy.min_index_age` | string | \"7d\" | Minimum index retention period |\n\n## Event Query API\n\n### Query Events\n\n```bash\ncurl -X GET \"http://whizard-telemetry-apiserver.extension-whizard-telemetry.svc:80/kapis/logging.kubesphere.io/v1alpha2/events?operation=query&sort=desc&size=10&cluster=host\" \\\n  -H \"X-Remote-User: admin\"\n```\n\n**Query Parameters:**\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `operation` | string | query | Operation type: query/statistics/histogram/export |\n| `workspace_filter` | string | | Comma-separated list of workspaces |\n| `workspace_search` | string | | Fuzzy match workspace names |\n| `involved_object_namespace_filter` | string | | Comma-separated list of namespaces (involvedObject.namespace) |\n| `involved_object_namespace_search` | string | | Fuzzy match namespace names |\n| `involved_object_name_filter` | string | | Comma-separated list of object names |\n| `involved_object_name_search` | string | | Fuzzy match object names |\n| `involved_object_kind_filter` | string | | Comma-separated list of kinds |\n| `reason_filter` | string | | Comma-separated list of reasons |\n| `reason_search` | string | | Fuzzy match reason |\n| `message_search` | string | | Fuzzy match message |\n| `type_filter` | string | | Event type: Warning/Normal |\n| `start_time` | string | | Start time (seconds since epoch) |\n| `end_time` | string | | End time (seconds since epoch) |\n| `interval` | string | 15m | Time interval for histogram |\n| `sort` | string | desc | Sort order: asc/desc |\n| `from` | int | 0 | Offset |\n| `size` | int | 10 | Number of results |\n| `cluster` | string | host | Cluster name |\n\n## Extension Operations\n\n### Check Extension Status\n\n```bash\nkubectl get installplan whizard-events\nkubectl get extensionversions -l kubesphere.io/extension-ref=whizard-events\n```\n\n### Uninstall Extension\n\n**Uninstall from all clusters:**\n\n```bash\nkubectl delete installplan whizard-events\n```\n\n**Uninstall from specific cluster:**\n\nTo remove WizTelemetry Events from a specific cluster, update the InstallPlan by removing that cluster from `clusterScheduling.placement.clusters`:\n\n```yaml\napiVersion: kubesphere.io/v1alpha1\nkind: InstallPlan\nmetadata:\n  name: whizard-events\nspec:\n  extension:\n    name: whizard-events\n    version: <VERSION>\n  enabled: true\n  upgradeStrategy: Manual\n  clusterScheduling:\n    placement:\n      clusters:\n        - <REMAINING_CLUSTERS>  # Remove the cluster you want to uninstall from\n```","tags":["whizard","events","kubesphere","agent-skills","cloud-native","cncf","devops","ebpf","hacktoberfest","kubernetes","llm","multi-cluster"],"capabilities":["skill","source-kubesphere","skill-whizard-events","topic-agent-skills","topic-cloud-native","topic-cncf","topic-devops","topic-ebpf","topic-hacktoberfest","topic-kubernetes","topic-kubesphere","topic-llm","topic-multi-cluster","topic-multi-tenancy","topic-observability"],"categories":["kubesphere"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/kubesphere/kubesphere/whizard-events","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add kubesphere/kubesphere","source_repo":"https://github.com/kubesphere/kubesphere","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 16920 github stars · SKILL.md body (6,890 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:31.136Z","embedding":null,"createdAt":"2026-04-18T21:53:20.830Z","updatedAt":"2026-05-03T00:52:31.136Z","lastSeenAt":"2026-05-03T00:52:31.136Z","tsv":"'-1':233 '/extension-ref=whizard-events':222,706 '/kapis/logging.kubesphere.io/v1alpha2/events?operation=query&sort=desc&size=10&cluster=host':529 '/v1alpha1':343,411,745 '0':675 '1':106 '1.1':123 '1.2':136 '1.4.0':240,374 '10':679 '15m':662 '2':156,177,198,360,372,432 '7d':461,513 'actual':330 'add':306 'admin':535 'age':460,511 'api':19,59,520 'apivers':340,408,742 'architectur':54 'asc/desc':672 'ask':164,178 'auth':385 'avail':108,125,183 'base':261 'bash':127,215,523,693,713 'bool':475,502 'check':690 'cluster':109,119,126,130,139,145,151,163,169,184,188,266,270,367,378,448,464,482,683,686,712,723,731,738,766,769 'clusterschedul':365,462,764 'clusterscheduling.placement.clusters':740 'collect':37,53,74 'comma':552,570,591,612,621 'comma-separ':551,569,590,611,620 'complet':97,255 'compon':28,63,64 'config':287,296,437 'configur':15,46,307,383,398,465 'confirm':111,167,269,377 'critic':113,272,286,323 'curl':524 'd':453,490 'data':87 'default':66,472,499,540 'delet':715 'depend':78 'deploy':171,193 'desc':669 'descript':65,473,500,541 'determin':121,137 'dev':186 'direct':152 'e.g':239,373 'enabl':67,361,404,433,444,456,477,504,760 'end':229,652,655 'endpoint':384 'epoch':651,659 'event':3,9,17,21,24,36,49,52,57,62,70,73,195,253,279,350,356,403,418,428,440,449,483,518,522,641,699,719,727,752,758 'exact':298 'explicit':142 'export':71,76,441 'extens':10,27,50,352,391,424,688,691,708,754 'extensionvers':218,702 'fals':503 'field':288,308 'filter':549,567,588,609,618,639 'format':291,493 'fuzzi':560,581,602,629,635 'generat':103 'get':107,124,129,199,211,217,526,695,701 'h':530 'hierarchi':322 'histogram':666 'host':185,685 'import':254 'includ':13 'index':446,459,484,491,505,510,515 'instal':14,44,94,251,396,402 'installplan':104,250,273,345,413,696,716,734,747 'int':674,678 'interv':660,664 'involv':564,576,585,597,606 'involvedobject.namespace':575 'ism':405,454,494 'item':133,226 'jsonpath':132,224 'kind':344,412,608,616,746 'kube':69,439 'kube-events-export':68,438 'kube-events-exporter.ism_policy.enable':501 'kube-events-exporter.ism_policy.min':509 'kube-events-exporter.sinks.opensearch.enabled':474 'kube-events-exporter.sinks.opensearch.index.prefix':480 'kube-events-exporter.sinks.opensearch.index.timestring':486 'kubectl':128,216,694,700,714 'kubernet':35,72 'kubespher':12,31,421 'kubesphere-system':420 'kubesphere.io':221,342,410,705,744 'kubesphere.io/extension-ref=whizard-events':220,704 'kubesphere.io/v1alpha1':341,409,743 'l':219,703 'latest':200,213,237 'leav':334 'list':554,572,593,614,623 'll':245 'm':452,489 'make':392 'manag':507 'manual':364,436,763 'match':561,582,603,630,636 'messag':632,637 'metadata':346,414,748 'metadata.name':134,274 'min':458 'minimum':514 'modifi':318 'must':207,275,293,326 'n':228 'name':271,285,347,353,379,415,425,563,584,587,596,599,605,687,749,755 'namespac':419,566,574,578,583 'note':241,380 'number':680 'o':131,223 'object':565,577,586,595,598,604,607 'observ':32 'offset':676 'opensearch':91,92,381,400,443,467,478 'oper':542,545,689 'order':101,671 'output':235 'overview':22 'paramet':466,469,470,496,497,537,538 'period':517 'pipelin':88 'placehold':325,337,369 'placement':366,463,765 'platform':33,80 'polici':406,455,495,508 'prefix':447,485 'prerequisit':95,256 'proceed':116,153,174 'process':38 'provid':204,387 'queri':18,58,61,519,521,536,544 'query/statistics/histogram/export':547 'rang':225 'reason':617,625,626,631 'remot':533 'remov':725,736,767 'replac':328,368 'request':148 'requir':85,90,93,96 'result':682 'retent':516 'search':558,579,600,627,633 'second':649,657 'select':264 'separ':553,571,592,613,622 'servic':81 'shown':300,312 'sinc':650,658 'sink':382,442,468,479 'size':677 'skill' 'skill-whizard-events' 'sort':230,667,670 'source-kubesphere' 'spec':351,423,753 'spec.version':227 'specif':722,730 'specifi':143,161,182 'start':644,647 'state':506 'status':692 'step':99,105,122,135,155,176,197,257,260,359,371,431 'storag':40 'string':481,487,512,543,550,559,568,580,589,601,610,619,628,634,640,646,654,661,668,684 'structur':297,320 'sure':393 'system':422 'tail':232 'target':112,118,138,144,162,265 'telemetri':84 'templat':303,315,338 'time':492,645,648,653,656,663 'timestr':450 'topic-agent-skills' 'topic-cloud-native' 'topic-cncf' 'topic-devops' 'topic-ebpf' 'topic-hacktoberfest' 'topic-kubernetes' 'topic-kubesphere' 'topic-llm' 'topic-multi-cluster' 'topic-multi-tenancy' 'topic-observability' 'true':77,362,434,445,457,476,761 'type':471,498,539,546,638,642 'understand':51 'uninstal':707,709,720,773 'updat':732 'upgradestrategi':363,435,762 'use':4,43,55,149,246,282,294 'user':141,158,165,179,206,268,376,534 'user-confirm':267,375 'v':231 'valu':331 'vector':89,390,394 'version':201,214,238,357,429,759 'want':191,771 'warning/normal':643 'whizard':2,83,278,349,355,417,427,698,718,751,757 'whizard-ev':1,277,348,354,416,426,697,717,750,756 'whizard-telemetri':82 'whizard-telemetry-apiserver.extension-whizard-telemetry.svc:80':528 'whizard-telemetry-apiserver.extension-whizard-telemetry.svc:80/kapis/logging.kubesphere.io/v1alpha2/events?operation=query&sort=desc&size=10&cluster=host':527 'wiztelemetri':8,20,23,48,79,86,194,252,726 'work':6 'workspac':548,556,557,562 'x':525,532 'x-remote-us':531 'y':451,488 'yaml':290,339,407,741","prices":[{"id":"f4d23d39-5628-4d13-9a34-9b6f76f7c8d8","listingId":"3787d9a7-10cc-4269-9248-73520c5a861a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"kubesphere","category":"kubesphere","install_from":"skills.sh"},"createdAt":"2026-04-18T21:53:20.830Z"}],"sources":[{"listingId":"3787d9a7-10cc-4269-9248-73520c5a861a","source":"github","sourceId":"kubesphere/kubesphere/whizard-events","sourceUrl":"https://github.com/kubesphere/kubesphere/tree/master/skills/whizard-events","isPrimary":false,"firstSeenAt":"2026-04-18T21:53:20.830Z","lastSeenAt":"2026-05-03T00:52:31.136Z"}],"details":{"listingId":"3787d9a7-10cc-4269-9248-73520c5a861a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kubesphere","slug":"whizard-events","github":{"repo":"kubesphere/kubesphere","stars":16920,"topics":["agent-skills","ai","cloud-native","cncf","devops","ebpf","hacktoberfest","kubernetes","kubesphere","llm","multi-cluster","multi-tenancy","observability","servicemesh","skills","skills-sh","skillsmp"],"license":"other","html_url":"https://github.com/kubesphere/kubesphere","pushed_at":"2026-04-27T06:10:27Z","description":"The container platform tailored for Kubernetes multi-cloud, datacenter, and edge management ⎈ 🖥 ☁️","skill_md_sha":"646752944ac0c03f98a310213ae2f35863692ae2","skill_md_path":"skills/whizard-events/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/kubesphere/kubesphere/tree/master/skills/whizard-events"},"layout":"multi","source":"github","category":"kubesphere","frontmatter":{"name":"whizard-events","description":"Use when working with WizTelemetry Events extension for KubeSphere, including installation, configuration, and event query API"},"skills_sh_url":"https://skills.sh/kubesphere/kubesphere/whizard-events"},"updatedAt":"2026-05-03T00:52:31.136Z"}}