Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[Bug][Grafana] Redundant root grafana-irm.json causes dashboard UID collisions in MySQL and phantom dashboard in PostgreSQL

Đang mở Phù hợp với người mới
#9,175 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
1/5
Thời gian dự kiến
Dưới một giờ
Mức phù hợp với người mới
95/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
docker, grafana
Lĩnh vực
data-visualization, devops

Hướng nghiên cứu

Bắt đầu bằng cách kiểm tra grafana/dashboards/grafana-irm.json cùng với các dashboard dành riêng cho từng dialect, sau đó xem xét grafana/Dockerfile và entrypoint.sh để xác nhận cách các đường dẫn provisioning được sao chép và lọc. Xóa tệp dashboard dư thừa ở thư mục gốc và xác minh rằng chỉ còn dashboard MySQL hoặc PostgreSQL tương ứng với mỗi DATABASE_TYPE; các bước kiểm tra build Docker và khởi động được ghi trong tài liệu phải cho thấy không có xung đột UID hoặc dashboard ảo.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

type/bug
Search before asking
  • I had searched in the issues and found no similar issues.
What happened

Following the merge of PR #9160, the new Grafana IRM dashboard was added to dialect-specific directories (grafana/dashboards/mysql/grafana-irm.json and grafana/dashboards/postgresql/grafana-irm.json), but a duplicate file was also left at the root level in grafana/dashboards/grafana-irm.json.

In the container build (grafana/Dockerfile), the entire dashboards directory is copied into /etc/grafana/dashboards.

  1. MySQL mode (DATABASE_TYPE=mysql):

    • entrypoint.sh removes /etc/grafana/dashboards/postgresql.
    • Both /etc/grafana/dashboards/grafana-irm.json and /etc/grafana/dashboards/mysql/grafana-irm.json remain on disk with the identical UID: "uid": "grafana-irm-dashboard".
    • Grafana's file provider provisions dashboards recursively, encountering both files and throwing a duplicate UID collision:
      logger=provisioning.dashboard type=file name="My Dashboard" level=error msg="failed to load dashboard from file" file=/etc/grafana/dashboards/grafana-irm.json error="dashboard with uid 'grafana-irm-dashboard' already exists"
      
  2. PostgreSQL mode (DATABASE_TYPE=postgresql):

    • entrypoint.sh removes /etc/grafana/dashboards/mysql.
    • Both /etc/grafana/dashboards/postgresql/grafana-irm.json (UID grafana-irm-dashboard-pg) and the stray root /etc/grafana/dashboards/grafana-irm.json (UID grafana-irm-dashboard) are loaded under the same title "Grafana IRM".
    • The root dashboard attempts to query the MySQL datasource (devlake-mysql-api), which does not exist in PostgreSQL mode, resulting in a duplicate broken dashboard in the Grafana UI.
What do you expect to happen

Each dashboard file should only exist within its designated dialect folder (grafana/dashboards/mysql/ or grafana/dashboards/postgresql/). No duplicate files should reside in the root grafana/dashboards/ directory so that provisioning loads each dashboard exactly once without UID conflicts or cross-dialect query errors.

How to reproduce
  1. Inspect the repository at grafana/dashboards/ or build and run the Grafana container:
    docker build -t devlake-dashboard:test grafana/
    docker run --rm -e DATABASE_TYPE=mysql devlake-dashboard:test
    
  2. Verify that both /etc/grafana/dashboards/grafana-irm.json and /etc/grafana/dashboards/mysql/grafana-irm.json exist.
  3. Observe the Grafana startup logs indicating a duplicate dashboard UID error for grafana-irm-dashboard.
  4. Alternatively, run with -e DATABASE_TYPE=postgresql and check the dashboard list in the Grafana UI; observe two "Grafana IRM" dashboards, with the root one failing due to missing devlake-mysql-api.
Anything else
  • Affected file to be removed: grafana/dashboards/grafana-irm.json
  • Active dialect dashboards:
    • grafana/dashboards/mysql/grafana-irm.json (MySQL datasource)
    • grafana/dashboards/postgresql/grafana-irm.json (PostgreSQL datasource)
  • grafana/dashboards/grafana-irm.json and grafana/dashboards/mysql/grafana-irm.json are byte-for-byte identical; removing the root file cleanly eliminates the collision without impacting MySQL or PostgreSQL dashboard provisioning.
Version

b0a758996 (commit on main following PR #9160 / #9173)

Are you willing to submit PR?
  • Yes I am willing to submit a PR!
Code of Conduct
Ngôn ngữ chính
Go
Star
3.1k
Fork
812
Merge trung bình
2 ngày 8 giờ
Pull request đã merge (30 ngày)
50

Chuẩn bị môi trường

Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/devlake

Tất cả issue của apache/devlake

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.