「ISUCON」は、LINE株式会社の商標または登録商標です。
本リポジトリはprivate-isuのベンチマーカーをAWS Lambdaで動かすためのリポジトリです。
チーム情報をスプレッドシートで管理し、Lambda関数URLをcurlで叩くことでベンチマーカーを動かし、その結果をMackerelに送信します。
This is not an official product.
- private-isu/benchmarker/をビルドし、そのファイルをbinディレクトリに配置する。
GOOS=linux GOARCH=amd64 go build -o benchmarker
- userdataをこちらを参照して必要なファイルを配置する。そのまま配置してしまうと、Lambdaにデプロイする際のデプロイパッケージの制限を超えてしまうので画像を削除するなどの対応をしてください。
- スプレッドシートを作成し、スプレッドシートIDを取得する。
- Googleの認証情報Jsonファイルを取得する。
- MackerelでサービスとAPIKeyを作成する。
- 本リポジトリのmain.goをビルドし、ファイルをzip化し、S3にアップロードする。
- Lambdaの「コードソース」の「アップロード元」から先ほどアップロードしたzipファイルのURLを入力する。
- Lambdaで環境変数を設定する。
Environment Variable | Description |
---|---|
MACKEREL_API_KEY |
Mackerelから発行されるAPIキー |
MACKEREL_SERVICE_NAME |
Mackerelのサービス名 |
SPREADSHEETID |
GoogleスプレッドシートのID |
SPREADSHEET_CREDENTIALS_JSON |
Google APIの認証情報を含むJSON(サービスアカウントからダウンロード) |
SPREADSHEET_RANGE |
チーム情報が記載されているシート名と範囲(シート1のA2からB50の場合。シート1!A2:B50 ) |
- private-isuを動かしているサーバー上で、Lambda関数のURLを叩く。
curl <your-lambda-function-url>
# レスポンス例
{"pass":true,"score":623,"success":565,"fail":2,"messages":["リクエストがタイムアウトしました (POST /login)"]}
lambroll を活用したデプロイ
1~5については上記と同様。Makefileで以下の環境変数を設定する。
Environment Variable | Description |
---|---|
MACKEREL_API_KEY |
Mackerelから発行されるAPIキー |
MACKEREL_SERVICE_NAME |
Mackerelのサービス名 |
SPREADSHEETID |
GoogleスプレッドシートのID |
SPREADSHEET_CREDENTIALS_JSON |
Google APIの認証情報を含むJSON(サービスアカウントからダウンロード) |
SPREADSHEET_RANGE |
チーム情報が記載されているシート名と範囲(シート1のA2からB50の場合。シート1!A2:B50 ) |
FUNCTION_NAME |
AWS Lambda関数の名前 |
FUNCTION_ROLE |
関数を実行するときのAWSロール |
S3_BUCKET |
関数のデプロイ先のS3バケット |
S3_KEY |
デプロイするときのS3のキー |
その後make deploy_private_isu_bench_lambda
を実行し、デプロイが完了する。
├── bin # private-isuのベンチマーカーのバイナリ
├── userdata # ベンチマーカーで必要な画像などのデータ
└── main.go # Lambda上で動かすメインプログラム
左側にIPアドレス、右側にチーム名になるようにしてください。
例
IPアドレス | チーム名 |
---|---|
192.0.2.1 | test1 |