Dúvida sobre logs

1. Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 23/12/2014 - 11:31h

Boa tarde a todos, sempre que tenho algumas dúvidas com o linux, busco ajuda aqui no forúm, é o seguinte, atualmente tenho uma VPS Linux Ubuntu, no mais está tudo bem, uso um outro usuario que starto o servidor pela 'screen', porém meu servidor começou a cair do nada, e como a screen não salva logs, não consigo ver o erro para fazer a correção, atualmente procurei algumas soluções em outros forums, porém sem sucesso a mais perto que eu consegui foi a solução abaixo, porém não sei se é a correta, se alguem puder me dar um dica ou informar se a solução abaixo irá funcionar quando a screen cair, agradeço muito.

"
./theforgottenserver >> /var/log/otserv.log
"

(Criei o arquivo otserv.log e dei permissão 777 nele)

Se alguém puder me ajudar, agradeço muito,
Desde já agradeço a atenção de todos,

Att.


  


2. Re: Dúvida sobre logs

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/12/2014 - 13:02h

xsimiaox escreveu:

Boa tarde a todos, sempre que tenho algumas dúvidas com o linux, busco ajuda aqui no forúm, é o seguinte, atualmente tenho uma VPS Linux Ubuntu, no mais está tudo bem, uso um outro usuario que starto o servidor pela 'screen', porém meu servidor começou a cair do nada, e como a screen não salva logs,


O GNU Screen pode salvar logs por janela, o atalha de teclado padrão é 'C-a H', para interromper é o mesmo atalho. A referência na documentação é a seguinte:

$ info screen Logging Log

tem outras coisas interessantes aí também.

não consigo ver o erro para fazer a correção, atualmente procurei algumas soluções em outros forums, porém sem sucesso a mais perto que eu consegui foi a solução abaixo, porém não sei se é a correta, se alguem puder me dar um dica ou informar se a solução abaixo irá funcionar quando a screen cair, agradeço muito.

"
./theforgottenserver >> /var/log/otserv.log
"


Já que o programa servidor em si não oferece opção de log, creio que seja melhor você redirecionar tanto a saída de erro padrão (STDERR) quanto a saída padrão (STDOUT) para um ou dois arquivos. Normalmente, quando um programa falha, algo é escrito na STDERR. Da forma como você fez, só irá capturar o que for escrito na STDOUT. Separe os arquivos se esse programa escreve muitas coisas na STDOUT para evitar texto truncados. Segue exemplo:

$ ./theforgottenserver &>> /var/log/otserv.log

dependendo do shell e da versão apenas a seguinte opção estará disponível:

$ ./theforgottenserver 2>&1>> /var/log/otserv.log

Em último caso, você pode usar o 'nohup'

$ nohup ./theforgottenserver

ele escreve um arquivo chamado 'nohup.out' com o dump de tudo o que ocorrer.


(Criei o arquivo otserv.log e dei permissão 777 nele)


Acho que não é necessário. Se apenas você precisar ler, um 'chmod 0600 arquivo' seria suficiente.




3. Re: Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 23/12/2014 - 15:43h

textmode obrigado pela atenção, e parabéns pelas dicas muito bem detalhadas, vou explicar como funciona meu servidor, e você me diz qual a melhor opção a usar, eu tenho uma VPS, com isso se eu abrir o servidor no root, e desligar a conexão via putty, o servidor cai depois de alguns segundos, ai optei por usar o "screen" em um outro usuário, porque assim posso entrar no outro usuario abrir o servidor com o "screen" voltar para o usuario root, e fechar a conexão.

Estes métodos que você me passou eles geram logs somente quando ocorre um crash ou ele vai criando os logs em tempo real?

Qual o melhor método a usar no meu caso?

Mais uma vez obrigado este forum é 10.

Grande abraço.


4. Re: Dúvida sobre logs

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/12/2014 - 16:18h

xsimiaox escreveu:

textmode obrigado pela atenção, e parabéns pelas dicas muito bem detalhadas, vou explicar como funciona meu servidor, e você me diz qual a melhor opção a usar, eu tenho uma VPS, com isso se eu abrir o servidor no root, e desligar a conexão via putty, o servidor cai depois de alguns segundos, ai optei por usar o "screen" em um outro usuário, porque assim posso entrar no outro usuario abrir o servidor com o "screen" voltar para o usuario root, e fechar a conexão.

Estes métodos que você me passou eles geram logs somente quando ocorre um crash ou ele vai criando os logs em tempo real?

Qual o melhor método a usar no meu caso?

Mais uma vez obrigado este forum é 10.

Grande abraço.


Se entendi, houve adição de complexidade desnecessária para solucionar a situação. Inferindo sobre, você inicia sua aplicação e a coloca em background, como root, algo semelhante a:

# ./theforgottenserver&

Ao fechar o terminal, seu programa também é interrompido porque quando um shell é finalizado, todos os seus jobs em background recebem um SIGHUP (mas isto é comportamento padrão e pode ser alterado) e normalmente morrem, a segunda opção seria tornarem-se zumbis porque o processo pai (o próprio shell) morreu (referência: "info bash 'Basic Shell Features' 'Executing Commands' 'Signals'"). Para resolver isto basta desassociar o processo do shell corrente, em outras palavras, o shell corrente deixa de ser o pai do job. Há pelo menos duas maneiras de fazer isto:

1. Utilizando o comando nohup:

# nohup ./theforgottenserver &

O nohup imuniza o comando do SIGHUP e irá gravar tudo o que vier da aplicação no arquivo nohup.out.

2. Utilizando o shell builtin disown:

# ./theforgottenserver 2>> error.log >> out.log &
# disown


No segundo caso, para saber que funcionou, basta executar o comando jobs e verificar que a aplicação não será listado. No primeiro comando ele será listado, mas está "imune".

Considero o segundo caso o ideal para você. Ambos os casos escrevem "logs" em "tempo real", você pode acompanhá-los com o comando 'tail -f <log>'.

Mas isto tudo porque sua aplicação não escreve arquivos de log e nem possui modo 'daemon'. Do contrário, tudo isto daqui seria uma gambiarra :P.



5. Re: Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 25/12/2014 - 12:19h

textmode escreveu:

xsimiaox escreveu:

textmode obrigado pela atenção, e parabéns pelas dicas muito bem detalhadas, vou explicar como funciona meu servidor, e você me diz qual a melhor opção a usar, eu tenho uma VPS, com isso se eu abrir o servidor no root, e desligar a conexão via putty, o servidor cai depois de alguns segundos, ai optei por usar o "screen" em um outro usuário, porque assim posso entrar no outro usuario abrir o servidor com o "screen" voltar para o usuario root, e fechar a conexão.

Estes métodos que você me passou eles geram logs somente quando ocorre um crash ou ele vai criando os logs em tempo real?

Qual o melhor método a usar no meu caso?

Mais uma vez obrigado este forum é 10.

Grande abraço.


Se entendi, houve adição de complexidade desnecessária para solucionar a situação. Inferindo sobre, você inicia sua aplicação e a coloca em background, como root, algo semelhante a:

# ./theforgottenserver&

Ao fechar o terminal, seu programa também é interrompido porque quando um shell é finalizado, todos os seus jobs em background recebem um SIGHUP (mas isto é comportamento padrão e pode ser alterado) e normalmente morrem, a segunda opção seria tornarem-se zumbis porque o processo pai (o próprio shell) morreu (referência: "info bash 'Basic Shell Features' 'Executing Commands' 'Signals'"). Para resolver isto basta desassociar o processo do shell corrente, em outras palavras, o shell corrente deixa de ser o pai do job. Há pelo menos duas maneiras de fazer isto:

1. Utilizando o comando nohup:

# nohup ./theforgottenserver &

O nohup imuniza o comando do SIGHUP e irá gravar tudo o que vier da aplicação no arquivo nohup.out.

2. Utilizando o shell builtin disown:

# ./theforgottenserver 2>> error.log >> out.log &
# disown


No segundo caso, para saber que funcionou, basta executar o comando jobs e verificar que a aplicação não será listado. No primeiro comando ele será listado, mas está "imune".

Considero o segundo caso o ideal para você. Ambos os casos escrevem "logs" em "tempo real", você pode acompanhá-los com o comando 'tail -f <log>'.

Mas isto tudo porque sua aplicação não escreve arquivos de log e nem possui modo 'daemon'. Do contrário, tudo isto daqui seria uma gambiarra :P.


Obrigado pelo apoio, fiz conforme você me disse.

-> Criei 2 arquivos na pasta do servidor (error.log e out.log)
-> Dei permissão 777 aos 2 arquivos
-> Sai do root e fui para outro usuário
-> Entrei na pasta do servidor, e executei os comandos
- ./theforgottenserver 2>> error.log >> out.log &
- disown (Não sei se funcionou corretamente mais coloquei)

-> Tentei usar o tail -f error.log e out.log depois que o servidor caiu, porém todos os arquivos estavam vazios.

** Conforme você já deve ter percebido, eu sou bem "barriga verde" em Linux. Estou correndo atrás pra aprender linux, porque eu odeio Windows. Já aprendi bastante coisa com ajuda de usuários como você e agracedo mais uma vez pela ajuda.

