[Task]: Generate Prometheus profile integration pages from profile YAML
Maintainer thường phản hồi trong vòng 1 ngày
@ilyam8 đang làm issue này rồi.
Từ ngày 11/6/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Problem / root cause
Prometheus chart profiles produce curated, well-defined charts, but those charts have no metric metadata, so they are absent from the integrations catalog and generated docs.
src/go/plugin/go.d/collector/prometheus/metadata.yamlhas 160 per-exporter<<: *moduleentries, but all inheritscopes: [ ]from the base anchor (metadata.yaml:402). There is
nohaproxyentry.- The haproxy profile (
config/go.d/prometheus.profiles/default/haproxy.yaml) renders 92 curated charts underprometheus.haproxy.*(e.g.prometheus.haproxy.frontend_status), none
of which are documented. azure_monitoralready implements the "one collector → many pages" shape, but its per-component scopes are hand-written (azure_monitor/metadata.yaml, ~10k lines). Hand-writing per
profile does not scale and drifts from the profile YAML, which already declares every chart's context, title, units, and dimensions.
Clean end state
A generator reads a Prometheus profile YAML and emits its metrics.scopes, wired into the integrations generation pipeline so each profile yields its own integration page
automatically — the azure_monitor model (per-component <<: *module entry with its own monitored_instance + metrics.scopes), but generated from the profile instead of
hand-written.
- The profile YAML is the single source of truth; metadata cannot drift; every future profile gets a documented page for free.
- haproxy is the proof of concept: a
prometheus-haproxyintegration withmonitored_instance: HAProxyand generated scopes for all 92 curated charts, producing a generated HAProxy
page with full metrics docs.
Acceptance criteria
- A generator maps a profile YAML →
metrics.scopes:- one scope per top-level template group; scope
labelsfrom that group'schart_defaults.instances.by_labels(inherited by nested groups); - one metric per curated chart:
name= rendered contextprometheus.<context_namespace>.<context>,description= chart title,unit= chart units,chart_type= charttype
(defaultline),dimensionsfrom dimension names (a dimension per <label>forname_from_label).
- one scope per top-level template group; scope
- The generator is integrated into the integrations generation pipeline (
integrations/gen_integrations.pyand friends), not a manual side-step; re-running generation is idempotent. - A
prometheus-haproxyintegration entry is produced withmonitored_instance: HAProxy+ the generated scopes; the generated.mdlists the curated metrics. - Output validates against the integrations metadata schema; markdown /
check_collector_taxonomy.pychecks pass. - A test guards the generator against charttpl profile-schema drift (nested groups,
name_from_label,instances.by_labels).
Category
follow-up from prior work
Scope boundaries
In scope:
- the profile-YAML →
metrics.scopesgenerator; - its integration into the integrations generation pipeline;
- the haproxy PoC integration page.
Validation
- Run the generator on
haproxy.yaml; diff emitted scopes against the 92 charts (count + spot-check the label-split charts: status bystate, http responses bycode). - Run the integrations pipeline and confirm the HAProxy page renders the metrics section.
- Schema validation against
integrations/schemas.
Risks / compatibility
- Context composition: the generator assumes the default rendered prefix
prometheus.<context_namespace>.<context>; the collectorappoption can change the namespace at runtime — stock metadata uses the default. - The generator must track the charttpl profile schema; the schema-drift test above is the guard.
- The 160 existing exporter entries must stay unaffected (additive: only the haproxy entry + its generated scopes).
- Ngôn ngữ chính
- Go
- Star
- 80.6k
- Fork
- 6.6k
- Merge trung bình
- 15 giờ 35 phút
- Pull request đã merge (30 ngày)
- 305
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của netdata/netdata
-
bug needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
netdata/netdata#24062 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
area/docs area/packaging bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
netdata/netdata#23398 · 2 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
netdata/netdata#22786 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs triage
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 66/100
netdata/netdata#24067 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của netdata/netdata
Issue tương tự
-
priority: low 🌱 type: enhancement 💅🏼
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 84/100
nebari-dev/llm-serving-pack#199 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
area/helm kind/bug priority/backlog triage/accepted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
lexfrei/cloudflare-tunnel-gateway-controller#889 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug difficulty: beginner documentation good first issue help wanted localization
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
wavefnd/wave-platform#140 ·
-
compiler/runtime
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
golang/go#81797 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày