Saya ingin memantau respons pada soket unix tanpa mengganggu koneksi asli dan mengirimkannya ke skrip untuk diproses.
Saya tahu bagaimana melakukan ini dengan tcpdump untuk koneksi tcp tetapi sepertinya saya tidak dapat menemukan solusi untuk soket unix lokal.
Apakah ini mungkin?
Jawaban:
Ada seorang pria yang mengaku melakukannya dengan membuat aplikasi yang bertindak sebagai gerbang antara dua soket dan mencatat semua data yang mengalir. Jadi Anda tidak dapat mengetuk soket tetapi jika Anda dapat memulai kembali layanan dan menyetelnya untuk menggunakan aplikasi orang ini Anda akan dapat melihat semua lalu lintas.
Berikut tautan ke pos: Unix Socket Sniffer
Ada cara lain yang membutuhkan Anda untuk menemukan id proses yang terpasang pada soket, kemudian temukan dengan lsof deskriptor file soket dan kemudian ketuk deskriptor file menggunakan strace.
Jika Anda dapat menghentikan klien / server apa pun yang menggunakan soket dan mengonfigurasi ulang, saya akan selalu menyarankan metode pertama, metode kedua itu rumit dan mengharuskan Anda untuk mengetuk proses saat ini yang pada beberapa aplikasi dapat menyebabkannya macet.
Semoga seseorang mencerahkan kita dengan cara lain :)
Semoga berhasil
sumber
Anda bisa menggunakan socat.
Apa yang terjadi di atas: Pertama-tama pindahkan soket asli ke sock.original. Socat membuat soket baru ('UNIX-LISTEN') di lokasi asli dan meneruskan semua ke yang asli ('UNIX-connect'). -V memberitahu socat untuk juga mencetak output ke STDERR.
sumber
Anda juga dapat mencoba menggunakan strace pada salah satu proses di kedua sisi soket, karena ini akan membuat Anda menonton apa yang tertulis / baca. Saya temukan di lingkungan produksi saya, saya tidak punya socat, tetapi memiliki strace.
Untuk tujuan apa pun yang berguna, pengaturan -s untuk sesuatu yang besar adalah suatu keharusan.
sumber
strace -p <pid>
untuk menonton proses yang sedang berjalan.strace -s9999 -f $(for i in $( pidof php5-fpm ) ; do echo -n " -p $i "; done ) 2>&1 | tee /tmp/php.log
dan kemudian jalankan tes. Anda memiliki /tmp/php.log untuk memeriksa secara perlahan apakah log terlalu besar. Jika Anda mendapatkan terlalu banyak lalu lintas, lakukan permintaan dengan string-kueri dengan nama Anda atau sesuatu agar Anda dapat mencarinya di logprintf
pengulangan.printf " -p %s" $(pidof php5-fpm)
akan mengawali setiap argumen pid dengan-p
dan jauh lebih praktis untuk ditulis.kemudian:
sumber