Из этого вопроса Статистика /proc/net/stat/nf_conntrack отсутствует на сервере Linux Я понял, что /proc/net/stat/nf_conntrack
есть альтернатива conntrack -S
.
В /proc/net/stat/nf_conntrack есть NEW
счетчик, на основе которого можно рассчитать показатель CPS (соединений в секунду). Но в conntrack -S
я не вижу такого счетчика.
Как я могу получить счетчик NEW
conntrack без /proc/net/stat/nf_conntrack
? Есть ли способ получить его из conntrack -S
?
Часть ядра, отображающая такую статистику в методе файловой системы /proc
, там :
if (v == SEQ_START_TOKEN) { seq_puts(seq, "entries searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error expect_new expect_create expect_delete search_restart\n"); return 0; } seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x " "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n", nr_conntracks, 0, st->found, 0, st->invalid, st->ignore, 0, 0, st->insert, st->insert_failed, st->drop, st->early_drop, st->error, st->expect_new, st->expect_create, st->expect_delete, st->search_restart );
, как видно, поляsearched
(заменены другим полем в более поздних ядрах ), new
. ], delete
, delete_list
всегда отображают 0:ничего не передает эти поля.
Как я подозревал в своем предыдущем ответе («или, возможно, устарел» ), статистики по этому поводу нет ни для старого, ни для нового метода.
Вот коммит от 2016 года, который удалил их(вероятно, для ядра 4.9):
netfilter:conntrack:удалить статистику горячих путей пакетов
Эти счетчики находятся в горячих путях и действительно отображаются в перформансе это особенно true для «найдено» и «поиск», которые увеличиваются для каждого пакета обработанный.
Информация вида
searched=212030105
новый=623431
найдено=333613
delete=623327не кажется слишком полезным в настоящее время:
на загруженных системах, найденных и просматриваемых, будет переполняться каждые несколько часов (это 32-битные целые числа), другие более загруженные каждые несколько дней.
для отладки есть лучшие методы, такие как iptables' trace target, журнал conntrack sysctls. В настоящее время у нас также есть перфоинструмент.
При этом удаляются счетчики статистики пути пакетов, за исключением тех, которые ожидается, что он будет равен 0 (или близок к 0 )в нормальной системе, т.е. 'insert_failed' (произошла гонка)или 'invalid' (прототрекер отклонил).
Статистика вставки сохраняется для случая ctnetlink. Найденная статистика сохраняется для проверки кортежа-is-принято, когда NAT должен определить, нужно ли выбрать другой исходный адрес.
Подписано-от-автор:Флориан Вестфаль fw@strlen.de
Подписано-off-автор:Пабло Нейра Аюсо pablo@netfilter.org
Вы можете использовать инструмент conntrackd (, упакованный в Ubuntu здесь ), который можно настроить для регистрации событий, чтобы предоставлять только журналы и статистику (вместо его основного использования для прозрачного переключения между несколькими брандмауэрами в кластере высокой доступности). Ubuntu может предоставлять конфигурацию статистики по умолчанию (или в документации ). Вот пример системы, в которой работает служба conntrackd
:
# conntrackd -s ct; sleep 5; conntrackd -s ct
[Fri Oct 15 08:34:08 2021] (pid=3443753) [warning] deprecated unix backlog configuration, ignoring.
cache stats:
current active connections: 65
connections created: 121807 failed: 0
connections updated: 116158 failed: 0
connections destroyed: 121742 failed: 0
traffic processed:
0 Bytes 0 Pckts
[Fri Oct 15 08:34:13 2021] (pid=3443756) [warning] deprecated unix backlog configuration, ignoring.
cache stats:
current active connections: 68
connections created: 121811 failed: 0
connections updated: 116163 failed: 0
connections destroyed: 121743 failed: 0
traffic processed:
0 Bytes 0 Pckts
. Инструмент сообщает, что connections created:
изменился с 121807 на 121811. Я считаю, что это эквивалент поля new
, удаленного из ядра.
Примечание.:traffic processed:
определенно предназначен для связи брандмауэра-с-брандмауэром между двумя демонами conntrackd (, поэтому здесь всегда будет 0).