Como monitorar e registrar a memória / CPU dos processos ao longo do tempo? [fechadas]

27

Estou procurando uma maneira de diagnosticar problemas, como a morte por troca, em que um processo de memória de preenchimento preenche o swap e mata a máquina inteira (como o apache).

Eu já estou usando o cacti e posso configurar nagios (embora prefira não) ou munin, mas, até onde eu sei, eles não podem registrar o uso individual do programa - apenas o status geral.

Eu sei que posso criar um script que > > para alguns arquivos a cada 30 anos, mas gostaria de ver se já existe uma solução madura.

Novamente, o ideal seria:

  • grava o uso de memória dos processos a cada N segundos
  • grava o uso da CPU de processos a cada N segundos
  • gráficos de suporte e histórico
  • suportam médias - como o mysqld usou 43% de CPU no último dia e uma média de 400MB de memória
  • seja gratuito e de código aberto

Os nomes dos processos não são e não devem ser conhecidos antecipadamente - a ideia é apenas deixá-lo monitorar e, em seguida, dar uma olhada nos principais criminosos.

Meu sistema é Linux (OpenSUSE).

    
por Artem Russakovskii 23.07.2010 / 22:13

11 respostas

12

Se você quiser apenas os principais criminosos, considere executar top com um intervalo relativamente longo (60 segundos mais) no modo em lote. Você pode precisar de mais de um top em execução para capturar os principais infratores em vários recursos. Eu configurei sistemas para executar top por alguns ciclos quando um recurso estava sendo usado.

Considere executar sar no modo em lote para capturar a utilização de recursos. Eu percebo que isso é baseado em servidor, mas é útil determinar os momentos em que os problemas estão ocorrendo.

Execute munin e ative as notificações. Isso pode lhe dar uma chance de entrar e assistir ao servidor ser desativado. Você pode corrigir o problema antes que ele caia.

Para vazamentos de memória, um aumento constante no uso de swap indica um problema. Certa vez, assisti a um servidor morrer lentamente durante um período de dias. O serviço de problema era um programa que monitorava outros processos para vazamentos de memória. O administrador do sistema insistia que o crescente uso de swap não era um problema, até que o servidor parasse de responder.

Você pode descobrir que a detecção de anomalia do cfengine pode ser usada para acionar um script para capturar o estado do sistema quando as coisas dão errado. Você pode querer muitas informações além dos processos que usam a maioria dos recursos. Para um fluxo repentino de uso, você pode querer uma lista de conexões de rede (por endereço, não nome). O uso de memória também é útil.

    
por 29.07.2010 / 05:50
10

sysstat é feito exatamente para o seu tipo de propósito.

    
por 01.08.2010 / 12:47
9

Eu já usei antes:

link

"Atop é um monitor de desempenho em tela cheia ASCII que é capaz de relatar a atividade de todos os processos (mesmo que os processos tenham terminado durante o intervalo), registro diário do sistema e atividade de processo para análise de longo prazo, destacando sistema sobrecarregado recursos em intervalos regulares, mostra a atividade em nível de sistema relacionada à CPU, memória, troca, discos e camadas de rede, e para cada processo ativo mostra a utilização da CPU, o crescimento da memória, prioridade, nome de usuário , estado e código de saída. "

    
por 23.07.2010 / 23:21
6

Você já tentou coletar?
É muito poderoso e personalizável.
Tem muitos plugins e pode ser integrado ao nagios.

link

    
por 28.07.2010 / 11:35
2

Centreon no topo do Nagios, Nagios juntamente com o NRPE. Você pode, então, escrever scripts personalizados para relatar dados em QUALQUER formato que desejar para o NRPE. O Nagios então pesquisa os dados dos servidores remotos com o NRPE e o Centreon cria um gráfico bonito e adiciona uma tonelada de flexibilidade ao usuário. Nós o usamos no link Eu já tenho um modelo de contêiner VZ com a configuração central + nagios se você quiser.

Representações gráficas centraon hostthenpost.org/tyler/2010-07-23_1719.png

    
por 23.07.2010 / 23:21
2
O

nmon é uma ótima ferramenta que faz o que você está procurando. Desenvolvido para AIX e Linux. Produz uma tonelada de produção detalhada e fácil de colocar em relatórios. Se você pesquisar no Google, há um wiki da IBM que tem um monte de documentação e utilitários adicionais para analisar os dados.

    
por 29.07.2010 / 05:29
2

Server Density faz exatamente o que você descreve.

Eu uso em um dos nossos servidores de produção e estou muito feliz com isso. Seu principal recurso é a capacidade de visualizar gráficos, clicar em um pico e ver o consumo de CPU / memória do servidor no momento atual, incluindo todos os processos em execução. Eles chamam de instantâneos .

Está melhorando constantemente. Um dos recursos mais recentes é a detecção de anomalias , que permite detectar facilmente anomalias. Você também pode configurar vários tresholds

    
por 28.07.2010 / 11:37
2

link

tem um link acima do código pequeno que lhe dá o put da memória da cpu etc.

    
por 03.08.2010 / 15:28
2

As respostas sugeriram quando fiz uma pergunta semelhante :

Icapan disse :

Munin is the easiest way to get uptime graphs with minimum effort in installing and configuring. I also use atop for aggregate cpu usage by some process, but that is not what You asked for.

David Spillet dito :

I use collectd to record system load amongst a number of other parameters. It stores the data in RRD stores that can be graphed and otherwise analysed using the many available tools and scripts. I use a modified version of this script for my graphing (sample output).

Collectd has plugins for monitoring lots of stuff (everything commonly asked for and a few things on top), and creating your own shouldn't be difficult if you need something specialised, so makes for a very flexible tool. Configuring the graphs in rrd.cgi is a very manual process, though not difficult, though you might well find a more convenient tool for working with the RRD files maintained by collectd.

Você também pode verificar Nagios ou OpenNMS também

    
por 03.08.2010 / 19:25
1

Munin fará tudo o que você precisa sem precisar do Nagios ou de qualquer outra ferramenta. Existem RPMs disponíveis para o OpenSUSE.

    
por 25.07.2010 / 00:24
1

Talvez o bom e velho OProfile faça o que você precisa? É um profiler de nível de sistema baseado em kernel com apenas uma sobrecarga pequena (par de porcentagens).

Depois, há um excelente script Perl, PSMon , que permite configurar todo o tipo de limites de CPU / memória. Se estes forem excedidos, o psmon irá registrar um erro e / ou matar o processo ofensivo.

O último não lhe forneceria nenhum relatório de criação de perfil, mas se ele decidir matar o mesmo processo várias vezes, você provavelmente encontrou o bastardo desagradável que estava procurando. : -)

    
por 01.08.2010 / 16:04