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 等渠道通知。

数据流转流程

  1. 用户在前端配置仪表盘,指定数据源和查询语句(如 PromQL)。
  2. 后端服务接收查询请求,根据数据源类型转换为对应数据库的查询语法。
  3. 数据源执行查询并返回时序数据(时间戳 + 数值)
  4. 后端对数据进行处理(如聚合、排序),传递给前端。
  5. 前端将数据渲染为指定图表(如折线图展示 CPU 使用率趋势)。
  6. 若配置告警规则,后端定期执行查询,触发阈值时发送告警通知。

grafana安装

  • 环境准备

    依赖项 版本要求 说明
    操作系统 CentOS 7+/Ubuntu 18.04+ 支持 Linux/Windows/MacOS
    内存 ≥ 2GB 生产环境建议 ≥ 4GB
    数据库 MySQL 5.7+/PostgreSQL 10+ 存储仪表盘配置(可选)
    网络端口 3000/tcp Grafana 默认端口
  • 安装步骤(CentOS 7 示例)

    • 安装示例1

      bash 复制代码
      # 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 <-- 这里用源码安

      bash 复制代码
      # 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

      bash 复制代码
      [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
    • 修改为中文

      • 修改配置文件

        bash 复制代码
        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 表示配置成功

  • 创建监控仪表盘(示例:服务器资源监控)

    1. 新建仪表盘

      • 点击左侧 + → Dashboard → Add a new panel,进入面板编辑页面。
    2. 配置查询语句(PromQL)

      bash 复制代码
      # Queries下默认是builder换成code,填promQL语句
      # CPU 使用率(核心数)
      100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
    3. 添加模板变量(按主机筛选)

      • 名称: instance
      • query: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle", instance=~"$instance"}[5m])) * 100)

    配置告警规则(对接 Alertmanager)

  • 启用 Alertmanager 数据源

    1. alertmanager安装
    2. 点击 Configuration → Data Sources → Add data source ,搜索 Alertmanager
    3. 中文(连接--数据源--添加新数据源--找到alertmanager--Implementation改成prometheus)
    4. 配置 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%时
    • 第三步往下随便先指定,这里看 预警规则部署与配置告警路由,目前我只写了文档还没练,待继续补充吧
相关推荐
七夜zippoe18 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64819 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满19 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠20 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90320 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技21 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
迎仔21 小时前
05-监控告警与故障处理:数字工厂的“警报与维修系统“
监控
释怀不想释怀21 小时前
Linux环境变量
linux·运维·服务器
zzzsde21 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º1 天前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann