É assim que uso essas palavras. Outros podem ter usos adicionais ou diferentes. Dependendo do trabalho em questão, usarei os termos de maneira diferente. Equipes de desenvolvimento e equipes de operações têm diferentes necessidades e uso.
O monitoramento está monitorando. Geralmente está em andamento e, de preferência, automatizado. Ferramentas de código aberto como Munin
, Nagios
e MRTG
se enquadram nessa categoria. Existem muitas ferramentas comerciais também. Eu também incluiria sar
executado continuamente nessa categoria, mas seus resultados normalmente não são monitorados. As ferramentas de monitoramento podem ser usadas para acionar alertas quando um recurso monitorado fica acima ou abaixo do nível do acionador. Muitas ferramentas de monitoramento funcionam bem em ambientes heterogêneos.
A criação de perfil geralmente é feita em um determinado programa para ver qual código está usando a maioria dos recursos. Geralmente, esse é o tempo de CPU, mas também pode incluir memória, E / S e tempo de execução (parede). Geralmente é usado para identificar o código candidato para otimização. As ferramentas de criação de perfil tendem a ser dependentes de idioma e / ou plataforma.
Um tipo diferente de perfil é feito usando logs e / ou dados de monitoramento. Esse é o perfil de uso e pode ser feito por vários motivos. Eu não encontrei muitas ferramentas para fazer isso.
Eu uso o rastreamento de duas maneiras diferentes. Mais frequentemente, eu rastreio rotas de rede. Dependendo das configurações de rede e firewall, uma variedade de ferramentas pode ser usada com mais ou menos sucesso. A maioria destes traceroute em seu nome ou descrição.
O rastreamento de programa está rastreando a execução de um programa. Isso geralmente é feito em uma situação de teste. Isso pode ser feito de várias maneiras (na minha ordem de uso e experiência):
- Chame o rastreio usando ferramentas como
strace
para ver qual código é chamado. Isso pode ser útil para determinar por que um programa está falhando ou não respondendo conforme o esperado. - Criação de log em nível de rastreio, que depende de instruções de log apropriadas incluídas no código. A maioria das suítes de registro suporta esse nível de detalhe. O registro em nível de rastreamento tende a ter uma cobertura de código ruim. Eu geralmente adiciono conforme necessário e deixo no código para uso futuro.
- Rastreamento de cobertura de código registra quais partes do código foram executadas em um conjunto de testes. Isso pode ser útil para determinar casos de teste ausentes. 100% de cobertura de código é difícil de obter. Cobertura de 100% dos fluxos normais deve ser alcançável.
- Verificação de mesa: rastreie o código lendo-o. Não é muito útil em programas maiores, mas é uma boa maneira de identificar casos de borda para testes de unidade, e / ou para identificar possíveis problemas quando a fonte provável tiver sido diminuída. Os IDEs e editores tornam relativamente fácil seguir uma chamada para o código de implementação.
- Depuração ao vivo; rastreamento de execução de código enquanto está sendo executado usando um depurador. É possível rastrear instruções de execução por instrução, mas se o problema for um problema de tempo, pode ser obscurecido. Depuradores que podem ligar o código à instrução atual ajudam bastante, mas podem requerer uma versão de depuração do programa a ser construída.