B級システムエンジニアの備忘録

インフラ・プログラミングなんでもやるぞ雑用エンジニアブログ

Linux

tcpdumpで流れるSQLを見てみよう!

更新日:

長らく重宝させていただいているtcpdumpですが、色々なサーバーを保守しているとクエリーログを出力していないことも多々あります。
ファイルで容量を圧迫するので、実稼動後って必要なログだけに絞りますよね??
スロークエリーだけとか。。。

しかし、突然のサーバー障害等、リアルタイムで確認が必要なときや、MySQLにログイン→クエリーログコマンドの手順まで踏まなくてもなど、
微妙なシーンではtcpdumpでお手軽に見てしまうのが便利だと思っています。

ただ、tcpdumpだとクエリーを見るのに不要な情報も多々付属してるかんが半端ないので、grepで絞るとより見やすくなりますね!

実際パケットを見てみる

下記のような感じで見えますので、時間毎に流れるSQL分を見れますね!
また、これをログファイルに出力すると後で調べることができますので便利です!

SELECTで絞り込み

これに更にクエリーだけ見やすくする為、
grepでSELECTを付けて絞り込みます。

クエリーはスパゲッティ化してたりすると、大文字小文字のルールついていないことも多いですね!
-i はgrepの区別しないオプションです。

下記のようにリアルタイムでSELECTクエリーに絞って出力されるので便利ですね!

各種オプションの説明

-tttt - 時刻を整形(grep使ってクエリーだけに絞らない場合はこれを入れるとクエリーの送信時刻がわかります)

-A - アスキー表示

-nn - 名前解決をしなくなります。IP+ポート表示に切り替えます。

-s - パケットのペイロードの表示を0にすると上限なしになります。(長いSQLを含む場合などきれてしまう)

-i - ネットワークインターフェイス指定

dst - 宛先が指定ポート宛

port - ポート指定

その他の詳しい使い方はこちらを参考にされてください。

tcpdumpを使ってみた(TCP,UDP通信の確認)

それでは久々の更新でしたーm(_ _)m

336

336

-Linux

Copyright© B級システムエンジニアの備忘録 , 2021 All Rights Reserved.