Sysdig - uma poderosa ferramenta de monitoramento e solução de problemas de sistema para Linux
Sysdig é uma ferramenta de monitoramento e solução de problemas de sistema de código aberto, multiplataforma, poderosa e flexível para Linux; também funciona em Windows e Mac OSX, mas com funcionalidade limitada e pode ser usado para análise, inspeção e depuração de sistema.
Normalmente, você empregaria uma combinação de várias ferramentas de monitoramento e solução de problemas de desempenho do Linux, incluindo as listadas abaixo, para executar as tarefas de monitoramento e depuração do Linux:
- strace – descobre chamadas de sistema e sinais para um processo.
- tcpdump – monitoramento de tráfego de rede bruto.
- netstat – monitoramento de conexões de rede.
- htop – monitoramento de processos em tempo real.
- iftop – monitoramento de largura de banda de rede em tempo real.
- lsof – veja quais arquivos são abertos por qual processo.
No entanto, sysdig integra o que todas as ferramentas acima e muitas mais oferecem em um programa único e simples, ainda mais com incrível suporte a contêineres. Ele permite capturar, salvar, filtrar e examinar o comportamento real (fluxo de eventos) de sistemas Linux, bem como de contêineres.
Ele vem com uma interface de linha de comando e uma interface de usuário interativa poderosa (csysdig) que permite observar a atividade do sistema em tempo real ou executar um dump de rastreamento e salvá-lo para análise posterior. Você pode assistir como o csysdig funciona no vídeo abaixo.
Recursos do Sysdig:
- É rápido, estável e fácil de usar, com documentação abrangente e bem documentada.
- Vem com suporte nativo para tecnologias de contêiner, incluindo Docker, LXC.
- É programável em Lua; oferece cinzéis (scripts Lua leves) para processar eventos de sistema capturados.
- Suporta filtragem útil de saída.
- Suporta rastreamento de sistema e aplicativos.
- Pode ser integrado com Ansible, Puppet e Logstash.
- Ative a análise de log avançada de amostra.
- Ele também oferece recursos de análise de ataque (forense) a servidores Linux para hackers éticos e muito mais.
Neste artigo, mostraremos como instalar o sysdig em um sistema Linux e usá-lo com exemplos básicos de análise, monitoramento e solução de problemas do sistema.
Como instalar o Sysdig no Linux
Instalar o pacote sysdig é tão fácil quanto executar o comando abaixo, que verificará todos os requisitos; se tudo estiver em ordem, ele baixará e instalará o pacote do repositório Draios APT/YUM.
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash
OR
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
Depois de instalá-lo, você precisa executar o sysdig como root porque ele requer acesso a áreas críticas como o sistema de arquivos /proc, /dev/sysdig* dispositivos e precisa carregar automaticamente o módulo do kernel sysdig-probe (caso não seja); caso contrário, use o comando sudo.
O exemplo mais básico é executá-lo sem argumentos. Isso permitirá que você visualize o fluxo de eventos do seu sistema Linux atualizado em tempo real:
sudo sysdig
A saída acima (dados brutos) talvez não faça muito sentido para você, para uma saída mais útil execute csysdig:
sudo csysdig
Nota: Para ter uma ideia real desta ferramenta, você precisa usar o sysdig que produz dados brutos como vimos antes, a partir de uma execução Sistema Linux: isso exige que você entenda como usar filtros e cinzéis.
Mas se você precisar de uma maneira fácil de usar o sysdig – continue com o csysdig.
Compreendendo cinzéis e filtros Sysdig
Cinzéis Sysdig são scripts Lua mínimos para examinar o fluxo de eventos sysdig para realizar ações úteis de solução de problemas do sistema e muito mais. O comando abaixo irá ajudá-lo a visualizar todos os cinzéis disponíveis:
sudo sysdig -cl
A captura de tela mostra uma lista de exemplos de cinzéis em diferentes categorias.
Se você quiser saber mais informações sobre um cinzel específico, use o sinalizador -i
:
sudo sysdig -i topprocs_cpu
Os filtros Sysdig adicionam mais poder ao tipo de saída que você pode obter dos fluxos de eventos, eles permitem que você personalize a saída. Você deve especificá-los no final de uma linha de comando.
Um filtro simples e mais comum é uma verificação básica “class.field=value”, você também pode combinar cinzéis com filtros para personalizações ainda mais poderosas.
Para visualizar uma lista de classes de campos disponíveis, campos e suas descrições, digite:
sudo sysdig -l
Criando arquivo de rastreamento do sistema Linux
Para despejar a saída do sysdig em um arquivo para análise posterior, use o sinalizador -w
como este.
Você pode ler o arquivo de dump de rastreamento usando o sinalizador -r:
sudo sysdig -r trace.scap
A opção -s
é usada para especificar a quantidade de bytes de dados a serem capturados para cada evento do sistema. Neste exemplo, estamos filtrando eventos para o processo mongod.
sudo sysdig -s 3000 -w trace.scap
sudo sysdig -r trace.scap proc.name=mongod
Monitorando Processos Linux
Para listar os processos do sistema, digite:
sudo sysdig -c ps
Monitore processos por uso de CPU
Para observar os principais processos por porcentagem de uso da CPU, execute este comando:
sudo sysdig -c topprocs_cpu
Monitorando conexões de rede e E/S
Para visualizar as conexões de rede do sistema, execute:
sudo sysdig -c netstat
O comando a seguir ajudará você a listar as principais conexões de rede por total de bytes:
sudo sysdig -c topconns
A seguir, você também pode listar os principais processos por E/S de rede da seguinte forma:
sudo sysdig -c topprocs_net
Monitorando E/S de arquivos do sistema
Você pode gerar os dados lidos e gravados pelos processos no sistema conforme abaixo:
sudo sysdig -c echo_fds
Para listar os principais processos por bytes de disco (leitura + gravação), use:
sudo sysdig -c topprocs_file
Solução de problemas de desempenho de um sistema Linux
Para ficar de olho nos gargalos do sistema (chamadas lentas do sistema), execute este comando:
sudo sysdig -c bottlenecks
Acompanhe o tempo de execução de um processo
Para rastrear o tempo de execução de um processo, você pode executar este comando e despejar o rastreamento em um arquivo:
sudo sysdig -w extime.scap -c proc_exec_time
Em seguida, use um filtro para zerar os detalhes de um processo específico (postgres neste exemplo) da seguinte forma:
sudo sysdig -r extime.scap proc.name=postgres
Descubra rede lenta I/0
Este comando simples irá ajudá-lo a detectar E/0 de rede lenta:
sudo sysdig -c netlower
Assistindo entradas do arquivo de log
O comando abaixo ajuda a exibir todas as mensagens gravadas no syslog. Se você estiver interessado nas entradas de log de um processo específico, crie um dump de rastreamento e filtre-o de acordo, conforme mostrado antes:
sudo sysdig -c spy_syslog
Você pode imprimir quaisquer dados gravados por qualquer processo em um arquivo de log da seguinte maneira:
sudo sysdig -c spy_logs
Monitorando solicitações de servidor HTTP
Se você tiver um servidor HTTP como Apache ou Nginx em execução em nosso sistema, verifique o log de solicitações do servidor com este comando:
sudo sysdig -c httplog
sudo sysdig -c httptop [Print Top HTTP Requests]
Exibir shells de login e atividade interativa do usuário
O comando abaixo permitirá que você visualize todos os IDs do shell de login:
sudo sysdig -c list_login_shells
Por último, mas não menos importante, você pode mostrar a atividade interativa dos usuários do sistema da seguinte forma:
sudo sysdig -c spy_users
Para obter mais informações e exemplos de uso, leia as páginas man do sysdig e do csysdig:
man sysdig
man csysdig
Referência: https://www.sysdig.org/
Verifique também estas ferramentas úteis de monitoramento de desempenho do Linux:
- BCC – Ferramentas de rastreamento dinâmico para monitoramento de desempenho do Linux, rede e muito mais
- pyDash – uma ferramenta de monitoramento de desempenho Linux baseada na Web
- Perf- Uma ferramenta de monitoramento e análise de desempenho para Linux
- Collectl: uma ferramenta avançada de monitoramento de desempenho multifuncional para Linux
- Netdata – uma ferramenta de monitoramento de desempenho em tempo real para sistemas Linux
Conclusão
Sysdig reúne funcionalidades de inúmeras ferramentas de linha de comando em uma interface notável, permitindo assim que você se aprofunde nos eventos do sistema Linux para coletar dados, salvá-los para análise posterior e oferece suporte incrível a contêineres.
Para fazer qualquer pergunta ou compartilhar alguma opinião sobre esta ferramenta, use o formulário de feedback abaixo.