Files
ljwx-k8s/GRAFANA-DASHBOARDS-ACCESS.md
2026-02-20 22:50:45 +08:00

8.0 KiB
Raw Permalink Blame History

Grafana Dashboards 访问指南

导入时间: 2025-12-21 状态: ✅ 已成功导入 3 个运营级 Dashboard

📊 已导入的 Dashboards

1. PostgreSQL Database

用途: 监控 PostgreSQL 数据库性能和健康状况

访问地址: http://localhost:3000/d/000000039/postgresql-database

关键面板:

  • 连接数: 当前连接数 / 最大连接数
  • 缓存命中率: Buffer cache hit ratio
  • 事务速率: Commits/Rollbacks per second
  • 慢查询: Top 10 slowest queries (需启用 pg_stat_statements)
  • 锁等待: Lock waits and deadlocks
  • 磁盘 IO: Read/Write operations
  • 表统计: Table size, dead tuples, bloat
  • 复制延迟: Replication lag (如果配置了主从)

关键指标:

# 连接数占比
(pg_stat_database_numbackends / pg_settings_max_connections) * 100

# 缓存命中率
(pg_stat_database_blks_hit / (pg_stat_database_blks_hit + pg_stat_database_blks_read)) * 100

# 每秒事务数
rate(pg_stat_database_xact_commit[5m])

2. Redis Dashboard

用途: 监控 Redis 缓存性能和内存使用

访问地址: http://localhost:3000/d/xDLNRKUWz/4b82829

关键面板:

  • 内存使用: Used memory / Max memory
  • 连接数: Connected clients
  • 缓存命中率: Hit rate %
  • 键操作速率: Commands/sec, Gets/Sets per second
  • 键淘汰: Evicted keys (内存不足时)
  • 持久化: RDB/AOF 状态
  • 网络: Network I/O
  • 慢查询: Slow log entries

关键指标:

# 内存使用率
(redis_memory_used_bytes / redis_memory_max_bytes) * 100

# 缓存命中率
(redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total)) * 100

# 每秒操作数
rate(redis_commands_processed_total[5m])

3. Kubernetes / Views / Pods

用途: Kubernetes 集群 Pod 视图和资源监控

访问地址: http://localhost:3000/d/k8s_views_pods/kubernetes-views-pods

关键面板:

  • Pod 状态: Running/Pending/Failed/CrashLoopBackOff
  • CPU 使用: Pod CPU usage and requests/limits
  • 内存使用: Pod memory usage and requests/limits
  • 网络: Network I/O per pod
  • 重启次数: Container restart count
  • 存储: PVC usage

关键指标:

# Pod 重启统计
rate(kube_pod_container_status_restarts_total[15m])

# Pod 内存使用率
container_memory_working_set_bytes / container_spec_memory_limit_bytes * 100

# Pod CPU 使用率
rate(container_cpu_usage_seconds_total[5m])

🚀 如何访问

方法1: 通过 Port Forward(推荐用于本地)

# 启动端口转发
kubectl port-forward -n monitoring svc/grafana 3000:3000

# 浏览器访问
http://localhost:3000

# 登录凭据
用户名: admin
密码: admin123

方法2: 通过 NodePort(如果配置了)

# 查看 NodePort
kubectl get svc grafana-nodeport -n monitoring

# 访问(根据实际 NodePort)
http://<node-ip>:<nodeport>

方法3: 通过 Ingress(生产环境)

如果配置了 Ingress,访问配置的域名。


📈 数据验证

验证 PostgreSQL Dashboard 有数据

  1. 访问 PostgreSQL Dashboard
  2. 检查以下面板是否有数据:
    • pg_up: 应显示 1(表示 Postgres 可用)
    • Connections: 应显示当前连接数
    • Transactions: 应显示 TPS 曲线

如果没有数据:

# 检查 Prometheus targets
kubectl port-forward -n monitoring svc/prometheus 9090:9090
# 访问 http://localhost:9090/targets
# 查找 postgres-exporter,状态应为 UP

验证 Redis Dashboard 有数据

  1. 访问 Redis Dashboard
  2. 检查以下面板是否有数据:
    • redis_up: 应显示 1
    • Connected Clients: 应显示当前连接数
    • Memory Usage: 应显示内存使用趋势

如果没有数据:

