Stackdriver
仕事でStackdriverのCustom metricsを使いそうになったので作ったやつ.実際作った直後に使うことになった(というか使うことにした).
みたままのやつで,為替のリアルタイムなレートを取得して,買値と売値をカスタムメトリクスとして Stackdriver にばかすか突っ込んでいる.いまは三つのペアだけのなので,秒間3〜5件ぐらいのデータ量.Quotaは引き上げました.
Stackdriverのcustom metrics,APIがデータの配列を受ける形式だったから,最初は5秒分のデータをまとめてガッと送ろうとしたのだけれど,同じ指標が複数回登場するとだめ,と怒られた.`Duplicate TimeSeries encountered ...` みたいなエラーだった.
それぞれの指標について,配列で値と時刻のセットを持っているので,各タイムレンジで同じ指標が複数回登場したらマージするような処理に変えたところ,今度は「値と時刻のペアは配列で送るけど1個しかいれちゃだめ」みたいなエラーが起きて,まじかよ,そんなことってあるのか,頼むよこっちは困ってるんだ,という気持ちになった.
せっかく構造化したデータでやりとりしてるんだから,しっかりしてほしい.(ドキュメント読め,みたいな指摘は当然あると思っていて,データフォーマットだけ見て早合点してはいけない,というのが教訓です)(そんなばかな)(しっかりしてくれ)
ところで
Reading metrics explains how to retrieve time series data from custom and built-in metrics using the Monitoring API. You can also use metric data in charts and alerts.
Using Custom Metrics | Stackdriver Monitoring | Google Cloud Platform
ってあるけど Alert 設定できないきがする.何がおかしいんだろ.
なんで技術系のブログではなくこちらに書いたかというと,実際のコードなど他の人が読んで得しそうなことを書くつもりがなかったからです.とにかく私から言えることといたしましてはドキュメントまじで読みにくいので頑張って下さいということです.認証はおもしろくて,ローカルの場合は gcloud コマンドの認証情報があればそれを使います.GCEの環境ではメタデータかなんかで勝手にやってくれるので気にしなくても大丈夫です*1.2016年っぽい.旧時代の人間だから一生懸命認証情報を手でちまちま設定する方法探してた.
追記: GCEのメトリクスを収集してるプロジェクトだとAlert設定できた.Custom metricsしか収集してないとAlert作成フローに入れないっぽい.後でエラーレポート出しておこうという気持ちです.