CentOS下的运维监控Grafana部署
一、Grafana 概述与应用场景
1.1 数据可视化平台核心价值
Grafana 是一款开源的数据可视化与监控平台,支持将时序数据转换为交互式仪表盘,核心特性包括:
- 多数据源支持:无缝对接 Prometheus、InfluxDB、Elasticsearch 等主流监控数据库(文档段落:2-1046🔷)。
- 丰富可视化组件:支持折线图、热力图、仪表盘等 20 + 图表类型,自定义面板布局。
- 实时告警系统:基于阈值配置邮件、钉钉等多渠道告警通知。
- 多租户管理:支持企业级权限控制,隔离不同团队数据视图。
典型应用场景:
- 基础设施监控(服务器 CPU / 内存 / 磁盘实时状态)。
- 微服务性能监控(API 响应时间、请求量趋势分析)。
- 业务指标可视化(电商订单量、用户活跃度实时看板)。
二、环境准备与安装部署
2.1 系统要求
- 操作系统:CentOS 7/8、Ubuntu 20.04+、Debian 10+
- 硬件配置:
- 开发测试:2 核 CPU、4GB 内存、50GB 磁盘
- 生产环境:4 核 CPU、8GB + 内存、SSD 磁盘(根据数据量扩展)
- 网络要求:开放 3000 端口(默认服务端口)
2.2 添加 YUM 仓库(CentOS 系统)
bash
# 创建Grafana仓库文件
vim /etc/yum.repos.d/grafana.repo
填入以下内容(文档段落:2-1026🔷):
ini
[grafana]
name=Grafana Repository
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
2.3 安装 Grafana
bash
# 安装最新稳定版
yum install -y grafana
# 验证安装版本
grafana-server --version # 应输出8.x.x版本信息
2.4 启动服务与开机自启
bash
# 启动Grafana服务
systemctl start grafana-server
# 开启开机自启
systemctl enable grafana-server
# 检查服务状态
systemctl status grafana-server
# 预期输出:Active(running),表示服务正常运行
三、基础配置与初始化
3.1 首次访问与初始化
- 浏览器访问:输入
http://服务器IP:3000
,进入初始页面。 - 默认账号密码:用户名
admin
,密码admin
(首次登录需修改密码)。 - 语言设置:在右上角菜单选择
Settings
→Language
,切换为Chinese (Simplified)
。
3.2 配置数据源(以 Prometheus 为例)
- 添加数据源:
点击左侧菜单Data Sources
→Add data source
→选择Prometheus
。 - 配置连接参数(文档段落:2-1046🔷):
- URL:
http://prometheus-server:9090
(替换为实际 Prometheus 地址)。 - 访问方式:
Browser
(浏览器模式,无需认证)。 - 其他参数:保持默认,点击
Save & Test
,提示Data source is working
即配置成功。
- URL:
3.3 创建仪表盘
- 新建仪表盘:点击左侧菜单
Dashboards
→New dashboard
→Add panel
。 - 配置面板:
- Metrics:选择 Prometheus 指标(如
node_cpu_usage_percent
)。 - Visualization:选择
Time Series
图表类型。 - Time range:设置为
Last 1h
,点击Apply
查看实时数据。
- Metrics:选择 Prometheus 指标(如
四、进阶配置与数据源管理
4.1 配置文件解析
Grafana 主配置文件为/etc/grafana/grafana.ini
,核心配置项说明:
ini
[server]
http_port = 3000 # 服务端口
domain = localhost # 域名
root_url = %(protocol)s://%(domain)s:%(http_port)s # 根URL[database]
type = mysql # 数据库类型,支持sqlite/mysql/postgres
host = 127.0.0.1:3306 # 数据库地址
name = grafana # 数据库名称
user = grafana # 数据库用户
password = Grafana@123 # 数据库密码
4.2 配置 MySQL 存储(生产环境推荐)
- 创建数据库:
sql
CREATE DATABASE grafana CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'grafana'@'localhost' IDENTIFIED BY 'Grafana@123'; GRANT ALL PRIVILEGES ON grafana.* TO 'grafana'@'localhost'; FLUSH PRIVILEGES;
- 修改配置文件:
ini
[database] type = mysql host = 127.0.0.1:3306 name = grafana user = grafana password = Grafana@123
- 重启服务:
bash
systemctl restart grafana-server
4.3 导入仪表盘模板
- 查找模板:访问Grafana Labs 官网搜索模板 ID(如 Linux 服务器监控模板 ID 为 8919)。
- 导入操作:
点击左侧菜单+
→Import
→输入模板 ID→选择数据源→点击Import
。
五、告警规则配置与通知
5.1 创建告警规则
- 编辑面板告警:点击面板标题→
Edit
→Alert
→Create alert rule
。 - 配置触发条件:
- 条件类型:
Threshold
(阈值触发)。 - 查询:选择指标(如
node_memory_MemAvailable_bytes
)。 - 阈值:
< 1000000000
(内存可用量小于 1GB)。 - 评估周期:
1m
(每分钟评估一次)。 - 持续时间:
5m
(持续 5 分钟触发告警)。
- 条件类型:
5.2 配置告警通知渠道
- 添加通知渠道:点击左侧菜单
Alerting
→Notification channels
→Add channel
。 - 配置邮件通知(文档段落:2-1050🔷):
- 名称:Email Notification
- 类型:Email
- SMTP 服务器:
smtp.qq.com:465
- 用户名 / 密码:QQ 邮箱账号 / 授权码
- 收件人:
admin@example.com
- 测试发送:点击
Send test message
验证配置。
5.3 告警策略最佳实践
- 分级告警:
- 警告(Warning):CPU 利用率 > 80%
- 严重(Critical):CPU 利用率 > 95%
- 告警抑制:同一指标短时间内重复告警自动合并,避免告警风暴。
六、安全加固与生产优化
6.1 访问控制与认证
- 修改默认端口:
ini
[server] http_port = 8080 # 改为非默认端口
- IP 白名单限制:
nginx
# Nginx反向代理配置 location /grafana {allow 192.168.1.0/24; # 允许内网访问deny all;proxy_pass http://localhost:3000; }
- 启用 HTTPS:
ini
[server] protocol = https cert_file = /etc/ssl/certs/grafana.crt cert_key = /etc/ssl/private/grafana.key
6.2 性能优化参数
ini
[performance]
query_timeout = 30s # 查询超时时间
max_annotations_per_series = 1000 # 最大注解数
cache_ttl = 30m # 缓存生存时间[log]
level = info # 日志级别,生产环境建议info
mode = file # 日志模式,file/console
6.3 数据备份与恢复
- 备份数据库:
bash
mysqldump -u grafana -pGrafana@123 grafana > grafana_backup.sql
- 备份配置文件:
bash
tar -czvf grafana_config_backup.tar.gz /etc/grafana
- 恢复操作:
bash
mysql -u grafana -pGrafana@123 grafana < grafana_backup.sql cp -rf grafana_config_backup.tar.gz /etc/grafana
七、常见故障排查与解决方案
7.1 服务无法启动
可能原因:
- 端口被占用:
netstat -anp | grep 3000
检查端口占用,修改http_port
为其他端口。 - 配置文件错误:
grafana-server --configtest
验证配置语法。
7.2 数据源连接失败
解决方法:
- Prometheus 连接失败:检查
http://prometheus-server:9090/api/v1/status/config
是否返回 200。 - 数据库连接失败:确认
database
配置项中的用户名、密码、端口正确。
7.3 图表加载缓慢
优化措施:
- 增加缓存:调整
[cache]
配置项,延长cache_ttl
时间。 - 减少查询范围:在面板中缩小时间范围或降低数据采样频率。
八、生产环境最佳实践
8.1 高可用集群部署
- 负载均衡配置:
使用 Nginx 反向代理多个 Grafana 节点:nginx
upstream grafana_cluster {server grafana-node1:3000;server grafana-node2:3000;least_conn; # 最小连接数负载均衡 }
- 共享数据库:
所有节点连接同一 MySQL 数据库,确保配置和仪表盘同步。
8.2 容器化部署(Docker 方案)
- Dockerfile 配置:
dockerfile
FROM grafana/grafana:latest COPY grafana.ini /etc/grafana/grafana.ini EXPOSE 3000 CMD ["grafana-server", "-homepath", "/usr/share/grafana", "--config", "/etc/grafana/grafana.ini"]
- 启动容器:
bash
docker run -d --name grafana \ -p 3000:3000 \ -v /data/grafana/data:/var/lib/grafana \ -v /data/grafana/conf:/etc/grafana \ grafana/grafana
8.3 与 Prometheus 集成监控链
九、总结:Grafana 部署核心流程
通过以上步骤,可完成 Grafana 从安装到生产可用的全流程部署。生产环境中建议结合容器化技术实现弹性扩展,利用共享数据库实现多节点配置同步,并通过 Nginx 负载均衡提升可用性。参考官方文档(Grafana Documentation)可进一步学习数据可视化高级技巧、自定义插件开发及多租户管理等进阶功能。