FUMIの開発日記

ソフトウェア開発のメモ的なブログです

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クエリと似たようなシンタックスで書ける。

一旦こんな感じで、後でソースとかを追記する予定。