17、grafana安装
Grafana原理与配置
本章重点: 原理说明,安装配置,与prometheus\alertmanager集成
grafana原理
-
前言
Grafana 是一款开源的可视化监控平台,支持对接 Prometheus、InfluxDB、Elasticsearch 等多种时序数据库,通过灵活的仪表盘配置、丰富的图表类型和告警功能,帮助用户实现数据可视化、监控分析和故障排查。本文将从核心原理、环境安装、实战配置(含 Prometheus 对接)、报表导出(grafana-reporter)等维度,系统梳理 Grafana 的使用指南,附带代码示例、配置最佳实践和问题解决方案。
-
架构说明:
Grafana 采用 前后端分离架构,核心组件及交互流程如下:

- 前端:基于 React 开发,负责仪表盘展示、用户交互和图表渲染。
- 后端:基于 Go 开发,提供 API 接口、数据源适配、权限控制、告警管理等核心功能。
- 数据源:支持 Prometheus、InfluxDB、Graphite 等 100+ 种时序数据库,通过统一的查询接口适配不同数据源的查询语法。
- 存储:默认使用 SQLite 存储仪表盘配置、用户信息等,生产环境建议切换为 MySQL 或 PostgreSQL。
-
关键概念
概念 说明 仪表盘(Dashboard) 可视化展示的核心载体,包含多个面板,支持拖拽布局、模板变量配置。 面板(Panel) 单个图表组件(如折线图、柱状图、 gauge 图),绑定数据源查询语句。 数据源(Data Source) 对接的时序数据库,每种数据源有专属的查询语法(如 PromQL 用于 Prometheus)。 模板变量(Variable) 动态过滤数据(如按主机、集群、时间范围筛选),提升仪表盘灵活性。 告警规则(Alert Rule) 基于面板数据设置阈值(如 CPU 使用率 > 80%),触发后通过 Alertmanager 等渠道通知。 -
数据流转流程
- 用户在前端配置仪表盘,指定数据源和查询语句(如 PromQL)。
- 后端服务接收查询请求,根据数据源类型转换为对应数据库的查询语法。
- 数据源执行查询并返回时序数据(时间戳 + 数值)。
- 后端对数据进行处理(如聚合、排序),传递给前端。
- 前端将数据渲染为指定图表(如折线图展示 CPU 使用率趋势)。
- 若配置告警规则,后端定期执行查询,触发阈值时发送告警通知。
grafana安装
-
环境准备
依赖项 版本要求 说明 操作系统 CentOS 7+/Ubuntu 18.04+ 支持 Linux/Windows/MacOS 内存 ≥ 2GB 生产环境建议 ≥ 4GB 数据库 MySQL 5.7+/PostgreSQL 10+ 存储仪表盘配置(可选) 网络端口 3000/tcp Grafana 默认端口 -
安装步骤(CentOS 7 示例)
-
安装示例1
# 1. 添加 Grafana 官方 YUM 源 cat > /etc/yum.repos.d/grafana.repo << EOF [grafana] name=grafana 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 EOF# 2. 安装 Grafana yum install -y grafana# 3. 启动服务并设置开机自启 systemctl start grafana-server systemctl enable grafana-server# 4. 验证服务状态(默认端口 3000) netstat -tnlp | grep 3000 -
安装示例2 <-- 这里用源码安
# 1. 下载安装包 wget https://dl.grafana.com/grafana-enterprise/release/12.2.1/grafana-enterprise_12.2.1_18655849634_linux_amd64.tar.gz# 2. 解压到自定义目录 tar -zxvf grafana-enterprise_12.2.1_18655849634_linux_amd64.tar.gz -C /data/ ln -s /data/grafana-12.2.1 /data/grafana# 3. 配置自启 cat << EOF > /usr/lib/systemd/system/grafana-server.service [Unit] Description=Grafana (Source Install) Documentation=https://grafana.com/docs/ After=network.target # 网络就绪后启动 Wants=network.target[Service] WorkingDirectory=/data/grafana ExecStart=/data/grafana/bin/grafana-server --config /data/grafana/conf/defaults.ini Restart=always # 进程退出时自动重启 RestartSec=5s # 重启间隔 5 秒 LimitNOFILE=65535 # 提高文件描述符限制(避免高并发报错)# 日志配置(默认输出到 Grafana 日志目录,也可指定自定义路径) StandardOutput=journal+console StandardError=journal+console # 若需自定义日志文件,替换上面两行: # StandardOutput=file:/var/log/grafana/stdout.log # StandardError=file:/var/log/grafana/stderr.log[Install] WantedBy=multi-user.target # 多用户模式下开机自启 EOF# 或 直接启动 cd /data/grafana ./bin/grafana-server --config ./conf/defaults.ini &# 5. 验证(访问 http://IP:3000)
-
-
基础配置
-
初始访问与密码修改
-
访问地址:
http://服务器IP:3000 -
默认账号:
admin,默认密码:admin
-
-
配置文件优化
Grafana 核心配置文件为
grafana.ini(YUM 安装路径:/etc/grafana/grafana.ini;源码安装路径:/opt/grafana/conf/defaults.ini)[server] http_port = 3000 # 监听端口 domain = grafana.example.com # 域名(可选) root_url = http://grafana.example.com:3000 # 访问 URL[database] type = mysql # 切换存储为 MySQL(默认 SQLite) host = 127.0.0.1:3306 # MySQL 地址 name = grafana_db # 数据库名 user = grafana_user # 数据库用户 password = Grafana@DB2024 # 数据库密码[security] admin_password = Grafana@2024 # 预设置 admin 密码 secret_key = your_secret_key # 会话加密密钥(建议随机生成)[auth.anonymous] enabled = false # 禁用匿名访问(生产环境必设)# 默认的数据库用的是sqlite3 # Either "mysql", "postgres" or "sqlite3", it's your choice type = sqlite3 path = grafana.db# 缓存也可以改为redis, 默认的有示例说明 #################################### Cache server ############################# [remote_cache] # Either "redis", "memcached" or "database" default is "database" type = database# cache connectionstring options # database: will use Grafana primary database. # redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,username=grafana,password=grafanaRocks,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'. # memcache: 127.0.0.1:11211 <-- 也可以用memcache -
修改为中文
-
修改配置文件
vim /data/grafana/conf/defaults.ini #default_language = en-US default_language = zh-CN#default_timezone = browser default_timezone = Asia/Shanghai# 重启服务 systemctl restart grafana-server -
界面上在修改

