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%时
    • 第三步往下随便先指定,这里看 预警规则部署与配置告警路由,目前我只写了文档还没练,待继续补充吧
相关推荐
摘星|3 小时前
架设一台NFS服务器,并按照以下要求配置
linux·运维·服务器
做运维的阿瑞3 小时前
Linux环境变量持久化完全指南
linux·运维·服务器
Mr_Dwj4 小时前
【运维】GNU/Linux 入门笔记
linux·运维·gnu
SHIPKING3934 小时前
【Docker安装】Windows10专业版安装教程
运维·docker·容器
编程的一拳超人4 小时前
Docker核心概念、常用命令与实战指南
运维·docker·容器
编程的一拳超人4 小时前
Docker 核心命令速查表(精细分类版)
运维·docker·容器
小任今晚几点睡4 小时前
Ansible 基础配置与负载均衡部署实践
运维·自动化·ansible·负载均衡
科立分板机源头厂家5 小时前
第28集科立分板机:科立自动化分板机适配多场景生产筑牢电子制造品质防线
运维·自动化·制造
偶像你挑的噻5 小时前
2-Linux驱动开发-内核;内核模块;设备树;设备树插件
linux·运维·驱动开发