Mysql 서버를 관리하면서 기본적인 모니터링을 한다고 하여도, 비정상적인 쿼리에 대하여 추적 하기 위해서 스니핑을 진행 한다.
바이너리 로그를 하나씩 분석 한다고 하여도 시간이나, 효율적인 부분에서 떨어 진다.
그렇기 때문에 스니핑을 통하여 쿼리를 분석 하기도 한다.
일반적으로 tcpdump 를 이용한다면 아래와 같은 형태로 분석한다.
[root@CY2 ~]# tcpdump -i lo -s 0 -l -w - dst port 3306 | strings | perl -e 'while(<>) { chomp; next if /^[^ ]+[ ]*$/;if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i) {if (defined $q) { print "$q\n"; }$q=$_;} else {$_ =~ s/^[ \t]+//; $q.=" $_";}}'
#참조 사이트 : http://coffeenix.net/bbs/viewtopic.php?p=6147
하지만 위와 같은 형태는 단순하게 들어온 쿼리에 대하여 확인만 가능 하며 제대로 추적이 안되는 경우가 있다(... 느낌상?)
이럴때 tshark 를 이용하여 좀더 간결하게 스니핑 가능하다.
아래와 같이 -i 옵션을 통하여 해당 스니핑 할 인터페이스를 지정하면 아래와 같이 확인이 가능하다.
[root@cytest2 ~]# tshark -i lo -d tcp.port==3306,mysql -T fields -e mysql.query port 3306Running as user "root" and group "root". This could be dangerous.Capturing on loselect * from userselect * from user
-e frame.time 옵션을 추가 하여 해당 쿼리가 들어오는 시간을 출력 할 수 있다. 만약 이상 있는 쿼리와 시간이 있다면
장애를 찾기에 더 효율적일 것이다.
[root@cytest2 ~]# tshark -i lo -d tcp.port==3306,mysql -T fields -e frame.time -e mysql.query port 3306Running as user "root" and group "root". This could be dangerous.Capturing on loOct 29, 2017 15:17:25.359242713 select * from userOct 29, 2017 15:17:25.359460901Oct 29, 2017 15:17:25.359491487Oct 29, 2017 15:17:26.078264596 select * from userOct 29, 2017 15:17:26.078530141Oct 29, 2017 15:17:26.078603824
또한 아래와 같이 -e ip.src 을 통하여 해당 쿼리를 보내는 출발지 아이피를 추가 하여 추적가능 하다.
[root@cytest2 ~]# tshark -i lo -d tcp.port==3306,mysql -T fields -e ip.src -e frame.time -e mysql.query port 3306Running as user "root" and group "root". This could be dangerous.Capturing on lo127.0.0.1 Oct 29, 2017 15:18:28.625257377 select * from user127.0.0.1 Oct 29, 2017 15:18:28.625555692127.0.0.1 Oct 29, 2017 15:18:28.625606873127.0.0.1 Oct 29, 2017 15:18:29.173247792 select * from user127.0.0.1 Oct 29, 2017 15:18:29.173435990127.0.0.1 Oct 29, 2017 15:18:29.173495814
시스템은 운영하면서 중요한 부분이 해당 장애에 대한 정확한 원인을 찾는 것이 중요한 단서인것 같습니다.
어플리케이션은 strace , 네트워크는 tcpdump 혹은 tshark 를 통하여 효율적으로 분석하는 것이 시스템을 운영하는데 있어서 장애를 찾는데
시간단축 할 수 있을것 같습니다.
반응형
'System > Linux' 카테고리의 다른 글
TCP Keepalive 를 통한 연결 유지 (0) | 2017.11.23 |
---|---|
Time_Wait 원인과 tcp_tw_reuse 활용 (0) | 2017.11.22 |
Strace (linux trace system calls and signals) (0) | 2017.10.08 |
postgresql93+Postgis install from CentOS6 (0) | 2017.10.04 |
Centos NIC ring buffer size 조절 (0) | 2017.10.01 |