Использование плагина BigQuery в Grafana - PullRequest
2 голосов
/ 21 января 2020

У меня есть некоторые проблемы с форматом файла обеспечения. У меня есть некоторый файл учетной записи службы, который выглядит следующим образом

{
  "type": "service_account",
  "project_id": "my-project",
  "private_key_id": "XXXXX_my_private_key_id_XXXXXXX",
  "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXX_my_private_key___\nXXXXX_another_line_here_XXXXX\nXXXXXX_final_line_XXXXXX==\n-----END PRIVATE KEY-----\n",
  "client_email": "my-project@company.iam.gserviceaccount.com",
  "client_id": "123456",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-project%40company.iam.gserviceaccount.com"
}

И файл обеспечения, который я вставил в /etc/grafana/provisioning/datasources/all.yaml, который выглядит следующим образом

apiVersion: 1

# list of datasources to insert/update depending
# what's available in the database
datasources:
  # <string, required> name of the datasource. Required
- name: bigquery-project
  type: doitintl-bigquery-datasource
  access: proxy
  isDefault: true
  jsonData:
  authenticationType: jwt
  clientEmail: my-project@company.iam.gserviceaccount.com
  defaultProject: my-default-project
  tokenUri: https://accounts.google.com/o/oauth2/token
  secureJsonData:
  privateKey: "-----BEGIN PRIVATE KEY-----\nXXXXXXX_my_private_key___\nXXXXX_another_line_here_XXXXX\nXXXXXX_final_line_XXXXXX==\n-----END PRIVATE KEY-----\n"
  version: 2
  readOnly: false

Но когда я нажал на кнопку Сохранить и тест я получил некоторые ошибки. Я думаю, что я отформатировал файл инициализации. Я попытался загрузить файл учетной записи службы, используя пользовательский интерфейс, и тест прошел, я смог запросить BQ. Однако, когда я сделал это, я не смог найти ни одного файла в /etc/grafana/provisioning/datasources, чтобы получить и пример его.

Я выполняю пользовательское изображение Grafana в docker контейнере

### file system hierarchy of the project
.
├── Dockerfile
└── provisioning
    ├── dashborads
    └── datasources
        └── all.yaml
### Docker file 
ARG GRAFANA_VERSION=6.5.3
FROM grafana/grafana:$GRAFANA_VERSION
ENV GF_AUTH_DISABLE_LOGIN_FORM "true"
ENV GF_AUTH_ANONYMOUS_ENABLED "true"
ENV GF_AUTH_ANONYMOUS_ORG_ROLE "Admin"
ENV GF_INSTALL_PLUGINS "doitintl-bigquery-datasource 1.0.4"

Способ запуска контейнера

docker run -d -p 3000:3000 -v $(pwd)/provisioning:/etc/grafana/provisioning massy/custom-grafana

Я предоставляю файл инициализации через том.

Что не так с файлом инициализации? Когда мы добавляем источник данных в Grafana, не обновляется ли файл инициализации автоматически? (если не будет создано, то это будет?) Как я могу получить логи при тестировании этого плагина bigquery?

Редактировать

Когда я пытался добавить фиктивный SQL запрос в разделе "новый дашборд" вот что я получаю

 lvl=eror msg="Failed to get access token" logger=data-proxy-log error="private key should be a PEM or plain PKCS1 or PKCS8; parse error: asn1: structure error: tags don't match (16 vs {class:0 tag:28 length:110 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} pkcs1PrivateKey @2"
t=2020-01-22T10:02:18+0000 lvl=info msg=Requesting logger=data-proxy-log url=https://www.googleapis.com/bigquery/v2/projects/undefined/queries
t=2020-01-22T10:02:18+0000 lvl=info msg="Request Completed" logger=context userId=0 orgId=1 uname= method=POST path=/api/datasources/proxy/1/bigquery/v2/projects/undefined/queries status=401 remote_addr=172.17.0.1 time_ms=55 size=304 referer="http://localhost:3000/dashboard/new?panelId=2&edit&fullscreen&orgId=1&gettingstarted"

Я сделал docker logs для контейнера

1 Ответ

2 голосов
/ 22 января 2020

Это правильный формат для файла обеспечения

apiVersion: 1

datasources:
- name: bigquery-project
  type: doitintl-bigquery-datasource
  access: proxy
  isDefault: true
  jsonData:
     authenticationType: jwt
     clientEmail: my-project@company.iam.gserviceaccount.com
     defaultProject: my-default-project
     tokenUri: https://accounts.google.com/o/oauth2/token
  secureJsonData:
     privateKey: |
        -----BEGIN PRIVATE KEY-----
        XXXXXXX_my_private_key___
        XXXXX_another_line_here_XXXXX
        XXXXXX_final_line_XXXXXX
        -----END PRIVATE KEY-----
  version: 2
  readOnly: false

Существует разница между двумя файлами обеспечения:

Файл на GitHub имеет правильный формат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...