Discussion:
[shell-script] Script para monitorar
Cesar Rodrigues bambamcbreal@gmail.com [shell-script]
2018-05-03 21:24:54 UTC
Permalink
Boa noite, pessoal!

Queria uma luz da galera do grupo...

Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema.

Alguém aqui já fez isso ou tem uma ideia boa?

Desde já agradeço!
Tiago Tarifa Munhoz tiagotarifa@gmail.com [shell-script]
2018-05-03 22:06:27 UTC
Permalink
Boa noite Cesar!

Eu faria algo com os comandos watch, grep e wc -l
 
Também acho que da para fazer somente com o watch e grep -mX
onde X é a quantidade +1 de erros encontrados.

Tenta mesclar esses comandos e qualquer coisa posta aqui para a gente
analisar.
 
Boa noite, pessoal! 
Queria uma luz da galera do grupo... 
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se
tiver uma quantidade maior que x erros, enviar um email notificando o
problema.
Alguém aqui já fez isso ou tem uma ideia boa? 
Desde já agradeço!
Tiago Peczenyj tiago.peczenyj@gmail.com [shell-script]
2018-05-03 22:10:02 UTC
Permalink
Ola

Existem varias formas de fazer isso, entretanto um script feito a mão pode
não ser a ferramenta mais adequada.

Vc quer algo que monitore e alerte em caso de ocorrências, se for possível
utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem uma imensa
flexibilidade mas demanda tempo pra configurar e usar (talvez precise
estruturar os seus logs, emitindo em json por exemplo) exemplo:
https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html

Para algo mais simples: dado que vc pode executar o script via crontab a
cada x tempos, bastaria:

Veja se a saida do grep -c ajuda

$ grep -c “expressão de erro” /var/log/seuarquivo.log

Se ajudar, bastaria fazer

if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi

Mas isso é uma versão simplificada. Na prática vc tem q pensar onde
procurar e como
Post by Cesar Rodrigues ***@gmail.com [shell-script]
Boa noite, pessoal!
Queria uma luz da galera do grupo...
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema.
Alguém aqui já fez isso ou tem uma ideia boa?
Desde já agradeço!
--
Tiago B. Peczenyj

http://about.me/peczenyj
Cesar Rodrigues bambamcbreal@gmail.com [shell-script]
2018-05-03 22:28:03 UTC
Permalink
Obrigado, amigos.
Vou tentar implementar o que vocês aconselharam.

No mais, eu tentei algo parecido com isto:
$ tail -f json.log &
$ for ((i=1; i<10; i++)); { echo $i >> resultado-json.log; sleep 10; }

Funcionou, porém, acho que tem formas melhores de monitorar isso.

Sobre o elasticsearch, uso ele na empresa, mas é na versão free. Acho que
ele só alarma se estiver utilizando a versão paga.
De qualquer forma irei pesquisar mais e se eu encontrar alguma coisa, aviso
a vocês.

Aceito mais sugestões/dicas ;)

