Skip to content

Grafana

Grafana 是瑞典程序员 Torkel Ödegaard 开发的开源数据可视化与监控平台,首个版本于 2014 年发布,使用 AGPL-3.0 许可;
Torkel 随后成立 Grafana Labs 美国公司将 Grafana 项目和相关技术商业化并主导后续开发。

安装

容器安装

shell
docker pull grafana/grafana-oss:11.6.0-ubuntu

export GF_PATHS_DATA=/d/data/grafana
export GF_PATHS_LOGS=/d/log/grafana
export GF_PATHS_CONFIG_PARENT=/d/etc/grafana

mkdir -p $GF_PATHS_DATA
mkdir -p $GF_PATHS_LOGS
mkdir -p $GF_PATHS_CONFIG_PARENT

chmod -R 777 $GF_PATHS_DATA $GF_PATHS_LOGS

#
# dump original configuration then modify it
#
docker run \
-it \
--rm \
-p 3000:3000 \
--name=grafana \
grafana/grafana-oss:11.6.0-ubuntu

test -f $GF_PATHS_CONFIG_PARENT/grafana.ini || \
docker exec -it grafana cat /etc/grafana/grafana.ini > $GF_PATHS_CONFIG_PARENT/grafana.ini

#
# or create it from scratch
#
cat << EOF > $GF_PATHS_CONFIG_PARENT/grafana.ini
app_mode = production

[paths]
data = /data/g
logs = /data/log/grafana

...
EOF

docker run \
-d \
--restart unless-stopped \
-p 3000:3000 \
--name=grafana \
-v $GF_PATHS_DATA:/var/lib/grafana \
-v $GF_PATHS_LOGS:/var/log/grafana \
-v $GF_PATHS_CONFIG_PARENT/grafana.ini:/etc/grafana/grafana.ini \
grafana/grafana-oss:11.6.0-ubuntu

macOS 二进制安装

shell
curl -O https://dl.grafana.com/oss/release/grafana-11.6.0.darwin-amd64.tar.gz
tar -zxvf grafana-11.6.0.darwin-amd64.tar.gz
cd grafana-v11.6.0
./bin/grafana server --config conf/defaults.ini

默认路径相关配置

  • 容器环境只能通过覆盖环境变量来自定义 ;
  • 非容器环境可通过修改主配置文件 conf/grafana.ini 来自定义 ;
shell
GF_PATHS_CONFIG=/etc/grafana/grafana.ini
GF_PATHS_DATA=/var/lib/grafana
GF_PATHS_HOME=/usr/share/grafana
GF_PATHS_LOGS=/var/log/grafana
GF_PATHS_PLUGINS=/var/lib/grafana/plugins
GF_PATHS_PROVISIONING=/etc/grafana/provisioning

常用监控面板

使用方法

  • Home - Dashboards - Import dashboard
  • Find and import dashboards for common applications at, click 'Load'

常用监控面板

常用配置

自定义域名和使用 HTTPS

一些 SaaS 提供 免费域名 SSL 证书,以 Cloudflare 为例

  • SSL/TLS - Origin Sever - Create Certificate, save two files foo.pem and foo.key
  • Rules - Configuration Rules, Create rule, SSL(optional) - Select SSL/TLS encryption mode - Full

https://grafana.com/docs/grafana/latest/setup-grafana/set-up-https/

自定义 Prometheus 面板顶部过滤 label / nodename

默认以容器方式安装启动 node-exporter 并且使用非 host 模式 network 时, Prometheus + grafana 面板 Linux/Node Exporter Full ID=1860 显示的 nodename 是容器的 ID 而不是宿主机的 hostname。

下面示例如何新增 metric host_info, 和 host_name 、 host_ip 两个 label 。

步骤

  • 使用 ansible template 动态生成每个待采集 node 的 /etc/node_exporter/textfile_collector/host_info.prom
  • 通过 ansible playbook 安装 node-exporter 、 生成 host_info.prom 、自定义启动参数
  • 生成采集自定义标签文本文件 /etc/node_exporter/textfile_collector/host_info.prom
  • node-exporter 增加启动参数 --collector.textfile.directory=/etc/node_exporter/textfile_collector

grafana 配置变量

txt
General

  Name: host_ip
  Label: host_ip

Query options

  Query type: Label values
  Label: host_ip
  Metric: host_info
  Label filters: job=$job

Released under the CC-BY-NC-4.0