GoReplay atau disingkat gor adalah sebuah open-source network monitoring tool yang bisa digunakan untuk merekam live traffic, shadowing, load testing, monitoring dan detail analysis.
Prinsip kerja GoReplay ini sangat sederhana yaitu GoReplay akan memonitoring traffic yang terjadi pada port http yang kita inginkan, kemudian GoReplay akan menyimpan hasil dari monitoring tersebut ke dalam sebuah file.
Cara install GoReplay
Kita bisa download binary dari GoReplay pada halaman ini https://github.com/buger/goreplay/releases
untuk filenya sesuaikan dengan OS yang kalian pakai.
Capture traffic menggunakan GoReplay
Kita dapat menggunakan perintah berikut ini untuk merekam traffic http dengan gor. sudo diperlukan untuk menjalankan perintah dibawah ini.
sudo ./gor --input-raw :5555 --input-raw-track-response --output-file sampletraffic.gor
--input-raw :5555
digunakan untuk mencapture traffic pada port 5555
--output-file
digunakan untuk menentukan path output file
Untuk berhenti merekam traffic gunakan
CTRL + C
Berikut ini adalah contoh hasil monitoring dari GoReplay.
1 b69615b300000001ddd4186c 1667819526172823693 0
GET /todo HTTP/1.1
User-Agent: PostmanRuntime/7.29.2
Accept: */*
Postman-Token: 70098a7d-595c-4a55-947a-b1a77ae5a4c9
Host: localhost:5555
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
๐ต๐๐
2 b69615b300000001ddd4186c 1667819526174032994 0
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Mon, 07 Nov 2022 11:12:06 GMT
Content-Length: 800
{"code":200,"data":[{"id":"6361ec8780c30893f62fae0f","title":"lorem ipsum title","description":"lorem ipsum desc","created_at":"2022-11-02T04:05:27.909Z","updated_at":"2022-11-02T04:05:27.909Z"},{"id":"6361f655fd086669f2176e12","title":"lorem ipsum title","description":"lorem ipsum desc","created_at":"2022-11-02T04:47:17.948Z","updated_at":"2022-11-02T04:47:17.948Z"},{"id":"6361f71800fcc94eb37b00a5","title":"lorem ipsum title","description":"lorem ipsum desc","created_at":"2022-11-02T04:50:32.245Z","updated_at":"2022-11-02T04:50:32.245Z"},{"id":"636490b82a7382a749c35087","title":"lorem ipsum title","description":"lorem ipsum desc","created_at":"2022-11-04T04:10:32.119Z","updated_at":"2022-11-04T04:10:32.119Z"}],"meta":{"per_page":10,"page":1,"page_count":1,"total_count":4},"success":true}
๐ต๐๐
1 b69615b300000001ddd41c08 1667819529195020173 0
POST /todo HTTP/1.1
Content-Type: application/json
User-Agent: PostmanRuntime/7.29.2
Accept: */*
Postman-Token: 5e353677-7e07-4852-b420-2026bbe8baae
Host: localhost:5555
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 75
{
"title": "lorem ipsum title",
"description": "lorem ipsum desc"
}
๐ต๐๐
2 b69615b300000001ddd41c08 1667819529197840185 0
HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Date: Mon, 07 Nov 2022 11:12:09 GMT
Content-Length: 230
{"code":201,"data":{"id":"6368e809cf191e22f9b64323","title":"lorem ipsum title","description":"lorem ipsum desc","created_at":"2022-11-07T18:12:09.19534614+07:00","updated_at":"2022-11-07T18:12:09.19534614+07:00"},"success":true}
๐ต๐๐
Berdasarkan data yang telah GoReplay hasilkan kita dapat melihat request
, reponse
dari traffic http, disini kita bisa menganalisa atau replay dari traffic http yang sudah direkam oleh GoReplay.
Replay traffic menggunakan GoReplay
sudo gor --input-file sampletraffic_0.gor --output-http "http://localhost:5555"
--input-file
menentukan input file.
--output-http
URL tujuan dari request yang akan direplay.
Setelah semua request di file tersebut sudah di replay, kita akan mendapatkan message ini.
2022/11/07 18:17:00 [PPID 165419 and PID 165420] Version:1.3.0
[DEBUG][elapsed 3.025792813s]: [INPUT-FILE] FileInput: end of file 'sampletraffic_0.gor'
Referensi
https://www.jajaldoang.com/id/post/capture-traffic-and-replay-it-with-gor/
https://github.com/buger/goreplay
https://reshadat.medium.com/test-your-apis-on-actual-traffic-with-goreplay-88810fbe6d1d