1. 程式人生 > >goreplay 映象nginx web app流量

goreplay 映象nginx web app流量

goreplay 是一個很不錯的流量拷貝,複製工具,小巧,支援一些擴充套件,當然也提供了企業版,企業版
功能更強大,支援二進位制協議的分析
備註: 演示使用docker-compose 執行,測試映象流量到其他的兩個web app (openresty)

環境準備

docker-compose 檔案

 
version: "3"
services:
    nginx:
      build: ./
      ports:
      - "8080:80"
    app:
      image: openresty/openresty:alpine-fat
      ports:
      - "8090:80"
    app2:
      image: openresty/openresty:alpine-fat
      ports:
      - "8091:80"

包含goreplay 的docker 配置

  • dockerfile
    使用了一個tini 的工具,方便後臺任務執行,同時因為wget 二進位制包太慢,所以直接下載add 了
 
FROM openresty/openresty:alpine-fat
LABEL author="[email protected]"
COPY gor_0.16.1_x64.tar.gz .
RUN apk add --update && apk add --no-cache tini \
    && tar xzf gor_0.16.1_x64.tar.gz -C /usr/local/bin \
    && rm gor_0.16.1_x64.tar.gz 
ENV PATH=$PATH:/usr/local/bin
ADD entrypoint.sh /entrypoint.sh
ADD goreplay.sh /goreplay.sh
ENTRYPOINT ["/sbin/tini","-s", "--", "/entrypoint.sh"]
 
  • entryppint.sh
#!/bin/sh
sh goreplay.sh
exec /usr/local/openresty/bin/openresty -g "daemon off;" 
  • goreplay.sh
    goreplay 的執行命令,主要是進行流量的拷貝
 
#!/bin/sh
nohup goreplay --input-raw :80 --output-http "http://app" --output-http "http://app2" &

執行&&效果

執行

docker-compose up -d
 

效果

我們訪問nginx 8080 埠,其他埠的也會有資料流量,通過檢視日誌即可,從下邊的日誌我們可以看出
nginx 日誌較早,然後是app app2 請求時間是一樣的

 
docker-compose logs -f 
 

說明

類似的可以使用nginx 自帶的mirror 指令,或者tcpcopy 。。。,同時goreplay 也支援kafka 的整合,還是很方便的

參考資料

https://github.com/buger/goreplay/wiki/Getting-Started
https://github.com/rongfengliang/goreplay-openresty-demo