opencode-skills-collection 4.0.67 → 4.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentelemetry
|
|
3
|
+
description: Instrument applications and infrastructure with OpenTelemetry for unified
|
|
4
|
+
traces, metrics, and logs.
|
|
5
|
+
category: devops
|
|
6
|
+
risk: critical
|
|
7
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-09-20'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
13
|
+
compatibility: Requires the relevant platform CLIs (kubectl, helm, terraform, git,
|
|
14
|
+
CI runners) and authorized access to the target environment. Docs-only; helper scripts
|
|
15
|
+
and templates not bundled.
|
|
16
|
+
metadata:
|
|
17
|
+
author: devops-skills
|
|
18
|
+
version: '1.0'
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# OpenTelemetry
|
|
22
|
+
|
|
23
|
+
Adopt vendor-neutral telemetry with consistent instrumentation across services.
|
|
24
|
+
|
|
25
|
+
## Prerequisites
|
|
26
|
+
|
|
27
|
+
- Application services running in containers or on VMs
|
|
28
|
+
- Backend for traces (Jaeger, Tempo, Datadog, or any OTLP receiver)
|
|
29
|
+
- Backend for metrics (Prometheus, Mimir, or OTLP receiver)
|
|
30
|
+
- Kubernetes cluster (for collector deployment) or VM with systemd
|
|
31
|
+
- Network access from services to collector, and collector to backends
|
|
32
|
+
|
|
33
|
+
## Core Workflow
|
|
34
|
+
|
|
35
|
+
1. Define semantic conventions for services, environments, and versions.
|
|
36
|
+
2. Add SDK or auto-instrumentation in each service.
|
|
37
|
+
3. Run an OpenTelemetry Collector to receive, transform, and export telemetry.
|
|
38
|
+
4. Validate cardinality and sampling to control cost.
|
|
39
|
+
5. Create golden signals dashboards and alerting from collected data.
|
|
40
|
+
|
|
41
|
+
## Collector Production Configuration
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
# otel-collector-config.yaml
|
|
45
|
+
receivers:
|
|
46
|
+
otlp:
|
|
47
|
+
protocols:
|
|
48
|
+
grpc:
|
|
49
|
+
endpoint: 0.0.0.0:4317
|
|
50
|
+
http:
|
|
51
|
+
endpoint: 0.0.0.0:4318
|
|
52
|
+
|
|
53
|
+
# Scrape Prometheus endpoints
|
|
54
|
+
prometheus:
|
|
55
|
+
config:
|
|
56
|
+
scrape_configs:
|
|
57
|
+
- job_name: "kubernetes-pods"
|
|
58
|
+
kubernetes_sd_configs:
|
|
59
|
+
- role: pod
|
|
60
|
+
relabel_configs:
|
|
61
|
+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
|
|
62
|
+
action: keep
|
|
63
|
+
regex: "true"
|
|
64
|
+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port]
|
|
65
|
+
action: replace
|
|
66
|
+
target_label: __address__
|
|
67
|
+
regex: (.+)
|
|
68
|
+
replacement: $$1
|
|
69
|
+
|
|
70
|
+
# Host metrics for infrastructure monitoring
|
|
71
|
+
hostmetrics:
|
|
72
|
+
collection_interval: 30s
|
|
73
|
+
scrapers:
|
|
74
|
+
cpu: {}
|
|
75
|
+
memory: {}
|
|
76
|
+
disk: {}
|
|
77
|
+
network: {}
|
|
78
|
+
load: {}
|
|
79
|
+
|
|
80
|
+
processors:
|
|
81
|
+
batch:
|
|
82
|
+
send_batch_size: 1024
|
|
83
|
+
timeout: 5s
|
|
84
|
+
|
|
85
|
+
memory_limiter:
|
|
86
|
+
check_interval: 1s
|
|
87
|
+
limit_mib: 512
|
|
88
|
+
spike_limit_mib: 128
|
|
89
|
+
|
|
90
|
+
attributes:
|
|
91
|
+
actions:
|
|
92
|
+
- key: deployment.environment
|
|
93
|
+
value: production
|
|
94
|
+
action: upsert
|
|
95
|
+
|
|
96
|
+
# Drop high-cardinality attributes to control cost
|
|
97
|
+
filter/drop-debug:
|
|
98
|
+
traces:
|
|
99
|
+
span:
|
|
100
|
+
- 'attributes["http.request.header.x-debug"] == "true"'
|
|
101
|
+
|
|
102
|
+
# Reduce cardinality on URL paths
|
|
103
|
+
transform/normalize-routes:
|
|
104
|
+
trace_statements:
|
|
105
|
+
- context: span
|
|
106
|
+
statements:
|
|
107
|
+
- replace_pattern(attributes["url.path"], "/users/[0-9]+", "/users/{id}")
|
|
108
|
+
- replace_pattern(attributes["url.path"], "/orders/[0-9]+", "/orders/{id}")
|
|
109
|
+
|
|
110
|
+
# Resource detection for cloud environments
|
|
111
|
+
resourcedetection:
|
|
112
|
+
detectors: [env, system, gcp, aws, azure]
|
|
113
|
+
timeout: 5s
|
|
114
|
+
|
|
115
|
+
exporters:
|
|
116
|
+
# Send traces to Tempo/Jaeger
|
|
117
|
+
otlp/traces:
|
|
118
|
+
endpoint: tempo:4317
|
|
119
|
+
tls:
|
|
120
|
+
insecure: true
|
|
121
|
+
|
|
122
|
+
# Send metrics to Prometheus via remote write
|
|
123
|
+
prometheusremotewrite:
|
|
124
|
+
endpoint: http://mimir:9009/api/v1/push
|
|
125
|
+
tls:
|
|
126
|
+
insecure: true
|
|
127
|
+
|
|
128
|
+
# Send logs to Loki
|
|
129
|
+
otlp/logs:
|
|
130
|
+
endpoint: loki:4317
|
|
131
|
+
tls:
|
|
132
|
+
insecure: true
|
|
133
|
+
|
|
134
|
+
# Debug exporter for development
|
|
135
|
+
debug:
|
|
136
|
+
verbosity: basic
|
|
137
|
+
|
|
138
|
+
service:
|
|
139
|
+
telemetry:
|
|
140
|
+
logs:
|
|
141
|
+
level: info
|
|
142
|
+
metrics:
|
|
143
|
+
address: 0.0.0.0:8888
|
|
144
|
+
|
|
145
|
+
pipelines:
|
|
146
|
+
traces:
|
|
147
|
+
receivers: [otlp]
|
|
148
|
+
processors: [memory_limiter, resourcedetection, transform/normalize-routes, batch, attributes]
|
|
149
|
+
exporters: [otlp/traces]
|
|
150
|
+
metrics:
|
|
151
|
+
receivers: [otlp, prometheus, hostmetrics]
|
|
152
|
+
processors: [memory_limiter, resourcedetection, batch, attributes]
|
|
153
|
+
exporters: [prometheusremotewrite]
|
|
154
|
+
logs:
|
|
155
|
+
receivers: [otlp]
|
|
156
|
+
processors: [memory_limiter, resourcedetection, batch, attributes]
|
|
157
|
+
exporters: [otlp/logs]
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Collector Kubernetes Deployment
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
# otel-collector-deployment.yaml
|
|
164
|
+
apiVersion: apps/v1
|
|
165
|
+
kind: Deployment
|
|
166
|
+
metadata:
|
|
167
|
+
name: otel-collector
|
|
168
|
+
namespace: observability
|
|
169
|
+
spec:
|
|
170
|
+
replicas: 2
|
|
171
|
+
selector:
|
|
172
|
+
matchLabels:
|
|
173
|
+
app: otel-collector
|
|
174
|
+
template:
|
|
175
|
+
metadata:
|
|
176
|
+
labels:
|
|
177
|
+
app: otel-collector
|
|
178
|
+
spec:
|
|
179
|
+
containers:
|
|
180
|
+
- name: collector
|
|
181
|
+
image: otel/opentelemetry-collector-contrib:0.98.0
|
|
182
|
+
args: ["--config=/etc/otel/config.yaml"]
|
|
183
|
+
ports:
|
|
184
|
+
- containerPort: 4317
|
|
185
|
+
name: otlp-grpc
|
|
186
|
+
- containerPort: 4318
|
|
187
|
+
name: otlp-http
|
|
188
|
+
- containerPort: 8888
|
|
189
|
+
name: metrics
|
|
190
|
+
resources:
|
|
191
|
+
requests:
|
|
192
|
+
cpu: 200m
|
|
193
|
+
memory: 256Mi
|
|
194
|
+
limits:
|
|
195
|
+
cpu: "1"
|
|
196
|
+
memory: 512Mi
|
|
197
|
+
volumeMounts:
|
|
198
|
+
- name: config
|
|
199
|
+
mountPath: /etc/otel
|
|
200
|
+
livenessProbe:
|
|
201
|
+
httpGet:
|
|
202
|
+
path: /
|
|
203
|
+
port: 13133
|
|
204
|
+
readinessProbe:
|
|
205
|
+
httpGet:
|
|
206
|
+
path: /
|
|
207
|
+
port: 13133
|
|
208
|
+
volumes:
|
|
209
|
+
- name: config
|
|
210
|
+
configMap:
|
|
211
|
+
name: otel-collector-config
|
|
212
|
+
---
|
|
213
|
+
apiVersion: v1
|
|
214
|
+
kind: Service
|
|
215
|
+
metadata:
|
|
216
|
+
name: otel-collector
|
|
217
|
+
namespace: observability
|
|
218
|
+
spec:
|
|
219
|
+
selector:
|
|
220
|
+
app: otel-collector
|
|
221
|
+
ports:
|
|
222
|
+
- name: otlp-grpc
|
|
223
|
+
port: 4317
|
|
224
|
+
targetPort: 4317
|
|
225
|
+
- name: otlp-http
|
|
226
|
+
port: 4318
|
|
227
|
+
targetPort: 4318
|
|
228
|
+
- name: metrics
|
|
229
|
+
port: 8888
|
|
230
|
+
targetPort: 8888
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Python SDK Instrumentation
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
# tracing_setup.py
|
|
237
|
+
"""Initialize OpenTelemetry tracing and metrics for a Python service."""
|
|
238
|
+
from opentelemetry import trace, metrics
|
|
239
|
+
from opentelemetry.sdk.trace import TracerProvider
|
|
240
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
241
|
+
from opentelemetry.sdk.metrics import MeterProvider
|
|
242
|
+
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
|
|
243
|
+
from opentelemetry.sdk.resources import Resource
|
|
244
|
+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
|
245
|
+
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter
|
|
246
|
+
from opentelemetry.instrumentation.requests import RequestsInstrumentor
|
|
247
|
+
from opentelemetry.instrumentation.flask import FlaskInstrumentor
|
|
248
|
+
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
|
|
249
|
+
import os
|
|
250
|
+
|
|
251
|
+
def init_telemetry(service_name: str, service_version: str):
|
|
252
|
+
"""Initialize OTel SDK with traces and metrics."""
|
|
253
|
+
resource = Resource.create({
|
|
254
|
+
"service.name": service_name,
|
|
255
|
+
"service.version": service_version,
|
|
256
|
+
"deployment.environment": os.getenv("DEPLOY_ENV", "development"),
|
|
257
|
+
})
|
|
258
|
+
|
|
259
|
+
# Traces
|
|
260
|
+
trace_exporter = OTLPSpanExporter(
|
|
261
|
+
endpoint=os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT", "http://otel-collector:4317"),
|
|
262
|
+
insecure=True,
|
|
263
|
+
)
|
|
264
|
+
tracer_provider = TracerProvider(resource=resource)
|
|
265
|
+
tracer_provider.add_span_processor(BatchSpanProcessor(trace_exporter))
|
|
266
|
+
trace.set_tracer_provider(tracer_provider)
|
|
267
|
+
|
|
268
|
+
# Metrics
|
|
269
|
+
metric_exporter = OTLPMetricExporter(
|
|
270
|
+
endpoint=os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT", "http://otel-collector:4317"),
|
|
271
|
+
insecure=True,
|
|
272
|
+
)
|
|
273
|
+
metric_reader = PeriodicExportingMetricReader(metric_exporter, export_interval_millis=15000)
|
|
274
|
+
meter_provider = MeterProvider(resource=resource, metric_readers=[metric_reader])
|
|
275
|
+
metrics.set_meter_provider(meter_provider)
|
|
276
|
+
|
|
277
|
+
# Auto-instrument common libraries
|
|
278
|
+
RequestsInstrumentor().instrument()
|
|
279
|
+
SQLAlchemyInstrumentor().instrument()
|
|
280
|
+
|
|
281
|
+
return trace.get_tracer(service_name), metrics.get_meter(service_name)
|
|
282
|
+
|
|
283
|
+
# Usage example
|
|
284
|
+
tracer, meter = init_telemetry("order-service", "1.2.0")
|
|
285
|
+
|
|
286
|
+
# Custom span
|
|
287
|
+
with tracer.start_as_current_span("process_order") as span:
|
|
288
|
+
span.set_attribute("order.id", order_id)
|
|
289
|
+
span.set_attribute("order.total", total)
|
|
290
|
+
# ... business logic ...
|
|
291
|
+
|
|
292
|
+
# Custom metric
|
|
293
|
+
request_counter = meter.create_counter(
|
|
294
|
+
"app.requests",
|
|
295
|
+
description="Total application requests",
|
|
296
|
+
)
|
|
297
|
+
request_counter.add(1, {"route": "/api/orders", "method": "POST"})
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Node.js SDK Instrumentation
|
|
301
|
+
|
|
302
|
+
```javascript
|
|
303
|
+
// tracing.js
|
|
304
|
+
// Initialize OpenTelemetry for a Node.js service.
|
|
305
|
+
// Load this file BEFORE any other imports: node -r ./tracing.js app.js
|
|
306
|
+
const { NodeSDK } = require("@opentelemetry/sdk-node");
|
|
307
|
+
const { OTLPTraceExporter } = require("@opentelemetry/exporter-trace-otlp-grpc");
|
|
308
|
+
const { OTLPMetricExporter } = require("@opentelemetry/exporter-metrics-otlp-grpc");
|
|
309
|
+
const { PeriodicExportingMetricReader } = require("@opentelemetry/sdk-metrics");
|
|
310
|
+
const { getNodeAutoInstrumentations } = require("@opentelemetry/auto-instrumentations-node");
|
|
311
|
+
const { Resource } = require("@opentelemetry/resources");
|
|
312
|
+
const { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } = require("@opentelemetry/semantic-conventions");
|
|
313
|
+
|
|
314
|
+
const resource = new Resource({
|
|
315
|
+
[ATTR_SERVICE_NAME]: process.env.SERVICE_NAME || "node-service",
|
|
316
|
+
[ATTR_SERVICE_VERSION]: process.env.SERVICE_VERSION || "1.0.0",
|
|
317
|
+
"deployment.environment": process.env.DEPLOY_ENV || "development",
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
const sdk = new NodeSDK({
|
|
321
|
+
resource,
|
|
322
|
+
traceExporter: new OTLPTraceExporter({
|
|
323
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || "http://otel-collector:4317",
|
|
324
|
+
}),
|
|
325
|
+
metricReader: new PeriodicExportingMetricReader({
|
|
326
|
+
exporter: new OTLPMetricExporter({
|
|
327
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || "http://otel-collector:4317",
|
|
328
|
+
}),
|
|
329
|
+
exportIntervalMillis: 15000,
|
|
330
|
+
}),
|
|
331
|
+
instrumentations: [
|
|
332
|
+
getNodeAutoInstrumentations({
|
|
333
|
+
"@opentelemetry/instrumentation-http": {
|
|
334
|
+
ignoreIncomingPaths: ["/health", "/ready"],
|
|
335
|
+
},
|
|
336
|
+
"@opentelemetry/instrumentation-express": { enabled: true },
|
|
337
|
+
"@opentelemetry/instrumentation-pg": { enabled: true },
|
|
338
|
+
"@opentelemetry/instrumentation-redis": { enabled: true },
|
|
339
|
+
}),
|
|
340
|
+
],
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
sdk.start();
|
|
344
|
+
process.on("SIGTERM", () => sdk.shutdown());
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
## Auto-Instrumentation with Kubernetes Operator
|
|
348
|
+
|
|
349
|
+
```yaml
|
|
350
|
+
# otel-auto-instrumentation.yaml
|
|
351
|
+
# Install the OTel Operator first:
|
|
352
|
+
# helm install opentelemetry-operator open-telemetry/opentelemetry-operator \
|
|
353
|
+
# --namespace observability --create-namespace
|
|
354
|
+
|
|
355
|
+
# Define instrumentation for Python services
|
|
356
|
+
apiVersion: opentelemetry.io/v1alpha1
|
|
357
|
+
kind: Instrumentation
|
|
358
|
+
metadata:
|
|
359
|
+
name: python-instrumentation
|
|
360
|
+
namespace: default
|
|
361
|
+
spec:
|
|
362
|
+
exporter:
|
|
363
|
+
endpoint: http://otel-collector.observability:4317
|
|
364
|
+
propagators:
|
|
365
|
+
- tracecontext
|
|
366
|
+
- baggage
|
|
367
|
+
sampler:
|
|
368
|
+
type: parentbased_traceidratio
|
|
369
|
+
argument: "0.25"
|
|
370
|
+
python:
|
|
371
|
+
image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:0.44b0
|
|
372
|
+
env:
|
|
373
|
+
- name: OTEL_PYTHON_LOG_CORRELATION
|
|
374
|
+
value: "true"
|
|
375
|
+
---
|
|
376
|
+
# Define instrumentation for Node.js services
|
|
377
|
+
apiVersion: opentelemetry.io/v1alpha1
|
|
378
|
+
kind: Instrumentation
|
|
379
|
+
metadata:
|
|
380
|
+
name: nodejs-instrumentation
|
|
381
|
+
namespace: default
|
|
382
|
+
spec:
|
|
383
|
+
exporter:
|
|
384
|
+
endpoint: http://otel-collector.observability:4317
|
|
385
|
+
propagators:
|
|
386
|
+
- tracecontext
|
|
387
|
+
- baggage
|
|
388
|
+
sampler:
|
|
389
|
+
type: parentbased_traceidratio
|
|
390
|
+
argument: "0.25"
|
|
391
|
+
nodejs:
|
|
392
|
+
image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:0.49.1
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
To instrument a pod, add the annotation:
|
|
396
|
+
|
|
397
|
+
```yaml
|
|
398
|
+
# For Python:
|
|
399
|
+
metadata:
|
|
400
|
+
annotations:
|
|
401
|
+
instrumentation.opentelemetry.io/inject-python: "true"
|
|
402
|
+
|
|
403
|
+
# For Node.js:
|
|
404
|
+
metadata:
|
|
405
|
+
annotations:
|
|
406
|
+
instrumentation.opentelemetry.io/inject-nodejs: "true"
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
## Contents
|
|
411
|
+
|
|
412
|
+
- [Sampling Strategies](references/details.md)
|
|
413
|
+
- [Best Practices](references/details.md)
|
|
414
|
+
- [Troubleshooting](references/details.md)
|
|
415
|
+
- [Related Skills](references/details.md)
|
|
416
|
+
|
|
417
|
+
## When to Use This Skill
|
|
418
|
+
|
|
419
|
+
- Debugging latency across microservices
|
|
420
|
+
- Standardizing observability data model and naming
|
|
421
|
+
- Sending telemetry to Prometheus, Grafana, Datadog, or OTLP backends
|
|
422
|
+
- Building SLO dashboards with trace-to-log correlation
|
|
423
|
+
- Instrumenting Python or Node.js applications with tracing and metrics
|
|
424
|
+
- Setting up auto-instrumentation for existing services without code changes
|
|
425
|
+
|
|
426
|
+
## Limitations
|
|
427
|
+
|
|
428
|
+
- Guidance executes against real environments: confirm target, blast radius, and rollback plan before applying anything.
|
|
429
|
+
- Never deploy to production without explicit approval. Docs-only import: upstream scripts and templates not bundled.
|
|
430
|
+
|
|
431
|
+
### Example
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
git status && git diff --stat
|
|
435
|
+
kubectl diff -f manifest.yaml
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
> Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `opentelemetry`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Sampling Strategies
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
# Tail-based sampling config (in collector)
|
|
9
|
+
processors:
|
|
10
|
+
tail_sampling:
|
|
11
|
+
decision_wait: 10s
|
|
12
|
+
num_traces: 100000
|
|
13
|
+
policies:
|
|
14
|
+
# Always keep error traces
|
|
15
|
+
- name: errors
|
|
16
|
+
type: status_code
|
|
17
|
+
status_code:
|
|
18
|
+
status_codes: [ERROR]
|
|
19
|
+
|
|
20
|
+
# Always keep slow traces (> 2s)
|
|
21
|
+
- name: slow-traces
|
|
22
|
+
type: latency
|
|
23
|
+
latency:
|
|
24
|
+
threshold_ms: 2000
|
|
25
|
+
|
|
26
|
+
# Sample 10% of successful traces
|
|
27
|
+
- name: normal-traffic
|
|
28
|
+
type: probabilistic
|
|
29
|
+
probabilistic:
|
|
30
|
+
sampling_percentage: 10
|
|
31
|
+
|
|
32
|
+
# Always keep traces with specific attributes
|
|
33
|
+
- name: important-users
|
|
34
|
+
type: string_attribute
|
|
35
|
+
string_attribute:
|
|
36
|
+
key: user.tier
|
|
37
|
+
values: [enterprise, premium]
|
|
38
|
+
|
|
39
|
+
# Rate limit per service to prevent one service from dominating
|
|
40
|
+
- name: rate-limit
|
|
41
|
+
type: rate_limiting
|
|
42
|
+
rate_limiting:
|
|
43
|
+
spans_per_second: 500
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Best Practices
|
|
48
|
+
|
|
49
|
+
- Use tail-based sampling for high-volume production traces.
|
|
50
|
+
- Tag telemetry with `service.name`, `service.version`, and `deployment.environment`.
|
|
51
|
+
- Drop noisy attributes early in the collector.
|
|
52
|
+
- Keep metric label cardinality low for stable query performance.
|
|
53
|
+
- Use resource detectors to automatically populate cloud metadata.
|
|
54
|
+
- Separate collector pools for traces vs metrics if volume requires it.
|
|
55
|
+
- Set memory_limiter on every collector pipeline to prevent OOM.
|
|
56
|
+
- Use the contrib collector image for production (includes more receivers/exporters).
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Troubleshooting
|
|
60
|
+
|
|
61
|
+
| Symptom | Check | Fix |
|
|
62
|
+
|---------|-------|-----|
|
|
63
|
+
| No traces arriving at backend | Collector logs for export errors | Verify endpoint URL and network policy |
|
|
64
|
+
| Missing spans in a trace | Propagation headers stripped by proxy | Configure proxy to pass `traceparent` header |
|
|
65
|
+
| High memory on collector | Too many in-flight traces for tail sampling | Reduce `num_traces` or increase memory limit |
|
|
66
|
+
| Metric cardinality explosion | Unbounded label values (user IDs, URLs) | Add transform processor to normalize values |
|
|
67
|
+
| Auto-instrumentation not working | Pod annotation missing or operator not running | Verify operator is healthy and annotation is correct |
|
|
68
|
+
| Duplicate metrics | Both SDK and auto-instrumentation active | Use only one instrumentation method per signal |
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
## Related Skills
|
|
72
|
+
|
|
73
|
+
- prometheus-grafana (`prometheus-grafana`) - Dashboarding and alerting
|
|
74
|
+
- datadog (`datadog`) - Managed observability backend
|
|
75
|
+
- alerting-oncall (`alerting-oncall`) - On-call routing and escalation
|
|
76
|
+
- rag-observability-evals (`rag-observability-evals`) - RAG-specific observability
|
|
77
|
+
- agent-observability (`agent-observability`) - AI agent tracing
|
|
78
|
+
|