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 安装 #
使用安装包 #
- 下载 Windows 安装包:https://grafana.com/grafana/download
- 运行安装程序
- 安装完成后,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