Grafana
chính thứcTìm kiếm dashboard, điều tra sự cố và truy vấn nguồn dữ liệu trong phiên bản Grafana của bạn
Bạn có thể làm gì với Grafana MCP?
- Tìm kiếm và kiểm tra dashboard — Tìm dashboard theo tiêu đề bằng
search_dashboards, lấy bản tóm tắt gọn nhẹ quaget_dashboard_summary, hoặc trích xuất các trường cụ thể bằngget_dashboard_propertyvới JSONPath. - Truy vấn các nguồn dữ liệu quan sát — Chạy truy vấn PromQL với
query_prometheus, tìm kiếm log vớiquery_loki_logs, và truy vấn các nguồn dữ liệu CloudWatch, Elasticsearch, ClickHouse, Athena, hoặc Snowflake. - Quản lý cảnh báo và sự cố — Liệt kê, tạo, cập nhật và xóa các quy tắc cảnh báo; tìm kiếm và quản lý sự cố trong Grafana Incident; xem lịch trực OnCall và các nhóm cảnh báo.
- Kết xuất bảng điều khiển dashboard thành hình ảnh — Tạo ảnh PNG của các bảng điều khiển hoặc dashboard với khung thời gian tùy chỉnh, chủ đề và tỷ lệ thông qua công cụ kết xuất.
- Tạo các liên kết sâu chính xác — Tạo URL trực tiếp đến dashboard, bảng điều khiển cụ thể hoặc chế độ xem Explore với các nguồn dữ liệu và khung thời gian được cấu hình sẵn.
- Quản trị tài nguyên Grafana — Liệt kê nhóm, người dùng và vai trò; kiểm tra phân công vai trò và quyền tài nguyên bằng các công cụ quản trị.
Tài liệu
Máy chủ Grafana MCP
Một máy chủ Giao thức Ngữ cảnh Mô hình (MCP) dành cho Grafana.
Máy chủ này cung cấp quyền truy cập vào phiên bản Grafana của bạn và hệ sinh thái xung quanh.
Bắt đầu nhanh
Yêu cầu uv. Thêm nội dung sau vào cấu hình máy khách MCP của bạn (ví dụ: Claude Desktop, Cursor):
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": ["mcp-grafana"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Đối với Grafana Cloud, thay thế GRAFANA_URL bằng URL phiên bản của bạn (ví dụ: https://myinstance.grafana.net). Xem Cách sử dụng để biết thêm các tùy chọn cài đặt bao gồm Docker, tệp nhị phân và Helm.
Yêu cầu
- Cần phiên bản Grafana 9.0 trở lên để có đầy đủ chức năng. Một số tính năng, đặc biệt là các thao tác liên quan đến nguồn dữ liệu, có thể không hoạt động chính xác với các phiên bản cũ hơn do thiếu điểm cuối API.
Tính năng
Các tính năng sau hiện đang có sẵn trong máy chủ MCP. Danh sách này chỉ nhằm mục đích cung cấp thông tin và không đại diện cho lộ trình hay cam kết về các tính năng trong tương lai.
Trang tổng quan
- Tìm kiếm trang tổng quan: Tìm trang tổng quan theo tiêu đề hoặc siêu dữ liệu khác
- Lấy trang tổng quan theo UID: Truy xuất chi tiết đầy đủ của trang tổng quan bằng mã định danh duy nhất của nó. Cảnh báo: Các trang tổng quan lớn có thể tiêu tốn đáng kể không gian cửa sổ ngữ cảnh.
- Lấy tóm tắt trang tổng quan: Nhận tổng quan ngắn gọn về một trang tổng quan bao gồm tiêu đề, số lượng bảng điều khiển, loại bảng điều khiển, biến và siêu dữ liệu mà không cần JSON đầy đủ để giảm thiểu việc sử dụng cửa sổ ngữ cảnh
- Lấy thuộc tính trang tổng quan: Trích xuất các phần cụ thể của trang tổng quan bằng biểu thức JSONPath (ví dụ:
$.title,$.panels[*].title) để chỉ lấy dữ liệu cần thiết và giảm tiêu thụ cửa sổ ngữ cảnh - Cập nhật hoặc tạo trang tổng quan: Sửa đổi các trang tổng quan hiện có hoặc tạo mới. Cảnh báo: Yêu cầu JSON đầy đủ của trang tổng quan, có thể tiêu tốn lượng lớn không gian cửa sổ ngữ cảnh.
- Vá trang tổng quan: Áp dụng các thay đổi cụ thể cho trang tổng quan mà không yêu cầu JSON đầy đủ, giảm đáng kể việc sử dụng cửa sổ ngữ cảnh cho các sửa đổi có mục tiêu
- Lấy truy vấn bảng điều khiển và thông tin nguồn dữ liệu: Lấy tiêu đề, chuỗi truy vấn và thông tin nguồn dữ liệu (bao gồm UID và loại, nếu có) từ mọi bảng điều khiển trong một trang tổng quan
Chạy truy vấn bảng điều khiển
Lưu ý: Các công cụ chạy truy vấn bảng điều khiển bị tắt theo mặc định. Để bật chúng, thêm
runpanelqueryvào cờ--enabled-toolscủa bạn.
- Chạy truy vấn bảng điều khiển: Thực thi truy vấn của bảng điều khiển trang tổng quan với phạm vi thời gian tùy chỉnh và ghi đè biến.
Quản lý cửa sổ ngữ cảnh
Các công cụ trang tổng quan hiện bao gồm một số chiến lược để quản lý hiệu quả việc sử dụng cửa sổ ngữ cảnh (vấn đề #101):
- Sử dụng
get_dashboard_summaryđể có tổng quan về trang tổng quan và lập kế hoạch sửa đổi - Sử dụng
get_dashboard_propertyvới JSONPath khi bạn chỉ cần các phần cụ thể của trang tổng quan - Tránh
get_dashboard_by_uidtrừ khi bạn thực sự cần JSON đầy đủ của trang tổng quan
Nguồn dữ liệu
- Liệt kê và lấy thông tin nguồn dữ liệu: Xem tất cả các nguồn dữ liệu đã cấu hình và truy xuất thông tin chi tiết về từng nguồn.
- Các loại nguồn dữ liệu được hỗ trợ: Prometheus, Loki, ClickHouse, CloudWatch, Elasticsearch, OpenSearch, Snowflake, Athena.
Ví dụ truy vấn
Lưu ý: Các công cụ ví dụ truy vấn bị tắt theo mặc định. Để bật chúng, thêm
examplesvào cờ--enabled-toolscủa bạn.
- Lấy ví dụ truy vấn: Truy xuất các truy vấn ví dụ cho các loại nguồn dữ liệu khác nhau để học cú pháp truy vấn.
Truy vấn Prometheus
- Truy vấn Prometheus: Thực thi các truy vấn PromQL (hỗ trợ cả truy vấn metric tức thời và theo phạm vi) đối với các nguồn dữ liệu Prometheus.
- Truy vấn siêu dữ liệu Prometheus: Truy xuất siêu dữ liệu metric, tên metric, tên nhãn và giá trị nhãn từ các nguồn dữ liệu Prometheus.
- Truy vấn phân vị histogram: Tính toán các giá trị phân vị histogram (p50, p90, p95, p99) bằng cách sử dụng histogram_quantile.
Truy vấn Loki
- Truy vấn nhật ký và metric Loki: Chạy cả truy vấn nhật ký và truy vấn metric bằng LogQL đối với các nguồn dữ liệu Loki.
- Truy vấn siêu dữ liệu Loki: Truy xuất tên nhãn, giá trị nhãn và thống kê luồng từ các nguồn dữ liệu Loki.
- Truy vấn mẫu Loki: Truy xuất các mẫu nhật ký được Loki phát hiện để xác định các cấu trúc nhật ký phổ biến và bất thường.
Truy vấn InfluxDB
Lưu ý: Các công cụ InfluxDB bị tắt theo mặc định. Để bật chúng, thêm
influxdbvào cờ--enabled-toolscủa bạn.
- Truy vấn InfluxDB: Thực thi các truy vấn đối với nguồn dữ liệu InfluxDB bằng InfluxQL (v1.x) hoặc Flux (v2.x). Phương ngữ được suy ra từ cấu hình nguồn dữ liệu, hoặc có thể được đặt rõ ràng thông qua tham số
dialect.
Truy vấn ClickHouse
Lưu ý: Các công cụ ClickHouse bị tắt theo mặc định. Để bật chúng, thêm
clickhousevào cờ--enabled-toolscủa bạn.
- Liệt kê bảng ClickHouse: Liệt kê tất cả các bảng trong cơ sở dữ liệu ClickHouse với số lượng hàng và kích thước.
- Mô tả lược đồ bảng: Lấy tên cột, kiểu dữ liệu và siêu dữ liệu cho một bảng ClickHouse.
- Truy vấn ClickHouse: Thực thi các truy vấn SQL với hỗ trợ thay thế macro và biến của Grafana.
Truy vấn CloudWatch
Lưu ý: Các công cụ CloudWatch bị tắt theo mặc định. Để bật chúng, thêm
cloudwatchvào cờ--enabled-toolscủa bạn.
- Liệt kê không gian tên CloudWatch: Khám phá các không gian tên AWS CloudWatch khả dụng.
- Liệt kê metric CloudWatch: Liệt kê các metric có sẵn trong một không gian tên cụ thể.
- Liệt kê thứ nguyên CloudWatch: Lấy các thứ nguyên để lọc truy vấn metric.
- Truy vấn CloudWatch: Thực thi các truy vấn metric CloudWatch với hỗ trợ phạm vi thời gian.
Truy vấn Graphite
Lưu ý: Các công cụ Graphite bị tắt theo mặc định. Để bật chúng, thêm
graphitevào cờ--enabled-toolscủa bạn.
- Truy vấn Graphite: Thực thi các truy vấn API kết xuất Graphite đối với nguồn dữ liệu Graphite.
- Liệt kê metric Graphite: Duyệt và khám phá các đường dẫn metric Graphite.
- Liệt kê thẻ Graphite: Liệt kê các thẻ Graphite khả dụng và giá trị thẻ.
- Truy vấn mật độ Graphite: Truy vấn mật độ metric Graphite cho một mẫu nhất định.
Truy vấn Athena
Lưu ý: Các công cụ Athena bị tắt theo mặc định. Để bật chúng, thêm
athenavào cờ--enabled-toolscủa bạn.
- Liệt kê danh mục Athena: Khám phá các danh mục dữ liệu khả dụng (ví dụ: AwsDataCatalog, trình kết nối Iceberg).
- Liệt kê cơ sở dữ liệu Athena: Liệt kê các cơ sở dữ liệu trong một danh mục Athena.
- Liệt kê bảng Athena: Liệt kê các bảng trong một cơ sở dữ liệu Athena.
- Mô tả bảng Athena: Lấy tên cột cho một bảng Athena.
- Truy vấn Athena: Thực thi các truy vấn SQL đối với Amazon Athena thông qua Grafana với hỗ trợ thay thế macro, thực thi giới hạn và biến mẫu.
Truy vấn Snowflake
Lưu ý: Các công cụ Snowflake bị tắt theo mặc định. Để bật chúng, thêm
snowflakevào cờ--enabled-toolscủa bạn.
Các truy vấn đi qua nguồn dữ liệu Snowflake của Grafana (plugin Grafana Enterprise grafana-snowflake-datasource), vì vậy xác thực được xử lý bởi cấu hình nguồn dữ liệu trong Grafana — máy chủ MCP không bao giờ thấy thông tin xác thực. Đây là mô hình tương tự được sử dụng cho các công cụ ClickHouse.
- Liệt kê bảng Snowflake: Khám phá các bảng (với cơ sở dữ liệu, lược đồ, loại, số lượng hàng và kích thước) thông qua
INFORMATION_SCHEMA.TABLES. Bộ lọc cơ sở dữ liệu/lược đồ tùy chọn. - Mô tả lược đồ bảng: Lấy tên cột, kiểu dữ liệu, khả năng null, giá trị mặc định và chú thích cho một bảng Snowflake.
- Truy vấn Snowflake: Thực thi các truy vấn SQL với hỗ trợ thay thế macro và biến. Hữu ích để truy vấn các bảng sự kiện của Snowflake (ví dụ:
SNOWFLAKE.TELEMETRY.EVENTS) cho nhật ký và dấu vết, hoặc bất kỳ bảng người dùng nào.- Các macro được hỗ trợ:
$__timeFilter(column),$__timeFrom,$__timeTo,$__from,$__to(Unix ms),$__interval(giây),$__interval_ms, và${varname}để thay thế biến mẫu.
- Các macro được hỗ trợ:
Truy vấn Elasticsearch/OpenSearch
Lưu ý: Các công cụ Elasticsearch/OpenSearch bị tắt theo mặc định. Để bật chúng, thêm
elasticsearchvào cờ--enabled-toolscủa bạn.
- Truy vấn Elasticsearch/OpenSearch: Thực thi các truy vấn tìm kiếm đối với nguồn dữ liệu Elasticsearch hoặc OpenSearch bằng cú pháp truy vấn Lucene hoặc Elasticsearch Query DSL. Hỗ trợ lọc theo phạm vi thời gian và truy xuất nhật ký, metric hoặc bất kỳ dữ liệu được lập chỉ mục nào. Trả về các tài liệu với chỉ mục, ID, trường nguồn và điểm liên quan tùy chọn.
Truy vấn Quickwit
Lưu ý: Các công cụ Quickwit bị tắt theo mặc định. Để bật chúng, thêm
quickwitvào cờ--enabled-toolscủa bạn.
- Truy vấn Quickwit: Thực thi các truy vấn tìm kiếm đối với nguồn dữ liệu Quickwit bằng cú pháp truy vấn Lucene hoặc Query DSL tương thích một phần với Elasticsearch. Hỗ trợ lọc theo phạm vi thời gian và truy xuất nhật ký hoặc các tài liệu được lập chỉ mục khác. Trả về các tài liệu với chỉ mục, ID, trường nguồn và điểm liên quan tùy chọn.
Sự cố
- Tìm kiếm, tạo và cập nhật sự cố: Quản lý sự cố trong Grafana Incident, bao gồm tìm kiếm, tạo và thêm hoạt động vào sự cố.
Điều tra Sift
- Liệt kê các cuộc điều tra Sift: Truy xuất danh sách các cuộc điều tra Sift, với hỗ trợ tham số giới hạn.
- Lấy cuộc điều tra Sift: Truy xuất chi tiết của một cuộc điều tra Sift cụ thể bằng UUID của nó.
- Lấy phân tích Sift: Truy xuất một phân tích cụ thể từ một cuộc điều tra Sift.
- Tìm mẫu lỗi trong nhật ký: Phát hiện các mẫu lỗi gia tăng trong nhật ký Loki bằng Sift.
- Tìm yêu cầu chậm: Phát hiện các yêu cầu chậm bằng Sift (Tempo).
Cảnh báo
- Liệt kê và lấy thông tin quy tắc cảnh báo: Xem các quy tắc cảnh báo và trạng thái của chúng (đang kích hoạt/bình thường/lỗi/v.v.) trong Grafana. Hỗ trợ cả quy tắc do Grafana quản lý và quy tắc do nguồn dữ liệu quản lý từ các nguồn dữ liệu Prometheus hoặc Loki.
- Tạo và cập nhật quy tắc cảnh báo: Tạo quy tắc cảnh báo mới hoặc sửa đổi các quy tắc hiện có.
- Xóa quy tắc cảnh báo: Xóa quy tắc cảnh báo theo UID.
- Quản lý định tuyến cảnh báo: Xem chính sách thông báo, điểm liên hệ và khoảng thời gian. Hỗ trợ cả điểm liên hệ do Grafana quản lý và bộ nhận từ các nguồn dữ liệu Alertmanager bên ngoài (Prometheus Alertmanager, Mimir, Cortex).
Grafana OnCall
- Liệt kê và quản lý lịch trực: Xem và quản lý lịch trực trong Grafana OnCall.
- Lấy chi tiết ca trực: Truy xuất thông tin chi tiết về các ca trực cụ thể.
- Lấy người dùng đang trực hiện tại: Xem những người dùng nào hiện đang trực cho một lịch.
- Liệt kê nhóm và người dùng: Xem tất cả các nhóm và người dùng OnCall.
- Liệt kê nhóm cảnh báo: Xem và lọc các nhóm cảnh báo từ Grafana OnCall theo nhiều tiêu chí khác nhau bao gồm trạng thái, tích hợp, nhãn và phạm vi thời gian.
- Lấy chi tiết nhóm cảnh báo: Truy xuất thông tin chi tiết về một nhóm cảnh báo cụ thể bằng ID của nó.
Quản trị
Lưu ý: Các công cụ quản trị bị tắt theo mặc định. Để bật chúng, bao gồm
admintrong cờ--enabled-toolscủa bạn.
- Liệt kê nhóm: Xem tất cả các nhóm đã cấu hình trong Grafana.
- Liệt kê người dùng: Xem tất cả người dùng trong một tổ chức trong Grafana.
- Liệt kê tất cả vai trò: Liệt kê tất cả các vai trò Grafana, với bộ lọc tùy chọn cho các vai trò có thể ủy quyền.
- Lấy chi tiết vai trò: Lấy chi tiết cho một vai trò Grafana cụ thể theo UID.
- Liệt kê phân công cho một vai trò: Liệt kê tất cả người dùng, nhóm và tài khoản dịch vụ được gán cho một vai trò.
- Liệt kê vai trò cho người dùng: Liệt kê tất cả các vai trò được gán cho một hoặc nhiều người dùng.
- Liệt kê vai trò cho nhóm: Liệt kê tất cả các vai trò được gán cho một hoặc nhiều nhóm.
- Liệt kê quyền cho một tài nguyên: Liệt kê tất cả các quyền được xác định cho một tài nguyên cụ thể (trang tổng quan, nguồn dữ liệu, thư mục, v.v.).
- Mô tả tài nguyên Grafana: Liệt kê các quyền khả dụng và khả năng phân công cho một loại tài nguyên.
Điều hướng
- Tạo liên kết sâu: Tạo URL liên kết sâu chính xác cho các tài nguyên Grafana thay vì dựa vào việc đoán URL của LLM.
- Liên kết bảng điều khiển: Tạo liên kết trực tiếp đến bảng điều khiển bằng UID của chúng (ví dụ:
http://localhost:3000/d/dashboard-uid) - Liên kết bảng điều khiển con: Tạo liên kết đến các bảng điều khiển con cụ thể trong bảng điều khiển với tham số viewPanel (ví dụ:
http://localhost:3000/d/dashboard-uid?viewPanel=5) - Liên kết Khám phá: Tạo liên kết đến Grafana Explore với nguồn dữ liệu được cấu hình sẵn (ví dụ:
http://localhost:3000/explore?left={"datasource":"prometheus-uid"}) - Hỗ trợ phạm vi thời gian: Thêm tham số phạm vi thời gian vào liên kết (
from=now-1h&to=now) - Tham số tùy chỉnh: Bao gồm các tham số truy vấn bổ sung như biến bảng điều khiển hoặc khoảng thời gian làm mới
- Liên kết bảng điều khiển: Tạo liên kết trực tiếp đến bảng điều khiển bằng UID của chúng (ví dụ:
Chú thích
- Lấy Chú thích: Truy vấn chú thích với bộ lọc. Hỗ trợ phạm vi thời gian, UID bảng điều khiển, thẻ và chế độ khớp.
- Tạo Chú thích: Tạo chú thích mới trên bảng điều khiển hoặc bảng điều khiển con.
- Tạo Chú thích Graphite: Tạo chú thích sử dụng định dạng Graphite (
what,when,tags,data). - Cập nhật Chú thích: Thay thế tất cả các trường của chú thích hiện có (cập nhật toàn bộ).
- Vá Chú thích: Chỉ cập nhật các trường cụ thể của chú thích (cập nhật một phần).
- Lấy Thẻ Chú thích: Liệt kê các thẻ chú thích có sẵn với bộ lọc tùy chọn.
Ảnh chụp nhanh
- Liệt kê ảnh chụp nhanh: Liệt kê ảnh chụp nhanh bảng điều khiển với bộ lọc truy vấn và giới hạn tùy chọn.
- Lấy ảnh chụp nhanh: Truy xuất siêu dữ liệu ảnh chụp nhanh và tải trọng bảng điều khiển bằng khóa ảnh chụp nhanh.
- Tạo ảnh chụp nhanh: Tạo ảnh chụp nhanh bảng điều khiển từ tải trọng bảng điều khiển đầy đủ, với tùy chọn hết hạn và ảnh chụp nhanh bên ngoài.
- Xóa ảnh chụp nhanh: Xóa ảnh chụp nhanh bằng khóa ảnh chụp nhanh.
Kết xuất
- Lấy hình ảnh bảng điều khiển con hoặc bảng điều khiển: Kết xuất bảng điều khiển con hoặc toàn bộ bảng điều khiển Grafana dưới dạng ảnh PNG. Trả về hình ảnh dưới dạng dữ liệu mã hóa base64 để sử dụng trong báo cáo, cảnh báo hoặc thuyết trình. Hỗ trợ tùy chỉnh kích thước, phạm vi thời gian, chủ đề, tỷ lệ và biến bảng điều khiển. Cũng hỗ trợ kết xuất các bảng điều khiển chưa được áp dụng từ nhánh kho lưu trữ cung cấp (ví dụ: bản xem trước PR đồng bộ git) thông qua tham số tùy chọn
provisioningPreview.- Lưu ý: Yêu cầu dịch vụ Grafana Image Renderer phải được cài đặt và cấu hình.
Cung cấp
- Liệt kê kho lưu trữ cung cấp: Liệt kê các kho lưu trữ cung cấp được cấu hình cho phiên bản Grafana này (ví dụ: nguồn đồng bộ git), trả về slug của mỗi kho cùng với URL nguồn, nhánh, đường dẫn, trạng thái đồng bộ và tình trạng hoạt động.
- Xác thực tệp cung cấp: Áp dụng thử một tệp từ kho lưu trữ cung cấp tại một nhánh hoặc commit nhất định. Trả về liệu nó có được chấp nhận hay không, hành động tài nguyên (tạo/cập nhật), loại tài nguyên đích và bất kỳ lỗi xác thực có cấu trúc nào — cùng bề mặt tiếp nhận mà trình bình luận PR của Grafana sử dụng.
Danh sách công cụ có thể cấu hình, vì vậy bạn có thể chọn công cụ nào bạn muốn cung cấp cho máy khách MCP.
Điều này hữu ích nếu bạn không sử dụng một số chức năng nhất định hoặc nếu bạn không muốn chiếm quá nhiều cửa sổ ngữ cảnh.
Để vô hiệu hóa một danh mục công cụ, hãy sử dụng cờ --disable-<category> khi khởi động máy chủ. Ví dụ: để vô hiệu hóa
các công cụ OnCall, hãy sử dụng --disable-oncall, hoặc để vô hiệu hóa tạo liên kết sâu điều hướng, hãy sử dụng --disable-navigation.
Quyền RBAC
Mỗi công cụ yêu cầu các quyền RBAC cụ thể để hoạt động đúng. Khi tạo tài khoản dịch vụ cho máy chủ MCP, hãy đảm bảo nó có các quyền cần thiết dựa trên những công cụ bạn dự định sử dụng. Các quyền được liệt kê là các hành động tối thiểu cần thiết - bạn cũng có thể cần các phạm vi phù hợp (ví dụ: datasources:*, dashboards:*, folders:*) tùy thuộc vào trường hợp sử dụng của bạn.
Mẹo: Nếu bạn không quen với RBAC của Grafana hoặc bạn muốn thiết lập nhanh hơn, đơn giản hơn thay vì cấu hình nhiều phạm vi chi tiết, bạn có thể gán vai trò tích hợp sẵn như Editor cho tài khoản dịch vụ. Vai trò Editor cấp quyền đọc/ghi rộng rãi cho phép hầu hết các hoạt động của máy chủ MCP; nó ít chi tiết hơn (và do đó ít hạn chế hơn) so với các phạm vi được áp dụng thủ công, vì vậy chỉ sử dụng nó khi sự tiện lợi quan trọng hơn quyền truy cập đặc quyền tối thiểu nghiêm ngặt.
Lưu ý: Các công cụ Grafana Incident và Sift sử dụng vai trò Grafana cơ bản thay vì quyền RBAC chi tiết:
- Vai trò Người xem: Yêu cầu cho các hoạt động chỉ đọc (liệt kê sự cố, lấy điều tra)
- Vai trò Người chỉnh sửa: Yêu cầu cho các hoạt động ghi (tạo sự cố, sửa đổi điều tra)
Để biết thêm thông tin về RBAC của Grafana, hãy xem tài liệu chính thức.
Phạm vi RBAC
Phạm vi xác định các tài nguyên cụ thể mà quyền áp dụng. Mỗi hành động yêu cầu cả sự kết hợp quyền và phạm vi phù hợp.
Các Mẫu Phạm vi Phổ biến:
-
Truy cập rộng: Sử dụng ký tự đại diện
*để truy cập toàn tổ chứcdatasources:*- Truy cập vào tất cả các nguồn dữ liệudashboards:*- Truy cập vào tất cả các bảng điều khiểnfolders:*- Truy cập vào tất cả các thư mụcteams:*- Truy cập vào tất cả các nhóm
-
Truy cập hạn chế: Sử dụng UID hoặc ID cụ thể để hạn chế quyền truy cập vào các tài nguyên riêng lẻ
datasources:uid:prometheus-uid- Chỉ truy cập vào nguồn dữ liệu Prometheus cụ thểdashboards:uid:abc123- Chỉ truy cập vào bảng điều khiển với UIDabc123folders:uid:xyz789- Chỉ truy cập vào thư mục với UIDxyz789teams:id:5- Chỉ truy cập vào nhóm với ID5global.users:id:123- Chỉ truy cập vào người dùng với ID123
Ví dụ:
-
Truy cập đầy đủ máy chủ MCP: Cấp quyền rộng cho tất cả các công cụ
datasources:* (datasources:read, datasources:query) dashboards:* (dashboards:read, dashboards:create, dashboards:write) folders:* (for dashboard creation and alert rules) teams:* (teams:read) global.users:* (users:read) -
Truy cập nguồn dữ liệu hạn chế: Chỉ truy vấn các phiên bản Prometheus và Loki cụ thể
datasources:uid:prometheus-prod (datasources:query) datasources:uid:loki-prod (datasources:query) -
Truy cập cụ thể bảng điều khiển: Chỉ đọc các bảng điều khiển cụ thể
dashboards:uid:monitoring-dashboard (dashboards:read) dashboards:uid:alerts-dashboard (dashboards:read)
Công cụ
| Công cụ | Danh mục | Mô tả | Quyền RBAC yêu cầu | Phạm vi yêu cầu |
|---|---|---|---|---|
list_teams | Quản trị | Liệt kê tất cả các nhóm | teams:read | teams:* hoặc teams:id:1 |
list_users_by_org | Quản trị | Liệt kê tất cả người dùng trong một tổ chức | users:read | global.users:* hoặc global.users:id:123 |
list_all_roles | Quản trị | Liệt kê tất cả các vai trò Grafana | roles:read | roles:* |
get_role_details | Quản trị | Lấy chi tiết cho một vai trò Grafana | roles:read | roles:uid:editor |
get_role_assignments | Quản trị | Liệt kê các phân công cho một vai trò | roles:read | roles:uid:editor |
list_user_roles | Quản trị | Liệt kê vai trò cho người dùng | roles:read | global.users:id:123 |
list_team_roles | Quản trị | Liệt kê vai trò cho nhóm | roles:read | teams:id:7 |
get_resource_permissions | Quản trị | Liệt kê quyền cho một tài nguyên | permissions:read | dashboards:uid:abcd1234 |
get_resource_description | Quản trị | Mô tả một loại tài nguyên Grafana | permissions:read | dashboards:* |
search_dashboards | Tìm kiếm | Tìm kiếm bảng điều khiển | dashboards:read | dashboards:* hoặc dashboards:uid:abc123 |
get_dashboard_by_uid | Bảng điều khiển | Lấy bảng điều khiển theo uid | dashboards:read | dashboards:uid:abc123 |
update_dashboard | Bảng điều khiển | Cập nhật hoặc tạo bảng điều khiển mới | dashboards:create, dashboards:write | dashboards:*, folders:* hoặc folders:uid:xyz789 |
get_dashboard_panel_queries | Bảng điều khiển | Lấy tiêu đề bảng, truy vấn, UID nguồn dữ liệu và loại từ bảng điều khiển | dashboards:read | dashboards:uid:abc123 |
run_panel_query | RunPanelQuery* | Thực thi một hoặc nhiều truy vấn bảng điều khiển | dashboards:read, datasources:query | dashboards:uid:*, datasources:uid:* |
get_dashboard_property | Bảng điều khiển | Trích xuất các phần cụ thể của bảng điều khiển bằng biểu thức JSONPath | dashboards:read | dashboards:uid:abc123 |
get_dashboard_summary | Bảng điều khiển | Lấy tóm tắt gọn của bảng điều khiển không có JSON đầy đủ | dashboards:read | dashboards:uid:abc123 |
list_datasources | Nguồn dữ liệu | Liệt kê nguồn dữ liệu | datasources:read | datasources:* |
get_datasource | Nguồn dữ liệu | Lấy nguồn dữ liệu theo UID hoặc tên | datasources:read | datasources:uid:prometheus-uid |
get_query_examples | Ví dụ* | Lấy truy vấn ví dụ cho một loại nguồn dữ liệu | datasources:read | datasources:* |
query_prometheus | Prometheus | Thực thi truy vấn đối với nguồn dữ liệu Prometheus | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_metadata | Prometheus | Liệt kê siêu dữ liệu metric | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_names | Prometheus | Liệt kê tên metric khả dụng | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_names | Prometheus | Liệt kê tên nhãn khớp với bộ chọn | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_values | Prometheus | Liệt kê giá trị cho một nhãn cụ thể | datasources:query | datasources:uid:prometheus-uid |
query_prometheus_histogram | Prometheus | Tính toán giá trị phân vị histogram | datasources:query | datasources:uid:prometheus-uid |
list_incidents | Sự cố | Liệt kê sự cố trong Grafana Incident | Vai trò Người xem | N/A |
create_incident | Sự cố | Tạo sự cố trong Grafana Incident | Vai trò Người chỉnh sửa | N/A |
add_activity_to_incident | Sự cố | Thêm mục hoạt động vào sự cố trong Grafana Incident | Vai trò Người chỉnh sửa | N/A |
get_incident | Sự cố | Lấy một sự cố theo ID | Vai trò Người xem | N/A |
query_loki_logs | Loki | Truy vấn và truy xuất nhật ký bằng LogQL (truy vấn nhật ký hoặc metric) | datasources:query | datasources:uid:loki-uid |
list_loki_label_names | Loki | Liệt kê tất cả tên nhãn khả dụng trong nhật ký | datasources:query | datasources:uid:loki-uid |
list_loki_label_values | Loki | Liệt kê giá trị cho một nhãn nhật ký cụ thể | datasources:query | datasources:uid:loki-uid |
query_loki_stats | Loki | Lấy thống kê về luồng nhật ký | datasources:query | datasources:uid:loki-uid |
query_loki_patterns | Loki | Truy vấn mẫu nhật ký được phát hiện để xác định cấu trúc chung | datasources:query | datasources:uid:loki-uid |
analyze_loki_labels | Loki | Kiểm tra chiến lược nhãn Loki (trực tiếp hoặc tĩnh) và tùy chọn chẩn đoán hiệu suất truy vấn | datasources:query | datasources:uid:loki-uid |
suggest_loki_alloy_label_config | Cấu hình | Tạo đoạn mã loki.process Alloy thực thi các nhãn được phê duyệt | N/A | N/A |
query_influxdb | InfluxDB | Truy vấn InfluxDB bằng InfluxQL (v1) hoặc Flux (v2) | datasources:query | datasources:uid:influxdb-uid |
list_clickhouse_tables | ClickHouse* | Liệt kê bảng trong cơ sở dữ liệu ClickHouse | datasources:query | datasources:uid:* |
describe_clickhouse_table | ClickHouse* | Lấy lược đồ bảng với các loại cột | datasources:query | datasources:uid:* |
query_clickhouse | ClickHouse* | Thực thi truy vấn SQL với thay thế macro | datasources:query | datasources:uid:* |
list_cloudwatch_namespaces | CloudWatch* | Liệt kê không gian tên AWS CloudWatch khả dụng | datasources:query | datasources:uid:* |
list_cloudwatch_dimensions | CloudWatch* | Liệt kê các dimension cho một metric | datasources:query | datasources:uid:* |
query_cloudwatch | CloudWatch* | Thực thi truy vấn metric CloudWatch | datasources:query | datasources:uid:* |
list_athena_catalogs | Athena* | Liệt kê các data catalog Athena khả dụng | datasources:query | datasources:uid:* |
list_athena_databases | Athena* | Liệt kê các database trong một catalog Athena | datasources:query | datasources:uid:* |
list_athena_tables | Athena* | Liệt kê các bảng trong một database Athena | datasources:query | datasources:uid:* |
describe_athena_table | Athena* | Lấy tên cột cho một bảng Athena | datasources:query | datasources:uid:* |
query_athena | Athena* | Thực thi truy vấn SQL với thay thế macro | datasources:query | datasources:uid:* |
query_elasticsearch | Elasticsearch/OpenSearch* | Truy vấn Elasticsearch hoặc OpenSearch sử dụng cú pháp Lucene hoặc Query DSL | datasources:query | datasources:uid:datasource-uid |
query_quickwit | Quickwit* | Truy vấn Quickwit sử dụng cú pháp Lucene hoặc Query DSL | datasources:query | datasources:uid:quickwit-uid |
list_snowflake_tables | Snowflake* | Liệt kê các bảng trong một database/schema Snowflake qua INFORMATION_SCHEMA | datasources:query | datasources:uid:* |
describe_snowflake_table | Snowflake* | Lấy schema bảng (kiểu cột, khả năng null, giá trị mặc định, chú thích) | datasources:query | datasources:uid:* |
query_snowflake | Snowflake* | Thực thi truy vấn SQL với thay thế macro/biến | datasources:query | datasources:uid:* |
alerting_manage_rules | Alerting | Quản lý quy tắc cảnh báo (liệt kê, lấy, phiên bản, tạo, cập nhật, xóa) | alert.rules:read + alert.rules:write cho thay đổi | folders:* hoặc folders:uid:alerts-folder |
alerting_manage_routing | Alerting | Quản lý chính sách thông báo, điểm liên hệ và khoảng thời gian | alert.notifications:read | Phạm vi toàn cục |
list_oncall_schedules | OnCall | Liệt kê lịch từ Grafana OnCall | grafana-oncall-app.schedules:read | Phạm vi dành riêng cho plugin |
get_oncall_shift | OnCall | Lấy chi tiết cho một ca trực OnCall cụ thể | grafana-oncall-app.schedules:read | Phạm vi dành riêng cho plugin |
get_current_oncall_users | OnCall | Lấy người dùng hiện đang trực cho một lịch cụ thể | grafana-oncall-app.schedules:read | Phạm vi dành riêng cho plugin |
list_oncall_teams | OnCall | Liệt kê các nhóm từ Grafana OnCall | grafana-oncall-app.user-settings:read | Phạm vi dành riêng cho plugin |
list_oncall_users | OnCall | Liệt kê người dùng từ Grafana OnCall | grafana-oncall-app.user-settings:read | Phạm vi dành riêng cho plugin |
list_alert_groups | OnCall | Liệt kê nhóm cảnh báo từ Grafana OnCall với tùy chọn lọc | grafana-oncall-app.alert-groups:read | Phạm vi dành riêng cho plugin |
get_alert_group | OnCall | Lấy một nhóm cảnh báo cụ thể từ Grafana OnCall theo ID của nó | grafana-oncall-app.alert-groups:read | Phạm vi dành riêng cho plugin |
get_sift_investigation | Sift | Truy xuất một cuộc điều tra Sift hiện có theo UUID của nó | Vai trò Người xem | N/A |
get_sift_analysis | Sift | Truy xuất một phân tích cụ thể từ một cuộc điều tra Sift | Vai trò Người xem | N/A |
list_sift_investigations | Sift | Truy xuất danh sách các cuộc điều tra Sift với giới hạn tùy chọn | Vai trò Người xem | N/A |
find_error_pattern_logs | Sift | Tìm các mẫu lỗi gia tăng trong nhật ký Loki. | Vai trò Người chỉnh sửa | N/A |
find_slow_requests | Sift | Tìm các yêu cầu chậm từ các nguồn dữ liệu tempo liên quan. | Vai trò Người chỉnh sửa | N/A |
list_pyroscope_label_names | Pyroscope | Liệt kê tên nhãn khớp với một bộ chọn | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_label_values | Pyroscope | Liệt kê giá trị nhãn khớp với một bộ chọn cho một tên nhãn | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_profile_types | Pyroscope | Liệt kê các loại profile khả dụng | datasources:query | datasources:uid:pyroscope-uid |
query_pyroscope | Pyroscope | Truy vấn profile, metric hoặc cả hai từ Pyroscope | datasources:query | datasources:uid:pyroscope-uid |
get_assertions | Asserts | Lấy tóm tắt assertion cho một thực thể nhất định | Quyền dành riêng cho plugin | Phạm vi dành riêng cho plugin |
generate_deeplink | Navigation | Tạo URL deeplink chính xác cho các tài nguyên Grafana | Không (tạo URL chỉ đọc) | N/A |
get_annotations | Annotations | Lấy chú thích với bộ lọc | annotations:read | annotations:* hoặc annotations:id:123 |
create_annotation | Annotations | Tạo chú thích mới (định dạng chuẩn hoặc Graphite) | annotations:write | annotations:* |
update_annotation | Annotations | Cập nhật các trường cụ thể của chú thích (cập nhật một phần) | annotations:write | annotations:* |
get_annotation_tags | Annotations | Liệt kê thẻ chú thích với lọc tùy chọn | annotations:read | annotations:* |
list_snapshots | Snapshot | Liệt kê snapshot dashboard với truy vấn và bộ lọc giới hạn tùy chọn | dashboards:read | dashboards:* hoặc dashboards:uid:abc123 |
get_snapshot | Snapshot | Lấy metadata snapshot và payload dashboard theo khóa snapshot | dashboards:read | dashboards:* hoặc dashboards:uid:abc123 |
create_snapshot | Snapshot | Tạo snapshot dashboard từ payload dashboard đầy đủ | dashboards:write | dashboards:* hoặc dashboards:uid:abc123 |
delete_snapshot | Snapshot | Xóa snapshot dashboard theo khóa snapshot | dashboards:write | dashboards:* hoặc dashboards:uid:abc123 |
get_panel_image | Rendering | Kết xuất dashboard hoặc panel đã lưu — hoặc bản xem trước provisioning từ nhánh repository — dưới dạng ảnh PNG | dashboards:read | dashboards:uid:abc123 |
list_provisioning_repositories | Provisioning | Liệt kê repository provisioning (ví dụ: nguồn git-sync) với URL nguồn, nhánh, trạng thái đồng bộ và tình trạng | provisioning.repositories:read | N/A |
validate_provisioning_file | Cấp phép | Chạy thử áp dụng một tệp từ kho cấp phép và báo cáo lỗi xác thực đầu vào | provisioning.repositories:read | Không áp dụng |
* Bị tắt theo mặc định. Thêm danh mục vào --enabled-tools để bật. |
Tham chiếu Cờ CLI
Tệp nhị phân mcp-grafana hỗ trợ nhiều cờ dòng lệnh để cấu hình:
Tùy chọn Vận chuyển:
-t, --transport: Loại vận chuyển (stdio,sse, hoặcstreamable-http) - mặc định:stdio--address: Máy chủ và cổng cho máy chủ SSE/streamable-http - mặc định:localhost:8000--base-path: Đường dẫn cơ sở cho máy chủ SSE/streamable-http--endpoint-path: Đường dẫn điểm cuối cho máy chủ streamable-http - mặc định:/
Bảo mật Vận chuyển HTTP (chỉ SSE / streamable-http):
Xác thực Host/Origin được thực thi trên mọi tuyến đường trên bộ lắng nghe — /sse, /mcp, /healthz, và /metrics — để trình duyệt tái gán DNS không thể truy cập bất kỳ tuyến nào trong số đó. Vận chuyển Stdio không bị ảnh hưởng.
--allowed-hosts: Danh sách cho phép phân tách bằng dấu phẩy của các giá trị tiêu đềHost. Mặc định là các biến thể loopback của--address(ví dụ:localhost:8000,127.0.0.1:8000,[::1]:8000). Một giá trị phân tích thành rỗng (chưa đặt,,,,, v.v.) cũng quay về mặc định để lỗi đánh máy không thể âm thầm vô hiệu hóa kiểm tra. Các yêu cầu có tiêu đềHostnằm ngoài danh sách cho phép bị từ chối với403. Truyền*để vô hiệu hóa kiểm tra — chỉ an toàn khi chạy sau proxy ngược đáng tin cậy ghi lạiHost, hoặc trong mạng cô lập. Các đầu dòhttpGetcủa K8s và các lần thu thập/metricsbên ngoài sẽ cần tên máy chủ rõ ràng trong danh sách này,*, hoặc đầu dòtcpSocket/ cổng metrics riêng (--metrics-address).--allowed-origins: Danh sách cho phép phân tách bằng dấu phẩy của các giá trị tiêu đềOrigin. Mặc định trống — bất kỳ yêu cầu nào mang tiêu đềOriginđều bị từ chối (trình duyệt luôn gửi một tiêu đề cho các yêu cầu cross-origin, và không trình duyệt nào nên gọi trực tiếp máy chủ này). Đặt thành danh sách rõ ràng để cho phép các máy khách dựa trên trình duyệt, hoặc*để vô hiệu hóa kiểm tra.
Gỡ lỗi và Ghi nhật ký:
--debug: Bật chế độ gỡ lỗi để ghi nhật ký chi tiết yêu cầu/phản hồi HTTP--log-level: Mức ghi nhật ký (debug,info,warn,error) - mặc định:info
Khả năng quan sát:
--metrics: Bật điểm cuối metrics Prometheus tại/metrics--metrics-address: Địa chỉ riêng cho máy chủ metrics (ví dụ::9090). Nếu trống, metrics được phục vụ trên máy chủ chính--slow-request-threshold: Ghi nhật ký sự kiện khi bất kỳ yêu cầu MCP nào (gọi công cụ, danh sách, đọc tài nguyên, v.v.) mất nhiều thời gian hơn khoảng thời gian này. Chấp nhận chuỗi thời lượng Go (ví dụ:500ms,5s). Mặc định0vô hiệu hóa ghi nhật ký yêu cầu chậm. Xem phần Ghi nhật ký yêu cầu chậm.--slow-request-log-level: Mức ghi nhật ký cho các sự kiện yêu cầu chậm (infohoặcwarn) - mặc định:warn.
Quản lý Phiên:
--session-idle-timeout-minutes: Thời gian chờ nhàn rỗi phiên tính bằng phút. Các phiên không có hoạt động trong khoảng thời gian này sẽ tự động bị thu hồi - mặc định:30. Đặt thành0để vô hiệu hóa thu hồi phiên. Chỉ liên quan đến vận chuyển SSE và streamable-http.
Cấu hình Công cụ:
--enabled-tools: Danh sách phân tách bằng dấu phẩy các danh mục được bật - mặc định: tất cả danh mục ngoại trừadmin,athena,clickhouse,cloudwatch,elasticsearch,examples,graphite,quickwit,runpanelquery, vàsnowflake. Để bật các danh mục bị tắt, thêm chúng vào danh sách (ví dụ:"search,datasource,...,snowflake")--max-loki-log-limit: Số dòng nhật ký tối đa trả về mỗi lần gọiquery_loki_logs- mặc định:100. Lưu ý: Đặt giá trị này ít nhất nhỏ hơn 1 so vớimax_entries_limit_per_queryphía máy chủ của Loki để cho phép phát hiện cắt ngắn (công cụ yêu cầulimit+1nội bộ để phát hiện nếu có thêm dữ liệu).--disable-search: Tắt công cụ tìm kiếm--disable-datasource: Tắt công cụ nguồn dữ liệu--disable-incident: Tắt công cụ sự cố--disable-prometheus: Tắt công cụ prometheus--disable-write: Tắt công cụ ghi (thao tác tạo/cập nhật)--disable-loki: Tắt công cụ loki--disable-elasticsearch: Tắt công cụ elasticsearch và opensearch--disable-quickwit: Tắt công cụ quickwit--disable-influxdb: Tắt công cụ InfluxDB--disable-alerting: Tắt công cụ cảnh báo--disable-dashboard: Tắt công cụ bảng điều khiển--disable-oncall: Tắt công cụ oncall--disable-asserts: Tắt công cụ asserts--disable-sift: Tắt công cụ sift--disable-admin: Tắt công cụ quản trị--disable-pyroscope: Tắt công cụ pyroscope--disable-navigation: Tắt công cụ điều hướng--disable-rendering: Tắt công cụ kết xuất (xuất hình ảnh bảng điều khiển/bảng)--disable-snapshot: Tắt công cụ snapshot--disable-cloudwatch: Tắt công cụ CloudWatch--disable-examples: Tắt công cụ ví dụ truy vấn--disable-clickhouse: Tắt công cụ ClickHouse--disable-snowflake: Tắt công cụ Snowflake--disable-runpanelquery: Tắt công cụ chạy truy vấn bảng điều khiển--disable-graphite: Tắt công cụ Graphite--disable-athena: Tắt công cụ Athena--disable-provisioning: Tắt công cụ cấp phép
Chế độ Chỉ đọc
Cờ --disable-write cung cấp cách chạy máy chủ MCP ở chế độ chỉ đọc, ngăn chặn mọi thao tác ghi vào phiên bản Grafana của bạn. Điều này hữu ích cho các tình huống bạn muốn cung cấp quyền truy cập chỉ đọc, an toàn như:
- Sử dụng tài khoản dịch vụ với quyền chỉ đọc hạn chế
- Cung cấp cho trợ lý AI dữ liệu quan sát mà không có khả năng sửa đổi
- Chạy trong môi trường sản xuất nơi quyền ghi nên bị hạn chế
- Các tình huống kiểm thử và phát triển nơi bạn muốn ngăn chặn các sửa đổi ngẫu nhiên
Khi --disable-write được bật, các thao tác ghi sau bị tắt:
Công cụ Bảng điều khiển:
update_dashboard
Công cụ Thư mục:
create_folder
Công cụ Sự cố:
create_incidentadd_activity_to_incident
Công cụ Cảnh báo:
alerting_manage_rules(thao tác tạo, cập nhật, xóa)
Công cụ Chú thích:
create_annotationupdate_annotation
Công cụ Sift:
find_error_pattern_logs(tạo điều tra)find_slow_requests(tạo điều tra)
Công cụ Snapshot:
create_snapshotdelete_snapshot
Tất cả các thao tác đọc vẫn khả dụng, cho phép bạn truy vấn bảng điều khiển, chạy truy vấn PromQL/LogQL, liệt kê tài nguyên và truy xuất dữ liệu.
Cấu hình TLS Máy khách (cho kết nối Grafana):
--tls-cert-file: Đường dẫn đến tệp chứng chỉ TLS cho xác thực máy khách--tls-key-file: Đường dẫn đến tệp khóa riêng TLS cho xác thực máy khách--tls-ca-file: Đường dẫn đến tệp chứng chỉ CA TLS cho xác minh máy chủ--tls-skip-verify: Bỏ qua xác minh chứng chỉ TLS (không an toàn)
Cấu hình TLS Máy chủ (chỉ vận chuyển streamable-http):
--server.tls-cert-file: Đường dẫn đến tệp chứng chỉ TLS cho HTTPS máy chủ--server.tls-key-file: Đường dẫn đến tệp khóa riêng TLS cho HTTPS máy chủ
Cách sử dụng
Máy chủ MCP này hoạt động với cả phiên bản Grafana cục bộ và Grafana Cloud. Đối với Grafana Cloud, sử dụng URL phiên bản của bạn (ví dụ: https://myinstance.grafana.net) thay vì http://localhost:3000 trong các ví dụ cấu hình bên dưới.
-
Nếu sử dụng xác thực token tài khoản dịch vụ, hãy tạo một tài khoản dịch vụ trong Grafana với đủ quyền để sử dụng các công cụ bạn muốn, tạo token tài khoản dịch vụ và sao chép nó vào clipboard để sử dụng trong tệp cấu hình. Làm theo tài liệu tài khoản dịch vụ Grafana để biết chi tiết về cách tạo token tài khoản dịch vụ. Mẹo: Nếu bạn không thoải mái khi cấu hình phạm vi RBAC chi tiết, một tùy chọn đơn giản hơn (nhưng ít hạn chế hơn) là gán vai trò
Editortích hợp sẵn cho tài khoản dịch vụ. Điều này cấp quyền đọc/ghi rộng bao phủ hầu hết các hoạt động của máy chủ MCP — sử dụng nó khi sự tiện lợi vượt trội hơn yêu cầu đặc quyền tối thiểu nghiêm ngặt.Lưu ý: Biến môi trường
GRAFANA_API_KEYđã bị phản đối và sẽ bị xóa trong phiên bản tương lai. Vui lòng chuyển sang sử dụngGRAFANA_SERVICE_ACCOUNT_TOKENthay thế. Tên biến cũ sẽ tiếp tục hoạt động để tương thích ngược nhưng sẽ hiển thị cảnh báo phản đối.
Đọc token tài khoản dịch vụ từ tệp
Thay vì truyền token trực tiếp qua GRAFANA_SERVICE_ACCOUNT_TOKEN, bạn có thể trỏ GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE đến đường dẫn tệp chứa token. Tệp được đọc mới trên mỗi yêu cầu, vì vậy các token được xoay vòng sẽ được tự động nhận mà không cần khởi động lại máy chủ.
Điều này đặc biệt hữu ích trong Kubernetes, nơi Secret được gắn kết dưới dạng volume được cập nhật tại chỗ khi Secret cơ bản thay đổi (thường trong vòng ~1 phút). Kết hợp với bộ nhớ đệm máy khách theo yêu cầu — được khóa theo giá trị token — một token được xoay vòng sẽ tạo ra một máy khách mới một cách minh bạch mà không cần khởi động lại pod và không có thời gian chết:
env:
- name: GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE
value: /var/run/secrets/grafana/token
volumeMounts:
- name: grafana-token
mountPath: /var/run/secrets/grafana
readOnly: true
volumes:
- name: grafana-token
secret:
secretName: grafana-mcp-token
Khoảng trắng xung quanh (bao gồm cả dòng mới ở cuối) được cắt bỏ khỏi nội dung tệp. Nếu cả GRAFANA_SERVICE_ACCOUNT_TOKEN và GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE đều được đặt, token trực tiếp được ưu tiên.
Hỗ trợ Đa Tổ chức
Bạn có thể chỉ định tổ chức nào để tương tác bằng cách sử dụng:
- Biến môi trường: Đặt
GRAFANA_ORG_IDthành ID tổ chức dạng số - Tiêu đề HTTP: Đặt
X-Grafana-Org-Idkhi sử dụng vận chuyển SSE hoặc streamable HTTP (tiêu đề được ưu tiên hơn biến môi trường - nghĩa là bạn cũng có thể đặt tổ chức mặc định).
Khi ID tổ chức được cung cấp, máy chủ MCP sẽ đặt tiêu đề X-Grafana-Org-Id trên tất cả các yêu cầu đến Grafana, đảm bảo rằng các hoạt động được thực hiện trong ngữ cảnh tổ chức được chỉ định.
Ví dụ với ID tổ chức:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
"GRAFANA_ORG_ID": "2"
}
}
}
}
Tiêu đề HTTP Tùy chỉnh
Bạn có thể thêm tiêu đề HTTP tùy ý vào tất cả các yêu cầu API Grafana bằng cách sử dụng biến môi trường GRAFANA_EXTRA_HEADERS. Giá trị phải là một đối tượng JSON ánh xạ tên tiêu đề với giá trị.
Ví dụ với tiêu đề tùy chỉnh:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_EXTRA_HEADERS": "{\"X-Custom-Header\": \"custom-value\", \"X-Tenant-ID\": \"tenant-123\"}"
}
}
}
}
Chuyển tiếp Tiêu đề từ Máy khách (Chỉ SSE/Streamable-HTTP)
Khi máy chủ MCP chạy sau cổng hoặc proxy ngược xử lý SSO (ví dụ: AWS ALB với OIDC), cookie phiên của mỗi người dùng phải đến được Grafana để nó có thể liên kết yêu cầu với người dùng đã xác thực. Biến môi trường GRAFANA_FORWARD_HEADERS cho phép điều này bằng cách chỉ định danh sách cho phép phân tách bằng dấu phẩy các tên tiêu đề để sao chép từ yêu cầu HTTP đến đến mọi yêu cầu API Grafana đi.
Điều này chỉ áp dụng khi sử dụng vận chuyển SSE (-t sse) hoặc streamable-http (-t streamable-http). Nó không có hiệu lực trong chế độ stdio.
Ví dụ: chuyển tiếp cookie phiên
{
"env": {
"GRAFANA_URL": "https://grafana.internal",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_FORWARD_HEADERS": "Cookie"
}
}
Bạn có thể chuyển tiếp nhiều tiêu đề bằng cách phân tách chúng bằng dấu phẩy:
GRAFANA_FORWARD_HEADERS=Cookie,X-Session-Id
Các tiêu đề được chuyển tiếp được hợp nhất với bất kỳ tiêu đề nào được định nghĩa trong GRAFANA_EXTRA_HEADERS. Nếu tên tiêu đề xuất hiện trong cả hai, giá trị từ yêu cầu đến được ưu tiên cho yêu cầu đó.
-
Bạn có một số tùy chọn để cài đặt
mcp-grafana:-
uvx (khuyến nghị): Nếu bạn đã cài đặt uv, không cần thiết lập thêm —
uvxsẽ tự động tải xuống và chạy máy chủ:uvx mcp-grafana -
Hình ảnh Docker: Sử dụng hình ảnh Docker dựng sẵn từ Docker Hub.
Quan trọng: Điểm vào của hình ảnh Docker được cấu hình để chạy máy chủ MCP ở chế độ SSE theo mặc định, nhưng hầu hết người dùng sẽ muốn sử dụng chế độ STDIO để tích hợp trực tiếp với các trợ lý AI như Claude Desktop:
- Chế độ STDIO: Đối với chế độ stdio, bạn phải ghi đè rõ ràng mặc định bằng
-t stdiovà bao gồm cờ-iđể giữ stdin mở:
docker pull grafana/mcp-grafana # For local Grafana: docker run --rm -i -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdio # For Grafana Cloud: docker run --rm -i -e GRAFANA_URL=https://myinstance.grafana.net -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdio- Chế độ SSE: Trong chế độ này, máy chủ chạy như một máy chủ HTTP mà các máy khách kết nối đến. Bạn phải mở cổng 8000 bằng cờ
-p:
docker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana - Chế độ STDIO: Đối với chế độ stdio, bạn phải ghi đè rõ ràng mặc định bằng
-
-
Chế độ HTTP có thể truyền phát: Trong chế độ này, máy chủ hoạt động như một tiến trình độc lập có thể xử lý nhiều kết nối máy khách. Bạn phải mở cổng 8000 bằng cờ
-p: Đối với chế độ này, bạn phải ghi đè rõ ràng giá trị mặc định bằng-t streamable-httpdocker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t streamable-httpĐối với chế độ HTTP có thể truyền phát qua HTTPS với chứng chỉ TLS máy chủ:
docker pull grafana/mcp-grafana docker run --rm -p 8443:8443 \ -v /path/to/certs:/certs:ro \ -e GRAFANA_URL=http://localhost:3000 \ -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \ grafana/mcp-grafana \ -t streamable-http \ -addr :8443 \ --server.tls-cert-file /certs/server.crt \ --server.tls-key-file /certs/server.key-
Tải xuống tệp nhị phân: Tải xuống bản phát hành mới nhất của
mcp-grafanatừ trang phát hành và đặt nó vào$PATHcủa bạn. -
Xây dựng từ mã nguồn: Nếu bạn đã cài đặt bộ công cụ Go, bạn cũng có thể xây dựng và cài đặt từ mã nguồn, sử dụng biến môi trường
GOBINđể chỉ định thư mục nơi tệp nhị phân sẽ được cài đặt. Thư mục này cũng nên nằm trong$PATHcủa bạn.GOBIN="$HOME/go/bin" go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest -
Triển khai lên Kubernetes bằng Helm: sử dụng biểu đồ Helm từ kho lưu trữ helm-charts của Grafana
helm repo add grafana https://grafana.github.io/helm-charts helm install --set grafana.apiKey=<Grafana_ApiKey> --set grafana.url=<GrafanaUrl> my-release grafana/grafana-mcp
-
-
Thêm cấu hình máy chủ vào tệp cấu hình máy khách của bạn. Ví dụ, đối với Claude Desktop:
Nếu sử dụng uvx:
{ "mcpServers": { "grafana": { "command": "uvx", "args": ["mcp-grafana"], "env": { "GRAFANA_URL": "http://localhost:3000", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>" } } } }Nếu sử dụng tệp nhị phân:
{ "mcpServers": { "grafana": { "command": "mcp-grafana", "args": [], "env": { "GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>", // If using username/password authentication "GRAFANA_USERNAME": "<your username>", "GRAFANA_PASSWORD": "<your password>", // Optional: specify organization ID for multi-org support "GRAFANA_ORG_ID": "1" } } } }
Lưu ý: nếu bạn thấy
Error: spawn mcp-grafana ENOENTtrong Claude Desktop, bạn cần chỉ định đường dẫn đầy đủ đếnmcp-grafana.
Nếu sử dụng Docker:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>",
// If using username/password authentication
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
// Optional: specify organization ID for multi-org support
"GRAFANA_ORG_ID": "1"
}
}
}
}
Lưu ý: Đối số
-t stdiorất cần thiết ở đây vì nó ghi đè chế độ SSE mặc định trong ảnh Docker.
Sử dụng VSCode với máy chủ MCP từ xa
Nếu bạn đang sử dụng VSCode và chạy máy chủ MCP ở chế độ SSE (là mặc định khi sử dụng ảnh Docker mà không ghi đè phương thức truyền tải), hãy đảm bảo .vscode/settings.json của bạn bao gồm những điều sau:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Đối với chế độ HTTP có thể truyền phát qua HTTPS với chứng chỉ TLS máy chủ:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "https://localhost:8443/sse"
}
}
}
Chế độ Gỡ lỗi
Bạn có thể bật chế độ gỡ lỗi cho phương thức truyền tải Grafana bằng cách thêm cờ -debug vào lệnh. Điều này sẽ cung cấp nhật ký chi tiết về các yêu cầu và phản hồi HTTP giữa máy chủ MCP và API Grafana, có thể hữu ích cho việc khắc phục sự cố.
Để sử dụng chế độ gỡ lỗi với cấu hình Claude Desktop, hãy cập nhật cấu hình của bạn như sau:
Nếu sử dụng tệp nhị phân:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": ["-debug"],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Nếu sử dụng Docker:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"-debug"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Lưu ý: Giống như cấu hình tiêu chuẩn, đối số
-t stdiolà bắt buộc để ghi đè chế độ SSE mặc định trong ảnh Docker.
Cấu hình TLS
Nếu phiên bản Grafana của bạn nằm sau mTLS hoặc yêu cầu chứng chỉ TLS tùy chỉnh, bạn có thể cấu hình máy chủ MCP để sử dụng chứng chỉ tùy chỉnh. Máy chủ hỗ trợ các tùy chọn cấu hình TLS sau:
--tls-cert-file: Đường dẫn đến tệp chứng chỉ TLS để xác thực máy khách--tls-key-file: Đường dẫn đến tệp khóa riêng TLS để xác thực máy khách--tls-ca-file: Đường dẫn đến tệp chứng chỉ CA TLS để xác minh máy chủ--tls-skip-verify: Bỏ qua xác minh chứng chỉ TLS (không an toàn, chỉ sử dụng để kiểm thử)
Ví dụ với xác thực chứng chỉ máy khách:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [
"--tls-cert-file",
"/path/to/client.crt",
"--tls-key-file",
"/path/to/client.key",
"--tls-ca-file",
"/path/to/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Ví dụ với Docker:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/path/to/certs:/certs:ro",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"--tls-cert-file",
"/certs/client.crt",
"--tls-key-file",
"/certs/client.key",
"--tls-ca-file",
"/certs/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Cấu hình TLS được áp dụng cho tất cả các máy khách HTTP được máy chủ MCP sử dụng, bao gồm:
- Máy khách OpenAPI Grafana chính
- Máy khách nguồn dữ liệu Prometheus
- Máy khách nguồn dữ liệu Loki
- Máy khách quản lý sự cố
- Máy khách điều tra Sift
- Máy khách cảnh báo
- Máy khách Asserts
Ví dụ sử dụng CLI trực tiếp:
Để kiểm thử với chứng chỉ tự ký:
./mcp-grafana --tls-skip-verify -debug
Với xác thực chứng chỉ máy khách:
./mcp-grafana \
--tls-cert-file /path/to/client.crt \
--tls-key-file /path/to/client.key \
--tls-ca-file /path/to/ca.crt \
-debug
Chỉ với chứng chỉ CA tùy chỉnh:
./mcp-grafana --tls-ca-file /path/to/ca.crt
Sử dụng theo chương trình:
Nếu bạn đang sử dụng thư viện này theo chương trình, bạn cũng có thể tạo các hàm ngữ cảnh hỗ trợ TLS:
// Using struct literals
tlsConfig := &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
}
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: tlsConfig,
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
// Or inline
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
},
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
Xác thực URL khi kết nối máy chủ HTTP của riêng bạn:
Khi người dùng thư viện kết nối các hàm ngữ cảnh của mcp-grafana vào http.Server của riêng họ, hãy cài đặt ValidateGrafanaURLMiddleware để từ chối các tiêu đề X-Grafana-URL không đúng định dạng với mã lỗi 400 Bad Request (khớp với hành vi của tệp nhị phân):
mux.Handle(path, mcpgrafana.ValidateGrafanaURLMiddleware(yourMCPHandler))
Khi gọi NewGrafanaClient trực tiếp (stdio hoặc xây dựng theo chương trình), hãy xác thực trước các URL không đáng tin cậy để tránh lỗi panic có thể xảy ra:
if err := mcpgrafana.ValidateGrafanaURL(urlFromHeader); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
client := mcpgrafana.NewGrafanaClient(ctx, urlFromHeader, apiKey, nil)
Cả hai mẫu đều chia sẻ ValidateGrafanaURL làm trình xác thực duy nhất.
Cấu hình TLS Máy chủ (Chỉ dành cho Phương thức Truyền tải HTTP Có thể Truyền phát)
Khi sử dụng phương thức truyền tải HTTP có thể truyền phát (-t streamable-http), bạn có thể cấu hình máy chủ MCP để phục vụ HTTPS thay vì HTTP. Điều này hữu ích khi bạn cần bảo mật kết nối giữa máy khách MCP và chính máy chủ.
Máy chủ hỗ trợ các tùy chọn cấu hình TLS sau cho phương thức truyền tải HTTP có thể truyền phát:
--server.tls-cert-file: Đường dẫn đến tệp chứng chỉ TLS cho HTTPS máy chủ (bắt buộc đối với TLS)--server.tls-key-file: Đường dẫn đến tệp khóa riêng TLS cho HTTPS máy chủ (bắt buộc đối với TLS)
Lưu ý: Các cờ này hoàn toàn tách biệt với các cờ TLS máy khách được ghi lại ở trên. Các cờ TLS máy khách cấu hình cách máy chủ MCP kết nối với Grafana, trong khi các cờ TLS máy chủ này cấu hình cách máy khách kết nối với máy chủ MCP khi sử dụng phương thức truyền tải HTTP có thể truyền phát.
Ví dụ với máy chủ HTTP có thể truyền phát qua HTTPS:
./mcp-grafana \
-t streamable-http \
--server.tls-cert-file /path/to/server.crt \
--server.tls-key-file /path/to/server.key \
-addr :8443
Điều này sẽ khởi động máy chủ MCP trên cổng HTTPS 8443. Sau đó, máy khách sẽ kết nối với https://localhost:8443/ thay vì http://localhost:8000/.
Ví dụ Docker với TLS máy chủ:
docker run --rm -p 8443:8443 \
-v /path/to/certs:/certs:ro \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \
grafana/mcp-grafana \
-t streamable-http \
-addr :8443 \
--server.tls-cert-file /certs/server.crt \
--server.tls-key-file /certs/server.key
Điểm cuối Kiểm tra Tình trạng
Khi sử dụng phương thức truyền tải SSE (-t sse) hoặc HTTP có thể truyền phát (-t streamable-http), máy chủ MCP hiển thị một điểm cuối kiểm tra tình trạng tại /healthz. Điểm cuối này có thể được sử dụng bởi bộ cân bằng tải, hệ thống giám sát hoặc nền tảng điều phối để xác minh rằng máy chủ đang chạy và chấp nhận kết nối.
Điểm cuối: GET /healthz
Phản hồi:
- Mã Trạng thái:
200 OK - Nội dung:
ok
Ví dụ sử dụng:
# For streamable HTTP or SSE transport on default port
curl http://localhost:8000/healthz
# With custom address
curl http://localhost:9090/healthz
Lưu ý: Điểm cuối kiểm tra tình trạng chỉ khả dụng khi sử dụng phương thức truyền tải SSE hoặc HTTP có thể truyền phát. Nó không khả dụng khi sử dụng phương thức truyền tải stdio (-t stdio), vì stdio không hiển thị máy chủ HTTP.
Khả năng Quan sát
Máy chủ MCP hỗ trợ số liệu Prometheus, truy vết phân tán OpenTelemetry và xuất nhật ký OpenTelemetry, tuân theo quy ước ngữ nghĩa OTel MCP. Truy vết và xuất nhật ký được cấu hình thông qua các biến môi trường OTEL_* tiêu chuẩn và hoạt động với bất kỳ phương thức truyền tải nào.
Lưu ý: mcp-grafana hiện chỉ hỗ trợ phương thức truyền tải OTLP/gRPC cho cả truy vết và nhật ký. OTEL_EXPORTER_OTLP_PROTOCOL (và các biến thể _TRACES_PROTOCOL / _LOGS_PROTOCOL của nó) không được tôn trọng — gRPC được sử dụng bất kể.
Số liệu
Khi sử dụng phương thức truyền tải SSE hoặc HTTP có thể truyền phát, hãy bật số liệu Prometheus bằng cờ --metrics:
# Metrics served on the main server at /metrics
./mcp-grafana -t streamable-http --metrics
# Metrics served on a separate address
./mcp-grafana -t streamable-http --metrics --metrics-address :9090
Số liệu Khả dụng:
| Số liệu | Loại | Mô tả |
|---|---|---|
mcp_server_operation_duration_seconds | Histogram | Thời lượng của các hoạt động MCP (nhãn: mcp_method_name, gen_ai_tool_name, error_type, network_transport, mcp_protocol_version) |
mcp_server_session_duration_seconds | Histogram | Thời lượng của các phiên máy khách MCP (nhãn: network_transport, mcp_protocol_version) |
http_server_request_duration_seconds | Histogram | Thời lượng của các yêu cầu máy chủ HTTP (từ otelhttp) |
Lưu ý: Số liệu chỉ khả dụng khi sử dụng phương thức truyền tải SSE hoặc HTTP có thể truyền phát. Chúng không khả dụng với phương thức truyền tải stdio.
Ghi nhật ký yêu cầu chậm
Cờ --slow-request-threshold phát ra một sự kiện nhật ký có cấu trúc bất cứ khi nào một yêu cầu MCP (gọi công cụ, danh sách, đọc tài nguyên, v.v.) vượt quá thời lượng đã cho. Nó hữu ích để chẩn đoán các truy vấn và lệnh gọi công cụ chậm mà không làm ngập nhật ký gỡ lỗi đầy đủ.
# Warn on any request slower than 500ms (works on all transports)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms
# Same thing on stdio (the feature is transport-agnostic, unlike --metrics)
./mcp-grafana -t stdio --slow-request-threshold 500ms
# Log at INFO level instead of WARN (useful during investigation)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms --slow-request-log-level info
Sự kiện nhật ký mang các thuộc tính có cấu trúc sau:
| Thuộc tính | Mô tả |
|---|---|
mcp.method | Phương thức MCP (ví dụ: tools/call, tools/list, resources/read) |
duration | Thời lượng yêu cầu được quan sát |
threshold | Ngưỡng đã cấu hình |
tool | Tên công cụ (chỉ có mặt đối với các phương thức tools/call) |
error | Giá trị lỗi, khi yêu cầu thất bại (ngữ cảnh nỗ lực tốt nhất; nội dung được kiểm soát bởi việc gói lỗi ngược dòng) |
error.type | Phân loại lỗi có số lượng giới hạn (_OTHER cho các lỗi không định kiểu) |
Ghi nhật ký yêu cầu chậm hoạt động trên tất cả các phương thức truyền tải (bao gồm stdio) và không yêu cầu --metrics. Ngưỡng mặc định của 0 sẽ vô hiệu hóa hoàn toàn. Các công cụ được ủy quyền chảy qua tools/call và được bao phủ tự động.
Truy vết
Truy vết phân tán được cấu hình thông qua các biến môi trường OTEL_* tiêu chuẩn và hoạt động độc lập với cờ --metrics. Khi OTEL_EXPORTER_OTLP_ENDPOINT được đặt, máy chủ xuất truy vết qua OTLP/gRPC:
# Send traces to a local Tempo instance
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
# Send traces to Grafana Cloud with authentication
OTEL_EXPORTER_OTLP_ENDPOINT=https://tempo-us-central1.grafana.net:443 \
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic ..." \
./mcp-grafana -t streamable-http
Các nhịp gọi công cụ tuân theo quy ước đặt tên semconv (tools/call <tool_name>) và bao gồm các thuộc tính như gen_ai.tool.name, mcp.method.name và mcp.session.id. Máy chủ cũng hỗ trợ truyền bá ngữ cảnh truy vết W3C từ trường _meta của các yêu cầu gọi công cụ.
Nhật ký
Khi OTEL_EXPORTER_OTLP_ENDPOINT (hoặc OTEL_EXPORTER_OTLP_LOGS_ENDPOINT dành riêng cho tín hiệu) được đặt — cùng một kích hoạt cho phép truy vết — máy chủ cũng xuất nhật ký có cấu trúc qua OTLP/gRPC ngoài đầu ra stderr văn bản thuần túy hiện có. Cầu nối otelslog tự động đính kèm trace_id và span_id từ nhịp đang hoạt động, do đó các bản ghi nhật ký tương quan với các truy vết mà máy chủ đã phát ra.
Ghi nhật ký stderr không thay đổi khi bật ghi nhật ký OTLP; bạn có thể tiếp tục dựa vào nhật ký vùng chứa hoặc chuyển hướng stderr đến /dev/null nếu muốn.
# Send both logs and traces to a local OTel collector
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
Phương thức truyền tải là OTLP/gRPC (cổng mặc định 4317). Nhật ký có thể được gửi trực tiếp đến bất kỳ backend được quản lý nào chấp nhận OTLP/gRPC — ví dụ: Grafana Cloud — bằng cách trỏ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT (hoặc OTEL_EXPORTER_OTLP_ENDPOINT chung) đến điểm cuối gRPC từ xa và cung cấp xác thực qua OTEL_EXPORTER_OTLP_LOGS_HEADERS (hoặc OTEL_EXPORTER_OTLP_HEADERS), phản ánh ví dụ truy vết ở trên. Một bộ thu thập OTel cục bộ là tùy chọn — hữu ích cho việc phân luồng, xử lý hàng loạt hoặc định tuyến đa backend, nhưng không bắt buộc.
Các biến thể dành riêng cho tín hiệu OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_HEADERS, OTEL_EXPORTER_OTLP_LOGS_INSECURE, OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_LOGS_TIMEOUT và OTEL_EXPORTER_OTLP_LOGS_COMPRESSION được tôn trọng và ghi đè các đối tác OTEL_EXPORTER_OTLP_* chung của chúng — xem thông số kỹ thuật trình xuất OTel để biết danh sách đầy đủ và quy tắc ưu tiên.
Nếu bộ thu thập được cấu hình không thể truy cập được, các bản ghi nhật ký được đệm trong bộ nhớ (hàng đợi mặc định: 2048) và các bản ghi cũ nhất sẽ bị loại bỏ khi hàng đợi đầy. Tiến trình tiếp tục mà không chặn dịch vụ. Cấu hình bộ thu thập OTel cục bộ nếu bạn cần đệm không mất dữ liệu trong thời gian ngừng hoạt động.
Nhật ký cũng được xuất theo phương thức truyền tải stdio, giúp dễ dàng tập trung nhật ký từ các phiên bản mcp-grafana cục bộ được gọi bởi máy khách IDE.
Ví dụ Docker với số liệu, truy vết và nhật ký:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your token> \
-e OTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317 \
-e OTEL_EXPORTER_OTLP_INSECURE=true \
grafana/mcp-grafana \
-t streamable-http --metrics
Khắc phục sự cố
Khả năng Tương thích Phiên bản Grafana
Nếu bạn gặp lỗi sau khi sử dụng các công cụ liên quan đến nguồn dữ liệu:
get datasource by uid : [GET /datasources/uid/{uid}][400] getDataSourceByUidBadRequest {"message":"id is invalid"}
Điều này thường chỉ ra rằng bạn đang sử dụng phiên bản Grafana sớm hơn 9.0. Điểm cuối API /datasources/uid/{uid} được giới thiệu trong Grafana 9.0 và các hoạt động nguồn dữ liệu sẽ thất bại trên các phiên bản cũ hơn.
Giải pháp: Nâng cấp phiên bản Grafana của bạn lên 9.0 trở lên để giải quyết vấn đề này.
Phát triển
Đóng góp đều được hoan nghênh! Vui lòng mở một vấn đề hoặc gửi yêu cầu kéo nếu bạn có bất kỳ đề xuất hoặc cải tiến nào.
Dự án này được viết bằng Go. Cài đặt Go theo hướng dẫn cho nền tảng của bạn.
Để chạy máy chủ cục bộ ở chế độ STDIO (là mặc định cho phát triển cục bộ), hãy sử dụng:
make run
Để chạy máy chủ cục bộ ở chế độ SSE, hãy sử dụng:
go run ./cmd/mcp-grafana --transport sse
Bạn cũng có thể chạy máy chủ bằng phương thức truyền tải SSE bên trong ảnh Docker được xây dựng tùy chỉnh. Giống như ảnh Docker đã xuất bản, điểm vào của ảnh tùy chỉnh này mặc định là chế độ SSE. Để xây dựng ảnh, hãy sử dụng:
make build-image
Và để chạy ảnh ở chế độ SSE (mặc định), hãy sử dụng:
docker run -it --rm -p 8000:8000 mcp-grafana:latest
Nếu bạn cần chạy nó ở chế độ STDIO thay thế, hãy ghi đè cài đặt phương thức truyền tải:
docker run -it --rm mcp-grafana:latest -t stdio
Kiểm thử
Có ba loại kiểm thử khả dụng:
- Kiểm thử Đơn vị (không yêu cầu phụ thuộc bên ngoài):
make test-unit
Bạn cũng có thể chạy kiểm thử đơn vị bằng:
make test
- Kiểm thử Tích hợp (yêu cầu container docker đang chạy):
make test-integration
- Kiểm thử Đám mây (yêu cầu phiên bản Grafana đám mây và thông tin xác thực):
make test-cloud
Lưu ý: Kiểm thử đám mây được tự động cấu hình trong CI. Đối với phát triển cục bộ, bạn sẽ cần thiết lập phiên bản Grafana Cloud và thông tin xác thực của riêng mình.
Các kiểm thử tích hợp toàn diện hơn sẽ yêu cầu một phiên bản Grafana đang chạy cục bộ trên cổng 3000; bạn có thể khởi động một phiên bản bằng Docker Compose:
docker-compose up -d
Các kiểm thử tích hợp có thể được chạy bằng:
make test-all
Nếu bạn đang thêm nhiều công cụ hơn, vui lòng thêm kiểm thử tích hợp cho chúng. Các kiểm thử hiện có sẽ là điểm khởi đầu tốt.
Kiểm tra mã nguồn
Để kiểm tra mã nguồn, hãy chạy:
make lint
Lệnh này bao gồm một trình kiểm tra tùy chỉnh để kiểm tra dấu phẩy không được thoát trong các thẻ struct jsonschema. Các dấu phẩy trong các trường description phải được thoát bằng \\, để ngăn chặn việc cắt ngắn âm thầm. Bạn có thể chỉ chạy trình kiểm tra này bằng:
make lint-jsonschema
Xem Tài liệu JSONSchema Linter để biết thêm chi tiết.
Giấy phép
Dự án này được cấp phép theo Giấy phép Apache, Phiên bản 2.0.