😎

[備忘録] WebRTC Stats Collector Kohakuを触ってみた

2022/03/09に公開

TODO

Versions

  • Sora v2021.2.1
  • go version go1.17.8 linux/amd64
  • psql (PostgreSQL) 14.2 (Ubuntu 14.2-1.pgdg18.04+1)
  • timescaledb 2.6.0

Data flow

Sora SDK -> stats over DataChannel -> Sora -> StatsWebhook -> kohaku -> Timescaledb <- Grafana

Steps

  • timescaledbでstats用のDBを立てる
  • kohakuをインストール
  • kohaku/script/schema.sqlよりtableを作成
  • Soraのconfの設定を変更して、timescaledbに情報を飛ばす
  • configを設定して、kohakuを起動
  • Grafanaを用意してtimescaledbと接続

soraのconfの設定を変更

stats_webhook_urlを kohakuのURLに設定

## ユーザーエージェントの統計情報を取得しサーバに溜め込みます
user_agent_stats = true

## 統計コレクターの URL を指定します
stats_collector_url = http://your-db:5890/collector

Kohaku 導入手順

リポジトリをクローン

https://github.com/shiguredo/kohaku

$ git clone git@github.com:shiguredo/kohaku.git

makeする

$ make
go build -o bin/kohaku cmd/kohaku/main.go
go: downloading github.com/jackc/pgx/v4 v4.15.0
go: downloading github.com/rs/zerolog v1.26.1
go: downloading github.com/jackc/pgconn v1.11.0
go: downloading github.com/jackc/pgproto3/v2 v2.2.0
go: downloading github.com/jackc/puddle v1.2.1
go: downloading github.com/doug-martin/goqu/v9 v9.18.0
go: downloading github.com/gin-gonic/gin v1.7.7
go: downloading github.com/go-playground/validator/v10 v10.10.0
go: downloading github.com/goccy/go-yaml v1.9.5
go: downloading github.com/jackc/pgtype v1.10.0
go: downloading golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd
go: downloading gopkg.in/natefinch/lumberjack.v2 v2.0.0
go: downloading github.com/jackc/chunkreader/v2 v2.0.1
go: downloading github.com/jackc/pgio v1.0.0
go: downloading github.com/jackc/pgpassfile v1.0.0
go: downloading github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b
go: downloading golang.org/x/crypto v0.0.0-20220128200615-198e4374d7ed
go: downloading golang.org/x/text v0.3.7
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.14
go: downloading github.com/golang/protobuf v1.5.2
go: downloading github.com/ugorji/go/codec v1.2.6
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/go-playground/universal-translator v0.18.0
go: downloading github.com/leodido/go-urn v1.2.1
go: downloading golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
go: downloading golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27
go: downloading google.golang.org/protobuf v1.27.1
go: downloading github.com/go-playground/locales v0.14.0
go: downloading github.com/fatih/color v1.13.0
go: downloading github.com/mattn/go-colorable v0.1.12

テーブルをschemaから作成

リポジトリのscriptディレクトリにsqlファイルがあるので、そちらを元にtableを作成

https://github.com/shiguredo/kohaku/tree/develop/script
psql -U username -d dbname -f script/schema.sql

config.yamlを設定後、kohaku起動

$ ./bin/kohaku -c config.yaml
{"level":"debug","time":"2022-03-09T09:36:33+09:00","message":"config file path: config.yaml"}
2022-03-09 00:36:33.173169Z [INFO] FinishInitProcess
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] POST   /collector                --> github.com/shiguredo/kohaku.(*Server).collector-fm (4 handlers)
[GIN-debug] POST   /health                   --> github.com/shiguredo/kohaku.(*Server).health-fm (3 handlers)

おそらくこのログが見えていれば、ある程度成功

2022-03-09 02:25:20.105703Z [INFO]  address=127.0.0.1:36222 len=4862 method=POST path=/collector status=204
2022-03-09 02:25:25.102335Z [INFO]  address=127.0.0.1:36222 len=4866 method=POST path=/collector status=204
2022-03-09 02:25:30.108766Z [INFO]  address=127.0.0.1:36222 len=4872 method=POST path=/collector status=204
2022-03-09 02:25:35.108898Z [INFO]  address=127.0.0.1:36222 len=4872 method=POST path=/collector status=204

Grafanaの設定

うまくいけば、こんな感じで統計情報が見えるはず

補足

  • kohakuのリポジトリに置いてあるGrafana dashboardはあくまでも参考用です。お好みに合わせてお使いください、とのことでした。

参考サイト

Discussion