타사 서비스의 HTTP 트래픽을 모니터링하는 방법
7417 단어 tutorialmonitoringlinux
왜
회사는 타사 서비스를 구입하여 jar 패키지 형태로 회사 시스템에 배포했습니다. 이 서비스는 중요한 데이터 링크에 있으며 동시성이 매우 높습니다. 서비스 http 요청은 500으로 나타나며 이는 우리가 받을 수 없는 것입니다.
소스 코드가 없더라도 공급자에게 자세한 정보를 제공하기 위해 HTTP 요청도 모니터링해야 합니다.
문제를 해결하기 위한 아이디어
내 첫 번째 생각은 모니터링에 Java 에이전트를 사용하는 것이었습니다. Java 에이전트는 Java Instrumentation API를 사용하여 JVM에서 실행 중인 애플리케이션을 가로채서 바이트코드를 수정할 수 있는 특별한 유형의 클래스입니다.
또 다른 솔루션은 네트워크 트래픽을 캡처하는 것입니다. 내 핵심 요구 사항은 상태 코드가 5xx인 요청을 모니터링하는 것이므로 트래픽 캡처가 더 적합합니다.
네트워크 트래픽 캡처
Tcpdump는 트래픽을 캡처할 수 있지만 읽기에 더 적합하려면 구문 분석이 필요합니다.
httpry는 HTTP 트래픽을 표시하고 로깅하도록 설계된 도구입니다.
좋아요!이것이 제가 찾던 도구입니다.
Centos에 httpry 설치
sudo yum install epel-release
sudo yum install httpry
상태 코드가 200이 아닌 필터 응답
sudo httpry -m post -f timestamp,source-ip,dest-ip,direction,status-code -o test.log 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2)+8:4] != 0x20323030'
test.log의 출력은 다음과 같습니다.
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 403
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 403
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
2022-09-01 19:22:34 192.168.0.1 192.168.0.2 < 500
Manager 대용량 데이터 출력 파일
모든 정보는 하나의 파일에 입력되며 이 파일은 매우 큽니다.
다른 도구가 필요합니다: logrotate.
파일을 날짜별로 정리하고 logrotate.conf 파일을 만듭니다.
/xxxx/xxxxx/http.log {
notifempty
copytruncate
dateext
dateformat .%Y%m%d
olddir /xxx/backup
}
다음 명령은 프로세스를 디버깅할 수 있습니다.
logrotate -d xxx/lograte.conf
그런 다음 ctontab을 통해 시간 제한 작업을 추가하면 crontab이 구성에 따라 회전을 실행하고 http.log.20220815라는 파일을 얻게 됩니다.
추가 리소스
httpry
logrotate
Reference
이 문제에 관하여(타사 서비스의 HTTP 트래픽을 모니터링하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zhng1456/how-to-monitor-http-traffic-of-third-party-service-4i1m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)