# 检查 redis-exporter target
# 在 Prometheus targets 页面查找 redis-exporter

验证 Kubernetes Dashboard 有数据

  1. 访问 Kubernetes Dashboard
  2. 选择 Namespace(例如:data, monitoring, default)
  3. 查看 Pod 列表和资源使用情况

🔧 常见问题

Q: Dashboard 显示 "No data"

A: 检查以下几点:

  1. Prometheus 是否抓取到数据:

    kubectl port-forward -n monitoring svc/prometheus 9090:9090
    # 访问 http://localhost:9090
    # 执行查询: pg_up, redis_up
    
  2. 数据源配置是否正确:

    • Grafana → Configuration → Data Sources
    • 测试 Prometheus 连接
  3. 时间范围是否正确:

    • Dashboard 右上角调整时间范围
    • 尝试 "Last 5 minutes"

Q: PostgreSQL 慢查询面板无数据

A: 需要启用 pg_stat_statements 扩展

参考文档: docs/observability/pg-stat-statements-setup.md

-- 在 Postgres 中执行
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

Q: Dashboard 变量(Variable)无法选择

A: 检查 Prometheus 是否有对应的 label

# 在 Prometheus 中查询
pg_stat_database_datname
redis_instance_info

Q: 如何自定义 Dashboard

A:

  1. 点击 Dashboard 右上角的设置图标 ⚙️
  2. Save As... 保存为新 Dashboard
  3. 编辑面板和查询

📊 推荐的监控视图设置

生产环境日常监控

建议同时打开 3 个浏览器标签:

  1. PostgreSQL Dashboard: 监控数据库性能
  2. Redis Dashboard: 监控缓存状态
  3. Kubernetes Pods Dashboard: 监控应用运行状态

告警和通知

当前 Dashboards 支持设置告警:

  1. 编辑任意面板
  2. Alert 标签页
  3. 配置告警条件
  4. 设置通知渠道(需配置 Alertmanager)

🎨 Dashboard 定制化

添加自定义面板

  1. 点击 Dashboard 顶部的 "Add panel"
  2. 选择可视化类型(Graph, Stat, Table 等)
  3. 编写 PromQL 查询
  4. 设置面板选项
  5. 保存

常用自定义面板示例

业务指标 - 订单总数:

business_orders_total{status="success"}

API 错误率:

rate(http_server_requests_total{status=~"5.."}[5m]) / rate(http_server_requests_total[5m]) * 100

响应时间 P95:

histogram_quantile(0.95, rate(http_server_request_duration_seconds_bucket[5m]))

🔗 相关资源

官方 Dashboard 页面

内部文档

  • 主文档: OBSERVABILITY-ENHANCEMENT-GUIDE.md
  • 部署结果: DEPLOYMENT-RESULTS.md
  • pg_stat_statements 配置: docs/observability/pg-stat-statements-setup.md

Prometheus 查询

# 访问 Prometheus UI
kubectl port-forward -n monitoring svc/prometheus 9090:9090
http://localhost:9090

Grafana 数据源配置

# 查看当前数据源配置
kubectl get configmap grafana-datasources -n monitoring -o yaml

💡 最佳实践

1. 定期检查

  • 每日: 检查 Pod 状态、错误率、资源使用
  • 每周: 分析慢查询、缓存命中率趋势
  • 每月: 评估容量规划、性能优化

2. 设置书签

将常用 Dashboard 加入浏览器书签:

3. 创建播放列表

在 Grafana 中创建 Playlist,自动轮播多个 Dashboard:

  1. Dashboards → Playlists
  2. New Playlist
  3. 添加要轮播的 Dashboard
  4. 设置间隔(建议 30 秒)

🎉 开始使用

立即访问

# 启动端口转发(如果还未启动)
kubectl port-forward -n monitoring svc/grafana 3000:3000

# 浏览器打开
http://localhost:3000

# 登录
用户名: admin
密码: admin123

# 导航到 Dashboard
Dashboards → Browse → 选择任意 Dashboard

验证数据

  1. 打开 PostgreSQL Dashboard
  2. 查看 "Total Databases" 面板
  3. 应该能看到当前数据库列表和连接数

如果有任何问题,参考 DEPLOYMENT-RESULTS.md 的故障排查章节。


享受可视化监控! 🎊