目录
问题定位
问题解决
步骤1-Grafana CLI工具使用
步骤2-下载grafana-clickhouse-datasource插件
步骤3-修改Grafana服务启动脚本
步骤4-修改docker-compose.yml文件重启docker服务
参考文献:
问题定位
CVAT的分析选项界面(Analytics界面)依托于cvat_grafana的docker服务,如果你去看该服务时就很容易能够发现该服务的启动是通过grafana-server start方式执行的,具体可查看启动脚本run.sh。
如下,在run.sh启动脚本中grafana-clickhouse-datasource插件的安装是通过URL请求的方式进行的,我遇到的问题系网络环境问题导致无法拉取https://github.com/grafana/clickhouse-datasource/releases/download/v2.0.7/grafana-clickhouse-datasource-2.0.7.linux_amd64.zip。
问题解决
步骤1-Grafana CLI工具使用
Grafana CLI是一个与Grafana服务器捆绑在一起的小型可执行文件。它可以在Grafana服务器运行的同一台机器上执行。Grafana CLI具有插件和管理命令,以及全局选项。本例中只涉及以下几种方法(更详细的使用说明参考Grafana CLI | Grafana documentation):
# 查看工具帮助
grafana cli -h
# 指定本地安装目录
# --pluginsDir为本地Grafana实例存储插件的路径。如在默认目录(“/var/lib/grafana/plugins”)[$GF_plugin_DIR]之外的其他位置安装、更新或删除插件,请使用此选项。
grafana cli --pluginsDir "/var/lib/grafana/devplugins" plugins install <plugin-id>
# 指定URL安装
# --pluginUrl值允许您从本地URL下载包含插件的.zip文件,而不是从默认的Grafana源下载
grafana cli --pluginUrl https://company.com/grafana/plugins/<plugin-id>-<plugin-version>.zip plugins install <plugin-id>
# 指定仓安装
# --repo值允许您从默认Grafana repo以外的存储库下载、安装或更新插件。
grafana cli --repo "https://example.com/plugins" plugins install <plugin-id>
步骤2-下载grafana-clickhouse-datasource插件
插件可直接到如下去官网下载,下载最新的3.1.0版本即可。
步骤3-修改Grafana服务启动脚本
启动脚本做如下修改。完整的启动脚本也可在此处下载(直接下载压缩包解压后覆盖components\analytics\grafana文件夹可不做步骤3,步骤4中直接复制修改):CVAT项目Grafana服务clickhouse-datasource插件与启动脚本资源。
if [ ! -z "${GF_INSTALL_PLUGINS}" ]; then
OLDIFS=$IFS
IFS=','
for plugin in ${GF_INSTALL_PLUGINS}; do
IFS=$OLDIFS
if [[ $plugin =~ .*\;.* ]]; then
pluginUrl=$(echo "$plugin" | cut -d';' -f 1)
pluginInstallFolder=$(echo "$plugin" | cut -d';' -f 2)
else
grafana-cli --pluginsDir "${GF_PATHS_PLUGINS}" plugins install ${plugin}
fi
done
fi
步骤4-修改docker-compose.yml文件重启docker服务
根据下述方式进行配置cvat_grafana的挂载路径并重新启动服务,即可。
cvat_grafana:
image: grafana/grafana-oss:9.3.6
container_name: cvat_grafana
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_BASIC_ENABLED=false
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_AUTH_DISABLE_LOGIN_FORM=true
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=grafana-clickhouse-datasource
- GF_SERVER_ROOT_URL=http://${CVAT_HOST:-localhost}/analytics
- GF_INSTALL_PLUGINS=https://github.com/grafana/clickhouse-datasource/releases/download/v2.0.7/grafana-clickhouse-datasource-2.0.7.linux_amd64.zip;grafana-clickhouse-datasource
- GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/var/lib/grafana/dashboards/all_events.json
volumes:
- ./components/analytics/grafana/dashboards/:/var/lib/grafana/dashboards/:ro
- ./components/analytics/grafana/run.sh/:/run.sh
- ./components/analytics/grafana/grafana-clickhouse-datasource:/var/lib/grafana/plugins/grafana-clickhouse-datasource
entrypoint:
- sh
- -euc
- |
mkdir -p /etc/grafana/provisioning/datasources
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
apiVersion: 1
datasources:
- name: 'ClickHouse'
type: 'grafana-clickhouse-datasource'
isDefault: true
jsonData:
defaultDatabase: cvat
port: 9000
server: clickhouse
username: user
tlsSkipVerify: false
secureJsonData:
password: user
editable: true
EOF
mkdir -p /etc/grafana/provisioning/dashboards
cat <<EOF > /etc/grafana/provisioning/dashboards/dashboard.yaml
apiVersion: 1
providers:
- name: cvat-logs
type: file
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/dashboards
foldersFromFilesStructure: true
EOF
exec /run.sh
networks:
cvat:
aliases:
- grafana