{"id":"518df4e4-27c5-404d-8105-5a2d3c45d107","shortId":"YGFUPw","kind":"skill","title":"vector","tagline":"Use when installing or configuring the WizTelemetry Data Pipeline (vector) extension for KubeSphere, which provides data collection, transformation, and routing for observability data including logs, auditing, events, and notifications","description":"# WizTelemetry Data Pipeline (Vector)\n\n## Overview\n\nWizTelemetry Data Pipeline is an extension based on vector (https://vector.dev/) that provides the ability to collect, transform, and route observability data. It is a core dependency for other WizTelemetry extensions like Logging, Auditing, Events, and Notification.\n\n## When to Use\n\n- Installing or configuring the WizTelemetry Data Pipeline extension\n- Setting up data collection for logs, auditing, events, and notifications\n- Configuring Vector sinks (OpenSearch)\n- Managing Vector agent components\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 Vector to?\n```\n\n#### Step 2: Get OpenSearch Endpoint and Credentials (MUST DO)\n\n- If user **already provided** OpenSearch endpoint and credentials in the request → Use those directly, proceed to Step 3\n- If user **did NOT provide** → **You MUST ask user** for OpenSearch endpoint and credentials\n\n**Ask user for (if not provided):**\n\n1. **OpenSearch endpoint URL** (required)\n   - Example: `http://<node-ip>:30920` or `https://opensearch.example.com:9200`\n\n2. **OpenSearch credentials** (required)\n   - Username (default: `admin`)\n   - Password\n\n**DO NOT proceed to Step 3 until user provides both endpoint and credentials.**\n\n#### Step 3: Get Latest Vector 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=vector -o jsonpath='{range .items[*]}{.spec.version}{\"\\n\"}{end}' | sort -V | tail -1\n```\n\nThis outputs the latest version (e.g., `1.1.4`). Note this down - you'll use it in the InstallPlan.\n\n### Install Vector Extension\n\n**⚠️ IMPORTANT: Complete prerequisite steps (1-3) BEFORE this step.**\n\n**⚠️ CRITICAL: InstallPlan `metadata.name` MUST be `vector`. DO NOT use any other name.**\n\nBased on your selections:\n- **Target clusters**: Use the user-confirmed cluster names\n- **OpenSearch endpoint**: User-provided endpoint\n- **OpenSearch credentials**: User-provided username and password\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: vector\nspec:\n  extension:\n    name: vector\n    version: <VECTOR_VERSION>  # From Step 3\n  enabled: true\n  upgradeStrategy: Manual\n  config: |\n    agent:\n      sinks:\n        opensearch:\n          auth:\n            strategy: basic\n            user: <OPENSEARCH_USER>\n            password: <OPENSEARCH_PASSWORD>\n          endpoints:\n            - <OPENSEARCH_ENDPOINT>\n  clusterScheduling:\n    placement:\n      clusters:\n        - <TARGET_CLUSTERS>\n```\n\n**Replace placeholders:**\n- `<VECTOR_VERSION>`: From Step 2 (e.g., `1.1.4`)\n- `<OPENSEARCH_ENDPOINT>`: User-provided endpoint (e.g., `http://<node-ip>:30920`)\n- `<OPENSEARCH_USER>`: User-provided username (default: `admin`)\n- `<OPENSEARCH_PASSWORD>`: User-provided password\n- `<TARGET_CLUSTERS>`: User-confirmed cluster names\n\n**⚠️ DO NOT generate InstallPlan until all placeholders have real values.**\n\n### Wait for Deployment\n\n**After applying InstallPlan, you MUST wait for deployment to complete:**\n\n```bash\n# Wait for Vector pods to be ready (on each cluster)\nkubectl wait --for=condition=Ready pods -n kubesphere-logging-system -l app.kubernetes.io/instance=vector --timeout=300s\n\n# Verify deployment status\nkubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/instance=vector\n```\n\n**Show deployment summary to user:**\n- Which clusters Vector was deployed to\n- OpenSearch endpoint used\n- Pod status (Ready/Total)\n\n#### Enable Metrics Export\n\n```yaml\napiVersion: kubesphere.io/v1alpha1\nkind: InstallPlan\nmetadata:\n  name: vector\nspec:\n  extension:\n    name: vector\n    version: <VECTOR_VERSION>  # From Step 2\n  enabled: true\n  upgradeStrategy: Manual\n  config: |\n    agent:\n      sinks:\n        opensearch:\n          auth:\n            strategy: basic\n            user: <OPENSEARCH_USER>\n            password: <OPENSEARCH_PASSWORD>\n          endpoints:\n            - <OPENSEARCH_ENDPOINT>\n      exportMetrics:\n        enabled: true\n  clusterScheduling:\n    placement:\n      clusters:\n        - <TARGET_CLUSTERS>\n```\n\n## Configuration Parameters\n\n### Agent Parameters\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `agent.role` | string | \"Agent\" | Role identifier |\n| `agent.image.tag` | string | \"0.53.0-debian\" | Vector image tag |\n| `agent.resources.requests.cpu` | string | \"100m\" | CPU request |\n| `agent.resources.requests.memory` | string | \"100Mi\" | Memory request |\n| `agent.resources.limits.cpu` | string | \"2000m\" | CPU limit |\n| `agent.resources.limits.memory` | string | \"2000Mi\" | Memory limit |\n| `agent.service.ports` | list | see values.yaml | Service ports |\n| `agent.exportMetrics.enabled` | bool | false | Enable metrics export |\n\n### Agent Sinks OpenSearch Parameters\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `agent.sinks.opensearch.endpoints` | list | Yes | OpenSearch endpoint URLs |\n| `agent.sinks.opensearch.auth.strategy` | string | Yes | Authentication strategy (set to `basic`) |\n| `agent.sinks.opensearch.auth.user` | string | Yes | Username for authentication |\n| `agent.sinks.opensearch.auth.password` | string | Yes | Password for authentication |\n| `agent.sinks.opensearch.tls.verify` | bool | No | Enable TLS verification (default: false) |\n\n**Example:**\n\n```yaml\nagent:\n  sinks:\n    opensearch:\n      endpoints:\n        - http://<node-ip>:30920\n      auth:\n        strategy: basic\n        user: admin\n        password: admin\n      tls:\n        verify: false\n```\n\n### Docker Root Directory Configuration\n\nIf Docker root directory is not `/var/lib`:\n\n```yaml\nagent:\n  extraVolumes:\n    - name: docker-root\n      hostPath:\n        path: /path/to/docker\n        type: ''\n  extraVolumeMounts:\n    - name: docker-root\n      mountPath: /path/to/docker\n```\n\n## Extension Operations\n\n### Check Extension Status\n\n```bash\n# View extension installation status\nkubectl get installplan vector\n\n# View extension version\nkubectl get extensionversions -l kubesphere.io/extension-ref=vector\n```\n\n### Check Pod Status\n\n```bash\n# View all Vector pods\nkubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/name=vector\n\n# View agent pods\nkubectl get pods -n kubesphere-logging-system -l app.kubernetes.io/name=vector,app.kubernetes.io/component=agent\n```\n\n### View Logs\n\n```bash\n# View agent logs\nkubectl logs -n kubesphere-logging-system -l app.kubernetes.io/name=vector,app.kubernetes.io/component=agent --tail=100\n```\n\n### Update Configuration\n\n```yaml\napiVersion: kubesphere.io/v1alpha1\nkind: InstallPlan\nmetadata:\n  name: vector\nspec:\n  extension:\n    name: vector\n    version: <VECTOR_VERSION>\n  enabled: true\n  upgradeStrategy: Manual\n  config: |\n    agent:\n      sinks:\n        opensearch:\n          auth:\n            strategy: basic\n            user: <OPENSEARCH_USER>\n            password: <OPENSEARCH_PASSWORD>\n          endpoints:\n            - <OPENSEARCH_ENDPOINT>\n  clusterScheduling:\n    placement:\n      clusters:\n        - <TARGET_CLUSTERS>\n```\n\n### Uninstall Extension\n\n**Uninstall from all clusters:**\n\n```bash\nkubectl delete installplan vector\n```\n\n**Uninstall from specific cluster:**\n\nTo remove Vector 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: vector\nspec:\n  extension:\n    name: vector\n    version: <VECTOR_VERSION>\n  enabled: true\n  upgradeStrategy: Manual\n  config: |\n    agent:\n      sinks:\n        opensearch:\n          auth:\n            strategy: basic\n            user: <OPENSEARCH_USER>\n            password: <OPENSEARCH_PASSWORD>\n          endpoints:\n            - <OPENSEARCH_ENDPOINT>\n  clusterScheduling:\n    placement:\n      clusters:\n        - <REMAINING_CLUSTERS>  # Remove the cluster you want to uninstall from\n```\n\n## Important Notes\n\n1. **Dependency**: Vector is a core dependency for WizTelemetry extensions. Install it first before installing Logging, Auditing, Events, or Notification.\n2. **OpenSearch Required**: User must provide OpenSearch endpoint and credentials.\n3. **Multicluster**: The extension uses `installationMode: Multicluster`:\n   - `agent` (tag: agent) is deployed to all selected member clusters\n4. **Agent Scheduling**: Agent pods have affinity to avoid edge nodes and tolerate all taints.\n5. **Cross-cluster Access**: Ensure OpenSearch endpoint is accessible from all Vector clusters.\n\n## Troubleshooting\n\n### Check Vector Configuration\n\n```bash\n# View Vector configmap\nkubectl get configmap -n kubesphere-logging-system -l app.kubernetes.io/name=vector\n\n# View specific config\nkubectl get configmap -n kubesphere-logging-system vector-config -o yaml\n```\n\n### Verify Sinks\n\n```bash\n# Check if sinks are configured correctly\nkubectl get secret -n kubesphere-logging-system vector-sinks -o yaml\n```\n\n### Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Pods not starting | Check if OpenSearch is accessible |\n| Data not flowing | Verify sink configuration and network connectivity |\n| Agent not on member cluster | Check multicluster installation settings |\n| Out of memory | Increase resource limits in configuration |","tags":["vector","kubesphere","agent-skills","cloud-native","cncf","devops","ebpf","hacktoberfest","kubernetes","llm","multi-cluster","multi-tenancy"],"capabilities":["skill","source-kubesphere","skill-vector","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/vector","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 (10,264 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:30.960Z","embedding":null,"createdAt":"2026-04-18T21:53:19.303Z","updatedAt":"2026-05-03T00:52:30.960Z","lastSeenAt":"2026-05-03T00:52:30.960Z","tsv":"'-1':319 '-3':345 '/)':47 '/extension-ref=vector':308,791 '/instance=vector':552,569 '/name=vector':811,1048 '/name=vector,app.kubernetes.io/component=agent':826,843 '/path/to/docker':759,767 '/v1alpha1':445,594,852,915 '/var/lib':749 '0.53.0':643 '1':115,252,344,953 '1.1':132 '1.1.4':326,482 '1.2':145 '100':845 '100m':650 '100mi':655 '2':165,186,206,261,480,607,973 '2000m':660 '2000mi':665 '3':231,274,283,458,983 '300s':554 '30920':258,488,728 '4':1000 '5':1015 'abil':51 'access':1019,1024,1098 'actual':432 'add':408 'admin':267,494,733,735 'affin':1006 'agent':101,464,613,630,638,680,724,751,813,831,868,931,990,992,1001,1003,1108 'agent.exportmetrics.enabled':674 'agent.image.tag':641 'agent.resources.limits.cpu':658 'agent.resources.limits.memory':663 'agent.resources.requests.cpu':648 'agent.resources.requests.memory':653 'agent.role':636 'agent.service.ports':668 'agent.sinks.opensearch.auth.password':708 'agent.sinks.opensearch.auth.strategy':694 'agent.sinks.opensearch.auth.user':702 'agent.sinks.opensearch.endpoints':688 'agent.sinks.opensearch.tls.verify':714 'alreadi':216 'apivers':442,591,849,912 'app.kubernetes.io':551,568,810,825,842,1047 'app.kubernetes.io/instance=vector':550,567 'app.kubernetes.io/name=vector':809,1046 'app.kubernetes.io/name=vector,app.kubernetes.io/component=agent':824,841 'appli':518 'ask':173,187,239,246 'audit':27,70,91,969 'auth':467,616,729,871,934 'authent':697,707,713 'avail':117,134,192 'avoid':1008 'base':42,361 'bash':136,301,527,773,795,829,886,1033,1067 'basic':469,618,701,731,873,936 'bool':675,715 'check':770,792,1030,1068,1094,1113 'cluster':118,128,135,139,148,154,160,172,178,193,197,366,372,475,502,537,576,627,879,885,894,901,908,942,945,999,1018,1028,1112 'clusterschedul':473,625,877,940 'clusterscheduling.placement.clusters':910 'collect':18,53,88 'common':1087 'complet':106,341,526 'compon':102 'condit':541 'config':389,398,463,612,867,930,1051,1062 'configmap':1036,1039,1054 'configur':6,79,95,409,628,742,847,1032,1072,1104,1124 'confirm':120,176,371,501 'connect':1107 'core':62,958 'correct':1073 'cpu':651,661 'credenti':211,221,245,263,281,381,982 'critic':122,349,388,425 'cross':1017 'cross-clust':1016 'data':9,17,24,32,37,58,82,87,1099 'debian':644 'default':266,493,634,720 'delet':888 'depend':63,954,959 'deploy':180,202,516,524,556,571,579,994 'descript':635,687 'determin':130,146 'dev':195 'direct':161,227 'directori':741,746 'docker':739,744,755,764 'docker-root':754,763 'e.g':325,481,487 'edg':1009 'enabl':459,587,608,623,677,717,863,926 'end':315 'endpoint':209,219,243,254,279,375,379,472,486,582,621,692,727,876,939,980,1022 'ensur':1020 'event':28,71,92,970 'exact':400 'exampl':257,722 'explicit':151 'export':589,679 'exportmetr':622 'extens':12,41,67,84,339,452,601,768,771,775,783,859,881,922,962,986 'extensionvers':304,787 'extravolum':752 'extravolumemount':761 'fals':676,721,738 'field':390,410 'first':965 'flow':1101 'format':393 'generat':112,506 'get':116,133,138,207,284,297,303,559,779,786,801,816,1038,1053,1075 'hierarchi':424 'host':194 'hostpath':757 'identifi':640 'imag':646 'import':340,951 'includ':25 'increas':1120 'instal':4,77,103,337,776,963,967,1115 'installationmod':988 'installplan':113,336,350,447,507,519,596,780,854,889,904,917 'issu':1088,1089 'item':142,312 'jsonpath':141,310 'kind':446,595,853,916 'kubectl':137,302,538,558,778,785,800,815,833,887,1037,1052,1074 'kubespher':14,546,563,805,820,837,1042,1057,1079 'kubesphere-logging-system':545,562,804,819,836,1041,1056,1078 'kubesphere.io':307,444,593,790,851,914 'kubesphere.io/extension-ref=vector':306,789 'kubesphere.io/v1alpha1':443,592,850,913 'l':305,549,566,788,808,823,840,1045 'latest':285,299,323 'leav':436 'like':68 'limit':662,667,1122 'list':669,689 'll':331 'log':26,69,90,547,564,806,821,828,832,834,838,968,1043,1058,1080 'manag':99 'manual':462,611,866,929 'member':998,1111 'memori':656,666,1119 'metadata':448,597,855,918 'metadata.name':143,351 'metric':588,678 'modifi':420 'mountpath':766 'multiclust':984,989,1114 'must':212,238,293,352,395,428,521,977 'n':314,544,561,803,818,835,1040,1055,1077 'name':360,373,449,453,503,598,602,753,762,856,860,919,923 'network':1106 'node':1010 'note':327,952 'notif':30,73,94,972 'o':140,309,1063,1085 'observ':23,57 'opensearch':98,208,218,242,253,262,374,380,466,581,615,682,691,726,870,933,974,979,1021,1096 'opensearch.example.com:9200':260 'oper':769 'order':110 'output':321 'overview':35 'paramet':629,631,632,683,684 'password':268,387,471,498,620,711,734,875,938 'path':758 'pipelin':10,33,38,83 'placehold':427,439,477,510 'placement':474,626,878,941 'pod':531,543,560,584,793,799,802,814,817,1004,1091 'port':673 'prerequisit':104,342 'proceed':125,162,183,228,271 'provid':16,49,217,236,251,277,290,378,384,485,491,497,978 'rang':311 'readi':534,542 'ready/total':586 'real':512 'remov':896,906,943 'replac':430,476 'request':157,224,652,657 'requir':105,256,264,686,975 'resourc':1121 'role':639 'root':740,745,756,765 'rout':21,56 'schedul':1002 'secret':1076 'see':670 'select':364,997 'servic':672 'set':85,699,1116 'show':570 'shown':402,414 'sink':97,465,614,681,725,869,932,1066,1070,1084,1103 'skill' 'skill-vector' 'solut':1090 'sort':316 'source-kubesphere' 'spec':451,600,858,921 'spec.version':313 'specif':893,900,1050 'specifi':152,170,191 'start':1093 'status':557,585,772,777,794 'step':108,114,131,144,164,185,205,230,273,282,343,348,457,479,606 'strategi':468,617,698,730,872,935 'string':637,642,649,654,659,664,695,703,709 'structur':399,422 'summari':572 'system':548,565,807,822,839,1044,1059,1081 'tag':647,991 'tail':318,844 'taint':1014 'target':121,127,147,153,171,365 'templat':405,417,440 'timeout':553 'tls':718,736 'toler':1012 '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' 'transform':19,54 'troubleshoot':1029 'true':460,609,624,864,927 'type':633,685,760 'uninstal':880,882,891,949 'updat':846,902 'upgradestrategi':461,610,865,928 'url':255,693 'use':2,76,158,225,332,357,367,396,583,987 'user':150,167,174,188,215,233,240,247,276,292,370,377,383,470,484,490,496,500,574,619,732,874,937,976 'user-confirm':369,499 'user-provid':376,382,483,489,495 'usernam':265,385,492,705 'v':317 'valu':433,513 'values.yaml':671 'vector':1,11,34,44,96,100,203,286,338,354,450,454,530,577,599,603,645,781,798,857,861,890,897,920,924,955,1027,1031,1035,1061,1083 'vector-config':1060 'vector-sink':1082 'vector.dev':46 'vector.dev/)':45 'verif':719 'verifi':555,737,1065,1102 'version':287,300,324,455,604,784,862,925 'view':774,782,796,812,827,830,1034,1049 'wait':514,522,528,539 'want':200,947 'wiztelemetri':8,31,36,66,81,961 'yaml':392,441,590,723,750,848,911,1064,1086 'yes':690,696,704,710","prices":[{"id":"eef9dd25-8d74-4ceb-a520-cbf3f52fd657","listingId":"518df4e4-27c5-404d-8105-5a2d3c45d107","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:19.303Z"}],"sources":[{"listingId":"518df4e4-27c5-404d-8105-5a2d3c45d107","source":"github","sourceId":"kubesphere/kubesphere/vector","sourceUrl":"https://github.com/kubesphere/kubesphere/tree/master/skills/vector","isPrimary":false,"firstSeenAt":"2026-04-18T21:53:19.303Z","lastSeenAt":"2026-05-03T00:52:30.960Z"}],"details":{"listingId":"518df4e4-27c5-404d-8105-5a2d3c45d107","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kubesphere","slug":"vector","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":"67b82f0eb2b24f03d1c96985158af956ed604a67","skill_md_path":"skills/vector/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/kubesphere/kubesphere/tree/master/skills/vector"},"layout":"multi","source":"github","category":"kubesphere","frontmatter":{"name":"vector","description":"Use when installing or configuring the WizTelemetry Data Pipeline (vector) extension for KubeSphere, which provides data collection, transformation, and routing for observability data including logs, auditing, events, and notifications"},"skills_sh_url":"https://skills.sh/kubesphere/kubesphere/vector"},"updatedAt":"2026-05-03T00:52:30.960Z"}}