宮廷プロファイラの紹介
リポジトリ
https://gitlab.com/RenonT1805/kyuuteiprofiler
devcontainerを用意しているので、
- VSCodeで「コンテナーでフォルダを開く」
- .env.templateの中身を変更して.envにリネーム
go run cmd/main/main.go
で動きます。
DiscordBotなので、
https://discord.com/developers/applications
で、TOKENを発行する必要があります。
権限はCommandとAdministratorを渡しておけば大丈夫です。
概要
ISUCON用に作成したpprofのプロファイル結果をS3にアップロードするDiscordBotです。
ISUCON当初はプロファイルの画像をDiscord上にあげていましたが、
将来的にもっと詳細なプロファイルを取得したいのと、Webページでいろいろ見れるようにしたいのでS3にアップする方針にしました。
(イメージは以下のサイト。ISUCON12,13優勝チームが作ったもの)
https://pprotein.isucon13.to-hutohu.com/#/group/2023-11-25_08-07-43.526172/index/
使い方
宮廷プロファイラには以下の機能があります。準に説明していきます。
- チャンネルの登録機能 (register)
- チャンネルの設定機能 (hots,https)
- 各種プロファイル機能 (profile, heap, threadcreate, goroutine, block, mutex, trace)
registerコマンド
チャンネルを宮廷プロファイラーに登録します。
以降、登録したチャンネルでのみ宮廷プロファイラは有効になります。
(複数のチャンネルを登録することもできます。)
/register
hostコマンド
プロファイルを取得する対象のホストを指定します。
パラメータを指定して実行すると、Hostを登録し、
パラメータを指定せずに実行すると現在登録されているHostを返します
httpsコマンド
プロファイルを取得する際、httpsを使用するかどうかをTrue/Falseで設定します。
Falseならhttpが使用されます。
各種プロファイルコマンド (profile, heap, threadcreate, goroutine, block, mutex, trace)
各種プロファイルを取得し、S3にアップロードします。
種類については以下を参照してください。
https://github.com/golang/go/wiki/CustomPprofProfiles
将来の展望
将来的にはSlowQueryや、nginxの設定ファイルなどもいい感じにできるようにしたい。
また、S3にアップロードしているので、Webページからインタラクティブな感じでプロファイルを見れるようにしたい。
おわり
来年こそはISUCON上位獲ります