Feliz natal e um grande abraço.
Att.


6. Re: Dúvida sobre logs

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/12/2014 - 12:56h

xsimiaox escreveu:
Obrigado pelo apoio, fiz conforme você me disse.

-> Criei 2 arquivos na pasta do servidor (error.log e out.log)
-> Dei permissão 777 aos 2 arquivos


Esses dois primeiros passos não são necessários.


-> Sai do root e fui para outro usuário
-> Entrei na pasta do servidor, e executei os comandos
- ./theforgottenserver 2>> error.log >> out.log &
- disown (Não sei se funcionou corretamente mais coloquei)

-> Tentei usar o tail -f error.log e out.log depois que o servidor caiu, porém todos os arquivos estavam vazios.


Dúvida: A aplicação cai apenas se você fizer logout ou se permanecer logado ele também cai? Sabe dizer se o consumo de recursos dessa aplicação é alto? Saberia dizer se existe em algum log no /var/log/ algo específico sobre sua aplicação?

Obs.: Em discussões técnicas prefira sempre utilizar o terminologia correta, por exemplo, diretório ao invés de pasta.



7. Re: Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 25/12/2014 - 13:17h

textmode escreveu:

xsimiaox escreveu:
Obrigado pelo apoio, fiz conforme você me disse.

-> Criei 2 arquivos na pasta do servidor (error.log e out.log)
-> Dei permissão 777 aos 2 arquivos


Esses dois primeiros passos não são necessários.


-> Sai do root e fui para outro usuário
-> Entrei na pasta do servidor, e executei os comandos
- ./theforgottenserver 2>> error.log >> out.log &
- disown (Não sei se funcionou corretamente mais coloquei)

-> Tentei usar o tail -f error.log e out.log depois que o servidor caiu, porém todos os arquivos estavam vazios.


Dúvida: A aplicação cai apenas se você fizer logout ou se permanecer logado ele também cai? Sabe dizer se o consumo de recursos dessa aplicação é alto? Saberia dizer se existe em algum log no /var/log/ algo específico sobre sua aplicação?

Obs.: Em discussões técnicas prefira sempre utilizar o terminologia correta, por exemplo, diretório ao invés de pasta.



Certo, vamos lá.
- Se eu abrir o servidor com o root, e fechar o putty, em poucos minutos o servidor cai, por isso optei pelo GNU Screen em um novo usuário, assim mesmo quando eu fecho o putty, o servidor mantem normalmente.

- O consumo do servidor vária bastante do mapa, mais o consumo é baixo, não chega a ultrapassar 1.1GB de memoria em uso, e não usa nem metade do que o processador tem a oferecer.

- Sobre a /var/log só tem um que eu criei, que é o server.log, que abria a screen com o comenado abaixo:
./theforgottenserver >> /var/log/otserv.log
Porém quando o servidor caiu, não tinha nenhum log gerado.

Obrigado mais uma vez pelo apoio.
Att.


8. Re: Dúvida sobre logs

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/12/2014 - 15:31h


- Se eu abrir o servidor com o root, e fechar o putty, em poucos minutos o servidor cai, por isso optei pelo GNU Screen em um novo usuário, assim mesmo quando eu fecho o putty, o servidor mantem normalmente.

- O consumo do servidor vária bastante do mapa, mais o consumo é baixo, não chega a ultrapassar 1.1GB de memoria em uso, e não usa nem metade do que o processador tem a oferecer.

- Sobre a /var/log só tem um que eu criei, que é o server.log, que abria a screen com o comenado abaixo:
./theforgottenserver >> /var/log/otserv.log
Porém quando o servidor caiu, não tinha nenhum log gerado.


Dê uma olhada em /var/log/syslog e em /var/log/messages ou ainda em outros logs que seu sistema usa por padrão. Pode-se até tentar:

