
# Grafana 详细使用教程
## 一、Grafana 简介和核心概念
**Grafana** 是一个开源的**可观测性平台**,用于数据可视化、监控和分析。它支持多种数据源,提供丰富的可视化图表。
### 核心概念
| 概念 | 说明 |
|——|——|
| **Dashboard** | 仪表板,包含多个图表 |
| **Panel** | 面板,单个图表 |
| **Data Source** | 数据源(Prometheus、InfluxDB 等) |
| **Query** | 查询,从数据源获取数据 |
| **Alert** | 告警,基于条件触发通知 |
### 支持的数据源
– **Prometheus** – 时序数据库
– **InfluxDB** – 时序数据库
– **MySQL/PostgreSQL** – 关系数据库
– **Elasticsearch** – 日志分析
– **CloudWatch** – AWS 监控
## 二、快速入门
### 安装 Grafana
“`bash
# Ubuntu/Debian 安装
curl -fsSL https://pkg.grafana.com/gpg.key | sudo gpg –dearmor -o /etc/apt/keyrings/grafana.gpg
echo “deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://pkg.grafana.com/ stable main” | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana
# Docker 安装
docker run -d \
–name=grafana \
-p 3000:3000 \
-v grafana-data:/var/lib/grafana \
grafana/grafana:latest
“`
### 访问和登录
“`bash
# 启动服务
sudo systemctl start grafana-server
# 访问地址
http://localhost:3000
# 默认登录
用户名:admin
密码:admin
“`
### 首次配置
“`bash
# 修改 admin 密码
# 访问 http://localhost:3000/login
# 配置 SMTP(邮件通知)
# /etc/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.example.com:587
user = your-email@example.com
password = your-password
“`
## 三、数据源配置
### 添加 Prometheus 数据源
“`bash
# 1. 访问配置页面
http://localhost:3000/datasources
# 2. 点击 Add data source
# 3. 选择 Prometheus
# 4. 配置
Name: Prometheus
URL: http://prometheus:9090
Scrape interval: 15s
“`
### 添加 InfluxDB 数据源
“`bash
# 1. 访问配置页面
http://localhost:3000/datasources
# 2. 选择 InfluxDB
# 3. 配置
Name: InfluxDB
URL: http://influxdb:8086
Database: metrics
User: admin
Password: admin123
“`
### 添加 MySQL 数据源
“`bash
# 1. 访问配置页面
http://localhost:3000/datasources
# 2. 选择 MySQL
# 3. 配置
Name: MySQL
URL: mysql:3306
Database: monitoring
User: grafana
Password: password
TLS Mode: disable
“`
## 四、面板创建
### 创建第一个 Dashboard
“`bash
# 1. 访问 Dashboard 页面
http://localhost:3000/dashboards
# 2. 点击 New Dashboard
# 3. 点击 Add visualization
# 4. 选择数据源
Datasource: Prometheus
# 5. 输入查询
up == 1
# 6. 配置面板标题
Title: Server Status
# 7. 保存 Dashboard
Title: System Monitoring
“`
### 常用查询示例
“`promql
# Prometheus 查询
# CPU 使用率
100 – (avg(rate(node_cpu_seconds_total{mode=”idle”}[5m])) by (instance) * 100)
# 内存使用率
(1 – (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
# 磁盘使用率
(1 – (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100
# 网络流量
rate(node_network_receive_bytes_total[5m])
# HTTP 请求延迟
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))
“`
### 创建 Dashboard 结构
“`json
{
“dashboard”: {
“title”: “System Monitoring”,
“panels”: [
{
“id”: 1,
“title”: “CPU Usage”,
“type”: “graph”,
“datasource”: “Prometheus”,
“targets”: [
{
“expr”: “100 – (avg(rate(node_cpu_seconds_total{mode=\”idle\”}[5m])) by (instance) * 100)”,
“legendFormat”: “{{instance}}”
}
]
},
{
“id”: 2,
“title”: “Memory Usage”,
“type”: “graph”,
“datasource”: “Prometheus”,
“targets”: [
{
“expr”: “(1 – (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100”,
“legendFormat”: “{{instance}}”
}
]
}
]
}
}
“`
## 五、可视化配置
### 图表类型选择
| 图表类型 | 适用场景 |
|———-|———-|
| **Time series** | 时间序列数据 |
| **Stat** | 单值显示 |
| **Gauge** | 仪表盘显示 |
| **Bar gauge** | 条形图 |
| **Table** | 表格展示 |
| **Graph** | 折线图 |
| **Pie chart** | 饼图 |
### 配置单位和精度
“`bash
# Panel 配置
Overrides:
– Unit: percent
Decimals: 2
# 常见单位
– percent (百分比)
– short (短数字)
– ms (毫秒)
– bytes (字节)
– Bps (字节/秒)
– request/s (请求/秒)
– °C (摄氏度)
“`
### 主题配置
“`bash
# /etc/grafana/grafana.ini
[theme]
allow_embedding = false
default_theme = dark
“`
## 六、告警设置
### 配置告警规则
“`bash
# 1. 访问告警页面
http://localhost:3000/alerting
# 2. 创建新规则
New Alert Rule
# 3. 配置规则
Name: High CPU Usage
Datasource: Prometheus
Query: | 100 – (avg(rate(node_cpu_seconds_total{mode=”idle”}[5m])) by (instance) * 100)
Condition: B
Evaluation interval: 1m
For: 5m
# 4. 设置阈值
– If B is > 80%
“`
### 通知渠道配置
“`bash
# 1. 访问通知渠道
http://localhost:3000/alerting/alerting-notifications
# 2. 添加新渠道
– Slack
– Email
– Webhook
– PagerDuty
– Pushover
– OpsGenie
# 3. 配置 Slack 通知
Name: Slack Alerts
Type: slack
Settings:
URL: https://hooks.slack.com/services/xxx/yyy/zzz
“`
## 七、权限管理和团队协作
### 用户管理
“`bash
# 1. 访问用户管理
http://localhost:3000/admin/users
# 2. 添加新用户
– 用户名:operator
– 邮箱:operator@example.com
– 密码:password123
# 3. 设置角色
– Admin (管理员)
– Editor (编辑者)
– Viewer (查看者)
“`
### 权限配置
“`bash
# Dashboard 权限
– Public: false
– CanEdit: true
– CanAdmin: false
# Folder 权限
# /etc/grafana/grafana.ini
[auth.anonymous]
enabled = false
# org_id = 1
# role = Viewer
“`
### 团队协作
“`bash
# 1. 创建 Team
# http://localhost:3000/admin/teams
# 2. 添加成员
# 3. 设置 Team 权限
# 4. 分配 Dashboard 访问权限
“`
## 八、性能优化和最佳实践
### 性能优化
“`bash
# 1. 调整查询性能
# 使用预聚合数据
# 限制查询范围
# 使用降采样
# 2. 优化数据源
# 增加连接池大小
# 使用缓存
# 限制并发查询
# 3. Grafana 配置
# /etc/grafana/grafana.ini
[server]
max_procs = 4
[database]
max_open_conns = 100
max_idle_conns = 50
[analytics]
reporting_enabled = false
check_for_updates = false
“`
### 最佳实践
1. **数据源管理**
– 使用命名空间隔离不同环境
– 定期清理过时数据源
– 使用环境变量配置敏感信息
2. **Dashboard 优化**
– 合理分组 Panel
– 使用模板变量
– 避免重复查询
– 设置合理的刷新频率
3. **安全加固**
– 修改默认密码
– 启用 HTTPS
– 配置认证插件
– 定期审计日志
4. **监控配置**
– 配置关键指标告警
– 设置通知升级策略
– 定期测试告警规则
– 维护告警文档
—
## 总结
本文涵盖了 Grafana 的:
– ✅ **核心概念** – Dashboard、Panel、Data Source、Query、Alert
– ✅ **快速入门** – 安装、配置、访问
– ✅ **数据源配置** – Prometheus、InfluxDB、MySQL
– ✅ **面板创建** – 基础图表、Dashboard
– ✅ **可视化配置** – 主题、单位、图例
– ✅ **告警设置** – 阈值、通知渠道
– ✅ **权限管理** – 用户、角色、团队协作
– ✅ **性能优化** – 查询、数据源、配置优化
#Grafana #监控 #可视化 #Prometheus #运维 #数据分析
—
**文章已完成!** 请告诉我下一步操作(配图、发布等)!





















暂无评论内容