@huicai/cli 2026.712.80880 → 2026.721.0
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/README.md +2 -1
- package/bin/huicai.js +83 -0
- package/package.json +2 -2
- package/skills/ab-testing/SKILL.md +58 -0
- package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
- package/skills/ab-testing/scripts/ab_test.py +71 -0
- package/skills/academic-writing/SKILL.md +54 -0
- package/skills/accounting-ops/SKILL.md +68 -0
- package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
- package/skills/accounting-ops/scripts/acct_tools.py +89 -0
- package/skills/ai-agent/SKILL.md +85 -0
- package/skills/ai-agent/references/tool-design-checklist.md +51 -0
- package/skills/ai-aiops/SKILL.md +73 -0
- package/skills/ai-aiops/references/aiops-rollout-checklist.md +36 -0
- package/skills/ai-coding/SKILL.md +89 -0
- package/skills/ai-coding/references/task-brief-template.md +48 -0
- package/skills/ai-compliance/SKILL.md +74 -0
- package/skills/ai-compliance/references/genai-compliance-checklist.md +40 -0
- package/skills/ai-eval/SKILL.md +80 -0
- package/skills/ai-eval/scripts/eval-runner.py +150 -0
- package/skills/ai-llm-app/SKILL.md +90 -0
- package/skills/ai-llm-app/references/llm-integration-checklist.md +39 -0
- package/skills/ai-mlops/SKILL.md +72 -0
- package/skills/ai-mlops/scripts/token-cost-calc.py +108 -0
- package/skills/ai-multimodal/SKILL.md +86 -0
- package/skills/ai-multimodal/scripts/field-validate.py +182 -0
- package/skills/ai-prompt/SKILL.md +75 -0
- package/skills/ai-prompt/references/prompt-template.md +46 -0
- package/skills/ai-rag/SKILL.md +76 -0
- package/skills/ai-rag/scripts/chunk-inspect.py +129 -0
- package/skills/anomaly-detection/SKILL.md +54 -0
- package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
- package/skills/anomaly-detection/scripts/anomaly.py +99 -0
- package/skills/api-integration/SKILL.md +74 -0
- package/skills/api-integration/references/signing-recipes.md +141 -0
- package/skills/arch-design/SKILL.md +57 -0
- package/skills/arch-distributed/SKILL.md +81 -0
- package/skills/arch-distributed/references/idempotency-review.md +43 -0
- package/skills/arch-multitenant/SKILL.md +73 -0
- package/skills/arch-multitenant/references/tenant-isolation-checklist.md +34 -0
- package/skills/audit-assist/SKILL.md +63 -0
- package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
- package/skills/audit-assist/scripts/audit_sampling.py +93 -0
- package/skills/audit-chain/SKILL.md +60 -0
- package/skills/banking-credit/SKILL.md +59 -0
- package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
- package/skills/banking-credit/scripts/credit_metrics.py +53 -0
- package/skills/brand-design/SKILL.md +56 -0
- package/skills/business-plan/SKILL.md +56 -0
- package/skills/capital-ops/SKILL.md +52 -0
- package/skills/cicd-pipeline/SKILL.md +85 -0
- package/skills/cicd-pipeline/references/pipeline-review-checklist.md +39 -0
- package/skills/content-creation/SKILL.md +56 -0
- package/skills/corporate-governance/SKILL.md +56 -0
- package/skills/crawl-chain/SKILL.md +61 -0
- package/skills/customer-service/SKILL.md +51 -0
- package/skills/data-analysis/SKILL.md +46 -0
- package/skills/data-analysis/scripts/cjk_font.py +56 -0
- package/skills/data-chain/SKILL.md +54 -0
- package/skills/data-governance/SKILL.md +54 -0
- package/skills/data-report-pro/SKILL.md +65 -0
- package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
- package/skills/data-report-pro/scripts/bigdata.py +79 -0
- package/skills/data-streaming/SKILL.md +87 -0
- package/skills/data-streaming/references/job-checklist.md +36 -0
- package/skills/data-wrangling/SKILL.md +52 -0
- package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
- package/skills/data-wrangling/scripts/join_tools.py +99 -0
- package/skills/db-es/SKILL.md +68 -0
- package/skills/db-es/scripts/es-health.sh +72 -0
- package/skills/db-migration/SKILL.md +72 -0
- package/skills/db-migration/scripts/checksum-mysql.sql +46 -0
- package/skills/db-migration/scripts/checksum-postgres.sql +39 -0
- package/skills/db-migration/scripts/compare-reports.py +98 -0
- package/skills/db-mysql/SKILL.md +78 -0
- package/skills/db-mysql/scripts/mysql-health.sql +80 -0
- package/skills/db-postgres/SKILL.md +86 -0
- package/skills/db-postgres/scripts/pg-health.sql +67 -0
- package/skills/db-redis/SKILL.md +83 -0
- package/skills/db-redis/scripts/redis-health.sh +92 -0
- package/skills/dev-cpp/SKILL.md +94 -0
- package/skills/dev-cpp/references/cmake-sanitizer-snippets.md +56 -0
- package/skills/dev-cross-platform/SKILL.md +73 -0
- package/skills/dev-cross-platform/references/capability-matrix-template.md +39 -0
- package/skills/dev-csharp/SKILL.md +96 -0
- package/skills/dev-csharp/references/review-checklist.md +37 -0
- package/skills/dev-frontend/SKILL.md +91 -0
- package/skills/dev-frontend/scripts/bundle-budget.py +106 -0
- package/skills/dev-go/SKILL.md +88 -0
- package/skills/dev-go/scripts/go-triage.sh +54 -0
- package/skills/dev-harmony/SKILL.md +64 -0
- package/skills/dev-harmony/references/harmony-checklist.md +40 -0
- package/skills/dev-java/SKILL.md +77 -0
- package/skills/dev-java/scripts/jvm-triage.sh +84 -0
- package/skills/dev-mobile/SKILL.md +82 -0
- package/skills/dev-mobile/references/store-compliance-checklist.md +33 -0
- package/skills/dev-node/SKILL.md +82 -0
- package/skills/dev-node/scripts/node-triage.sh +78 -0
- package/skills/dev-php/SKILL.md +86 -0
- package/skills/dev-php/scripts/fpm-calc.py +48 -0
- package/skills/dev-python/SKILL.md +81 -0
- package/skills/dev-python/scripts/venv-doctor.sh +75 -0
- package/skills/dev-rust/SKILL.md +84 -0
- package/skills/dev-rust/references/cargo-ci-snippets.md +50 -0
- package/skills/dev-toolchain/SKILL.md +78 -0
- package/skills/dev-toolchain/scripts/secret-scan.sh +83 -0
- package/skills/doc-chain/SKILL.md +58 -0
- package/skills/doc-compare/SKILL.md +44 -0
- package/skills/doc-compare/scripts/compare.py +93 -0
- package/skills/docx-author/SKILL.md +39 -0
- package/skills/docx-author/scripts/docx_doc.py +161 -0
- package/skills/ecommerce-ops/SKILL.md +54 -0
- package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
- package/skills/ecommerce-ops/scripts/gmv_decompose.py +61 -0
- package/skills/education-training/SKILL.md +53 -0
- package/skills/ehs-safety/SKILL.md +63 -0
- package/skills/email-writing/SKILL.md +52 -0
- package/skills/eng-ai/SKILL.md +74 -0
- package/skills/eng-ai/references/ai-feature-checklist.md +36 -0
- package/skills/eng-architecture/SKILL.md +85 -0
- package/skills/eng-architecture/scripts/capacity-calc.py +100 -0
- package/skills/eng-automation/SKILL.md +84 -0
- package/skills/eng-automation/references/automation-inventory.md +38 -0
- package/skills/eng-automation/references/routine-presets.md +73 -0
- package/skills/eng-collaboration/SKILL.md +76 -0
- package/skills/eng-collaboration/references/collab-templates.md +43 -0
- package/skills/eng-complex-env/SKILL.md +84 -0
- package/skills/eng-complex-env/references/env-dossier-template.md +52 -0
- package/skills/eng-complex-env/scripts/env-recon.sh +152 -0
- package/skills/eng-data-platform/SKILL.md +81 -0
- package/skills/eng-data-platform/references/table-spec-template.md +39 -0
- package/skills/eng-database/SKILL.md +79 -0
- package/skills/eng-database/references/schema-review-checklist.md +37 -0
- package/skills/eng-develop/SKILL.md +76 -0
- package/skills/eng-develop/references/dod-checklist.md +43 -0
- package/skills/eng-docs/SKILL.md +71 -0
- package/skills/eng-docs/references/runbook-template.md +57 -0
- package/skills/eng-efficiency/SKILL.md +75 -0
- package/skills/eng-efficiency/scripts/dora-calc.py +104 -0
- package/skills/eng-infra/SKILL.md +81 -0
- package/skills/eng-infra/references/production-readiness.md +46 -0
- package/skills/eng-integration/SKILL.md +82 -0
- package/skills/eng-integration/references/integration-dossier-template.md +38 -0
- package/skills/eng-legacy/SKILL.md +81 -0
- package/skills/eng-legacy/references/modernization-workbook.md +46 -0
- package/skills/eng-observability/SKILL.md +78 -0
- package/skills/eng-observability/scripts/slo-calc.py +82 -0
- package/skills/eng-ops/SKILL.md +74 -0
- package/skills/eng-ops/references/postmortem-template.md +67 -0
- package/skills/eng-performance/SKILL.md +73 -0
- package/skills/eng-performance/scripts/perf-baseline.py +110 -0
- package/skills/eng-planning/SKILL.md +79 -0
- package/skills/eng-planning/scripts/schedule-calc.py +101 -0
- package/skills/eng-quality/SKILL.md +74 -0
- package/skills/eng-quality/references/test-plan-templates.md +46 -0
- package/skills/eng-release/SKILL.md +78 -0
- package/skills/eng-release/references/release-plan-template.md +36 -0
- package/skills/eng-reliability/SKILL.md +72 -0
- package/skills/eng-reliability/references/resilience-review.md +43 -0
- package/skills/eng-requirements/SKILL.md +86 -0
- package/skills/eng-requirements/references/story-templates.md +47 -0
- package/skills/eng-research/SKILL.md +73 -0
- package/skills/eng-research/references/research-templates.md +42 -0
- package/skills/eng-security/SKILL.md +73 -0
- package/skills/eng-security/references/security-review-checklist.md +33 -0
- package/skills/eng-ux/SKILL.md +85 -0
- package/skills/eng-ux/references/ux-review-checklist.md +36 -0
- package/skills/engineering-chain/SKILL.md +101 -0
- package/skills/engineering-chain/references/eng-health-review.md +37 -0
- package/skills/env-offline/SKILL.md +81 -0
- package/skills/env-offline/scripts/bundle-manifest.sh +94 -0
- package/skills/env-private-deploy/SKILL.md +72 -0
- package/skills/env-private-deploy/references/delivery-templates.md +35 -0
- package/skills/env-xinchuang/SKILL.md +73 -0
- package/skills/env-xinchuang/references/adaptation-matrix-template.md +41 -0
- package/skills/equipment-tpm/SKILL.md +56 -0
- package/skills/equipment-tpm/scripts/oee.py +58 -0
- package/skills/esg-report/SKILL.md +58 -0
- package/skills/esg-report/scripts/carbon_calc.py +61 -0
- package/skills/event-management/SKILL.md +51 -0
- package/skills/excel-analysis-chain/SKILL.md +73 -0
- package/skills/file-ingest/SKILL.md +51 -0
- package/skills/file-ingest/scripts/__pycache__/file_toolkit.cpython-312.pyc +0 -0
- package/skills/file-ingest/scripts/file_toolkit.py +404 -0
- package/skills/finance-analysis/SKILL.md +60 -0
- package/skills/finance-analysis/references/ratios.md +54 -0
- package/skills/finance-analysis/scripts/fin_ratios.py +132 -0
- package/skills/finance-chain/SKILL.md +59 -0
- package/skills/financial-modeling/SKILL.md +58 -0
- package/skills/financial-modeling/scripts/fin_model.py +123 -0
- package/skills/foreign-trade/SKILL.md +54 -0
- package/skills/funnel-cohort/SKILL.md +53 -0
- package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
- package/skills/funnel-cohort/scripts/funnel.py +105 -0
- package/skills/gov-document/SKILL.md +57 -0
- package/skills/hr-chain/SKILL.md +51 -0
- package/skills/hr-operations/SKILL.md +53 -0
- package/skills/info-disclosure/SKILL.md +56 -0
- package/skills/infra-gateway/SKILL.md +85 -0
- package/skills/infra-gateway/references/golive-checklist.md +36 -0
- package/skills/infra-k8s/SKILL.md +78 -0
- package/skills/infra-k8s/scripts/k8s-triage.sh +84 -0
- package/skills/infra-mq/SKILL.md +87 -0
- package/skills/infra-mq/references/mq-review-checklist.md +36 -0
- package/skills/insurance-advisory/SKILL.md +57 -0
- package/skills/internal-audit/SKILL.md +66 -0
- package/skills/ip-management/SKILL.md +54 -0
- package/skills/ipo-listing/SKILL.md +60 -0
- package/skills/it-audit/SKILL.md +56 -0
- package/skills/itsm-ops/SKILL.md +55 -0
- package/skills/knowledge-sop/SKILL.md +51 -0
- package/skills/legal-chain/SKILL.md +55 -0
- package/skills/legal-contract/SKILL.md +58 -0
- package/skills/legal-contract/references/contract-checklists.md +59 -0
- package/skills/litigation-support/SKILL.md +53 -0
- package/skills/logistics-warehouse/SKILL.md +53 -0
- package/skills/logistics-warehouse/scripts/freight_check.py +71 -0
- package/skills/long-doc-analysis/SKILL.md +52 -0
- package/skills/management-accounting/SKILL.md +57 -0
- package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
- package/skills/management-accounting/scripts/costing.py +90 -0
- package/skills/manufacturing-chain/SKILL.md +57 -0
- package/skills/manufacturing-quality/SKILL.md +57 -0
- package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
- package/skills/manufacturing-quality/scripts/spc.py +86 -0
- package/skills/marketing-analytics/SKILL.md +59 -0
- package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
- package/skills/marketing-analytics/scripts/rfm.py +60 -0
- package/skills/marketing-chain/SKILL.md +57 -0
- package/skills/meeting-minutes/SKILL.md +55 -0
- package/skills/metrics-system/SKILL.md +55 -0
- package/skills/negotiation-prep/SKILL.md +56 -0
- package/skills/obs-prometheus/SKILL.md +74 -0
- package/skills/obs-prometheus/references/promql-cheatsheet.md +78 -0
- package/skills/office-automation/SKILL.md +54 -0
- package/skills/okr-review/SKILL.md +44 -0
- package/skills/ops-fleet/SKILL.md +69 -0
- package/skills/ops-fleet/scripts/batch-exec-guard.sh +119 -0
- package/skills/ops-linux/SKILL.md +69 -0
- package/skills/ops-linux/scripts/quick-triage.sh +138 -0
- package/skills/optimization-solver/SKILL.md +53 -0
- package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
- package/skills/optimization-solver/scripts/solver.py +107 -0
- package/skills/pdf-toolkit/SKILL.md +43 -0
- package/skills/pdf-toolkit/scripts/pdf_ops.py +137 -0
- package/skills/pivot-crosstab/SKILL.md +44 -0
- package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
- package/skills/pivot-crosstab/scripts/pivot_tools.py +90 -0
- package/skills/policy-analysis/SKILL.md +47 -0
- package/skills/portfolio-analysis/SKILL.md +56 -0
- package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
- package/skills/portfolio-analysis/scripts/portfolio.py +78 -0
- package/skills/ppt-chain/SKILL.md +61 -0
- package/skills/pptx-author/SKILL.md +48 -0
- package/skills/pptx-author/scripts/pptx_deck.py +193 -0
- package/skills/pr-comms/SKILL.md +58 -0
- package/skills/pr-comms/references/pr-templates.md +54 -0
- package/skills/procurement-supply/SKILL.md +47 -0
- package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
- package/skills/procurement-supply/scripts/supply.py +71 -0
- package/skills/product-design/SKILL.md +66 -0
- package/skills/product-design/references/prd-framework.md +60 -0
- package/skills/production-planning/SKILL.md +56 -0
- package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
- package/skills/production-planning/scripts/mrp_capacity.py +70 -0
- package/skills/project-management/SKILL.md +53 -0
- package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
- package/skills/project-management/scripts/cpm.py +84 -0
- package/skills/project-proposal/SKILL.md +54 -0
- package/skills/project-proposal/scripts/budget_sheet.py +90 -0
- package/skills/qa-api-automation/SKILL.md +67 -0
- package/skills/qa-api-automation/references/three-layer-skeleton.md +61 -0
- package/skills/qa-mobile-automation/SKILL.md +70 -0
- package/skills/qa-mobile-automation/references/device-matrix-template.md +34 -0
- package/skills/qa-ui-automation/SKILL.md +80 -0
- package/skills/qa-ui-automation/references/stability-conventions.md +41 -0
- package/skills/quant-analysis/SKILL.md +60 -0
- package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
- package/skills/quant-analysis/scripts/quant.py +102 -0
- package/skills/real-estate-property/SKILL.md +51 -0
- package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
- package/skills/real-estate-property/scripts/property_calc.py +106 -0
- package/skills/regression-forecast/SKILL.md +52 -0
- package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
- package/skills/regression-forecast/scripts/regress.py +106 -0
- package/skills/retail-store-ops/SKILL.md +57 -0
- package/skills/retail-store-ops/scripts/store_ops.py +57 -0
- package/skills/risk-compliance/SKILL.md +51 -0
- package/skills/sec-auth/SKILL.md +89 -0
- package/skills/sec-auth/references/auth-review-checklist.md +38 -0
- package/skills/sec-compliance/SKILL.md +74 -0
- package/skills/sec-compliance/references/dengbao-checklist.md +43 -0
- package/skills/securities-chain/SKILL.md +69 -0
- package/skills/securities-research/SKILL.md +58 -0
- package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
- package/skills/securities-research/scripts/valuation.py +93 -0
- package/skills/slides-html/SKILL.md +50 -0
- package/skills/slides-html/scripts/template.html +117 -0
- package/skills/statistical-testing/SKILL.md +51 -0
- package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
- package/skills/statistical-testing/scripts/stat_tests.py +131 -0
- package/skills/strategy-planning/SKILL.md +53 -0
- package/skills/supply-chain/SKILL.md +53 -0
- package/skills/tax-compliance/SKILL.md +57 -0
- package/skills/tax-compliance/scripts/tax_calc.py +90 -0
- package/skills/tech-research/SKILL.md +55 -0
- package/skills/tech-research/references/research-framework.md +50 -0
- package/skills/tender-bidding/SKILL.md +65 -0
- package/skills/tender-bidding/references/bid-checklist.md +44 -0
- package/skills/translation-pro/SKILL.md +44 -0
- package/skills/treasury-mgmt/SKILL.md +56 -0
- package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
- package/skills/treasury-mgmt/scripts/cashflow_forecast.py +51 -0
- package/skills/web-scraping/SKILL.md +81 -0
- package/skills/web-search/SKILL.md +67 -0
- package/skills/xlsx-analysis/SKILL.md +96 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/xlsx_style.py +71 -0
- package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +335 -0
- package/src/agent.js +1 -1
- package/src/api.js +1 -1
- package/src/codeindex.js +1 -1
- package/src/commands.js +1 -1
- package/src/config.js +1 -1
- package/src/context.js +1 -1
- package/src/device.js +1 -1
- package/src/doccache.js +1 -0
- package/src/doctor.js +1 -1
- package/src/executors.js +1 -1
- package/src/input.js +1 -1
- package/src/permissions.js +1 -1
- package/src/pyruntime.js +1 -0
- package/src/repl.js +1 -1
- package/src/scan.js +1 -1
- package/src/session.js +1 -1
- package/src/tools.js +1 -1
- package/src/tui/app.js +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: metrics-system
|
|
3
|
+
description: 指标体系设计(北极星指标、驱动树拆解、看板信息架构、目标值设定、防虚荣指标)。当用户说"搭指标体系/北极星/该看什么数/做个经营看板/指标树"时使用。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 指标体系(先想清楚"要回答什么问题",再谈看什么数)
|
|
8
|
+
|
|
9
|
+
## 北极星指标选择(一个就够)
|
|
10
|
+
|
|
11
|
+
三条标准同时满足:**反映用户/客户获得的价值**(不是我方虚荣:"注册数"不反映价值,
|
|
12
|
+
"周活跃使用核心功能用户数"反映)/ **可被团队行动影响**(利率汇率类不行)/
|
|
13
|
+
**先导性**(领先于收入,收入是滞后确认);
|
|
14
|
+
候选打分表(价值相关/可影响/先导性/可测量 四维)→ 定一个 + 1–2 个**护栏指标**
|
|
15
|
+
(防副作用:冲 GMV 的护栏是退货率与毛利,冲时长的护栏是卸载率)。
|
|
16
|
+
|
|
17
|
+
## 驱动树拆解(从北极星到可执行)
|
|
18
|
+
|
|
19
|
+
- 拆解原则:**MECE 且每层可运营**——乘法链优先(GMV=UV×CVR×AOV,ecommerce 的 LMDI 可归因),
|
|
20
|
+
加法链次之(营收=Σ产品线),拆到"某个团队能对它负责"为止;
|
|
21
|
+
- 每个节点四属性:定义口径(data-governance 字典衔接)/当前值与目标值/负责人/更新频率;
|
|
22
|
+
- 反例扫描:不可行动的节点("品牌影响力")要么给代理指标要么删;
|
|
23
|
+
两个节点相关性 >0.95 = 冗余,留一个。
|
|
24
|
+
|
|
25
|
+
## 虚荣指标红线(体系里见一个杀一个)
|
|
26
|
+
|
|
27
|
+
累计型(累计注册/累计下载——只涨不跌无信息量,换成活跃/留存)/ 均值陷阱
|
|
28
|
+
(人均时长被少数重度用户拉高,换分位数或分层)/ 比率无分母公示("转化率提升 50%"——
|
|
29
|
+
从 0.2% 到 0.3%?分母多大?)/ 无对照的绝对值("本月获客 1 万"好不好取决于成本与基线)。
|
|
30
|
+
|
|
31
|
+
## 目标值设定
|
|
32
|
+
|
|
33
|
+
三来源交叉:历史基线外推(趋势+季节性)/ 对标(同业/内部标杆店)/ 资源反推
|
|
34
|
+
(投入产出弹性估算)——三者差异大时给区间与假设,**拍脑袋目标写明"待论证"**;
|
|
35
|
+
目标分解带缓冲显式化(各层加 buffer 汇总会爆炸,总buffer 统一管理,project-management 同理)。
|
|
36
|
+
|
|
37
|
+
## 看板信息架构(认知负荷设计)
|
|
38
|
+
|
|
39
|
+
- **一屏一问题**:经营总览屏(北极星+护栏+关键驱动,5 秒看懂红绿)/ 诊断屏(驱动树逐层下钻)/
|
|
40
|
+
专题屏(活动/渠道)——把所有指标堆一屏=没有看板;
|
|
41
|
+
- 每个图表配「所以呢」注释位(异常必须有人写归因,无归因的红灯比没有更糟);
|
|
42
|
+
- 更新频率与决策频率匹配(日会看日新,月度经营会看月度+趋势——给秒级大屏做月度决策是浪费);
|
|
43
|
+
- 可视化规范转 data-analysis;落地为 html 交互报告(内置浏览器可看)或例程日报(office-automation)。
|
|
44
|
+
|
|
45
|
+
## 指标体系评审清单(一年一修)
|
|
46
|
+
|
|
47
|
+
北极星还成立吗(业务阶段变了吗)/ 驱动树断链了吗(组织调整后节点无主)/
|
|
48
|
+
护栏触发过吗(从未触发=阈值虚设)/ 哪些指标三个月没人看(下线)。
|
|
49
|
+
|
|
50
|
+
## 验收自查
|
|
51
|
+
|
|
52
|
+
- [ ] 北极星过三标准,配了护栏
|
|
53
|
+
- [ ] 驱动树每节点四属性齐,无不可行动节点
|
|
54
|
+
- [ ] 无虚荣指标;目标值有来源与假设
|
|
55
|
+
- [ ] 看板一屏一问题,异常有归因位
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: negotiation-prep
|
|
3
|
+
description: 商务谈判准备与复盘(BATNA/ZOPA 分析、让步策略、议题包设计、谈判纪要、僵局处理)。当用户说"要去谈判/怎么谈/对方压价/续约谈判/谈崩了怎么办"时使用。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 商务谈判(赢在桌前准备,落在书面确认)
|
|
8
|
+
|
|
9
|
+
## 谈判准备表(上桌前必填)
|
|
10
|
+
|
|
11
|
+
1. **目标三档**:理想/满意/底线(底线=BATNA 的价值折算,低于底线离场——**没写下来的底线
|
|
12
|
+
会在现场被说服**);
|
|
13
|
+
2. **BATNA 强化**:我方最佳替代方案是什么、能否在谈判前变得更强(多拿一个备选报价=
|
|
14
|
+
桌上腰杆);同时估**对方的 BATNA**(他不跟我成交的损失——这决定谁更需要这场交易);
|
|
15
|
+
3. **ZOPA 判断**:双方底线是否重叠;无重叠时先扩饼(见议题包)再谈,硬谈无解;
|
|
16
|
+
4. **利益诊断**:立场("降价 10%")背后的利益(预算窗口?向上交代?现金流?)——
|
|
17
|
+
**立场只有一个,满足利益的方案有很多**,谈判空间来自这句话;
|
|
18
|
+
5. 信息清单:我方可披露/不可披露分级;想从对方套取的信息与提问设计。
|
|
19
|
+
|
|
20
|
+
## 议题包设计(单议题谈判是零和,多议题才有交换)
|
|
21
|
+
|
|
22
|
+
议题清单化(价格/付款条件/交期/质保/独家/续约期/培训支持…)→ 各议题对**双方**的
|
|
23
|
+
价值评分(1–5)→ 找"我低他高"的议题作让步筹码、"我高他低"的作索取重点——
|
|
24
|
+
**让步矩阵**:让什么/换什么/让步幅度阶梯(递减:首次让步最大,传递"接近极限"信号;
|
|
25
|
+
**永不白让**,每次让步必须挂一个交换条件)。
|
|
26
|
+
|
|
27
|
+
## 桌上战术要点
|
|
28
|
+
|
|
29
|
+
先报价还是后报价:信息优势方先报(锚定),信息劣势先听;
|
|
30
|
+
接到极端锚定:不围绕对方锚还价,**重新锚定**(回到客观标准:成本结构/市场价/历史成交);
|
|
31
|
+
沉默与休会是合法工具("这个条件我需要回去核算"——现场拍板冲动是大忌);
|
|
32
|
+
红线:不虚构授权("我做不了主"被拆穿=信用破产)、不承诺无法兑现的条件、不攻击个人。
|
|
33
|
+
|
|
34
|
+
## 僵局处理阶梯
|
|
35
|
+
|
|
36
|
+
换议题(搁置卡点先谈能成的,积累合意氛围)→ 扩饼(引入新议题:延长合约期换单价)→
|
|
37
|
+
换标准(引第三方基准:行业价/审计数据)→ 换人或升级(授权更高层出面,给双方台阶)→
|
|
38
|
+
休会(定重启时间,别不欢而散)→ 底线复核(BATNA 真的更好?确认后体面离场)。
|
|
39
|
+
|
|
40
|
+
## 谈判纪要(每轮结束 24h 内发出)
|
|
41
|
+
|
|
42
|
+
已达成(条款+数字,**用对方也确认过的措辞**)/ 未决(分歧点+双方立场)/
|
|
43
|
+
双方开口事项(谁承诺回去核什么,期限)/ 下轮安排——邮件发出并请对方确认
|
|
44
|
+
(email-writing 的书面固化句式),口头合意不落纸=没谈。
|
|
45
|
+
|
|
46
|
+
## 复盘
|
|
47
|
+
|
|
48
|
+
目标达成 vs 三档/让步日志回看(每次让步换到了什么)/对方策略画像(下次谈判的输入)/
|
|
49
|
+
纪要与合同一致性核对(**谈的和签的不一致是重大风险**,转 legal-contract 终审)。
|
|
50
|
+
|
|
51
|
+
## 验收自查
|
|
52
|
+
|
|
53
|
+
- [ ] 三档目标与双方 BATNA 落纸
|
|
54
|
+
- [ ] 议题包 ≥3 个可交换议题,让步矩阵有交换条件
|
|
55
|
+
- [ ] 每轮有纪要且经对方确认
|
|
56
|
+
- [ ] 复盘核对了纪要与合同一致性
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: obs-prometheus
|
|
3
|
+
description: 监控栈工程链(Prometheus 系落地:架构判据(单机→远程存储→托管)→采集工程(exporter 治理/服务发现/relabel 丢高基数)→PromQL 高频判据(rate vs irate/histogram_quantile 桶坑)→告警规则工程(for 时长/promtool 单测/抑制分组)→recording rules 判据→基数治理→监控自身的监控(watchdog 死人开关))。eng-observability 的监控栈孙链:搭 Prometheus、写 PromQL、告警规则失控、监控爆内存时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 监控栈工程链(Prometheus 系)
|
|
8
|
+
|
|
9
|
+
eng-observability 的监控栈孙链:规范与治理在父链,本链管 **Prometheus 生态的工程落地**。
|
|
10
|
+
心智基调:**监控系统是生产系统**——它有容量、会宕机、需要被监控,按生产标准建。
|
|
11
|
+
|
|
12
|
+
## 架构判据
|
|
13
|
+
|
|
14
|
+
单机 Prometheus(中小规模默认:百万级活跃序列量级内,简单可靠)→
|
|
15
|
+
远程存储/联邦(保留期长/序列千万级/多集群聚合——先问是不是基数失控,治理常比扩容对)→
|
|
16
|
+
托管服务(免运维,成本与数据出域评估,eng-research);
|
|
17
|
+
**每加一层组件先过"存在理由"审**(infra-gateway 分层纪律同构);
|
|
18
|
+
高可用:双副本同配置各采各的+Alertmanager 集群去重——**双写不是主备**,查询侧任选其一。
|
|
19
|
+
|
|
20
|
+
## 采集工程
|
|
21
|
+
|
|
22
|
+
- exporter 治理:官方/社区 exporter 优先(node/mysqld/redis…);自研 exporter 规范(指标命名与单位后缀承 eng-observability/禁高基数 label/暴露自身健康);exporter 也进程管理(ops-fleet systemd 规范);
|
|
23
|
+
- 服务发现:静态文件(小规模)/文件 SD(配置中心生成)/K8s SD(infra-k8s 场景,annotation 驱动);
|
|
24
|
+
- 抓取参数:interval 全局统一为主(混用=rate 口径乱),timeout < interval;
|
|
25
|
+
- **relabel 高频用法**:丢弃高基数 label(metric_relabel_configs drop)/实例名标准化/按标签分片——**relabel 是基数治理的第一道闸**;
|
|
26
|
+
- 抓取健康:up 指标与 scrape_duration 监控(采集本身要可观测)。
|
|
27
|
+
|
|
28
|
+
## PromQL 高频判据(细则与样例在作业包 cheatsheet)
|
|
29
|
+
|
|
30
|
+
- **rate vs irate**:告警与大盘用 rate(窗口平滑,窗口≥4×抓取间隔);irate 只看瞬时毛刺,禁进告警;
|
|
31
|
+
- **histogram_quantile 三坑**:分位数是估算(受桶边界影响,**桶要按 SLO 阈值设计**:阈值附近桶密);先 sum by (le) 再算;平均分位数没有意义(不能对 quantile 再 avg);
|
|
32
|
+
- increase 整数陷阱(外推导致非整数,计数展示用 round);counter 重置由 rate/increase 自动处理,**别手写差值**;
|
|
33
|
+
- 聚合纪律:by/without 显式(裸 sum 把维度全吞=排障没得下钻);
|
|
34
|
+
- 四黄金信号标准查询模板化(recording rules 承接)。
|
|
35
|
+
|
|
36
|
+
## 告警规则工程
|
|
37
|
+
|
|
38
|
+
- **for 持续时长必配**(瞬时毛刺不叫,eng-observability 告警三问);阈值来自基线不拍脑袋(perf-baseline/历史分位);
|
|
39
|
+
- **规则单元测试**:promtool test rules 写用例(给输入序列断言告警触发/不触发)——告警规则也是代码(cicd-pipeline 门禁);
|
|
40
|
+
- 规则组织:按服务分组文件化入库(IaC,eng-observability"点出来的告警=无主债");
|
|
41
|
+
- Alertmanager 治理:分组(group_by 防风暴)/抑制(上游挂了压下游,inhibit_rules)/静默留痕(变更窗口静默,eng-ops 变更日历联动)/分级路由(P1 电话通道/P2 IM/P3 日报,eng-observability 分级);
|
|
42
|
+
- 告警模板:标题带影响与实例,**runbook 链接必挂**(runbook-template)。
|
|
43
|
+
|
|
44
|
+
## recording rules 判据
|
|
45
|
+
|
|
46
|
+
高频查询(大盘每 30s 算一次的复杂表达式)/跨大时间窗聚合/histogram 分位数预计算——预计算换查询快;
|
|
47
|
+
命名规范 level:metric:operations(可读可溯);**别把 recording rules 当万能缓存**(每条都是持续计算成本,大盘先审"每张图回答什么问题",eng-observability 仪表盘纪律)。
|
|
48
|
+
|
|
49
|
+
## 基数治理(Prometheus 的头号死因)
|
|
50
|
+
|
|
51
|
+
症状:内存暴涨/查询变慢/TSDB 膨胀;
|
|
52
|
+
定位查询:按 metric 统计序列数 topk(细则 cheatsheet)——**基数杀手三常客:userId/URL 原文/时间戳进了 label**(eng-observability 基数红线的执行面);
|
|
53
|
+
处置:relabel drop→源头改造(埋点评审,eng-observability 埋点标准)→极端情况丢弃整个 metric;
|
|
54
|
+
预防:新 exporter/新埋点上线前基数评估(qa 环境先抓一轮看序列增量);label 白名单纪律。
|
|
55
|
+
|
|
56
|
+
## 存储与保留
|
|
57
|
+
|
|
58
|
+
本地 TSDB 保留:时长×序列数=磁盘(容量算过再定,capacity-calc storage 思路);
|
|
59
|
+
远程写判据:保留>30 天/多集群聚合/降采样需求(长期趋势用降采样数据,原始高精度短保留——eng-observability 成本分层的指标版);
|
|
60
|
+
WAL 与磁盘水位监控(TSDB 磁盘满=监控自身宕机,见下节)。
|
|
61
|
+
|
|
62
|
+
## 监控自身的监控(谁来监控监控)
|
|
63
|
+
|
|
64
|
+
**meta-monitoring**:Prometheus 自身指标(内存/TSDB/采集失败率)由另一实例或云拨测盯;
|
|
65
|
+
**watchdog 死人开关**:一条永远触发的告警持续发往 Alertmanager→外部系统确认"心跳还在"——**心跳消失=监控链路挂了**(监控挂了没人知道=最深的黑暗);
|
|
66
|
+
Alertmanager 通道拨测(定期测试告警真的能到人:通道演练,eng-reliability 预案纪律)。
|
|
67
|
+
|
|
68
|
+
## 使用纪律
|
|
69
|
+
|
|
70
|
+
规则与配置全量入库走评审;新埋点过基数评估;告警规则带 promtool 用例;
|
|
71
|
+
watchdog 心跳必配;每次监控自身事故(漏报/爆内存)回写:基数清单或 meta 监控盲区——
|
|
72
|
+
**监控栈的成熟度=它宕机时你多快知道**。
|
|
73
|
+
|
|
74
|
+
**作业包**:`references/promql-cheatsheet.md`(四黄金信号查询/rate 与分位数判据样例/告警规则模板与 promtool 用例/基数排查查询)。
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# PromQL 高频速查与告警规则模板(obs-prometheus 落笔件:复制改名即用)
|
|
2
|
+
|
|
3
|
+
## 1. 四黄金信号标准查询(RED,eng-observability)
|
|
4
|
+
|
|
5
|
+
```promql
|
|
6
|
+
# 请求率(QPS,按服务)
|
|
7
|
+
sum by (service) (rate(http_requests_total[5m]))
|
|
8
|
+
# 错误率(比例;窗口≥4×抓取间隔)
|
|
9
|
+
sum by (service) (rate(http_requests_total{code=~"5.."}[5m]))
|
|
10
|
+
/ sum by (service) (rate(http_requests_total[5m]))
|
|
11
|
+
# 时延 P99(histogram;先 sum by le 再算!)
|
|
12
|
+
histogram_quantile(0.99,
|
|
13
|
+
sum by (service, le) (rate(http_request_duration_seconds_bucket[5m])))
|
|
14
|
+
# 饱和度示例(节点内存,node exporter)
|
|
15
|
+
1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
判据备忘: rate 进告警与大盘;irate 只看瞬时毛刺;分位数不能再 avg(要合并先合 bucket);
|
|
19
|
+
桶边界按 SLO 阈值设计(阈值附近桶密,否则分位数估算失真);counter 重置 rate 自动处理,禁手写差值。
|
|
20
|
+
|
|
21
|
+
## 2. 告警规则模板(带 for 与 runbook,入库走评审)
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
groups:
|
|
25
|
+
- name: service-slo
|
|
26
|
+
rules:
|
|
27
|
+
- alert: HighErrorRate
|
|
28
|
+
expr: |
|
|
29
|
+
sum by (service) (rate(http_requests_total{code=~"5.."}[5m]))
|
|
30
|
+
/ sum by (service) (rate(http_requests_total[5m])) > 0.01
|
|
31
|
+
for: 5m # 持续时长必配,瞬时毛刺不叫
|
|
32
|
+
labels: { severity: P2 } # 分级路由(P1 电话/P2 IM/P3 日报)
|
|
33
|
+
annotations:
|
|
34
|
+
summary: "{{ $labels.service }} 错误率 {{ $value | humanizePercentage }}"
|
|
35
|
+
runbook: "https://__/RB-high-error-rate" # runbook 必挂
|
|
36
|
+
- alert: Watchdog # 死人开关:永远触发,外部确认心跳
|
|
37
|
+
expr: vector(1)
|
|
38
|
+
labels: { severity: heartbeat }
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 3. promtool 规则单测样例(告警规则也是代码)
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
rule_files: [alert.rules.yml]
|
|
45
|
+
tests:
|
|
46
|
+
- interval: 1m
|
|
47
|
+
input_series:
|
|
48
|
+
- series: 'http_requests_total{service="api",code="500"}'
|
|
49
|
+
values: '0+10x10' # 每分钟 +10
|
|
50
|
+
- series: 'http_requests_total{service="api",code="200"}'
|
|
51
|
+
values: '0+100x10'
|
|
52
|
+
alert_rule_test:
|
|
53
|
+
- eval_time: 6m
|
|
54
|
+
alertname: HighErrorRate
|
|
55
|
+
exp_alerts:
|
|
56
|
+
- exp_labels: { service: api, severity: P2 }
|
|
57
|
+
```
|
|
58
|
+
运行: `promtool test rules test.yml`(进 CI 门禁,cicd-pipeline)。
|
|
59
|
+
|
|
60
|
+
## 4. 基数排查查询(内存暴涨第一时间跑)
|
|
61
|
+
|
|
62
|
+
```promql
|
|
63
|
+
# 序列数最多的 metric TOP10
|
|
64
|
+
topk(10, count by (__name__)({__name__=~".+"}))
|
|
65
|
+
# 某 metric 按 label 的基数分布(找出哪个 label 爆了)
|
|
66
|
+
count by (some_label) (my_metric_name)
|
|
67
|
+
# 抓取目标健康
|
|
68
|
+
up == 0
|
|
69
|
+
```
|
|
70
|
+
处置序: relabel drop 该 label → 源头埋点改造 → 极端丢弃整个 metric(obs-prometheus 基数节)。
|
|
71
|
+
|
|
72
|
+
## 5. recording rule 命名规范样例
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
- record: service:http_request_duration_seconds:p99_5m
|
|
76
|
+
expr: histogram_quantile(0.99, sum by (service, le) (rate(http_request_duration_seconds_bucket[5m])))
|
|
77
|
+
```
|
|
78
|
+
判据: 大盘高频/跨大窗口/分位数预计算才 record(每条都是持续计算成本)。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: office-automation
|
|
3
|
+
description: 办公自动化编排:例程定时、文件监听、专家团协作、子智能体并行的组合运用。当用户说"每天/每周自动…、盯着这个文件夹、定时生成报表、自动汇总周报"等持续性/定时性诉求时使用。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 办公自动化编排(把一次性任务变成持续运转的流程)
|
|
8
|
+
|
|
9
|
+
平台已有四种自动化原语,本技能教怎么**组合**:
|
|
10
|
+
|
|
11
|
+
| 原语 | 用途 | 入口 |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| 例程(Routines) | 定时无头执行一段指令(cron) | `/schedule` 或 schedule_followup 工具;桌面端「已安排」 |
|
|
14
|
+
| 自我调度 | 本回合没做完,约定时间自动续做 | schedule_followup(+30m / 每天 9:00 / cron) |
|
|
15
|
+
| 文件监听 | 目录变更即触发任务 | CLI `huicai watch "*.xlsx" -p "…"` |
|
|
16
|
+
| 专家团/子智能体 | 大任务拆给隔离上下文并行做 | /squad、dispatch_agent |
|
|
17
|
+
|
|
18
|
+
## 设计一条自动化流程的五步
|
|
19
|
+
|
|
20
|
+
1. **定触发**:时间驱动(每天 8:30)→ 例程;事件驱动(xlsx 落入共享目录)→ watch;
|
|
21
|
+
人驱动但重复(每次开会后)→ 存成自定义命令/技能。
|
|
22
|
+
2. **定输入输出契约**:输入目录/文件命名规则、输出放哪、命名怎么带日期(`报表-YYYYMMDD.xlsx`)。
|
|
23
|
+
自动化流程里**路径与命名必须确定性**,禁止"看情况"。
|
|
24
|
+
3. **写成一段可无头执行的指令**(例程运行时没有人可问):
|
|
25
|
+
- 所有决策预先写死(口径、阈值、收件目录);
|
|
26
|
+
- 遇到无法决策的情况:产出「待人工确认.md」并停止,**不要瞎猜**;
|
|
27
|
+
- 幂等:重复运行不产生重复数据(先查当日产物是否已存在)。
|
|
28
|
+
4. **登记**:`/schedule add "0 30 8 * * ?" "读取 共享/销售日报/ 最新文件,按 data-report-pro 勾稽后
|
|
29
|
+
产出 日报-{日期}.xlsx 与摘要,异常时生成 待人工确认.md"`(桌面端应用开着即由内置 RoutineRunner 执行)。
|
|
30
|
+
5. **验证与看护**:先手动跑一遍全流程确认产物;例程日志在 `~/.huicai/daemon/`;
|
|
31
|
+
第一周每天抽查产物,稳定后降频抽查。
|
|
32
|
+
|
|
33
|
+
## 典型编排配方
|
|
34
|
+
|
|
35
|
+
- **每日数据晨报**:例程(8:00) → 拉数(python) → data-report-pro 勾稽 → xlsx+摘要 → 桌面通知。
|
|
36
|
+
- **收件即处理**:watch 盯 `收件/` → 新 xlsx 触发「按固定口径分析并把结果写入 产出/」。
|
|
37
|
+
- **周报自动汇总**:例程(周五 16:00) → 读本周 `日报-*.xlsx` 合并 → docx-author 出周报初稿 →
|
|
38
|
+
留待人工审阅(自动化止于初稿,签发永远是人)。
|
|
39
|
+
- **月度深度报告**:任务太大 → 专家团分工(数据组/撰写组/审校组),主理人合稿;
|
|
40
|
+
或 dispatch_agent 并行做各章节调研再汇总。
|
|
41
|
+
|
|
42
|
+
## 红线
|
|
43
|
+
|
|
44
|
+
- 无头例程跑在 YOLO 语义下:**指令里绝不能包含删除类/外发类动作**;deny 规则仍生效,
|
|
45
|
+
但第一道防线是把指令写成只产出、不清理。
|
|
46
|
+
- 自动化产物必须可追溯:每份产物头部带生成时间与数据来源说明。
|
|
47
|
+
- 不要自动化"判断":数字化的规则可以自动,主观判定(如"重要客户")要么给白名单要么留人工。
|
|
48
|
+
|
|
49
|
+
## 验收自查
|
|
50
|
+
|
|
51
|
+
- [ ] 触发/输入/输出契约写清且确定性
|
|
52
|
+
- [ ] 手动全流程跑通一遍后才登记例程
|
|
53
|
+
- [ ] 异常路径产出「待人工确认」而非猜测
|
|
54
|
+
- [ ] 幂等性验证过(连跑两遍无重复副作用)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: okr-review
|
|
3
|
+
description: 目标管理与职场复盘(OKR 制定与对齐、周报月报、季度述职、年终总结、晋升答辩材料)。当用户说"定 OKR/写周报/述职/年终总结/晋升材料"时使用。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# OKR 与述职(目标定得对,故事讲得实)
|
|
8
|
+
|
|
9
|
+
## OKR 制定
|
|
10
|
+
|
|
11
|
+
- **O(目标)**:定性鼓舞人心但边界清楚("成为团队最信赖的数据服务"✓,"提升数据能力"✗太糊);
|
|
12
|
+
每周期 2–4 个,超了=没有重点;
|
|
13
|
+
- **KR(关键结果)**:结果不是动作——"上线 X 功能"是动作,"X 功能上线后使 Y 指标从 A→B"才是 KR;
|
|
14
|
+
每 O 配 2–4 条,全部可量化可验收,含基线值;设置野心档(0.7 分=达标线);
|
|
15
|
+
- **对齐检查**:每个 O 能说清支撑上级哪个目标;横向依赖点名("依赖平台组 Q3 交付 Z");
|
|
16
|
+
- 反模式扫描:KR 全是日常职责(那是 job description 不是 OKR)/ 数字无基线 / 互相冲突的 KR。
|
|
17
|
+
|
|
18
|
+
## 周报(让读者 30 秒抓住重点)
|
|
19
|
+
|
|
20
|
+
三段式:**进展**(对着目标说,带数字与对比:"完成 X 的 70%,较计划滞后 2 天,原因…")→
|
|
21
|
+
**风险与求助**(具体到"需要谁在何时给什么")→ **下周计划**(≤5 条,可验收)。
|
|
22
|
+
红线:不写流水账("参加了 3 个会"无信息量);坏消息不藏——周报里藏住的问题会在月报里爆炸。
|
|
23
|
+
|
|
24
|
+
## 述职/年终总结(价值叙事结构)
|
|
25
|
+
|
|
26
|
+
1. **开局定调**:一页讲清「本期最重要的 1–3 件事与结果」(评委记住的只有这页);
|
|
27
|
+
2. **每件事 STAR-I**:背景挑战(为什么难)→ 我的策略与取舍(**"我"的决策,不是团队流水**)→
|
|
28
|
+
结果(数字+对比锚:同比/目标/同业)→ Impact 延伸(沉淀了什么方法/带了什么人);
|
|
29
|
+
3. **不足与成长**:真实但可控(选已有改进动作的不足,别自爆无解硬伤);
|
|
30
|
+
4. **下期规划**:承接组织目标,给量化承诺。
|
|
31
|
+
- 数据核对:所有数字与来源系统对得上——述职被当场问穿一个数,全篇信用清零;
|
|
32
|
+
- 呈现:PPT 走 slides-html(数据页用 KPI 版式),讲稿按 260 字/分钟配时。
|
|
33
|
+
|
|
34
|
+
## 晋升答辩加强项
|
|
35
|
+
|
|
36
|
+
对照职级标准逐条自证(把标准原文放左栏,证据放右栏);跨级影响力证据(推动了本职外的什么);
|
|
37
|
+
预设评委挑战题("这事没有你会怎样?"——回答要有反事实推理)。
|
|
38
|
+
|
|
39
|
+
## 验收自查
|
|
40
|
+
|
|
41
|
+
- [ ] KR 是结果且有基线;O 有上级对齐说明
|
|
42
|
+
- [ ] 周报有数字对比与具体求助
|
|
43
|
+
- [ ] 述职每件事有"我的决策"与对比锚;数字可溯源
|
|
44
|
+
- [ ] 不足项带改进动作
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ops-fleet
|
|
3
|
+
description: 批量主机运维链(非 K8s 存量主机世界:声明式配置管理与 inventory 分组→批量执行纪律(金丝雀→分批→失败即停,爆炸半径=单机×N)→补丁管理与重启编排→systemd 服务规范→SSH 凭证与堡垒机纪律→主机安全与监控基线→CMDB 最低配与无主机清理)。eng-ops 与 eng-infra 的主机运维孙链:管一群虚机/裸机、批量变更、打补丁、主机配置漂移、"这台机器是谁的"时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 批量主机运维链
|
|
8
|
+
|
|
9
|
+
eng-ops 与 eng-infra 共同的孙链,管**非 K8s 的存量主机世界**(传统虚机/裸机/边缘节点——中国企业的现实主体);
|
|
10
|
+
K8s 治理走 infra-k8s。心智基调:**批量操作的风险=单机风险×N,而且是同时爆**——一切批量动作按变更管理(eng-ops)。
|
|
11
|
+
|
|
12
|
+
## 配置管理(声明式,主机版的 IaC)
|
|
13
|
+
|
|
14
|
+
- ansible 思路为基线:声明式 playbook+**幂等**(重跑收敛到同一状态,不是重复执行动作)——脚本式批量(for+ssh)只许做只读采集,变更类一律声明式;
|
|
15
|
+
- inventory 分组治理:按 环境×角色 打组与标签(web/db/跳板…),**inventory 即主机事实源之一**(与 CMDB 对账);
|
|
16
|
+
- 配置漂移检测:声明态 vs 实际态周巡(eng-infra IaC 漂移的主机版)——手改过的机器要么回补代码要么标记豁免(有期限);
|
|
17
|
+
- 密钥与变量:敏感变量走 vault 类加密(eng-infra 密钥四不),playbook 仓库化评审(eng-automation 脚本入库纪律)。
|
|
18
|
+
|
|
19
|
+
## 批量执行纪律(本链核心,爆炸半径管理)
|
|
20
|
+
|
|
21
|
+
1. **dry-run 先行**(check 模式/--diff 看将改什么);
|
|
22
|
+
2. **金丝雀 1 台**→观察(业务指标不是"命令返回 0")→小批(5–10%)→全量;
|
|
23
|
+
3. **失败即停阈值**:失败率 >__%(默认 5%)自动中止——批量工具必须支持 max-fail;
|
|
24
|
+
4. 并发限制:并发数别打满跳板机/带宽/目标服务(滚动比例与业务容量对齐,eng-release 滚动同构);
|
|
25
|
+
5. 高危命令四眼(eng-ops):删除/重启/改网络的 playbook 评审+双人执行;
|
|
26
|
+
6. **全程留痕**:谁/何时/哪批主机/什么命令/输出归档(现场保全,quick-triage 同拍);
|
|
27
|
+
7. 回滚预案:配置类变更保留上一版(备份文件/版本化),回滚 playbook 与正向同批评审。
|
|
28
|
+
|
|
29
|
+
## 补丁管理
|
|
30
|
+
|
|
31
|
+
漏洞补丁分批节奏:测试组→非核心→核心(eng-security 修复 SLA 与灰度的平衡:高危 7 天内完成全量=第 1 天就要开测试组);
|
|
32
|
+
**内核补丁与重启编排**:业务排空(摘流→确认无流量→重启→健康检查→回流,eng-release 滚动的主机版)/重启批次与业务窗口(eng-ops 变更日历);
|
|
33
|
+
离线环境补丁走 env-offline 摆渡(补丁包三点校验);
|
|
34
|
+
补丁台账:主机×补丁状态可查(等保检查要,sec-compliance 证据)。
|
|
35
|
+
|
|
36
|
+
## systemd 服务规范(散装 nohup 的终结者)
|
|
37
|
+
|
|
38
|
+
单元文件基线:Restart=on-failure+RestartSec(拉起纪律)/资源限制(MemoryMax/CPUQuota,防单服务吃垮主机)/
|
|
39
|
+
日志接 journald(统一采集出口,eng-observability)/依赖与顺序(After/Requires 显式);
|
|
40
|
+
**禁 nohup/screen 跑常驻生产服务**(重启即失联,无人管的孤儿进程);
|
|
41
|
+
开机自启清单治理:enable 的服务有台账(装过就忘的自启服务=攻击面+资源泄漏)。
|
|
42
|
+
|
|
43
|
+
## SSH 与访问纪律
|
|
44
|
+
|
|
45
|
+
堡垒机/跳板收口:生产 SSH 一律过堡垒机(审计留痕,eng-ops 操作留痕的基础设施);
|
|
46
|
+
密钥治理:**按人发证禁共享 root 密钥**/定期轮换/离职即吊销(sec-auth 账号生命周期);
|
|
47
|
+
sudo 最小化:按角色授权命令面,禁 NOPASSWD ALL 满天飞;
|
|
48
|
+
authorized_keys 周巡(多出来的公钥=入侵痕迹或流程外操作,eng-security)。
|
|
49
|
+
|
|
50
|
+
## 主机基线与监控
|
|
51
|
+
|
|
52
|
+
初始化基线(新机进池前):安全基线(口令策略/防火墙/审计开启,sec-compliance 等保基线)+监控 agent+日志采集+NTP(ops-linux 时钟)+基础工具包(排障不裸奔,eng-infra 基线镜像的主机版)——**基线做成 playbook,新机一跑就齐**;
|
|
53
|
+
监控覆盖:主机四大件(CPU/内存/磁盘/网络)+服务存活+磁盘水位预测(obs-prometheus node exporter 承接);
|
|
54
|
+
基线漂移与合规扫描周期化(eng-automation 例程)。
|
|
55
|
+
|
|
56
|
+
## CMDB 最低配("这台机器是谁的"必须三秒能答)
|
|
57
|
+
|
|
58
|
+
最低字段:主机名/IP/环境/角色/**Owner**/过保日期/等保范围标记;
|
|
59
|
+
与 inventory 对账例程(两边不一致=有野机器);
|
|
60
|
+
**无主机器季度清理**(eng-infra 僵尸资源):认领公示→无人认→隔离观察→下线;
|
|
61
|
+
过保与续费台账联动采购(eng-ops 容量月报)。
|
|
62
|
+
|
|
63
|
+
## 使用纪律
|
|
64
|
+
|
|
65
|
+
变更类批量操作必过金丝雀与失败即停;playbook 入库评审;高危四眼;
|
|
66
|
+
主机必有 Owner 与基线;每次批量事故回写:执行纪律参数(批次/阈值)与预案——
|
|
67
|
+
**批量运维的成熟度=敢在周二下午打补丁,而不是只敢周日凌晨**。
|
|
68
|
+
|
|
69
|
+
**作业包**:`scripts/batch-exec-guard.sh`(分批执行守卫:金丝雀→分批确认→失败即停→全程留痕,dry-run 先行——把执行纪律做成工具)。
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# 批量执行守卫(ops-fleet 批量纪律的可执行版):金丝雀→分批确认→失败即停→全程留痕。
|
|
3
|
+
# 用法:
|
|
4
|
+
# sh batch-exec-guard.sh -h hosts.txt -c "uptime" # 交互式:金丝雀后逐批确认
|
|
5
|
+
# sh batch-exec-guard.sh -h hosts.txt -c "..." --dry-run # 只显示将执行什么
|
|
6
|
+
# sh batch-exec-guard.sh -h hosts.txt -c "..." -b 10 -f 5 --yes # 无人值守:批 10 台,失败率>5% 即停
|
|
7
|
+
# 参数: -h 主机清单(每行一台,支持 user@host;# 注释) -c 命令 -b 批大小(默认 5) -f 失败率阈值%(默认 5)
|
|
8
|
+
# -t 单机超时秒(默认 30) -o 留痕目录(默认 /tmp) --dry-run 演习 --yes 免交互(失败即停仍生效)
|
|
9
|
+
# 纪律内置: 第一批恒为 1 台(金丝雀);变更类命令先 --dry-run;高危命令四眼(本工具不替代评审,eng-ops)。
|
|
10
|
+
HOSTS=""; CMD=""; BATCH=5; FAILPCT=5; TMOUT=30; OUT="/tmp"; DRY=0; YES=0
|
|
11
|
+
while [ $# -gt 0 ]; do
|
|
12
|
+
case "$1" in
|
|
13
|
+
-h) HOSTS="$2"; shift 2;;
|
|
14
|
+
-c) CMD="$2"; shift 2;;
|
|
15
|
+
-b) BATCH="$2"; shift 2;;
|
|
16
|
+
-f) FAILPCT="$2"; shift 2;;
|
|
17
|
+
-t) TMOUT="$2"; shift 2;;
|
|
18
|
+
-o) OUT="$2"; shift 2;;
|
|
19
|
+
--dry-run) DRY=1; shift;;
|
|
20
|
+
--yes) YES=1; shift;;
|
|
21
|
+
*) echo "未知参数: $1"; exit 2;;
|
|
22
|
+
esac
|
|
23
|
+
done
|
|
24
|
+
[ -z "$HOSTS" ] || [ -z "$CMD" ] && { echo "用法: batch-exec-guard.sh -h hosts.txt -c '命令' [-b 批大小] [-f 失败率%] [--dry-run] [--yes]"; exit 2; }
|
|
25
|
+
[ -r "$HOSTS" ] || { echo "[错误] 主机清单不可读: $HOSTS"; exit 2; }
|
|
26
|
+
command -v ssh >/dev/null 2>&1 || { echo "[缺工具] 无 ssh"; exit 3; }
|
|
27
|
+
|
|
28
|
+
TS=$(date '+%Y%m%d_%H%M%S')
|
|
29
|
+
D="$OUT/batch_${TS}"
|
|
30
|
+
mkdir -p "$D" || exit 2
|
|
31
|
+
grep -vE '^\s*(#|$)' "$HOSTS" > "$D/hosts.txt"
|
|
32
|
+
TOTAL=$(wc -l < "$D/hosts.txt" | tr -d ' ')
|
|
33
|
+
[ "$TOTAL" -eq 0 ] && { echo "[错误] 清单为空"; exit 2; }
|
|
34
|
+
{
|
|
35
|
+
echo "time: $TS"
|
|
36
|
+
echo "operator: $(whoami)@$(hostname 2>/dev/null)"
|
|
37
|
+
echo "hosts: $TOTAL"
|
|
38
|
+
echo "cmd: $CMD"
|
|
39
|
+
echo "batch: $BATCH fail_pct: $FAILPCT timeout: $TMOUT dry_run: $DRY"
|
|
40
|
+
} > "$D/manifest.txt"
|
|
41
|
+
|
|
42
|
+
echo "==== 批量执行守卫 ($TOTAL 台) ===="
|
|
43
|
+
echo "命令: $CMD"
|
|
44
|
+
echo "留痕: $D (谁/何时/哪批/输出全归档,eng-ops 留痕纪律)"
|
|
45
|
+
case "$CMD" in
|
|
46
|
+
*rm\ -rf*|*mkfs*|*reboot*|*shutdown*|*dd\ if=*)
|
|
47
|
+
echo "[高危] 命令含高危关键词 —— 确认已过四眼评审(eng-ops);--dry-run 先行"
|
|
48
|
+
;;
|
|
49
|
+
esac
|
|
50
|
+
if [ "$DRY" = "1" ]; then
|
|
51
|
+
echo "---- DRY-RUN: 将按以下批次执行(未真正执行) ----"
|
|
52
|
+
echo "批 0(金丝雀 1 台): $(head -1 "$D/hosts.txt")"
|
|
53
|
+
echo "后续每批 $BATCH 台,共约 $(( (TOTAL - 1 + BATCH - 1) / BATCH )) 批;失败率>${FAILPCT}% 即停"
|
|
54
|
+
exit 0
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
FAILED=0; DONE=0; BATCH_NO=0
|
|
58
|
+
run_host() { # run_host <host> → 0/1;输出落 $D/<host>.log
|
|
59
|
+
hlog="$D/$(echo "$1" | tr '@/:' '___').log"
|
|
60
|
+
if command -v timeout >/dev/null 2>&1; then
|
|
61
|
+
timeout "$TMOUT" ssh -o BatchMode=yes -o ConnectTimeout=8 -o StrictHostKeyChecking=accept-new "$1" "$CMD" > "$hlog" 2>&1
|
|
62
|
+
else
|
|
63
|
+
ssh -o BatchMode=yes -o ConnectTimeout=8 -o StrictHostKeyChecking=accept-new "$1" "$CMD" > "$hlog" 2>&1
|
|
64
|
+
fi
|
|
65
|
+
}
|
|
66
|
+
confirm() { # confirm <提示> → 0 继续
|
|
67
|
+
[ "$YES" = "1" ] && return 0
|
|
68
|
+
printf "%s [y/N] " "$1"
|
|
69
|
+
read -r ans
|
|
70
|
+
[ "$ans" = "y" ] || [ "$ans" = "Y" ]
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
exec_batch() { # exec_batch <起始行> <台数>
|
|
74
|
+
BATCH_NO=$((BATCH_NO + 1))
|
|
75
|
+
BFAIL=0
|
|
76
|
+
echo "---- 批 $BATCH_NO ($2 台) $(date '+%H:%M:%S') ----" | tee -a "$D/manifest.txt"
|
|
77
|
+
sed -n "$1,$(( $1 + $2 - 1 ))p" "$D/hosts.txt" | while IFS= read -r h; do
|
|
78
|
+
if run_host "$h"; then
|
|
79
|
+
echo " ✔ $h"
|
|
80
|
+
else
|
|
81
|
+
echo " ✗ $h (退出码/超时,详见日志)"
|
|
82
|
+
echo "$h" >> "$D/failed.txt"
|
|
83
|
+
fi
|
|
84
|
+
done
|
|
85
|
+
DONE=$((DONE + $2))
|
|
86
|
+
[ -f "$D/failed.txt" ] && BFAIL=$(wc -l < "$D/failed.txt" | tr -d ' ') && FAILED=$BFAIL
|
|
87
|
+
PCT=$(( FAILED * 100 / (DONE > 0 ? DONE : 1) ))
|
|
88
|
+
echo " 进度 $DONE/$TOTAL,累计失败 $FAILED (${PCT}%)"
|
|
89
|
+
if [ "$PCT" -gt "$FAILPCT" ] && [ "$DONE" -ge 2 ]; then
|
|
90
|
+
echo "==== [中止] 失败率 ${PCT}% > 阈值 ${FAILPCT}% —— 停止推进,查 $D/failed.txt 与各机日志 ===="
|
|
91
|
+
echo "aborted at batch $BATCH_NO, failed=$FAILED/$DONE" >> "$D/manifest.txt"
|
|
92
|
+
exit 1
|
|
93
|
+
fi
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# 金丝雀(恒 1 台)
|
|
97
|
+
exec_batch 1 1 || exit 1
|
|
98
|
+
if [ "$FAILED" -gt 0 ]; then
|
|
99
|
+
echo "==== [金丝雀失败] 第一台就失败 —— 默认中止(查日志修完再来) ===="
|
|
100
|
+
[ "$YES" = "1" ] && exit 1
|
|
101
|
+
confirm "金丝雀失败仍要继续?(通常应该中止)" || { echo "已中止;留痕 $D"; exit 1; }
|
|
102
|
+
else
|
|
103
|
+
echo "金丝雀完成 —— **观察业务指标**(不是命令返回 0 就算好)再继续。"
|
|
104
|
+
fi
|
|
105
|
+
confirm "继续下一批($BATCH 台)?" || { echo "操作者中止;留痕已存 $D"; exit 1; }
|
|
106
|
+
|
|
107
|
+
LINE=2
|
|
108
|
+
while [ "$LINE" -le "$TOTAL" ]; do
|
|
109
|
+
N=$BATCH
|
|
110
|
+
[ $(( LINE + N - 1 )) -gt "$TOTAL" ] && N=$(( TOTAL - LINE + 1 ))
|
|
111
|
+
exec_batch "$LINE" "$N" || exit 1
|
|
112
|
+
LINE=$(( LINE + N ))
|
|
113
|
+
if [ "$LINE" -le "$TOTAL" ]; then
|
|
114
|
+
confirm "继续下一批?" || { echo "操作者中止;留痕已存 $D"; exit 1; }
|
|
115
|
+
fi
|
|
116
|
+
done
|
|
117
|
+
echo "==== 全部完成: $DONE 台,失败 $FAILED;留痕 $D ===="
|
|
118
|
+
[ "$FAILED" -gt 0 ] && { echo "失败清单: $D/failed.txt(逐台补齐或回滚)"; exit 1; }
|
|
119
|
+
exit 0
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ops-linux
|
|
3
|
+
description: Linux 系统排障链(总动线先全局后进程→CPU 决策树(us/sy/wa/si/load 与 D 状态)→内存决策树(available/OOM killer/cgroup 容器假象)→IO 决策树(util/await/磁盘满四查)→网络决策树(TIME_WAIT/CLOSE_WAIT/丢包定位/tcpdump 判读/DNS 分层)→句柄与 ulimit→时钟漂移→容器内排障特供→工具代价红线)。eng-ops 的系统排障孙链:服务器卡了、load 高、磁盘满、连接异常、容器内没工具时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Linux 系统排障链
|
|
8
|
+
|
|
9
|
+
eng-ops 的系统排障孙链。应用层画像走各 dev-* 语言链,本链管**系统层**:资源视角(USE 法,eng-performance)把"机器不对劲"变成可执行的决策树。
|
|
10
|
+
总动线:**先全局后进程**——top/vmstat 一眼定资源类型(CPU/内存/IO/网络)→对应决策树钻到进程→交语言链画像。
|
|
11
|
+
|
|
12
|
+
## CPU 决策树(top/vmstat 判型)
|
|
13
|
+
|
|
14
|
+
- **us 高**(用户态):应用热点→定位进程(top)→线程(top -H)→栈(各语言链:arthas/py-spy/pprof/perf);
|
|
15
|
+
- **sy 高**(内核态):系统调用风暴(strace -c 统计哪类调用)/上下文切换爆(vmstat cs 列,10 万级+→线程数过多或锁颠簸)/自旋;
|
|
16
|
+
- **wa 高**(IO 等待):CPU 在等盘,转 IO 决策树——wa 高≠CPU 不够,加核无用;
|
|
17
|
+
- **si 高**(软中断):网络包量大(小包风暴/网卡中断单核打满看 /proc/interrupts,RPS/多队列分摊);
|
|
18
|
+
- **load 高但 CPU 使用率低**:D 状态进程堆积(不可中断睡眠=在等 IO/NFS/内核锁,`ps -eo stat | grep D` 数一数)——load 计入 D 态,这是"load 爆表 CPU 空闲"的标准答案;
|
|
19
|
+
- 隐蔽项:steal 高(虚机被宿主抢,找云厂商)/单核打满其余空闲(单线程瓶颈或中断绑核)。
|
|
20
|
+
|
|
21
|
+
## 内存决策树
|
|
22
|
+
|
|
23
|
+
- free 读法:**看 available 不看 free**(buff/cache 可回收,"内存快满了"九成是虚惊);真紧张信号:available 低+si/so 换页(vmstat)+kswapd 高 CPU;
|
|
24
|
+
- **OOM killer 判读**:`dmesg -T | grep -i oom`——谁被杀(oom_score 高者)/当时各进程占用快照;被杀≠元凶(常是大户被杀,小户泄漏);容器内 OOMKilled 看 K8s 事件(exit 137,infra-k8s 决策树);
|
|
25
|
+
- 泄漏定位:RSS 趋势监控(斜率>0)→语言链堆分析(dev-java MAT/dev-node heapsnapshot/dev-go pprof);区分 RSS 涨与堆涨(堆稳 RSS 涨=堆外/glibc 碎片,malloc_trim/换分配器判据);
|
|
26
|
+
- **cgroup 假象**:容器内 free/top 显示宿主内存——真实限额与用量看 cgroup 统计(v2: memory.current/memory.max)——容器内"内存还很多"是最常见误判;
|
|
27
|
+
- swap 判据:生产在线服务默认关或 swappiness 调低(延迟毛刺来源);有 swap 的机器看 si/so 不看 swap 占用存量。
|
|
28
|
+
|
|
29
|
+
## IO 决策树
|
|
30
|
+
|
|
31
|
+
- iostat -x 两列定性:**%util 饱和度+await 延迟**(await 远超设备正常值:SSD 亚毫秒/云盘个位毫秒=盘或链路病了);
|
|
32
|
+
- iotop/pidstat -d 定位进程;常见元凶:日志狂写(降级采样,eng-observability 成本节)/大查询临时文件(db 链)/备份任务撞高峰(错峰);
|
|
33
|
+
- **磁盘满四查**(df 100% 时按序):`du` 找大目录 vs `df` 不一致=**已删除未释放**(进程还握着句柄:`lsof +L1`,重启或 truncate 持有进程日志)/inode 满(`df -i`,海量小文件)/日志暴涨(找当天大文件)/挂载点遮蔽(挂载前写进了底层目录);判满先排噪声:**loop/squashfs(snap)与只读系统卷恒 100% 是常态**,不是磁盘满(实战回写 2026-07);
|
|
34
|
+
- fio 基准判据:怀疑盘性能时用与业务同 pattern 测(随机 4k vs 顺序大块),拿数字找云厂商;
|
|
35
|
+
- 文件系统只读(错误后自动 remount ro)=先查 dmesg 硬件/存储层。
|
|
36
|
+
|
|
37
|
+
## 网络决策树
|
|
38
|
+
|
|
39
|
+
- **连接状态统计先行**:`ss -s` + `ss -tan state xxx | wc -l`——TIME_WAIT 堆积(主动关闭方正常现象,数万级影响端口:复用参数/长连接化)/**CLOSE_WAIT 堆积=代码没关连接**(对端已关我方不关,查泄漏代码,dev-node/dev-java 连接池);
|
|
40
|
+
- 丢包定位分层:`netstat -s` 重传统计(TCP 层)→ping 丢包率+mtr 逐跳(网络路径)→网卡 drop(`ip -s link`,ring buffer/中断)→conntrack 满(`nf_conntrack: table full` 日志=大量丢连接,调表或关跟踪,infra-k8s 同坑);
|
|
41
|
+
- **tcpdump 判读基础**:三次握手形态(SYN 无回=防火墙/服务没监听;SYN+ACK 后无 ACK=客户端路径问题)/RST 来源(谁发的 RST 谁在拒:连接拒绝 vs 中途重置)/抓包姿势(`-w` 落盘拿 wireshark 看,过滤精确到五元组,**生产抓包限时限量**);
|
|
42
|
+
- DNS 分层排查:`nslookup 域名 指定DNS` 分离"本机配置错"与"DNS 服务错";resolv.conf/nsswitch 顺序;容器内 ndots 坑(infra-k8s);DNS 慢=常被忽略的"接口偶发慢"元凶(超时重试 5s 特征值);
|
|
43
|
+
- 带宽与队列:iftop/nload 定流量大户;tc 限速与 qdisc 丢包判据。
|
|
44
|
+
|
|
45
|
+
## 句柄、限制与杂项
|
|
46
|
+
|
|
47
|
+
句柄耗尽症状:Too many open files——`ulimit -n`(进程级,systemd 服务看 LimitNOFILE)+`lsof -p` 谁吃的(泄漏 vs 真需求调限);
|
|
48
|
+
线程/进程数限制(pids cgroup/ulimit -u):fork 失败先查这;
|
|
49
|
+
**时钟漂移**:证书校验失败/分布式凭证失效/日志时间穿越=先查 NTP(chrony 状态与偏移量)——时钟是隐形基础设施(arch-distributed 时钟不可信的运维面);
|
|
50
|
+
僵尸进程(Z 态):无害但堆积=父进程不收尸的 bug;
|
|
51
|
+
系统日志三看:dmesg(内核:OOM/硬件/网络驱动)/journalctl -u 服务/auth 日志(异常登录,eng-security)。
|
|
52
|
+
|
|
53
|
+
## 容器内排障特供
|
|
54
|
+
|
|
55
|
+
容器内工具缺:**ephemeral debug 容器**(kubectl debug 挂诊断镜像进同命名空间,infra-k8s)/宿主 `nsenter -t <pid> -n` 进目标网络命名空间用宿主工具;
|
|
56
|
+
容器视角三校正:内存看 cgroup(见上)/CPU 配额节流看 cpu.stat 的 throttled(限流了 top 却不显)/进程号命名空间(容器内 PID≠宿主 PID,宿主排障先 `ps` 映射);
|
|
57
|
+
镜像瘦身与排障的和解:基线镜像带最小诊断集或统一 debug 镜像(eng-infra 镜像节)。
|
|
58
|
+
|
|
59
|
+
## 工具代价红线(生产用前看)
|
|
60
|
+
|
|
61
|
+
strace 停走目标进程(高频调用进程上=雪上加霜,限时/用 -c 统计模式/优先 perf trace);
|
|
62
|
+
tcpdump 高流量下 CPU 与丢包代价(精确过滤+限时限量);
|
|
63
|
+
perf 采样相对安全但落盘大;**一切诊断动作先估代价再上,且留痕**(eng-ops 操作留痕;P1 现场优先快照采集:栈/关键 /proc 文件打包,先保全后分析)。
|
|
64
|
+
|
|
65
|
+
## 使用纪律
|
|
66
|
+
|
|
67
|
+
排障从监控图定资源类型再上机(有图不瞎摸,eng-observability);一次一变量(eng-performance);
|
|
68
|
+
诊断命令与结论写进事件时间线(eng-ops);**一键体检作业包**:`scripts/quick-triage.sh`(只读采集四棵决策树关键数据+红黄灯初判,`-o 目录` 打现场保全包;工具缺失自动降级)——事件响应第一分钟先跑它;
|
|
69
|
+
每次系统层事故回写决策树分支——**决策树的每个叶子都是前人熬的夜**。
|