$ grep 'theforgottenserver' /var/log/*.log

e ver o que é impresso na tela (talvez nada).

Pode-se tentar também o 'strace' para tentar encontrar alguma falha na aplicação, ela pode ser instável e "capotar" sem avisar nada. Um exemplo de sintaxe para o strace seria:

$ strace -o app.strace.log ./theforgottenserver &
$ disown # apenas para quando fechar o shell não derrubar a aplicação

A saída provavelmente será longa e de difícil leitura. Poste a parte final do arquivo, não sei dizer quantas linhas bastariam mas acho que uma 30 seriam suficientes.

Mais dúvidas:

- Como você faz para verificar que a aplicação está funcionando? Monitora o processo ou verifica se uma porta específica está ouvindo ou ainda um outro procedimento?

- Se a aplição tiver alguma documentação, há alguma coisa referente a depuração de falhas?



9. Re: Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 25/12/2014 - 15:55h

textmode escreveu:


- Se eu abrir o servidor com o root, e fechar o putty, em poucos minutos o servidor cai, por isso optei pelo GNU Screen em um novo usuário, assim mesmo quando eu fecho o putty, o servidor mantem normalmente.

- O consumo do servidor vária bastante do mapa, mais o consumo é baixo, não chega a ultrapassar 1.1GB de memoria em uso, e não usa nem metade do que o processador tem a oferecer.

- Sobre a /var/log só tem um que eu criei, que é o server.log, que abria a screen com o comenado abaixo:
./theforgottenserver >> /var/log/otserv.log
Porém quando o servidor caiu, não tinha nenhum log gerado.


Dê uma olhada em /var/log/syslog e em /var/log/messages ou ainda em outros logs que seu sistema usa por padrão. Pode-se até tentar:

$ grep 'theforgottenserver' /var/log/*.log

e ver o que é impresso na tela (talvez nada).

Pode-se tentar também o 'strace' para tentar encontrar alguma falha na aplicação, ela pode ser instável e "capotar" sem avisar nada. Um exemplo de sintaxe para o strace seria:

$ strace -o app.strace.log ./theforgottenserver &
$ disown # apenas para quando fechar o shell não derrubar a aplicação

A saída provavelmente será longa e de difícil leitura. Poste a parte final do arquivo, não sei dizer quantas linhas bastariam mas acho que uma 30 seriam suficientes.

Mais dúvidas:

- Como você faz para verificar que a aplicação está funcionando? Monitora o processo ou verifica se uma porta específica está ouvindo ou ainda um outro procedimento?

- Se a aplição tiver alguma documentação, há alguma coisa referente a depuração de falhas?


Para ser bem sincero é uma aplicação, muito ruim e com muitas falhas.

Quando ocorre algum erro, ele informa na screen que a aplicação esta rodando, porém para evitar maiores danos, logo após a mensagem de erro, ele fecha a aplicação, para eu conseguir capturar este erro, eu preciso de algum log para monitorar a screen em tempo real, porque quando o servidor cair, no final do log o erro vai estar gravado, com isso facilitando a correção da aplicação.

Para monitorar, as vezes eu monitoro pelo site ou até mesmo alguns usuários informam que o servidor não está respondendo, quando entro pelo putty e tento "screen -r", a screen já não existe mais.

Eu só precisava mesmo de um log da screen que está rodando a aplicação, porque quando ela "dropasse", eu iria direto no log e verificava qual foi a causa da interupção.


Chequei os logs que você me falou, tem bastante logs, porém nenhum da aplicação "theforgottenserver".

Mais uma vez obrigado,
Att.




10. Re: Dúvida sobre logs

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/12/2014 - 21:17h


Para ser bem sincero é uma aplicação, muito ruim e com muitas falhas.

Quando ocorre algum erro, ele informa na screen que a aplicação esta rodando, porém para evitar maiores danos, logo após a mensagem de erro, ele fecha a aplicação, para eu conseguir capturar este erro, eu preciso de algum log para monitorar a screen em tempo real, porque quando o servidor cair, no final do log o erro vai estar gravado, com isso facilitando a correção da aplicação.

Para monitorar, as vezes eu monitoro pelo site ou até mesmo alguns usuários informam que o servidor não está respondendo, quando entro pelo putty e tento "screen -r", a screen já não existe mais.

Eu só precisava mesmo de um log da screen que está rodando a aplicação, porque quando ela "dropasse", eu iria direto no log e verificava qual foi a causa da interupção.


Chequei os logs que você me falou, tem bastante logs, porém nenhum da aplicação "theforgottenserver".

Mais uma vez obrigado,
Att.



Confesso que não consegui realmente encontrar sentido no procedimento nem o que de fato está ocorrendo. Os procedimentos que passei eram para não depender do screen e permitirem gravar as saídas para posterior depuração, não sei consegui explicar corretamente também :P.

Concentrando-se apenas no que você já tem e usa. Inicie o screen com a opção '-L', ele cria um arquivo de log com o número da janela no diretório onde foi executado, se for apenas uma janela o arquivo terá o nome 'screenlog.0'. Tudo, inclusive o que for digitado, será logado nesse arquivo. Teste e veja se esta opção lhe ajuda.



11. Re: Dúvida sobre logs

Simiao Lucio Leal Queiroz
xsimiaox

(usa Ubuntu)

Enviado em 26/12/2014 - 11:38h

Bom dia, não te dei um retorno pois não estou em casa, lobo que chegar irei testar conforme pedido e posto o resultado,

Obrigado pelo apoio,
Att.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts