Linux DevOps: Usando o comando SS como opção ao Netstat.

Cleber J Santos
3 min readSep 5, 2021

--

O Netstat pode fazer estatísticas de monitoramento em cada camada da pilha de protocolo (TCP, tabela de roteamento, interface de rede, protocolos, etc..). E isso é bom não é? No entanto, no Linux, o Netstat não é mais recomendado. Em vez disso, SS é usado, mas por que?

Quem trabalha com administração de servidores Linux sabe da importância de boas ferramentas, dentre elas o uso do Netstat.

Há quem defenda que o Netstat é lento, outros ainda que defendam que ele só é lento se não usar a opção -n, no qual informa ao programa que não deverá fazer pesquisas de DNS. Eu particularmente sempre usei o Netstat e sempre gostei, nunca percebi qualquer lentidão… Até o momento que precisei usá-lo em um servidor com uma quantidade grande de conexões simultâneas, pouco mais de 3k, mesmo usando com a opção -n.

ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and state information than other tools.

O trecho acima é a definição dada pela saída do comando man ss no Linux, e de fato, usando o comando ss, além de melhor performático em servidores com muitas conexões, ele ainda trás muito mais detalhes/informações quanto a conexões TCP/IPs e seus estados, olhando para a imagem abaixo, podemos observar que ambos os comandos (SS e Netstat) são monitoramento relacionado à rede, e podemos questionar, então por que o SS é bem mais performático com relação ao Netstat, se ambos estão relacionados ao monitoramento de rede?

A resposta está na maneira como o SS coleta as informações se comparado ao Netstat, não quero me aprofundar tanto e levantar teorias mirabolantes, mas o fato é que existe diferenças que irei listar abaixo, nas qual torna o uso do ss bem mais atraente e pesam muito ao seu favor.

A principal razão pela qual o ss é mais rápido que o netstat, é que o comando netstat coleta informações a partir da leitura de vários arquivos e atravessa todos os diretórios PID em /proc. Então, essa abordagem se torna bem mais lenta quando há uma grande quantidade de conexões, até mesmo se você é daqueles que usa o comando cat em /proc/net/tcp, ainda assim será muito lento.

Em contraste o ss lê informações diretamente as informações estatísticas em /proc/net e portanto, o ss consome menos recursos e tempo que o netstat, o segredo do ss é que ele faz uso do módulo de análise TCP/IP (TCP Stack) diretamente no espaço do Kernel, obtendo assim de primeira mão as informações, que lhe acrescentam além de velocidade de resposta, uma maior quantidade e qualidade.

Já em algumas distribuições e versões de Linux, o comando netstat não está mais presente, como por exemplo nas instalações padrão do CentOS e RedHat 7, claro, ainda você poderia instalar, se essa for sua preferencia, mas não vejo muito mais do por que de ainda usar o netstat, as opções de uso entre o ss e o netstat são muito similares, o que torna sua substituição bem mais fácil.

Abaixo apenas alguns exemplos de opções que podem ser usadas para ambos os comandos, e dessa maneira mostrar que a semelhança e facilidade para trocar um pelo outro.

  • (-an): Listar todas as conexões (tcp, udp e sockets unix).
  • (-s): Mostre estatísticas por protocolo ou resumida.
  • (-l): Listando todas as conexões LISTENING.
  • (-lt): Listando todas as portas de escuta TCP.
  • (-lu): Listando todas as portas de escuta UDP.
  • (-lx): Listando todas as portas de escuta UNIX.
  • (-tp): Exibindo o nome do serviço com PID.

--

--

Cleber J Santos
Cleber J Santos

Written by Cleber J Santos

I'm a Full Stack Developer with a solid experience in SysAdmin/DevOps, hands-on experience with Python development, websites and API-driven web apps.

No responses yet