以下是一份Grafana项目实战教程,涵盖服务器监控和电商实时看板的实现,专为专业人员设计:
一、Grafana基础准备
1. 环境要求
-
已安装Grafana 9.0+(推荐容器化部署)
-
服务器监控推荐数据源:Prometheus
-
业务数据推荐数据源:MySQL/PostgreSQL/ClickHouse
-
实时流数据推荐:Kafka + Telegraf
2. 核心概念
-
Data Sources:支持30+种数据源(时序/关系型/日志数据库)
-
Dashboard:基于Panel的可视化组合
-
Variables:动态筛选参数
-
Alerting:阈值告警功能
二、服务器监控仪表盘(CPU/内存/磁盘)
1. 数据采集层
方案1:Prometheus + Node Exporter
# 安装Node Exporter(被监控服务器)
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvfz node_exporter-* && cd node_exporter-*
./node_exporter &
# Prometheus配置示例(prometheus.yml)
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['your_server_ip:9100']
方案2:Telegraf(更适合混合云环境)
# /etc/telegraf/telegraf.conf
[[inputs.cpu]]
percpu = true
totalcpu = true
[[inputs.mem]]
[[inputs.disk]]
2. Grafana配置
-
添加数据源:HTTP URL指向Prometheus服务地址
-
导入模板:使用官方ID
1860
(Node Exporter Full) -
自定义优化:
-
添加磁盘IOPS监控:
rate(node_disk_reads_completed_total[5m])
-
内存使用率公式:
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
-
3. 高级功能实现
-
多服务器筛选:创建
instance
变量label_values(node_network_up, instance)
-
智能告警:当CPU > 80%持续5分钟触发
avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) < 20
三、电商实时业务看板
1. 数据架构设计
[业务DB] --> [Flink/Kafka] --> [实时数仓] --> [Grafana] (实时ETL) (ClickHouse)
2. 核心指标计算
GMV实时统计(MySQL示例):
SELECT
SUM(order_amount) AS gmv,
COUNT(DISTINCT user_id) AS uv
FROM orders
WHERE status = 'paid'
AND order_time >= NOW() - INTERVAL 1 HOUR
用户分布查询(PostGIS地理数据):
SELECT
city,
COUNT(*) AS users
FROM user_locations
GROUP BY city
3. 看板实现步骤
-
连接业务数据库:
-
启用
mysql
/postgres
数据源 -
配置只读账号和连接池
-
-
实时数据接入:
# Telegraf配置Kafka消费 [[inputs.kafka_consumer]] brokers = ["kafka:9092"] topics = ["order_events"] data_format = "json"
-
可视化设计:
-
GMV趋势:Time series + 7日同比计算
SELECT time_bucket('1h', order_time) AS time, SUM(order_amount) FROM orders GROUP BY 1
-
用户分布:Geomap面板(需安装插件)
-
实时订单流:Live tailing功能
-
4. 性能优化技巧
-
缓存策略:设置合适的Query Cache TTL
-
查询优化:在数据库层预计算指标
-
数据降采样:长期历史数据使用RRA策略
四、高级功能扩展
-
混合数据源关联:
SELECT a.server_ip, b.service_name FROM prometheus.metrics a JOIN mysql.servers b ON a.instance = b.ip
-
自动化报表:
# 使用Grafana API生成PDF curl -H "Authorization: Bearer API_KEY" "http://grafana:3000/api/reports/email" -d '{...}'
-
权限控制:
[auth.ldap] enabled = true config_file = /etc/grafana/ldap.toml
五、排错指南
-
数据不更新:
-
检查数据源健康状态
-
验证SQL/PromQL是否有语法错误
-
查看Grafana日志
/var/log/grafana
-
-
可视化异常:
-
确认时间区间设置正确
-
检查单位转换(bytes→GB)
-
验证字段类型(确保时间字段是datetime类型)
-
推荐插件:
-
Clock Panel:展示运营活动倒计时
-
FlowCharting:绘制实时业务流程图
-
Redis Data Source:缓存命中率监控
通过以上方案,可构建日均处理百万级数据点的高性能监控系统,建议生产环境配合K8s实现动态扩缩容。
本篇的分享就到这里了,感谢观看,如果对你有帮助,别忘了点赞+收藏+关注。