Obrigado!!!
Post by Tiago Peczenyj ***@gmail.com [shell-script]
Ola
Existem varias formas de fazer isso, entretanto um script feito a mão pode
não ser a ferramenta mais adequada.
Vc quer algo que monitore e alerte em caso de ocorrências, se for possível
utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem uma imensa
flexibilidade mas demanda tempo pra configurar e usar (talvez precise
https://www.elastic.co/guide/en/kibana/current/watcher-
create-threshold-alert.html
Para algo mais simples: dado que vc pode executar o script via crontab a
Veja se a saida do grep -c ajuda
$ grep -c “expressão de erro” /var/log/seuarquivo.log
Se ajudar, bastaria fazer
if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi
Mas isso é uma versão simplificada. Na prática vc tem q pensar onde
procurar e como
Post by Cesar Rodrigues ***@gmail.com [shell-script]
Boa noite, pessoal!
Queria uma luz da galera do grupo...
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema..
Alguém aqui já fez isso ou tem uma ideia boa?
Desde já agradeço!
--
Tiago B. Peczenyj
http://about.me/peczenyj
Maik Alberto maik.alberto@hotmail.com [shell-script]
2018-05-03 22:51:14 UTC
Permalink
só complementando para que não dispare em toda consulta após atingir os 10 primeiros erros.


LOG=/tmp/log

while [ 1 ];
do
sleep 600
if [[ $( grep -c "ERRO" $LOG ) -ge 10 ]]; then
#envia email
mv $LOG $LOG$(date +%s)
$LOG
fi
done



________________________________
De: shell-***@yahoogrupos.com.br <shell-***@yahoogrupos.com.br> em nome de Tiago Peczenyj ***@gmail.com [shell-script] <shell-***@yahoogrupos.com.br>
Enviado: quinta-feira, 3 de maio de 2018 19:10
Para: shell-***@yahoogrupos.com.br
Assunto: Re: [shell-script] Script para monitorar



Ola

Existem varias formas de fazer isso, entretanto um script feito a mão pode não ser a ferramenta mais adequada.

Vc quer algo que monitore e alerte em caso de ocorrências, se for possível utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem uma imensa flexibilidade mas demanda tempo pra configurar e usar (talvez precise estruturar os seus logs, emitindo em json por exemplo) exemplo:
https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html
[Loading Image...]<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>

Create Threshold Alert | Kibana User Guide [6.2] | Elastic<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
www.elastic.co
Get started with the documentation for Elasticsearch, Kibana, Logstash, Beats, X-Pack, Elastic Cloud, Elasticsearch for Apache Hadoop, and our language clients.


Para algo mais simples: dado que vc pode executar o script via crontab a cada x tempos, bastaria:

Veja se a saida do grep -c ajuda

$ grep -c “expressão de erro” /var/log/seuarquivo.log

Se ajudar, bastaria fazer

if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi

Mas isso é uma versão simplificada. Na prática vc tem q pensar onde procurar e como

Em qui, 3/05/2018 às 23:25, Cesar Rodrigues ***@gmail.com<mailto:***@gmail.com> [shell-script] <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.br>> escreveu:


Boa noite, pessoal!

Queria uma luz da galera do grupo...

Estou precisando criar um script que busque na hora atual ou a cada 10 minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver uma quantidade maior que x erros, enviar um email notificando o problema.

Alguém aqui já fez isso ou tem uma ideia boa?

Desde já agradeço!

--
Tiago B. Peczenyj

http://about.me/peczenyj
willian mayan willianmayan@gmail.com [shell-script]
2018-05-04 09:41:24 UTC
Permalink
Fala pessoal blz?
Eu particularmente quando tenho algo que precisa ser monitorado em arquivo
escrevo o script para me trazer somente um(ou vários) resultado e executar
uma ação( nesse caso enviar email).
A parte do tempo eu adiciono a chamada do meu script no cron, assim não vai
ter uma instrução sleep rodando. Se temos o cron porque não usar? :)

# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)#
| | .---------- day of month (1 - 31)# | | | .------- month (1 -
12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6)
(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * *
* * user-name command to be executed

10 * * * * /path/meu_script.sh
só complementando para que não dispare em toda consulta após atingir os 10
primeiros erros.
LOG=/tmp/log
while [ 1 ];
do
sleep 600
if [[ $( grep -c "ERRO" $LOG ) -ge 10 ]]; then
#envia email
mv $LOG $LOG$(date +%s)
$LOG
fi
done
------------------------------
*Enviado:* quinta-feira, 3 de maio de 2018 19:10
*Assunto:* Re: [shell-script] Script para monitorar
Ola
Existem varias formas de fazer isso, entretanto um script feito a mão pode
não ser a ferramenta mais adequada.
Vc quer algo que monitore e alerte em caso de ocorrências, se for possível
utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem uma imensa
flexibilidade mas demanda tempo pra configurar e usar (talvez precise
https://www.elastic.co/guide/en/kibana/current/watcher-
create-threshold-alert.html
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
Create Threshold Alert | Kibana User Guide [6.2] | Elastic
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
www.elastic.co
Get started with the documentation for Elasticsearch, Kibana, Logstash,
Beats, X-Pack, Elastic Cloud, Elasticsearch for Apache Hadoop, and our
language clients...
Para algo mais simples: dado que vc pode executar o script via crontab a
Veja se a saida do grep -c ajuda
$ grep -c “expressão de erro” /var/log/seuarquivo.log
Se ajudar, bastaria fazer
if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi
Mas isso é uma versão simplificada. Na prática vc tem q pensar onde
procurar e como
Boa noite, pessoal!
Queria uma luz da galera do grupo...
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema.
Alguém aqui já fez isso ou tem uma ideia boa?
Desde já agradeço!
--
Tiago B. Peczenyj
http://about.me/peczenyj
--
Willian.Mayan
GNU/Linux user:#536163
Cesar Rodrigues bambamcbreal@gmail.com [shell-script]
2018-05-04 18:49:53 UTC
Permalink
Então,
eu tenho que ver uma forma dele pegar somente as informações mais recentes.
Talvez o tail ajude.
Exemplo: pegue somente 100 últimas linhas do último horário e jogue o
resultado num arquivo. Se o resultado NÃO FOR IGUAL da penultima busca,
sobrescreva o arquivo anterior com o novo resultado.
Post by willian mayan ***@gmail.com [shell-script]
Fala pessoal blz?
Eu particularmente quando tenho algo que precisa ser monitorado em arquivo
escrevo o script para me trazer somente um(ou vários) resultado e executar
uma ação( nesse caso enviar email).
A parte do tempo eu adiciono a chamada do meu script no cron, assim não
vai ter uma instrução sleep rodando. Se temos o cron porque não usar? :)
# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed
10 * * * * /path/meu_script.sh
só complementando para que não dispare em toda consulta após atingir os
10 primeiros erros.
LOG=/tmp/log
while [ 1 ];
do
sleep 600
if [[ $( grep -c "ERRO" $LOG ) -ge 10 ]]; then
#envia email
mv $LOG $LOG$(date +%s)
$LOG
fi
done
------------------------------
*Enviado:* quinta-feira, 3 de maio de 2018 19:10
*Assunto:* Re: [shell-script] Script para monitorar
Ola
Existem varias formas de fazer isso, entretanto um script feito a mão
pode não ser a ferramenta mais adequada.
Vc quer algo que monitore e alerte em caso de ocorrências, se for
possível utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem
uma imensa flexibilidade mas demanda tempo pra configurar e usar (talvez
https://www.elastic.co/guide/en/kibana/current/watcher-creat
e-threshold-alert.html
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
Create Threshold Alert | Kibana User Guide [6.2] | Elastic
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
www.elastic.co
Get started with the documentation for Elasticsearch, Kibana, Logstash,
Beats, X-Pack, Elastic Cloud, Elasticsearch for Apache Hadoop, and our
language clients.
Para algo mais simples: dado que vc pode executar o script via crontab a
Veja se a saida do grep -c ajuda
$ grep -c “expressão de erro” /var/log/seuarquivo.log
Se ajudar, bastaria fazer
if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi
Mas isso é uma versão simplificada. Na prática vc tem q pensar onde
procurar e como
Boa noite, pessoal!
Queria uma luz da galera do grupo...
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema..
Alguém aqui já fez isso ou tem uma ideia boa?
Desde já agradeço!
--
Tiago B. Peczenyj
http://about..me/peczenyj <http://about.me/peczenyj>
--
Willian.Mayan
GNU/Linux user:#536163
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2018-05-04 20:14:12 UTC
Permalink
​Seria possível vc guardar a última linha verificada em um arquivo
(chamado, digamos, UltimaLinha) e teu script começaria da seguinte forma:

sed "1, /^$(cat UltimaLinha)$/d" ArqLog | ...

Esse sed apaga da primeira até a última linha do processamento anterior,
sobrando somente as últimas. Ao fim do script vc terá de fazer:
tail -1 ArqLog > UltimaLinha

​Dessa forma só daria zebra se ocorressem duas linhas exatamente iguais, o
que não costuma acontecer em logs.​

Abraços,
Julio

*» Não tem tempo para fazer um curso presencial?*
*» Na sua cidade não tem nenhum bom curso de Linux?*
*» O treinamento está muito caro?*
*O melhor de todos em EAD é http://www.dicas-l.com.br/cursos/psl/
<http://www.dicas-l.com.br/cursos/psl/>*

*Damos treinamento em sua empresa **com certificado*
*e nota fiscal **por **um preço, **no mínimo, 50% **abaixo*
*de qualquer curso.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas.. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Cesar Rodrigues ***@gmail.com [shell-script]
Então,
eu tenho que ver uma forma dele pegar somente as informações mais
recentes. Talvez o tail ajude.
Exemplo: pegue somente 100 últimas linhas do último horário e jogue o
resultado num arquivo. Se o resultado NÃO FOR IGUAL da penultima busca,
sobrescreva o arquivo anterior com o novo resultado.
Post by willian mayan ***@gmail.com [shell-script]
Fala pessoal blz?
Eu particularmente quando tenho algo que precisa ser monitorado em
arquivo escrevo o script para me trazer somente um(ou vários) resultado e
executar uma ação( nesse caso enviar email).
A parte do tempo eu adiciono a chamada do meu script no cron, assim não
vai ter uma instrução sleep rodando. Se temos o cron porque não usar? :)
# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed
10 * * * * /path/meu_script.sh
só complementando para que não dispare em toda consulta após atingir os
10 primeiros erros.
LOG=/tmp/log
while [ 1 ];
do
sleep 600
if [[ $( grep -c "ERRO" $LOG ) -ge 10 ]]; then
#envia email
mv $LOG $LOG$(date +%s)
$LOG
fi
done
------------------------------
*Enviado:* quinta-feira, 3 de maio de 2018 19:10
*Assunto:* Re: [shell-script] Script para monitorar
Ola
Existem varias formas de fazer isso, entretanto um script feito a mão
pode não ser a ferramenta mais adequada.
Vc quer algo que monitore e alerte em caso de ocorrências, se for
possível utilizar a stack ELK ( elasticsearch, logstash e kibana ) vc tem
uma imensa flexibilidade mas demanda tempo pra configurar e usar (talvez
https://www.elastic.co/guide/en/kibana/current/watcher-creat
e-threshold-alert.html
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
Create Threshold Alert | Kibana User Guide [6.2] | Elastic
<https://www.elastic.co/guide/en/kibana/current/watcher-create-threshold-alert.html>
www.elastic.co
Get started with the documentation for Elasticsearch, Kibana, Logstash,
Beats, X-Pack, Elastic Cloud, Elasticsearch for Apache Hadoop, and our
language clients.
Para algo mais simples: dado que vc pode executar o script via crontab a
Veja se a saida do grep -c ajuda
$ grep -c “expressão de erro” /var/log/seuarquivo.log
Se ajudar, bastaria fazer
if [[ $( grep ... ) -ge 10 ]]; then
# envia email
fi
Mas isso é uma versão simplificada. Na prática vc tem q pensar onde
procurar e como
Boa noite, pessoal!
Queria uma luz da galera do grupo...
Estou precisando criar um script que busque na hora atual ou a cada 10
minutos, a quantidade de ERROS em um determinado arquivo de log, e se tiver
uma quantidade maior que x erros, enviar um email notificando o problema.
Alguém aqui já fez isso ou tem uma ideia boa?
Desde já agradeço!
--
Tiago B. Peczenyj
http://about..me/peczenyj <http://about.me/peczenyj>
--
Willian.Mayan
GNU/Linux user:#536163
Loading...