🔑
dora-team/fourkeysを使ってFour Keysの計測環境を構築する
dora-team/fourkeysを利用して、GCP 上に Four Keys を計測する環境を構築します。
GCP や Terraform を使うのは初めてです。リポジトリ内の Installation guide に沿って、環境を構築しています。
始める前に
- GitHub 上でリポジトリを Fork
- Google Cloud プロジェクトを作成
- プロジェクトで自分にオーナーロールを割り当てる
- ローカルマシンに Google Cloud CLI と Terraform をインストール
Terraform でデプロイする
Cloud Build を使用して、ダッシュボード・イベントハンドラーのコンテナをビルドしてプッシュする。
export PROJECT_ID="YOUR_PROJECT_ID"
gcloud builds submit dashboard --config=dashboard/cloudbuild.yaml --project $PROJECT_ID && \
gcloud builds submit event-handler --config=event-handler/cloudbuild.yaml --project $PROJECT_ID
Cloud Build を使用して、GitHub のパーサーのコンテナをビルドしてプッシュする。
gcloud builds submit bq-workers --config=bq-workers/parsers.cloudbuild.yaml --project $PROJECT_ID --substitutions=_SERVICE=github
terraform.tfvars
を編集し、必要な変数に値をセットする。
- project_id: GCP 上で作成したプロジェクトの ID
- region: asia-northeast1
- bigquery_region: US
- parsers: ["github"]
変数の説明やデフォルト値は variables.tf
を参照すれば良い。
example
ディレクトリで次のコマンドを実行
terraform init
terraform plan
Plan: 1 to add, 0 to change, 0 to destroy.
╷
│ Error: Invalid provider configuration
│
│ Provider "registry.terraform.io/hashicorp/google" requires explicit configuration. Add a provider block to the root module and configure the provider's required arguments as described in the provider documentation.
│
╵
╷
│ Error: Attempted to load application default credentials since neither `credentials` nor `access_token` was set in the provider block. No credentials loaded. To use your gcloud credentials, run 'gcloud auth application-default login'
│
│ with provider["registry.terraform.io/hashicorp/google"],
│ on <empty> line 0:
│ (source code not available)
│
│ google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information
╵
エラーメッセージに書かれている URL にアクセスして gcloud CLI の認証する。
terraform plan
terraform apply
Terraform でデプロイが完了
モック用のデータを作成
export WEBHOOK=`gcloud run services list --project $PROJECT_ID | grep event-handler | awk '{print $4}'`
export SECRET=`gcloud secrets versions access 1 --secret=event-handler --project $PROJECT_ID`
python3 data-generator/generate_data.py --vc_system=github
40 changes successfully sent to event-handler
bq query --project_id $PROJECT_ID 'SELECT * FROM four_keys.events_raw WHERE source = "githubmock";'
+-------------------+------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------+------------------+------------+
| event_type | id | metadata | time_created | signature | msg_id | source |
+-------------------+------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------+------------------+------------+
| deployment_status | c9bbf5c828c0c0a8596c193fd4a715361f4627a7 | {"deployment_status": {"updated_at": "2023-06-16 10:37:54.579162", "id": "c9bbf5c828c0c0a8596c193fd4a715361f4627a7", "state": "success"}, "deployment": {"sha": "06a8c11bc631ae17168fa3d227bf549f8b735f61"}} | 2023-06-16 10:37:54 | sha1=41acf5f9900e51c5f6b4115cd9c40da168d66085 | 8404948585377987 | githubmock |
+-------------------+------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+-----------------------------------------------+------------------+------------+
ダッシュボードを確認
fourkeys-grafana-dashboard
というダッシュボード用の Cloud Run に URL が記載されているので、アクセスした管理画面のメニュー Home > Dashboards > Four Keys
でダッシュボードを表示
おわりに
すんなりとインストールすることができました。
GitHub から生のデータを取得し、コードと合わせて、Four Keys の計測ルールを解析したいです。
Discussion