Log para monitorar processos que mais usam CPU

1. Log para monitorar processos que mais usam CPU

Fabio
fabio_aragao

(usa Ubuntu)

Enviado em 26/02/2021 - 11:35h

Bom dia a todos,

Temos uma instancia na AWS com Ubuntu, reparamos que vez ou outra a CPU fica em 80% por alguns minutos aleatoriamente mas não sabemos qual processo está fazendo isso.
No Linux Ubuntu ou se alguem sabe na AWS mesmo, existe alguma forma de pegar um log no horario que o pico de processamento aconteceu para saber o que está ocasionando este cosumo ??

Obrigado


  


2. Re: Log para monitorar processos que mais usam CPU

Vinicius Mello
vmmello

(usa Slackware)

Enviado em 26/02/2021 - 13:02h

Um software livre pra monitorar o uso de recursos no servidor é o Netdata: https://github.com/netdata/netdata

Com ele você consegue ver o uso de CPU, disco, rede, etc em um determinado momento no passado, e quais processos e portas estão relacionados.


3. Re: Log para monitorar processos que mais usam CPU

Fabio
fabio_aragao

(usa Ubuntu)

Enviado em 26/02/2021 - 13:30h


vmmello escreveu:

Um software livre pra monitorar o uso de recursos no servidor é o Netdata: https://github.com/netdata/netdata

Com ele você consegue ver o uso de CPU, disco, rede, etc em um determinado momento no passado, e quais processos e portas estão relacionados.


Olá, com este software vou poder monitorar qual foi o processo que fez a CPU chegar a 80% em algum momento especifico mesmo que eu não esteja conectado a instancia ??


4. Re: Log para monitorar processos que mais usam CPU

Vinicius Mello
vmmello

(usa Slackware)

Enviado em 26/02/2021 - 16:18h

Sim, é possível isto. Mas você precisa definir na configuração quais processos ele deve monitorar. Na configuração padrão ele monitora apenas algumas métricas de alguns processos (e.g. Apache httpd, MySQL, PostgresSQL, etc).

Pra monitorar o uso de CPU é preciso configurar quais os nomes do processos devem ser monitorados, conforme explicado aqui: https://learn.netdata.cloud/guides/monitor/process

Uma tela de exemplo da configuração padrão do Netdata pode ser vista aqui: https://registry.my-netdata.io/


5. Re: Log para monitorar processos que mais usam CPU

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/02/2021 - 21:49h

fabio_aragao escreveu:

Bom dia a todos,

Temos uma instancia na AWS com Ubuntu, reparamos que vez ou outra a CPU fica em 80% por alguns minutos aleatoriamente mas não sabemos qual processo está fazendo isso.
No Linux Ubuntu ou se alguem sabe na AWS mesmo, existe alguma forma de pegar um log no horario que o pico de processamento aconteceu para saber o que está ocasionando este cosumo ??
Obrigado

Boa noite Fabio.
O comando:
ps -eo pmem,pcpu,comm --sort -pcpu|gawk 'BEGIN{printf "\nData: %s\n""PROC %MEM %CPU COMMAND\n",strftime("%F Hora:  %X")}{cmd[$3]++;mem[$3]+=$1;cpu[$3]+=$2;}END{for(x in cmd) if(mem[x]>0 && cpu[x]>0) print cmd[x],mem[x]"%",cpu[x]"%",x}'|column -t 

Conta os processos, o consumo de CPU e Memória de cada um, filtra a saída, excluindo processos com 0% de consumo de Memória/CPU....
Saída:
Data: 2021-02-26 Hora: 21:11:42
PROC %MEM %CPU COMMAND
13 22.9% 31.8% chrome
1 0.7% 0.1% kate
1 0.6% 0.6% kicker
1 0.5% 0.6% tdepowersave
1 1% 4% Xorg
1 0.1% 1% compton-tde
3 2.1% 0.2% kwrite
1 0.6% 0.1% kdesktop

