Мониторинг TCP на сервере: сравнение netstat и lsof?

12

Я наблюдаю за стеком TCP на сервере, надеясь выявить проблемы с приложением на коробке.

В первую очередь я хочу измерить количество сокетов во всех сообщаемых состояниях (LISTEN, ESTABLISHED, FIN_WAIT2, TIME_WAIT и т. Д.) И обнаружить некоторые аномалии.

Товарищ по команде предполагает, что «lsof» будет лучшим инструментом для определения состояния стеков TCP.

Какие-либо предпочтения или советы от толпы серверов?

ericslaw
источник
3
Пожалуйста, добавьте тег * nix, чтобы отпугнуть нас фанатов Windows
KevinH

Ответы:

7

Я предпочитаю lsof, потому что его вывод одинаков для всех платформ, на которых он работает. Вы можете в значительной степени получить ту же информацию из обеих программ. Я думаю, что все сводится к личным предпочтениям.

Джефф Фриц
источник
2

Моим первым выводом будет использование, netstat -ptanкоторое даст вам всю информацию, которую вы ищете. Вероятно, труба для сортировки и уникальности. Следующее должно дать вам хорошее количество статуса сокета '.

netstat -ptan | awk '{print $6 " " $7 }' | sort | uniq -c

Suroot
источник
1

Проверьте dstat и запустите с:

% sudo dstat --tcp

Еще лучше, если вы хотите проанализировать вывод, вы можете записать его в CSV с помощью --output.

Тим
источник
Интересный инструмент, увы только для linux (хотя по понятным причинам). Приятно видеть что-то похожее на SAR, которое включает в себя информацию о сети (хотя версии linux sar, похоже, тоже показывают это).
ericslaw
1

Я думаю, что это действительно больше личного предпочтения, так как с небольшой настройкой (и правильными параметрами команды) вы можете получить примерно одинаковую информацию от любого из них.

Однако, если вы хотите отслеживать количество соединений в различных состояниях, я бы не стал делать это с помощью инструмента командной строки с одним выстрелом. Я бы использовал что-то, что может сделать некоторые тренды, чтобы вы могли просмотреть это с течением времени. Что-то вроде munin было бы очень полезно, так как отображало бы его с течением времени (наряду с показом вам другой потенциально полезной системной статистики).

Устранение неполадок в приложении всегда проще, если у вас есть хорошая информация о самой коробке и о том, как она работает (как во время проблем, так и в случае их отсутствия).

Кристофер Кашелл
источник
Инструмент командной строки предназначен только для сбора. Ваша точка сбора данных для базового уровня действительно является подходом Propr.
ericslaw