AWS CloudWatchにEC2のRailsアプリケーションのログを連携するための手順
o_wani
owani.net#stay.hungry
Amazon Linux 2023は、パフォーマンス、セキュリティ、信頼性の向上を目指した最新のAmazon Web Services (AWS) のLinuxディストリビューションです。
この環境において、ウェブアプリケーションやAPIのパフォーマンスをテストするためのツールとして広く利用されているK6のインストール手順について説明します。
まず、Amazon Linux 2023に必要なパッケージをインストールし、システムを最新の状態に更新します。
$ sudo yum update -y
$ sudo yum install -y curl tar
これにより、K6のインストールに必要な基本的なツールが揃います。
K6の最新バージョンを公式リポジトリからダウンロードします。以下のコマンドを実行して、最新のリリース情報を取得し、適切なバイナリをダウンロードします。
$ curl -s https://api.github.com/repos/grafana/k6/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
ダウンロードしたアーカイブを展開し、K6バイナリをシステムのパスに移動します。
$ tar -xzf k6-v*.tar.gz
$ sudo mv k6-v*/k6 /usr/local/bin/
これにより、どのディレクトリからでもk6
コマンドを実行できるようになります。
インストールが正しく行われたかどうかを確認するために、以下のコマンドを実行してK6のバージョン情報を表示します。
$ k6 version
k6 v0.52.0 (commit/20f8febb5b, go1.22.4, linux/amd64)
K6が正しくインストールされたことを確認したら、簡単な負荷テストを実行してみましょう。以下のサンプルスクリプトtest-script.js
を作成します。
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
stages: [
{ duration: '30s', target: 10 }, // 30秒間で10ユーザー
{ duration: '1m', target: 10 }, // 1分間10ユーザーを維持
{ duration: '30s', target: 0 }, // 30秒間で0ユーザーに減少
],
};
export default function () {
let res = http.get('https://test-api.k6.io');
check(res, {
'status was 200': (r) => r.status === 200,
});
sleep(1);
}
このスクリプトを保存し、以下のコマンドで実行します。
$ k6 run test-script.js
/\ |‾‾| /‾‾/ /‾‾/
/\ / \ | |/ / / /
/ \/ \ | ( / ‾‾\
/ \ | |\ \ | (‾) |
/ __________ \ |__| \__\ \_____/ .io
execution: local
script: test-script.js
output: -
scenarios: (100.00%) 1 scenario, 10 max VUs, 2m30s max duration (incl. graceful stop):
* default: Up to 10 looping VUs for 2m0s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)
✓ status was 200
checks.........................: 100.00% ✓ 723 ✗ 0
data_received..................: 8.3 MB 69 kB/s
data_sent......................: 77 kB 641 B/s
http_req_blocked...............: avg=4.07ms min=1.42µs med=2.57µs max=297.23ms p(90)=3.63µs p(95)=4.58µs
http_req_connecting............: avg=2.03ms min=0s med=0s max=150.2ms p(90)=0s p(95)=0s
http_req_duration..............: avg=270.12ms min=146.5ms med=148.94ms max=6.42s p(90)=163.64ms p(95)=742.05ms
{ expected_response:true }...: avg=270.12ms min=146.5ms med=148.94ms max=6.42s p(90)=163.64ms p(95)=742.05ms
http_req_failed................: 0.00% ✓ 0 ✗ 723
http_req_receiving.............: avg=46.33µs min=21.09µs med=42.46µs max=296.74µs p(90)=57.77µs p(95)=70.43µs
http_req_sending...............: avg=12.11µs min=5.36µs med=11.19µs max=59.53µs p(90)=16.09µs p(95)=18.56µs
http_req_tls_handshaking.......: avg=2.03ms min=0s med=0s max=149.35ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=270.06ms min=146.45ms med=148.87ms max=6.42s p(90)=163.59ms p(95)=742ms
http_reqs......................: 723 5.996102/s
iteration_duration.............: avg=1.27s min=1.14s med=1.14s max=7.42s p(90)=1.23s p(95)=1.74s
iterations.....................: 723 5.996102/s
vus............................: 1 min=1 max=10
vus_max........................: 10 min=10 max=10
running (2m00.6s), 00/10 VUs, 723 complete and 0 interrupted iterations
default ✓ [======================================] 00/10 VUs 2m0s
以上の手順に従って、Amazon Linux 2023に負荷試験ツールK6をインストールし、基本的な負荷テストを実行することができます。
K6は強力な負荷テストツールであり、ウェブアプリケーションやAPIのパフォーマンスを評価するのに非常に有用です。ぜひ、実際のプロジェクトでその効果を確認してみてください。