前言
在前两篇文章中,我们介绍了如何在 CentOS 上部署 Prometheus 和 Node Exporter 来监控服务器节点。本文将继续讲解如何安装和配置 Grafana,这是一个功能强大的数据可视化平台,可以将 Prometheus 收集的指标数据转化为直观的仪表盘。
Grafana 支持多种数据源,包括 Prometheus、InfluxDB、Elasticsearch 等,并提供丰富的可视化选项,使我们能够创建专业的监控仪表盘。
Grafana 安装与配置
1. 下载并安装 Grafana
首先,我们需要从 Grafana 官网下载最新版本的安装包:
bash
# 下载 Grafana Enterprise 版本(也包含开源版全部功能)
wget https://dl.grafana.com/grafana-enterprise/release/12.1.1/grafana-enterprise_12.1.1_16903967602_linux_amd64.tar.gz
# 解压下载的压缩包
tar -zxvf grafana-enterprise_12.1.1_16903967602_linux_amd64.tar.gz
# 将解压后的目录移动到合适的位置
sudo mv grafana-enterprise_12.1.1 /usr/local/grafana
注意: 虽然我们下载的是企业版,但它包含了开源版的全部功能,企业版额外提供了一些高级功能和支持服务。
2. 创建专用用户
为了安全考虑,我们创建一个专用用户来运行 Grafana 服务:
bash
# 创建 Grafana 用户组
sudo groupadd grafana
# 创建 Grafana 用户
sudo useradd -g grafana -m -d /var/lib/grafana -s /sbin/nologin grafana
# 设置目录权限
sudo chown -R grafana:grafana /usr/local/grafana
sudo chown -R grafana:grafana /var/lib/grafana
命令解释:
groupadd
: 创建用户组useradd
: 创建系统用户,指定家目录和登录shellchown -R
: 递归更改目录所有权
3. 配置 Systemd 服务
创建 Systemd 服务文件来管理 Grafana:
bash
sudo vim /etc/systemd/system/grafana.service
添加以下内容:
ini
[Unit]
Description=Grafana
Documentation=https://grafana.com/docs/
After=network.target
[Service]
Type=simple
User=grafana
Group=grafana
WorkingDirectory=/usr/local/grafana
Environment="HOME=/usr/local/grafana" # 显式设置 HOME 变量
ExecStart=/usr/local/grafana/bin/grafana-server -config /usr/local/grafana/conf/defaults.ini
Restart=always
RestartSec=5s
TimeoutStartSec=30s
LimitNOFILE=65536 # 增加文件描述符限制
[Install]
WantedBy=multi-user.target
配置解释:
WorkingDirectory
: 设置工作目录Environment
: 设置环境变量,这里显式设置 HOME 变量ExecStart
: 启动命令,使用默认配置文件Restart
: 总是重启,确保服务高可用LimitNOFILE
: 提高文件描述符限制,应对高并发场景
4. 启动 Grafana 服务
bash
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动 Grafana 服务
sudo systemctl start grafana
# 设置开机自启
sudo systemctl enable grafana
# 检查服务状态
sudo systemctl status grafana
5. 防火墙配置
如果系统启用了防火墙,需要开放 Grafana 的默认端口(3000):
bash
# 开放3000端口
sudo firewall-cmd --permanent --add-port=3000/tcp
# 重新加载防火墙配置
sudo firewall-cmd --reload
访问 Grafana Web 界面
在浏览器中访问 http://服务器IP:3000
,你将看到 Grafana 的登录页面。
初始登录
- 用户名: admin
- 密码: admin
首次登录后,系统会要求你更改默认密码。建议设置一个强密码以提高安全性。
配置 Prometheus 数据源
成功登录后,我们需要添加 Prometheus 作为数据源:
1. 添加数据源
在左侧菜单中,依次点击:
- "Configuration" (齿轮图标)
- "Data Sources"
- "Add data source"
2. 选择 Prometheus
在数据源列表中选择 "Prometheus"。
3. 配置数据源
填写以下关键信息:
- Name: 数据源名称(如 "Prometheus")
- Type: 选择 "Prometheus"
- URL : 输入 Prometheus 服务器的地址(如
http://localhost:9090
) - Access: 选择 "Server"(默认)
其他选项可以保持默认值,除非你有特殊需求。
4. 保存并测试
点击 "Save & Test" 按钮,如果配置正确,将显示 "Data source is working" 的提示。
导入仪表盘模板
Grafana 的一个强大功能是可以通过 JSON 文件导入预配置的仪表盘。社区提供了大量高质量的仪表盘模板。
1. 查找合适的仪表盘
访问 Grafana 官方仪表盘库,搜索适合的模板:
- 搜索关键词: "Node Exporter Server Metrics"
- 选择一个评分高、下载量大的模板(如 ID: 1860)
2. 下载仪表盘 JSON
点击选择的仪表盘,然后点击 "Download JSON" 按钮下载 JSON 文件。
3. 导入仪表盘
在 Grafana 界面中:
- 点击左侧菜单的 "+" 图标
- 选择 "Import"
- 点击 "Upload JSON file" 并选择下载的 JSON 文件
- 或者直接粘贴仪表盘的 ID(如 1860)
4. 配置导入选项
- Name: 仪表盘名称(可自定义)
- Folder: 选择存放的文件夹
- Prometheus: 选择之前配置的 Prometheus 数据源
点击 "Import" 完成导入。
自定义仪表盘
除了导入现成的模板,你也可以创建自己的仪表盘:
1. 创建新仪表盘
点击左侧菜单的 "+" 图标,选择 "Dashboard"。
2. 添加面板
点击 "Add new panel" 添加新的图表面板。
3. 配置查询
在查询编辑器中,可以编写 PromQL 查询语句,例如:
promql
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
4. 自定义可视化
在右侧面板中,可以:
- 设置图表标题和描述
- 选择可视化类型(图表、表格、仪表等)
- 调整颜色、轴标签等显示选项
5. 保存仪表盘
完成配置后,点击右上角的 "Save" 按钮保存仪表盘。
高级配置
1. 配置认证(可选)
对于生产环境,建议配置认证方式:
bash
# 编辑 Grafana 配置文件
sudo vim /usr/local/grafana/conf/defaults.ini
修改以下配置节:
ini
[auth]
# 启用基本认证
disable_login_form = false
# 启用匿名访问(可选)
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer
2. 配置数据库(可选)
默认情况下,Grafana 使用 SQLite 数据库。对于生产环境,建议使用 MySQL 或 PostgreSQL:
ini
[database]
type = mysql
host = localhost:3306
name = grafana
user = grafana
password = your_password
3. 配置 SMTP(用于告警通知)
ini
[smtp]
enabled = true
host = smtp.example.com:465
user = your_user
password = your_password
from_address = admin@example.com
故障排除
常见问题
-
无法访问 Grafana
- 检查防火墙设置
- 确认 Grafana 服务正在运行
-
数据源测试失败
- 检查 Prometheus 服务是否运行
- 确认网络连通性
-
仪表盘无数据
- 检查 Prometheus 是否正在收集数据
- 确认查询语句正确
查看日志
如果遇到问题,可以查看 Grafana 日志:
bash
# 查看实时日志
journalctl -u grafana -f
# 或者查看日志文件
tail -f /usr/local/grafana/data/log/grafana.log
总结
通过本文,我们学习了:
- Grafana 的安装与配置:下载、解压、设置专用用户和权限
- Systemd 服务配置:创建服务文件管理 Grafana 生命周期
- 数据源配置:添加 Prometheus 作为数据源
- 仪表盘导入:从 Grafana 社区导入高质量的监控仪表盘
- 基本自定义:创建自定义查询和可视化面板
Grafana 与 Prometheus 的结合提供了一个强大的监控可视化解决方案。通过直观的仪表盘,我们可以快速了解系统状态,及时发现潜在问题。
下一步建议:
- 探索更多社区仪表盘模板
- 学习 PromQL 查询语言,创建自定义查询
- 配置告警规则,实现异常自动通知
- 考虑使用 Grafana 的告警功能,实现监控告警一体化
相关资源:
希望本文对您配置和使用 Grafana 有所帮助!如有任何问题,欢迎在评论区留言讨论。