본문 바로가기
server/Cent_os

tshark 를 통한 MySQL 쿼리 확인




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 3306              
Running as user "root" and group "root". This could be dangerous.
Capturing on lo
select * from user


select * from user



-e frame.time 옵션을 추가 하여 해당 쿼리가 들어오는 시간을 출력 할 수 있다. 만약 이상 있는 쿼리와 시간이 있다면 

장애를 찾기에 더 효율적일 것이다.

[root@cytest2 ~]# tshark -i lo -d tcp.port==3306,mysql -T fields   -e frame.time -e mysql.query port 3306     
Running as user "root" and group "root". This could be dangerous.
Capturing on lo
Oct 29, 2017 15:17:25.359242713 select * from user
Oct 29, 2017 15:17:25.359460901
Oct 29, 2017 15:17:25.359491487
Oct 29, 2017 15:17:26.078264596 select * from user
Oct 29, 2017 15:17:26.078530141
Oct 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 3306                              
Running as user "root" and group "root". This could be dangerous.
Capturing on lo
127.0.0.1       Oct 29, 2017 15:18:28.625257377 select * from user
127.0.0.1       Oct 29, 2017 15:18:28.625555692
127.0.0.1       Oct 29, 2017 15:18:28.625606873
127.0.0.1       Oct 29, 2017 15:18:29.173247792 select * from user
127.0.0.1       Oct 29, 2017 15:18:29.173435990
127.0.0.1       Oct 29, 2017 15:18:29.173495814




시스템은 운영하면서 중요한 부분이 해당 장애에 대한 정확한 원인을 찾는 것이 중요한 단서인것 같습니다.

어플리케이션은 strace , 네트워크는 tcpdump 혹은 tshark 를 통하여 효율적으로 분석하는 것이 시스템을 운영하는데 있어서 장애를 찾는데 

시간단축 할 수 있을것 같습니다.



반응형