-
-
对接 Prometheus 数据源
-
前提条件
- 先prometheus安装, 确保 Grafana 服务器能访问 Prometheus 端口(默认 9090)
-
配置 Prometheus 数据源
-
登录 Grafana 前端,点击左侧 Configuration → Data Sources,点击 Add data source。
-
搜索:
Prometheus选择对应图标,进入配置页面:配置项 取值示例 说明 Name Prometheus-Cluster 数据源名称(自定义) URL http://192.168.0.100:9090 Prometheus 访问地址 Access Server(默认) 访问方式(服务器端代理) Scrape Interval 15s 数据查询间隔 -
点击 Save & test,显示
Data source is working表示配置成功

-
-
创建监控仪表盘(示例:服务器资源监控)
-
新建仪表盘
- 点击左侧 + → Dashboard → Add a new panel,进入面板编辑页面。
-
配置查询语句(PromQL)
# Queries下默认是builder换成code,填promQL语句 # CPU 使用率(核心数) 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
-
添加模板变量(按主机筛选)
- 名称: instance
- query:
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle", instance=~"$instance"}[5m])) * 100)

配置告警规则(对接 Alertmanager)
-
-
启用 Alertmanager 数据源
- alertmanager安装
- 点击 Configuration → Data Sources → Add data source,搜索
Alertmanager。 - 中文(连接–数据源–添加新数据源–找到alertmanager–Implementation改成prometheus)
- 配置 Alertmanager 访问地址(如
http://192.168.0.101:9093),点击 Save & test。

-
创建告警规则(CPU 使用率过高)
- 仪表板–对应面板–更多–新建预警规则
- 第二步添加:
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)当查询: is below小于10%时 - 第三步往下随便先指定,这里看 预警规则,部署与配置,告警路由,目前我只写了文档还没练,待继续补充吧
