Como eu escrevi meu monitoramento

Eu decidi compartilhar minha história. Talvez até alguém ache útil essa solução de orçamento para um problema conhecido.

Quando eu era jovem e quente e não sabia onde colocar minha energia, decidi trabalhar um pouco como freelancer. Consegui obter rapidamente uma classificação e encontrei alguns clientes regulares que me pediam para manter o servidor em uma base contínua.

A primeira coisa que pensei foi na necessidade de monitoramento. Decidi fazê-lo como pessoas inteligentes, não para reinventar a roda, mas para olhar para opções prontas, como Munin ou Zabbix. Mas foi imediatamente descoberto que a versão da Web requer uma boa conexão com a Internet, especialmente se você a abrir pelo telefone. Se você relaxar na natureza, longe da cidade, é difícil obter uma conexão estável. Portanto, uma opção de monitoramento de console foi escolhida.

Em cima e em cima do leitor de log atopsar me ajudou muito como monitoramento de console. Eles já foram mencionados no habr, o topo foi desmontado , mas quase nada foi dito sobre o atopsar.

Instalação


Instalação muito simples, apenas três equipes.

#Centos

yum install atop 

# Debian / Ubuntu

 apt-get install atop 


Em seguida, você pode configurar a operação de monitoramento por conta própria ou usar as configurações padrão.

# Debian / Ubuntu / Centos

 /etc/default/atop 

Arquivo padrão:

  #cat /etc/default/atop INTERVAL=60 #,       ,    10  LOGPATH="/var/log/atop" #     OUTFILE="$LOGPATH/daily.log" #      

Adicionar à execução automática
# Debian / Ubuntu / Centos

 systemctl enable atop 

Executar no topo como um daemon
# Debian / Ubuntu / Centos

 systemctl start atop 

Para preguiçoso reunidos em uma equipe
#Centos

 yum install atop && systemctl enable atop && systemctl start atop 

# Debian / Ubuntu

 apt-get install atop && systemctl enable atop && systemctl start atop 

Atopsar


Juntamente com o atop, o atopsar também é instalado, que é um analisador de console conveniente de logs binários executados pelo daemon do atop. Obviamente, você pode ler os logs sobre si mesmo, mas isso não é tão conveniente se você deseja capturar um grande intervalo de tempo.

Um pequeno programa educacional sobre o trabalho do atopsar.

Quando o atopsar inicia sem chaves, o log de hoje é aberto e a carga em cada núcleo separadamente e a sequência idl de todos os kernels é exibida.

As chaves que eu uso são:

-A = imprime todas as informações do log
-c = exibe informações sobre a carga nos núcleos do processador, a chave padrão
-m = RAM e carga de troca
-d = atividade do disco
-O = 3 principais processos de carregamento da CPU
-G = os 3 principais processos de carregamento de RAM
-D = 3 principais processos de carregamento de disco
-N = 3 principais processos de carregamento de rede
-r = especifique o caminho para o log que você deseja ler, se precisar ver a carga nos últimos dias
-b = hora de iniciar a saída
-e = hora de terminar a saída
-M = cria uma coluna adicional no final, na qual a criticidade da linha é marcada (+ há uma carga, * - carga crítica)

Graças ao monitoramento, podemos entender a causa do comportamento incorreto do servidor a qualquer momento.

Notificações


Portanto, há monitoramento da carga, mas ainda não permite encontrar e resolver problemas rapidamente. Precisamos de notificações sobre o problema.

Eu sou o único que segue os servidores, por isso preciso notificar onde sempre posso vê-lo e pelo menos de alguma forma reagir a ele.

No começo, havia SMS - rápido, confiável, gratuito. Mas as operadoras de telefonia móvel encobriram uma distribuição gratuita de SMS através de seus gateways.
Correio - por muito tempo, pode haver problemas com a entrega.
Mensageiros - deve ser colocado no telefone, você deve criar bots.

Como resultado da pesquisa, o Telegram messenger foi selecionado por sua simplicidade e aplicação conveniente no telefone e na área de trabalho.

Criou seu bot usando botfather .
Depois de colocar vários scripts no servidor que rastreiam a carga no servidor (IDL, smartct, etc.), a presença de erros como "oom killer", erros ao criar um backup e outras operações que precisam ser controladas.

Os scripts são bem simples escritos no bash, por exemplo, verificando LA e notificando que o Load Averadge excedeu o número de núcleos no servidor.

 if [ ${LA[0]} -gt 2000 ] || [ ${LA[1]} -gt 3000 ] || [ ${LA[2]} -gt 4000 ] then wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=  $ip LA $LAd" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text=`top -b -n 1 | grep Cpu`" wget -O /dev/null "https://api.telegram.org/$bot_id:$bot_key/sendMessage?chat_id=$chat_id&text= 5  `top -b -n 1 | grep -A 5 'PID USER' | tail -5`" fi 

A simplicidade da sintaxe fornece muitos casos de uso (e qualquer pessoa que conheça pelo menos um pouco de linguagem de programação pode escrever / adicionar).

A única ressalva - se o servidor estiver localizado na Rússia (e você não tiver IPv6 no servidor), será necessário usar um proxy. Para fazer isso, no início do script, você deve registrar a cadeia de conexão no proxy:

 export https_proxy=http://:@IP.: 

Este não é o fim


Você anda calmamente pelas montanhas com uma mochila atrás de você, faz uma pausa na civilização e, em seguida, o telefone, acidentalmente capturando a conexão, lança uma notificação sobre um problema que surgiu no seu servidor. O que fazer Um clima sereno foi deslumbrado pelo vento. Ligar para minha esposa e ditar comandos? Haha

Era urgente encontrar uma maneira de resolver os problemas rapidamente e sem a disponibilidade de uma boa Internet. Aqui fui novamente salvo pelo mensageiro (# telegrammivi). Ensinei meu bot a se comunicar apenas comigo, ignorando todos os outros. Agora, junto com a notificação do problema, obtenho um pouco mais de dados, segundo os quais entendo quem é a origem do problema e posso tentar resolvê-lo remotamente. Basta escrever uma mensagem para o bot, lançar o telefone mais alto para que essa mensagem desapareça e pronto - o bot foi fazer o seu trabalho. Assim, eu posso, por exemplo, matar algum processo indesejado, reiniciar o daemon, bloquear IP e assim por diante.

Aqui também transferi futuras solicitações necessárias de clientes, por exemplo, redefinição urgente de senhas para usuários (porque "Ahhh, não conseguimos acessar o servidor, perdemos milhões!"), Procure um usuário que tenha acesso à pasta desejada, ligue e desligue o site e outros . Claro, eu constantemente modifico a funcionalidade do bot, pois a imaginação dos clientes às vezes aparece inesperadamente e não é fornecida por mim. Mas os básicos estão satisfeitos.

Existe também uma versão para o VK, mas de alguma forma ela não se enraizou.

Agora, viajo com calma e exploro este mundo, sem medo de que algo aconteça ali e não poderei descobrir ou consertar isso.

Source: https://habr.com/ru/post/pt453430/


All Articles