8.0 KiB
8.0 KiB
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 有数据
- 访问 PostgreSQL Dashboard
- 检查以下面板是否有数据:
- 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 有数据
- 访问 Redis Dashboard
- 检查以下面板是否有数据:
- redis_up: 应显示 1
- Connected Clients: 应显示当前连接数
- Memory Usage: 应显示内存使用趋势
如果没有数据:
# 检查 redis-exporter target
# 在 Prometheus targets 页面查找 redis-exporter
验证 Kubernetes Dashboard 有数据
- 访问 Kubernetes Dashboard
- 选择 Namespace(例如:data, monitoring, default)
- 查看 Pod 列表和资源使用情况
🔧 常见问题
Q: Dashboard 显示 "No data"
A: 检查以下几点:
-
Prometheus 是否抓取到数据:
kubectl port-forward -n monitoring svc/prometheus 9090:9090 # 访问 http://localhost:9090 # 执行查询: pg_up, redis_up -
数据源配置是否正确:
- Grafana → Configuration → Data Sources
- 测试 Prometheus 连接
-
时间范围是否正确:
- 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:
- 点击 Dashboard 右上角的设置图标 ⚙️
- Save As... 保存为新 Dashboard
- 编辑面板和查询
📊 推荐的监控视图设置
生产环境日常监控
建议同时打开 3 个浏览器标签:
- PostgreSQL Dashboard: 监控数据库性能
- Redis Dashboard: 监控缓存状态
- Kubernetes Pods Dashboard: 监控应用运行状态
告警和通知
当前 Dashboards 支持设置告警:
- 编辑任意面板
- Alert 标签页
- 配置告警条件
- 设置通知渠道(需配置 Alertmanager)
🎨 Dashboard 定制化
添加自定义面板
- 点击 Dashboard 顶部的 "Add panel"
- 选择可视化类型(Graph, Stat, Table 等)
- 编写 PromQL 查询
- 设置面板选项
- 保存
常用自定义面板示例
业务指标 - 订单总数:
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 加入浏览器书签:
- PostgreSQL: http://localhost:3000/d/000000039/postgresql-database
- Redis: http://localhost:3000/d/xDLNRKUWz/4b82829
- Kubernetes: http://localhost:3000/d/k8s_views_pods/kubernetes-views-pods
3. 创建播放列表
在 Grafana 中创建 Playlist,自动轮播多个 Dashboard:
- Dashboards → Playlists
- New Playlist
- 添加要轮播的 Dashboard
- 设置间隔(建议 30 秒)
🎉 开始使用
立即访问
# 启动端口转发(如果还未启动)
kubectl port-forward -n monitoring svc/grafana 3000:3000
# 浏览器打开
http://localhost:3000
# 登录
用户名: admin
密码: admin123
# 导航到 Dashboard
Dashboards → Browse → 选择任意 Dashboard
验证数据
- 打开 PostgreSQL Dashboard
- 查看 "Total Databases" 面板
- 应该能看到当前数据库列表和连接数
如果有任何问题,参考 DEPLOYMENT-RESULTS.md 的故障排查章节。
享受可视化监控! 🎊