Grafana 安装与配置 #

安装方式概览 #

Grafana 提供多种安装方式,适用于不同的使用场景:

text
┌─────────────────────────────────────────────────────────────┐
│                    安装方式选择                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Docker    │  │   二进制包   │  │  包管理器   │         │
│  │  (推荐)     │  │  (灵活)     │  │  (便捷)     │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │ Kubernetes  │  │ Grafana Cloud│  │  源码编译   │         │
│  │  (生产)     │  │  (SaaS)     │  │  (开发)     │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

安装方式对比 #

方式 适用场景 优点 缺点
Docker 开发/测试/生产 快速部署、环境一致 需要容器环境
二进制包 生产环境 完全控制、性能最优 配置复杂
包管理器 快速体验 安装简单 版本可能滞后
Kubernetes 云原生环境 弹性伸缩、高可用 配置复杂
Grafana Cloud 快速上手 无需维护 数据存储在云端

Docker 方式安装(推荐) #

快速启动 #

bash
docker run -d \
  --name=grafana \
  -p 3000:3000 \
  grafana/grafana:latest

完整配置启动 #

bash
docker run -d \
  --name=grafana \
  -p 3000:3000 \
  -e "GF_SECURITY_ADMIN_USER=admin" \
  -e "GF_SECURITY_ADMIN_PASSWORD=admin123" \
  -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-piechart-panel" \
  -v grafana-storage:/var/lib/grafana \
  grafana/grafana:latest

Docker Compose 方式 #

创建 docker-compose.yml 文件:

yaml
version: '3.8'

services:
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin123
      - GF_INSTALL_PLUGINS=grafana-clock-panel
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./provisioning:/etc/grafana/provisioning
      - ./dashboards:/var/lib/grafana/dashboards
    networks:
      - monitoring

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-storage:/prometheus
    networks:
      - monitoring

volumes:
  grafana-storage:
  prometheus-storage:

networks:
  monitoring:
    driver: bridge

启动服务:

bash
docker-compose up -d

Docker 环境变量说明 #

text
┌─────────────────────────────────────────────────────────────┐
│                    常用环境变量                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  安全配置:                                                  │
│  GF_SECURITY_ADMIN_USER          管理员用户名               │
│  GF_SECURITY_ADMIN_PASSWORD      管理员密码                 │
│  GF_SECURITY_SECRET_KEY          密钥                       │
│  GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION  禁用初始管理员  │
│                                                             │
│  服务器配置:                                                │
│  GF_SERVER_ROOT_URL              访问 URL                   │
│  GF_SERVER_DOMAIN                域名                       │
│  GF_SERVER_HTTP_PORT             HTTP 端口                  │
│                                                             │
│  数据库配置:                                                │
│  GF_DATABASE_TYPE                数据库类型                 │
│  GF_DATABASE_HOST                数据库地址                 │
│  GF_DATABASE_NAME                数据库名称                 │
│  GF_DATABASE_USER                数据库用户                 │
│  GF_DATABASE_PASSWORD            数据库密码                 │
│                                                             │
│  插件配置:                                                  │
│  GF_INSTALL_PLUGINS              预安装插件                 │
│  GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS  允许未签名插件   │
│                                                             │
│  日志配置:                                                  │
│  GF_LOG_MODE                     日志模式                   │
│  GF_LOG_LEVEL                    日志级别                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Linux 系统安装 #

Ubuntu/Debian #

bash
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana

启动服务:

bash
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

CentOS/RHEL #

bash
sudo tee /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

sudo yum install grafana

启动服务:

bash
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server

二进制安装 #

bash
wget https://dl.grafana.com/oss/release/grafana-10.0.0.linux-amd64.tar.gz
tar -zxvf grafana-10.0.0.linux-amd64.tar.gz
cd grafana-10.0.0

./bin/grafana-server

Kubernetes 安装 #

使用 Helm 安装 #

添加 Grafana Helm 仓库:

bash
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

创建 values.yaml 配置文件:

yaml
replicas: 1

persistence:
  enabled: true
  size: 10Gi
  storageClassName: standard

admin:
  user: admin
  password: admin123

service:
  type: LoadBalancer
  port: 80
  targetPort: 3000

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
      - name: Prometheus
        type: prometheus
        url: http://prometheus:9090
        access: proxy
        isDefault: true

dashboardProviders:
  dashboardproviders.yaml:
    apiVersion: 1
    providers:
      - name: 'default'
        orgId: 1
        folder: ''
        type: file
        disableDeletion: false
        editable: true
        options:
          path: /var/lib/grafana/dashboards

安装 Grafana:

bash
helm install grafana grafana/grafana -f values.yaml -n monitoring

使用 Operator 安装 #

