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-ubuntumacOS 二进制安装
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'
常用监控面板
- Linux/Node Exporter Full https://grafana.com/grafana/dashboards/1860-node-exporter-full/
- cAdvisor https://grafana.com/grafana/dashboards/179-docker-prometheus-monitoring/
- 注: prometheus 数据源名称必须为 Prometheus ,注意首字母大写,否则会提示错误
data source _Prometheus_ not found; 宿主机 scraper job 必须名为node-exporter。
- 注: prometheus 数据源名称必须为 Prometheus ,注意首字母大写,否则会提示错误
- Kubernetes Cluster https://grafana.com/grafana/dashboards/6417-kubernetes-cluster-prometheus/
- pod https://grafana.com/grafana/dashboards/315-kubernetes-cluster-monitoring-via-prometheus/
- ElasticSearch https://grafana.com/grafana/dashboards/14191-elasticsearch-overview/
- PostgreSQL https://grafana.com/grafana/dashboards/19152-postgresql-database/
- Redis https://grafana.com/grafana/dashboards/2751-prometheus-redis/
常用配置
自定义域名和使用 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