[備忘録] WebRTC Stats Collector Kohakuを触ってみた
TODO
- WebRTC Stats Collector Kohakuを触ってみる
- 基本的にUSE.md通りにやる(https://github.com/shiguredo/kohaku/blob/develop/doc/USE.md)
- 本当は全部Ansibleで書きたいけど、一旦手でやってみて次回以降はAnsibleに放り投げる
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 導入手順
リポジトリをクローン
$ 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を作成
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の設定
-
公式サイトを参考に、timescaledbと接続を行う
-
こちらから、参考用のGrafanaの設定ファイルをインポート
https://github.com/shiguredo/kohaku/blob/develop/dashboard/sora.json
うまくいけば、こんな感じで統計情報が見えるはず
補足
- kohakuのリポジトリに置いてあるGrafana dashboardはあくまでも参考用です。お好みに合わせてお使いください、とのことでした。
参考サイト
-
Install self-hosted TimescaleDB on Debian-based systems
https://docs.timescale.com/install/latest/self-hosted/installation-debian/#install-self-hosted-timescaledb-on-debian-based-systems -
Install on Debian or Ubuntu
https://grafana.com/docs/grafana/latest/installation/debian/ -
Set up TimescaleDB and Grafana
https://docs.timescale.com/timescaledb/latest/tutorials/grafana/installation/#connect-grafana-to-your-timescaledb-instance
Discussion