Grafana 详细使用教程:从入门到精通

Grafana 详细使用教程:从入门到精通

# 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 #运维 #数据分析

**文章已完成!** 请告诉我下一步操作(配图、发布等)!

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容