yaml
apiVersion: integreatly.org/v1alpha1
kind: Grafana
metadata:
  name: grafana
  namespace: monitoring
spec:
  ingress:
    enabled: true
  config:
    auth:
      disable_login_form: false
    security:
      admin_user: admin
      admin_password: admin123
  dashboardLabelSelector:
    - matchExpressions:
        - key: app
          operator: In
          values:
            - grafana

Windows 安装 #

使用安装包 #

  1. 下载 Windows 安装包:https://grafana.com/grafana/download
  2. 运行安装程序
  3. 安装完成后,Grafana 会作为 Windows 服务自动启动

使用 Chocolatey #

powershell
choco install grafana

使用 Scoop #

powershell
scoop install grafana

macOS 安装 #

使用 Homebrew #

bash
brew install grafana
brew services start grafana

使用二进制包 #

bash
wget https://dl.grafana.com/oss/release/grafana-10.0.0.darwin-amd64.tar.gz
tar -zxvf grafana-10.0.0.darwin-amd64.tar.gz
cd grafana-10.0.0

./bin/grafana-server

配置文件详解 #

配置文件位置 #

text
┌─────────────────────────────────────────────────────────────┐
│                    配置文件位置                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Linux (包管理器安装):                                      │
│  /etc/grafana/grafana.ini                                   │
│                                                             │
│  Docker:                                                    │
│  /etc/grafana/grafana.ini                                   │
│  可通过环境变量覆盖                                          │
│                                                             │
│  Windows:                                                   │
│  C:\Program Files\GrafanaLabs\grafana\conf\grafana.ini      │
│                                                             │
│  macOS (Homebrew):                                          │
│  /usr/local/etc/grafana/grafana.ini                         │
│                                                             │
│  二进制包:                                                  │
│  <安装目录>/conf/grafana.ini                                │
│  或 <安装目录>/conf/custom.ini                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

主要配置项 #

ini
[server]
http_addr = 0.0.0.0
http_port = 3000
domain = localhost
root_url = http://localhost:3000/

[database]
type = sqlite3
path = grafana.db

[security]
admin_user = admin
admin_password = admin
secret_key = SW2YcwTIb9zpOOhoPsMm

[auth]
disable_login_form = false

[auth.anonymous]
enabled = false

[users]
allow_sign_up = false
auto_assign_org = true
auto_assign_org_role = Viewer

[alerting]
enabled = true
execute_alerts = true

[plugins]
allow_loading_unsigned_plugins =

[log]
mode = console
level = info

数据库配置 #

text
┌─────────────────────────────────────────────────────────────┐
│                    数据库配置选项                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  SQLite (默认):                                             │
│  [database]                                                 │
│  type = sqlite3                                             │
│  path = /var/lib/grafana/grafana.db                         │
│                                                             │
│  MySQL:                                                     │
│  [database]                                                 │
│  type = mysql                                               │
│  host = mysql:3306                                          │
│  name = grafana                                             │
│  user = grafana                                             │
│  password = password                                        │
│                                                             │
│  PostgreSQL:                                                │
│  [database]                                                 │
│  type = postgres                                            │
│  host = postgres:5432                                       │
│  name = grafana                                             │
│  user = grafana                                             │
│  password = password                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

访问 Grafana #

首次登录 #

text
┌─────────────────────────────────────────────────────────────┐
│                    首次登录信息                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  访问地址:                                                  │
│  http://localhost:3000                                      │
│                                                             │
│  默认账号:                                                  │
│  用户名:admin                                               │
│  密码:admin                                                 │
│                                                             │
│  首次登录后需要修改密码                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

登录流程 #

text
┌─────────────────────────────────────────────────────────────┐
│                    登录流程                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   1. 打开浏览器,访问 http://localhost:3000                  │
│                                                             │
│   2. 输入用户名和密码                                        │
│      ┌─────────────────────────────────┐                    │
│      │  Username: [admin           ]   │                    │
│      │  Password: [admin           ]   │                    │
│      │         [ Log In ]              │                    │
│      └─────────────────────────────────┘                    │
│                                                             │
│   3. 首次登录提示修改密码                                     │
│      ┌─────────────────────────────────┐                    │
│      │  New Password: [          ]     │                    │
│      │  Confirm Password: [      ]     │                    │
│      │         [ Submit ]              │                    │
│      └─────────────────────────────────┘                    │
│                                                             │
│   4. 进入 Grafana 主界面                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

基础配置 #

修改管理员密码 #

通过命令行重置密码:

bash
grafana-cli admin reset-admin-password <new-password>

Docker 环境:

bash
docker exec -it grafana grafana-cli admin reset-admin-password <new-password>

配置匿名访问 #

ini
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer

配置 SMTP 邮件 #

