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

Linkedin
Github