目录

问题定位

问题解决

步骤1-Grafana CLI工具使用

步骤2-下载grafana-clickhouse-datasource插件

 步骤3-修改Grafana服务启动脚本

步骤4-修改docker-compose.yml文件重启docker服务

参考文献:


问题定位

        CVAT的分析选项界面(Analytics界面)依托于cvat_grafana的docker服务,如果你去看该服务时就很容易能够发现该服务的启动是通过grafana-server start方式执行的,具体可查看启动脚本run.sh。

Grafana安装时间插件 grafana 插件_grafana

         如下,在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

Grafana安装时间插件 grafana 插件_grafana_02

问题解决

步骤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版本即可。

Grafana安装时间插件 grafana 插件_启动脚本_03

 步骤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

参考文献:

1、Grafana CLI | Grafana documentation