跳到主要内容

Grafana 安装部署

Grafana 默认监听 3000 端口。生产环境应使用 HTTPS 反向代理或 Ingress、持久化数据库、统一认证和受控 Secret;本地 SQLite 与默认管理员账号只适合短期实验。

1. 环境准备​

规划服务端口、持久化目录、反向代理域名、管理员初始化方式和数据源网络访问。单实例学习环境可使用 SQLite;多副本或生产环境使用 MySQL/PostgreSQL,不要共享 SQLite 文件。

2. 二进制安装​

从 Grafana 官方下载页 选择 Linux 发行包,并核对版本发布说明。以下以 amd64 为例,下载后先检查文件来源与校验信息,再部署到专用目录:

# 指定本次部署版本;生产升级前在预发验证插件、SSO 和数据源
GRAFANA_VERSION=11.5.2
# 下载对应 Linux amd64 二进制包,HTTP 错误会直接失败
curl -fLO "https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz"

下载完成后再解压并部署到安装目录:

# 解压到当前目录,保留安装包便于审计或回滚
tar -xzf "grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz"
# 创建安装目录并复制发行包内容;配置与数据应放到持久化位置
sudo install -d /opt/grafana
sudo cp -a "grafana-v${GRAFANA_VERSION}"/. /opt/grafana/

二进制包的默认配置文件为 conf/defaults.ini,不要直接修改它;将实际配置写到 conf/custom.ini 或通过环境变量注入。使用 systemd 时以专用用户运行并设置数据目录权限,服务启动命令以当前发布包说明为准。

# 创建不可登录的运行用户,以及配置、数据和日志目录
sudo useradd --system --no-create-home --shell /usr/sbin/nologin grafana
sudo install -d -o grafana -g grafana /etc/grafana /var/lib/grafana /var/log/grafana

# 复制示例配置作为实际配置起点;不要修改 /opt/grafana/conf/defaults.ini
sudo cp /opt/grafana/conf/sample.ini /etc/grafana/grafana.ini

# 允许运行用户读取安装目录,并写入数据、插件和日志目录
sudo chown -R grafana:grafana /opt/grafana /var/lib/grafana /var/log/grafana

3. Systemd 部署​

创建专用运行用户和数据目录后,用 systemd 托管 Grafana。实际二进制路径以发行包目录为准:

/etc/systemd/system/grafana.service
[Unit]
# 网络就绪后再启动,避免启动时外部数据库和 SSO 依赖不可达
After=network-online.target
Wants=network-online.target

[Service]
# 运行用户只能读配置并写数据目录
User=grafana
Group=grafana
# 从安装目录启动,并使用 /etc 下的实际配置文件
WorkingDirectory=/opt/grafana
ExecStart=/opt/grafana/bin/grafana server --homepath=/opt/grafana --config=/etc/grafana/grafana.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
# 使 service 文件生效、启动服务并查看最近日志
sudo systemctl daemon-reload
sudo systemctl enable --now grafana
sudo systemctl status grafana --no-pager
sudo journalctl -u grafana -n 100 --no-pager

4. Docker 部署​

docker-compose.yml
services:
grafana:
image: grafana/grafana:11.5.2
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:?set_in_deployment_environment}
GF_USERS_ALLOW_SIGN_UP: "false"
GF_AUTH_ANONYMOUS_ENABLED: "false"
volumes:
- grafana-data:/var/lib/grafana
- ./provisioning:/etc/grafana/provisioning:ro

volumes:
grafana-data:
# 将管理员密码仅注入当前启动环境;生产改用部署平台的 Secret
export GRAFANA_ADMIN_PASSWORD='use-a-secret-manager-in-production'
# 后台启动 Grafana 容器并创建持久化数据卷
docker compose up -d
# 调用健康检查确认 HTTP 服务已能响应
curl --fail http://127.0.0.1:3000/api/health

5. Kubernetes 部署​

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm upgrade --install grafana grafana/grafana \
--namespace monitoring --create-namespace

生产环境使用 values 文件配置持久卷、外部数据库、Ingress、OIDC、资源 requests/limits、NetworkPolicy 和 Admin Secret。详细实践见 Grafana Kubernetes 部署。

6. 初始化配置​

首次登录后立即轮换初始化管理员凭据,创建 Team 和 Folder,接入 SSO,再以 Provisioning 或 Terraform 管理数据源和 Dashboard。不要把生产数据源 Token、SMTP 密码或 Webhook 凭据直接写入 Dashboard JSON。