Google App EngineにGo言語でHTTPサーバーを立てて、BigQueryにログを保存してみた。
この記事について
Google App Engineに立てたHTTPサーバからBigQueryにログを保存するまでの手順メモです。
やりたいこと
アプリのログをHTTP経由でBigQueryに保存していきたい。 BigQuery安いらしいので。
開発環境
Ubuntu 16.04 Go 1.8 Python 3.5
Google Cloud SDKをインストール
まずは公式のドキュメントにしたがって、Google Cloud SDKをインストールする。 https://cloud.google.com/sdk/docs/quickstart-debian-ubuntu
dev_appserver.pyが使えるようにPATHを通す。 以下を~/.bashrcに追記する。
# settings for Google Cloud SDK export PATH=/usr/lib/google-cloud-sdk/bin/:$PATH
GAE + Goの動作検証
GAE + Goのチュートリアル Quickstart for Go App Engine Standard Environment | App Engine standard environment for Go | Google Cloud Platform で、
dev_appserver.py app.yaml
を実施したら以下のエラーが出た。
This action requires the installation of components: [app-engine- python, app-engine-go]
Ubuntuの場合は、apt-getで追加のSDKコンポーネントをインストールする。
https://cloud.google.com/sdk/downloads#apt-get
sudo apt-get install google-cloud-sdk-app-engine-go google-cloud-sdk-app-engine-python
もう一度開発サーバを立ててみる。
dev_appserver.py app.yaml
localhost:8080にブラウザでアクセスしてhello, worldが出ていればOK
HTTPサーバーを立てる
新しくプロジェクトを作成する。 app.yamlのシンタックスは以下を参照
https://cloud.google.com/appengine/docs/standard/go/config/appref httprouterを使ってルーティングする。 http.ListenAndServeは使えないので、http.Handleを使う。
BigQueryを使う
streamingのライブラリを使った。 “github.com/rounds/go-bqstreamer”
アプリのIDが必要になるので、GoogleCloudPlatformでアプリケーションIDを控えておく。 事前にBigQueryでdatasourceとTableとSchemaを作成しておく。 ApplicationId、DataSource名、Table名を入力し、実行するとBigQueryにデータが保存される。
Streamingのデータはプレビューできないので、クエリを発行する。 SQLクエリと似たようなシンタックスで書ける。
一旦こんな感じで、後でソースとかを追記する予定。