Gemini CLI × Grafana MCP
Gemini CLIでGrafana MCPを使ってみる
概要
Gemini CLIからGrafana MCPを使ってメトリクス分析をさせたい
GitHub - grafana/mcp-grafana: MCP server for Grafana
MCP server for Grafana. Contribute to grafana/mcp-grafana development by creating an account on GitHub.
結論
Gemini CLI × Grafana MCPで,とりあえずそれっぽいことをさせられそう

事前準備 (4step)
Gemini CLIのインストール
❯ brew install gemini-cliGrafana MCP導入
バイナリなりnpxなりdockerなり,任意の方法で.
今回はGemini CLI Extensionsを使ってみる
❯ gemini extensions install https://github.com/grafana/mcp-grafanaBrowse Extensions

GrafanaでのService Account発行
お好きなGrafanaでWebUIから以下のパスをたどり,サービスアカウントを発行する.今回は自宅にホストしているGrafanaを使用
Home > Administration > Users and access > Service accounts
Admin権限のサービスアカウントを作ってTokenを発行

Grafana MCPの環境変数設定
❯ cat ~/.gemini/extensions/grafana/gemini-extension.json
{
"name": "grafana",
"version": "0.7.0",
"mcpServers": {
"grafana": {
"command": "${extensionPath}${/}mcp-grafana", ## add comma
## add start
"env": {
"GRAFANA_URL": "https://grafana.hoge.fuga.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_Q689.........."
}
## add end
}
}
}(どこで環境変数を設定すべきかわからんが,とりあえずこれで効く)
起動
❯ gemini/mcp list で認識していればOK

あとはGrafanaから適当な情報を取得させるプロンプトを唱える
sample 1
> Grafana のダッシュボード一覧を取得して
...
...
...
✦ Here's a list of the Grafana dashboards and folders:
Folders:
* Application (UID: c6e36a3f-62ad-41b2-99cc-3b2b1840bbcb)
* Infrastructure (UID: fe0de2ad-4a48-494b-bad2-bcc49784f6dd)
* tmp (UID: pNss3qO4z)
Dashboards:
* ARP (UID: ddmh8yf4ixfr4b)
* Blackbox Exporter Quick Overview (UID: xtkCtBkiza, Folder: tmp)
* Blackbox HTTP (UID: xtkCtBkiz)
* Blackbox ICMP (UID: oe-msimGz)
* Blackbox SSH (UID: J0QFZXomk)
* cAdvisor Docker Insights (UID: ae3c41d7-cea5-4cca-a918-5708706b4d1a)
* Cadvisor exporter (UID: pMEd7m0Mz)
* CoreDNS Analyze (UID: NsZoCbc4k)
* CoreDNS Metrics (UID: wY4blRMGz)
* Docker and System Monitoring (UID: bdgcmfycz1dz4f)
* Docker Container & Host Metrics (UID: 4dMaCsRZz)
* Docker Engine Metrics (UID: adgcpwlzbozcwe, Folder: tmp)
* Electric Power Overview (UID: 2DKmGYzVk)
* Go Processes (UID: ypFZFgvmz, Folder: tmp)
* Grafana Internals (UID: ce53118f-c342-4e5d-b87d-0260bc8a1693)
* Grafana metrics (UID: isFoa0z7k)
* HAProxy (UID: PEqr_i2Gz, Folder: tmp)
* Home (UID: 0gSs_RU4z)
* Home Server Overview (UID: F_gWbiNnk)
* MinIO Dashboard (UID: TgmJnqnnk)
* MQTT (UID: j4EEjtpVz)
* Nginx (UID: MsjffzSZz)
* Node Exporter Full (UID: rYdddlPWk)
* Prometheus 2.0 Overview (UID: X7-TfgGMz)
* Prometheus 2.0 Stats (UID: SHAoPSHGz)
* Prometheus Stats (UID: rpfmFFz7z)
...
...sample 2
> アラート一覧を取得して
...
...
...
✦ Here's a list of the Grafana alert rules:
* SSLCertExpiringSoon (UID: ba77442d-243c-4bcd-a007-51f97a68e1fc, State: inactive, Folder: Application)
* Electric Power Exporter Health (UID: ea370b79-2ca4-4558-96c1-fc591a9c7c74, State: inactive, Folder: Application)
* Worsening HTTP Latency (UID: f8b8fcff-20e7-46c6-8d5f-8a289d3c4dfd, State: inactive, Folder: Application)
* CoreDNS Health Check (UID: yhZ5Za5Vk, State: inactive, Folder: Application)
* SSH Server Down (UID: da795f03-50d4-490e-9223-80c42f335992, State: inactive, Folder: Application)
* HTTP Status Check (UID: eetlq7nsr45j4b, State: inactive, Folder: Application)
* ICMP Packet Loss (UID: c1ea57c2-541d-4de0-a65d-09a30f196b41, State: inactive, Folder: Infrastructure)
* Server Status (UID: TwIXJt-4z, State: inactive, Folder: Infrastructure)
* Temperature Monitor for RaspberryPi (UID: AEoL8jg4z, State: inactive, Folder: Infrastructure)
* Temperature Monitor for Server (UID: ld8JkaR4k, State: inactive, Folder: Infrastructure)sample 3
> CoreDNSについてメトリクス分析してください
...
...
...
✦ CoreDNSのメトリクス分析を開始します。まず、主要なメトリクスをいくつか紹介し、それぞれの現在の値を取得します。
1. DNSリクエスト数 (5分間のレート)
次のクエリで、CoreDNSが処理しているDNSリクエストの数を取得します。
sum(rate(coredns_dns_requests_total[5m])) by (instance)
2. DNSリクエストのレイテンシ (99パーセンタイル)
次のクエリで、DNSリクエストの99パーセンタイルのレイテンシを取得します。
histogram_quantile(0.99, sum(rate(coredns_dns_request_duration_seconds_bucket[5m])) by (le))
3. DNSレスポンス (レスポンスコード別)
次のクエリで、レスポンスコード別のDNSレスポンスの数を取得します。
sum(rate(coredns_dns_responses_total[5m])) by (rcode)
4. CPU使用率
次のクエリで、CoreDNSのCPU使用率を取得します。
sum(rate(process_cpu_seconds_total{job="coredns-exporter"}[5m]))
これらのメトリクスをPrometheusでクエリして、現在の値を取得します。
...
...
...
✦ CoreDNSのメトリクス分析結果は以下の通りです。
1. DNSリクエスト数 (5分間のレート)
* pi4.home:9153: 1747.31 req/s
2. DNSリクエストのレイテンシ (99パーセンタイル)
* 0.068秒
3. DNSレスポンス (レスポンスコード別、5分間のレート)
* NOERROR: 1714.57 req/s
* NXDOMAIN: 8.09 req/s
* SERVFAIL: 23.54 req/s
4. CPU使用率
* 13.72
これらの結果から、CoreDNSは安定して動作しており、リクエストの大部分は正常に処理されています。SERVFAILが比較的多いですが、これは上流のDNSサーバーの問題か、設定の問題である可能性があります。できそうなこと
- メトリクス分析 と ログ分析
- Lokiでログ収集もしているので組み合わせ可
- アラートの設定や修正
- ダッシュボード自動生成