File: //usr/local/locaweb/bin/lwcorp_newrelic.sh
#!/bin/bash
# VARS e FUNCTIONS
. /etc/lwcorp/lwcorp.functions
chave () {
CHAVE=$(dialog --backtitle "$LWCORPHEADER" --title "CHAVE" --stdout --inputbox "\nINFORME A CHAVE:" 9 35)
if [ -z $CHAVE ]; then
echo "$LOGDATE - [Analista nao informou a chave. Processo cancelado]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nERRO: CHAVE NAO INFORMADA" 7 35
exit 1
else
if [ $(echo $CHAVE | wc --max-line-length) != 40 ] ; then
echo "$LOGDATE - [Analista informou chave invalida. Processo cancelado]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "ATENCAO: \n\nCHAVE INVALIDA. CHAVE INFORMADA:\n\n$CHAVE\n\nA CHAVE DEVE POSSUIR EXATOS 40 CARACTERES" 11 100;
exit 1
else
echo "$LOGDATE - [Analista informou chave $CHAVE]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nCHAVE INFORMADA: \n\n$CHAVE \n\nA SEGUIR O SERVICO SERA CONFIGURADO." 11 100
fi
if [ $? != 0 ]; then
echo "$LOGDATE - [Analista cancelou processo teclando ESC]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nPROCESSO CANCELADO" 7 100
exit 1
fi
fi
}
func_set_nrsysmon () {
#
# Seta a chave:
#
if [ -x /usr/sbin/nrsysmond-config ]; then
# Configura e reinicia o Servico:
echo "$LOGDATE - [Setando a chave $CHAVE no /etc/newrelic/nrsysmond.cfg]" >> $LOGFILE
nrsysmond-config --set license_key=$CHAVE
# Reinicia o servico:
echo "$LOGDATE - [Parando Sysmond]" >> $LOGFILE
echo "" ; systemctl stop newrelic-sysmond stop
echo "$LOGDATE - [Subindo Sysmond]" >> $LOGFILE
echo "" ; systemctl start newrelic-sysmond
echo ""
case $? in
0) echo "$LOGDATE - [Newrelic-Sysmond configurado com sucesso]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLESUCESSO" --stdout --msgbox "\nRSYSMOND CONFIGURADO COM SUCESSO" 7 100;;
*) echo "$LOGDATE - [Falha na configuracao do Newrelic-Sysmond]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --stdout --msgbox "\nFALHA NO SERVICO RSYSMOND" 7 100; exit 1 ;;
esac
else
echo "$LOGDATE - [Problema nas permissoes do utilitario nrsysmond-config]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --stdout --inputbox "\nPROBLEMA NO UTILITARIO NRSYSMON" 7 100
exit 1
fi
}
func_set_newrelic () {
#
# Faz um configtest:
#
configtest
#
# Comeca configuracao
#
# Configura o daemon:
if [ ! -e /etc/newrelic/newrelic.cfg ];then
if [ -e /etc/newrelic/newrelic.cfg.template ];then
echo "$LOGDATE - [(Re)Criando arquivo /etc/newrelic/newrelic.cfg]" >> $LOGFILE;
cp /etc/newrelic/newrelic.cfg.template /etc/newrelic/newrelic.cfg
else
echo "$LOGDATE - [Impossivel recriar arquivo /etc/newrelic/newrelic.cfg]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nIMPOSSIVEL CRIAR /etc/newrelic/newrelic.cfg" 7 100;
exit 1
fi
fi
# Configura o newrelic.ini em todas versoes do PHP:
if [ -e /etc/php.d/newrelic.ini ];then
sed -i "s/REPLACE_WITH_REAL_KEY/$CHAVE/g" /etc/php.d/newrelic.ini
for version in 3 4 5 6; do
cp -f /etc/php.d/newrelic.ini /etc/php/5.$version/php.d/
case $? in
0) echo "$LOGDATE - [Copiado newrelic.ini para cada versao do PHP presente no servidor]" >> $LOGFILE;;
*) echo "$LOGDATE - [Erro ao copiar newrelic.ini para diretorio das versoes do PHP]" >> $LOGFILE; exit 1;;
esac
done
#
# Reinicia o Newrelic
#
echo "$LOGDATE - [Parando o Newrelic]" >> $LOGFILE;
echo "" ; systemctl stop newrelic-daemon
echo "$LOGDATE - [Subindo o Newrelic]" >> $LOGFILE;
echo "" ; systemctl start newrelic-daemon
echo ""
echo "$LOGDATE - [Newrelic configurado e reiniciado. Aguardando resposta do analista sobre reinicio do Apache]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --yesno "\nATENCAO:\n\nO NEWRELIC FOI CONFIGURADO COM SUCESSO.\n\nO APACHE2, CONTUDO, PRECISA SER REINICIADO PARA RECARREGAR O MODULO NEWRELIC.\n\nDESEJA REINICIAR O APACHE2 AGORA?" 13 100
if [ $? = 0 ];then
#
# Reinicia o Apache2:
#
echo "$LOGDATE - [Parando o Apache]" >> $LOGFILE;
apachectl stop
if [[ $(ps aux | grep apache2 | grep -v grep) ]]; then
echo "$LOGDATE - [Matando processos presos]" >> $LOGFILE;
echo ""
kill -9 $(ps aux | grep apache2 | grep -v grep | awk '{print$2}')
fi
echo "$LOGDATE - [Subindo o Apache]" >> $LOGFILE;
apachectl start
echo ""
echo "$LOGDATE - [Newrelic configurado com sucesso e Apache reiniciado]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLESUCESSO" --msgbox "\nNEWRELIC CONFIGURADO COM SUCESSO E APACHE2 REINICIADO." 7 100; exit 0
exit 0
else
echo "$LOGDATE - [Newrelic configurado com sucesso, mas o Apache nao foi reiniciado]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEINFO" --msgbox "\nNEWRELIC CONFIGURADO COM SUCESSO.\n\nOBSERVACAO\n\nCOMO O APACHE2 NAO FOI REINICIADO, OS DADOS PODEM DEMORAR PARA ENTRAR NO PAINEL NEWRELIC." 11 100; exit 0
exit 0
fi
fi
}
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nA CONFIGURACAO DO NEWRELIC REQUER RESTART DO APACHE2." 7 65;
echo "$LOGDATE - [Aguardando analista escolher acao]" >> $LOGFILE;
INIT_ACT=`dialog --backtitle "$LWCORPHEADER" --stdout \
--radiolist "\n SELECIONE A ACAO DESEJADA:" \
0 0 0 \
CONFIGURACAO_NEWRELIC 'Configurar chave Newrelic;' off \
CONFIGURACAO_NRSYSMON 'Configurar chave Nrsysmon.' off \
CONFIGURACAO_NEWRELIC_E_NRSYSMON 'Configurar Newrelic e Nrsysmon.' off`
case $INIT_ACT in
CONFIGURACAO_NEWRELIC)
echo "$LOGDATE - [Analista selecionou configuracao de Newrelic]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nSELECIONADA CONFIGURACAO DE NEWRELIC." 7 100;
chave;
func_set_newrelic;;
CONFIGURACAO_NRSYSMON)
echo "$LOGDATE - [Analista selecionou configuracao de Nrsysmon]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nSELECIONADA CONFIGURACAO DE NRSYSMON" 7 100;
chave;
func_set_nrsysmon;;
CONFIGURACAO_NEWRELIC_E_NRSYSMON)
echo "$LOGDATE - [Analista selecionou configuracao de Newrelic e Nrsysmon]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEATENCAO" --msgbox "\nSELECIONADA CONFIGURACAO DE NEWRELIC E NRSYSMON" 7 100;
chave;
func_set_nrsysmon;
func_set_newrelic;;
*)
echo "$LOGDATE - [Analista nao selecionou uma acao e/ou cancelou a configuracao]" >> $LOGFILE;
dialog --backtitle "$LWCORPHEADER" --title "$TITLEERRO" --msgbox "\nCONFIGURACAO CANCELADA." 7 65;
exit 1;;
esac