ini
[smtp]
enabled = true
host = smtp.example.com:587
user = your-email@example.com
password = your-password
skip_verify = false
from_address = grafana@example.com
from_name = Grafana

配置 LDAP 认证 #

ini
[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true

LDAP 配置文件 /etc/grafana/ldap.toml

toml
[[servers]]
host = "ldap.example.com"
port = 389
use_ssl = false
start_tls = false

bind_dn = "cn=admin,dc=example,dc=com"
bind_password = "password"

search_filter = "(cn=%s)"
search_base_dns = ["dc=example,dc=com"]

[servers.attributes]
name = "givenName"
surname = "sn"
username = "cn"
email = "email"

Provisioning(配置即代码) #

数据源自动配置 #

创建 provisioning/datasources/datasources.yaml

yaml
apiVersion: 1

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    url: http://prometheus:9090
    isDefault: true
    editable: true

  - name: InfluxDB
    type: influxdb
    access: proxy
    url: http://influxdb:8086
    database: telegraf
    user: admin
    secureJsonData:
      password: admin123

  - name: MySQL
    type: mysql
    access: proxy
    url: mysql:3306
    database: grafana
    user: root
    secureJsonData:
      password: root123

仪表板自动导入 #

创建 provisioning/dashboards/dashboards.yaml

yaml
apiVersion: 1

providers:
  - name: 'default'
    orgId: 1
    folder: ''
    folderUid: ''
    type: file
    disableDeletion: false
    updateIntervalSeconds: 30
    allowUiUpdates: true
    options:
      path: /var/lib/grafana/dashboards

将仪表板 JSON 文件放入 /var/lib/grafana/dashboards/ 目录。

插件自动安装 #

创建 provisioning/plugins/plugins.yaml

yaml
apiVersion: 1

apps:
  - type: grafana-piechart-panel
    enabled: true
  - type: grafana-clock-panel
    enabled: true
  - type: grafana-worldmap-panel
    enabled: true

插件管理 #

安装插件 #

bash
grafana-cli plugins install <plugin-id>

示例:

bash
grafana-cli plugins install grafana-piechart-panel
grafana-cli plugins install grafana-clock-panel
grafana-cli plugins install alexanderzobnin-zabbix-app

列出已安装插件 #

bash
grafana-cli plugins ls

更新插件 #

bash
grafana-cli plugins update <plugin-id>
grafana-cli plugins update-all

删除插件 #

bash
grafana-cli plugins uninstall <plugin-id>

常用插件推荐 #

text
┌─────────────────────────────────────────────────────────────┐
│                    常用插件推荐                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  面板插件:                                                  │
│  ├── grafana-piechart-panel    饼图面板                     │
│  ├── grafana-clock-panel       时钟面板                     │
│  ├── grafana-worldmap-panel    世界地图                     │
│  ├── grafana-polystat-panel    多状态面板                   │
│  └── volkovlabs-variable-panel 变量面板                     │
│                                                             │
│  数据源插件:                                                │
│  ├── alexanderzobnin-zabbix-app  Zabbix 集成               │
│  ├── redis-datasource            Redis 数据源               │
│  ├── simpod-json-datasource      JSON API 数据源            │
│  └── grafana-mongodb-datasource  MongoDB 数据源             │
│                                                             │
│  应用插件:                                                  │
│  ├── grafana-oncall-app         OnCall 值班管理             │
│  ├── grafana-incident-app       事件管理                    │
│  └── grafana-slo-app            SLO 管理                    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

验证安装 #

检查服务状态 #

bash
systemctl status grafana-server

检查端口监听 #

bash
netstat -tlnp | grep 3000

检查日志 #

bash
journalctl -u grafana-server -f

Docker 环境:

bash
docker logs -f grafana

健康检查 #

bash
curl http://localhost:3000/api/health

预期响应:

json
{
  "commit": "abc123",
  "database": "ok",
  "version": "10.0.0"
}

常见问题 #

端口被占用 #

bash
lsof -i :3000
kill -9 <PID>

或修改 Grafana 端口:

ini
[server]
http_port = 3001

权限问题 #

bash
sudo chown -R grafana:grafana /var/lib/grafana
sudo chown -R grafana:grafana /var/log/grafana

数据库连接失败 #

检查数据库配置和连接:

bash
mysql -h <host> -u <user> -p<password> <database>

插件安装失败 #

检查网络连接,或手动下载插件:

bash
wget https://grafana.com/api/plugins/<plugin-id>/versions/latest/download -O plugin.zip
unzip plugin.zip -d /var/lib/grafana/plugins/

下一步 #

安装完成后,接下来学习 仪表板基础,创建你的第一个监控仪表板!

最后更新:2026-03-29