----------------------------------------------------------------------------------------------------------------------------
A idéia é, deixar o comando executando, de "tempo em tempo", armazenando a saída em um relatório.txt,
Depois, é só analisar o relatório.....
----------------------------------------------------------------------------------------------------------------------------
Com separador:
sep=$(printf "%28s"|sed -r 's/ /-/g;s/.{7}/& /g')
ps -eo pmem,pcpu,comm|gawk 'BEGIN{printf "\n'"${sep}"'\nData: %s\n""PROC %MEM %CPU COMMAND\n",strftime("%F Hora: %X")}{cmd[$3]++;mem[$3]+=$1;cpu[$3]+=$2;}END{for(x in cmd) if(mem[x]>0 && cpu[x]>0) print cmd[x],mem[x]"%",cpu[x]"%",x}END{printf "\n'"${sep}"'\n" }'|column -t
----- ----- ----- -----
Data: 2021-02-26 Hora: 21:45:12
PROC %MEM %CPU COMMAND
14 25.3% 35.8% chrome
1 0.6% 0.6% kicker
1 0.5% 0.6% tdepowersave
1 1% 4.2% Xorg
1 0.1% 1% compton-tde
----- ----- ----- -----


CORREÇãO: em 28-02-2021 04:10:00 Alterada a lógica no END, de E para OU,
ps -eo pmem,pcpu,comm --sort -pcpu|gawk 'BEGIN{printf "\nData: %s\n""PROC %MEM %CPU COMMAND\n",strftime("%F Hora:  %X")}{cmd[$3]++;mem[$3]+=$1;cpu[$3]+=$2;}END{for(x in cmd) if(mem[x]>0 || cpu[x]>0) print cmd[x],mem[x]"%",cpu[x]"%",x}'|column -t 


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



6. Re: Log para monitorar processos que mais usam CPU

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 26/02/2021 - 22:31h


msoliver escreveu:


fabio_aragao escreveu:

Bom dia a todos,

Temos uma instancia na AWS com Ubuntu, reparamos que vez ou outra a CPU fica em 80% por alguns minutos aleatoriamente mas não sabemos qual processo está fazendo isso.
No Linux Ubuntu ou se alguem sabe na AWS mesmo, existe alguma forma de pegar um log no horario que o pico de processamento aconteceu para saber o que está ocasionando este cosumo ??
Obrigado

Boa noite Fabio.
O comando:
ps -eo pmem,pcpu,comm --sort -pcpu|gawk 'BEGIN{printf "\nData: %s\n""PROC %MEM %CPU COMMAND\n",strftime("%F Hora:  %X")}{cmd[$3]++;mem[$3]+=$1;cpu[$3]+=$2;}END{for(x in cmd) if(mem[x]>0 && cpu[x]>0) print cmd[x],mem[x]"%",cpu[x]"%",x}'|column -t 

Conta os processos, o consumo de CPU e Memória de cada um, filtra a saída, excluindo processos com 0% de consumo de Memória/CPU....
Saída:
Data: 2021-02-26 Hora: 21:11:42
PROC %MEM %CPU COMMAND
13 22.9% 31.8% chrome
1 0.7% 0.1% kate
1 0.6% 0.6% kicker
1 0.5% 0.6% tdepowersave
1 1% 4% Xorg
1 0.1% 1% compton-tde
3 2.1% 0.2% kwrite
1 0.6% 0.1% kdesktop

----------------------------------------------------------------------------------------------------------------------------
A idéia é, deixar o comando executando, de "tempo em tempo", armazenando a saída em um relatório.txt,
Depois, é só analisar o relatório.....
----------------------------------------------------------------------------------------------------------------------------
Com separador:
sep=$(printf "%28s"|sed -r 's/ /-/g;s/.{7}/& /g')
ps -eo pmem,pcpu,comm|gawk 'BEGIN{printf "\n'"${sep}"'\nData: %s\n""PROC %MEM %CPU COMMAND\n",strftime("%F Hora: %X")}{cmd[$3]++;mem[$3]+=$1;cpu[$3]+=$2;}END{for(x in cmd) if(mem[x]>0 && cpu[x]>0) print cmd[x],mem[x]"%",cpu[x]"%",x}END{printf "\n'"${sep}"'\n" }'|column -t
----- ----- ----- -----
Data: 2021-02-26 Hora: 21:45:12
PROC %MEM %CPU COMMAND
14 25.3% 35.8% chrome
1 0.6% 0.6% kicker
1 0.5% 0.6% tdepowersave
1 1% 4.2% Xorg
1 0.1% 1% compton-tde
----- ----- ----- -----


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


O comando sar consegue fazer um histórico ao longo do tempo, mas eu recomendaria essa solução c um aditivo: usar o comando uptime, que fornece a carga do sistema no último minuto, nos últimos 5 minutos e nos últimos 15 minutos. Adicionando os dois comandos num script e colocando no cron ou como service dá p fazer um monitoramento interessante e vc pode ir adicionando recursos aos poucos à medida em que vai conhecendo seu sistema.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts