Olá pessoal,
Vimos nos posts anteriores como o projeto de acionamento de ar condicionado via infravermelho evoluiu desde a primeira concepção do projeto com a utilização de shield GSM e shield Ethernet para notificação e alarme de temperatura alta até a utilização da biblioteca Agentuino e o Zabbix. Este projeto foi concebido para resolver um problema relacionado ao fato do ar condicionado não ter o recurso de restart automático.
A boa notícia é que para o ambiente em que tínhamos esse projeto rodando foram adquiridos dois aparelhos de ar condicionado com restart automático! Agora, além da redundância de aparelhos, não será mais necessário o acionamento via infravermelho.
Hoje o projeto está somente monitorando a temperatura e emitindo alertas via SMS ou e-mail caso a temperatura fique mais alta do que a programada no Zabbix.
Uma coisa é certa: vale a experiência e aprendizado ao se tentar soluções para os problemas do dia a dia. Analisando todo o histórico do projeto e sua evolução quanta coisa aprendi.
E aí tem mais alguma sugestão para aprimorar o projeto? No próximo post vamos a outro projeto que desenvolvemos: monitor de tensão.
Até mais!
Blog voltado para compartihamento de experiências e projetos utilizando a plataforma Arduino.
sexta-feira, 27 de fevereiro de 2015
segunda-feira, 16 de fevereiro de 2015
Agentuino + Zabbix - Parte 4 - Google Agenda e SMS
Olá pessoal,
Continuando a série Agentuino + Zabbix hoje veremos como usar o Google Agenda para o envio de SMS quando uma trigger do Zabbix for acionada. Veremos como instalar e utilizar o gcalcli (Google Calendar Command Line Interface) no Zabbix e configurá-lo para enviar SMS usando este software.
Como funciona?
O sistema funciona assim: o Zabbix, através de um script, utiliza o gcalcli para criar um evento no Google Agenda e uma vez criado o evento o Google Agenda é configurado para notificar o usuário a criação do evento através de SMS. O esquema básico é o seguinte:
1) O Zabbix gera o alerta e executa o script que utiliza o gcalcli para criar o evento.
2) O evento é criado na agenda.
3) Uma notificação via SMS é enviado ao usuário notificando que um novo evento foi criado.
Instalação do gcalcli:
É necessário fazer a instalação de alguns pacotes necessários (dependências) antes de instalar o gcalcli. Deve-se instalar:
- python-dateutil-2.4.0
- setuptools
- python-gflags-2.0
- google-api-python-client-1.3.1
- httplib2
Eu acabei utilizando os sources de cada um destes pacotes, descompactando e instalando com o comando python setup.py install
# wget --no-check-certificate https://github.com/insanum/gcalcli/archive/master.zip
# unzip -e master.zip
# cd gcalcli-master
# python setup.py install
Execute o seguinte comando para testar:
# gcalcli agenda
ERROR: Missing module - No module named dateutil.tz
Se ao executar o gcalcli ele apresentar como Missing Module (módulo faltante) basta baixar e instalar o módulo faltante. Por exemplo se ele indicar que o módulo dateutil.tz está faltando basta instalar a dependência python-dateutil-2.4.0.
Instalando dateutil:
# wget --no-check-certificate https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz
# tar zxvf python-dateutil-2.4.0.tar.gz
# cd python-dateutil-2.4.0
# python setup.py install
Instalando setuptools:
# wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
# python ez_setup.py --insecure
# wget --no-check-certificate https://python-gflags.googlecode.com/files/python-gflags-2.0.tar.gz
# tar zxvf python-gflags-2.0.tar.gz
# cd python-gflags-2.0
# python setup.py install
Instalando httplib2:
# wget --no-check-certificate https://github.com/jcgregorio/httplib2/archive/master.zip
# unzip -e master.zip.1
# cd httplib2-master/
# python setup.py install
Instalando google-api-python-client-1.3.1
# wget --no-check-certificate https://github.com/google/google-api-python-client/archive/master.zip
# unzip -e master.zip.2
# cd google-api-python-client-master/
# python setup.py install
Se tudo ocorrer bem o gcalcli estará instalado. Precisamos fazer com o que o servidor zabbix seja autorizado a criar eventos através do gcalcli e também é necessário que se tenha uma conta válida do Google e que esta conta tenha acesso ao Google Agenda. Uma vez logado com a conta do Google através do navegador faça o seguinte:
No Zabbix execute:
# gcalcli agenda --noauth_local_webserver
Com o navegador aberto logado com uma conta do Google (Gmail por exemplo) cole o link que se apresenta na barra de endereços. Aceite e copie o código de verificação. Cole o código de verificação no Zabbix e dê um Enter.
Se der tudo certo tem que apresentar a resposta Authentication Successfull.
Acesse o Google Agenda. Crie um novo calendário chamado Monitoramento Zabbix. Clique no ícone de roda dentada para acessar Configurações.
Na aba Agendas, clique em Criar nova agenda.
Dê um nome, descrição e local para a agenda e depois clique em Criar Agenda:
A agenda foi criada.
Clique no ícone de roda dentada novamente para acessar Configurações e vá novamente na aba Agendas e clique em Editar notificações da agenda que você acabou de criar:
Marcar as opções para notificar por SMS 10 minutos antes de cada evento:
Vá na aba Configuração de celular, forneça no campo Telefone o número do seu celular e clique em Enviar código de confirmação. Você deverá receber o código de confirmação através de SMS e digite no campo Código de confirmação o código recebido. Clique em Salvar.
Se tudo correr bem o Status aparecerá como Número de telefone validado com sucesso.
Agora falta criar o script no Zabbix que utilizará o gcalcli para criar o evento.
# cd /etc/zabbix/scripts
# vi sms.sh
Crie o script sms.sh com o seguinte conteúdo:
#!/bin/bash
let oneminf=`date +%s`+60
dateonemin=`date -d @$oneminf +%R`
gcalcli --calendar 'Monitoramento Zabbix' --title "$1" --when $dateonemin --reminder '1m sms' --where '' --descr '' --duration 1 add
No caso estou usando o gcalcli para criar um evento no calendário "Monitoramento Zabbix" com o título que eu passar no script sms.sh (o $1 será substituído pelo conteúdo que eu passar no script) 1 minuto depois da data atual com lembrete em 1minuto via SMS. O evento terá duração de 1 minuto.
Vimos no post anterior que a trigger tem como ação executar um comando remoto no servidor Zabbix.
Se a temperatura for maior que 28 graus o Zabbix dispara a trigger que por sua vez dispara a ação e executa o script sms.sh dessa forma:
# /etc/zabbix/scripts/sms.sh "[Arduino Sensor] Temperatura:PROBLEM"
Se quiser testar é só chamar o script dessa forma:
# /etc/zabbix/scripts/sms.sh "[Arduino Sensor] Temperatura: NORMAL"
Veja o SMS recebido:
sexta-feira, 30 de janeiro de 2015
Agentuino + Zabbix - Parte 3 - Criação de alarmes via SMS e E-mail no Zabbix
Olá pessoal!!
Continuando a série com Zabbix + Agentuino, vamos ver hoje como criar triggers e ações para criar alarmes com aviso por SMS e E-mail através do Zabbix. Quando a temperatura lida com o Arduino ultrapassar um certo limite o Zabbix lerá essa temperatura e disparará a trigger e as ações programadas.
Vamos lá!
O primeiro passo é criar a trigger associada ao host. Localize o host Arduino e assegure-se de que ele está se comunicando via SNMP com seu servidor Zabbix e fornecendo a temperatura.
Clique no botão Criar Trigger:
Na primeira aba Trigger escolha o nome da trigger e clique no botão Adicionar para criar a expressão que será avaliada para o disparo da trigger.
Abrirá uma janela pop-up e em seguida selecione o item do host (Temperatura) que faz a leitura da temperatura.
No campo Função escolha a opção: Último (mais recente) valor de T é > N.
No campo N digite 28.
Com isso a expressão criada será lida dessa forma: se o último valor de T (item Temperatura) for maior que N (28) dispara a trigger. Escolha o valor da temperatura que for mais conveniente.
Voltando a tela de criação da Trigger escolha uma Descrição da trigger de forma bem clara e concisa. Escolha o Tipo de Risco como Atenção. Clique em Salvar.
Está criada a trigger.
Com a trigger criada devemos criar as ações que serão realizadas quando esta trigger for ativada. Para isso vá em Configurações e clique em Acões. Depois clique em Criar Ação:
Continuando a série com Zabbix + Agentuino, vamos ver hoje como criar triggers e ações para criar alarmes com aviso por SMS e E-mail através do Zabbix. Quando a temperatura lida com o Arduino ultrapassar um certo limite o Zabbix lerá essa temperatura e disparará a trigger e as ações programadas.
Vamos lá!
O primeiro passo é criar a trigger associada ao host. Localize o host Arduino e assegure-se de que ele está se comunicando via SNMP com seu servidor Zabbix e fornecendo a temperatura.
Clique no botão Criar Trigger:
Na primeira aba Trigger escolha o nome da trigger e clique no botão Adicionar para criar a expressão que será avaliada para o disparo da trigger.
Abrirá uma janela pop-up e em seguida selecione o item do host (Temperatura) que faz a leitura da temperatura.
No campo Função escolha a opção: Último (mais recente) valor de T é > N.
No campo N digite 28.
Com isso a expressão criada será lida dessa forma: se o último valor de T (item Temperatura) for maior que N (28) dispara a trigger. Escolha o valor da temperatura que for mais conveniente.
Voltando a tela de criação da Trigger escolha uma Descrição da trigger de forma bem clara e concisa. Escolha o Tipo de Risco como Atenção. Clique em Salvar.
Está criada a trigger.
Com a trigger criada devemos criar as ações que serão realizadas quando esta trigger for ativada. Para isso vá em Configurações e clique em Acões. Depois clique em Criar Ação:
Crie um Nome para a ação. No campo Duração padrão de cada passo da operação digite 240 (segundos). e clique na caixa Mensagem de Recuperação. Nos demais campos deixar como está.
Vamos criar as condições em que a trigger será disparada. Colocaremos assim: se a severidade da Trigger (risco) for classificado como Atenção e o host for o Arduino a ação (ou ações) será(ão) executada(s).
Primeiramente remova as condições que vem por padrão:
Em Nova Condição selecione Severidade da Trigger e escolha Atenção na próxima caixa e depois clique em Salvar:
Escolha uma nova Condição, selecione Host e selecione o host (Arduino Sensor no meu caso) e depois clique em Adicionar.
Agora criaremos de fato as ações a serem executadas. Clique na aba Ações e clique em Nova:
Antes de prosseguir com as ações vamos criar o grupo de usuários para que as permissões sejam criadas. Clique em Administração, Usuários e escolha Grupo de Usuários e em seguida clique em Criar Grupo de usuários:
Dê um nome para o grupo (no caso coloquei como Arduinos) e clique em Salvar:
Agora vamos configurar um usuário Zabbix chamado Arduino sensor para que este receba os e-mails de alerta.
Clique em Administração, Usuários e escolha Usuários e em seguida Criar Usuário.
Dê um Apelido, Nome, Sobrenome e crie uma senha para o usuário. Clique em Adicionar:
Escolha o grupo Arduinos e clique em Selecionar:
Será criado o usuário Arduino sensor.
Agora vamos ativar as permissões do grupo de usuário Arduinos e assim o usuário Arduino sensor herdará as permissões.
Vá no grupo de usuários Arduinos e clique na aba Permissões. Vamos definir que o grupo Arduinos tenha permissão Somente leitura e que por consequencia o usuário Arduino sensor terá o mesmo privilégio. Em seguida clique em Salvar.
Com o usuário e grupo criados retomemos à criação das ações. A primeira ação que será criada funcionará assim: será enviado um e-mail para o e-mail cadastrado do usuário Arduino Sensor quando a trigger for disparada. Preencha os campos exatamente como aparecem na imagem abaixo e depois clique em Salvar:
Agora vamos criar a segunda ação que enviará SMS quando a trigger for disparada.
Clique em Nova e aparecerá a tela para configurar os detalhes da operação. Notem que o Tipo de operação está selecionado como Comando remoto e na Lista Alvo está selecionado Host Atual para indicar que a operação será no host em que a Trigger será disparada (no caso o host Arduino Sensor). Selecione o tipo como Script personalizado, e escolha a opção Executar em como Servidor Zabbix.
No campo Comandos está o caminho de execução do script sms.sh que enviará o SMS via Agenda do Google. Clique em Salvar.
Com isso as duas ações estão criadas.
No próximo post veremos como configurar o Google Agenda para enviar SMS quando o script sms.sh for acionado.
Até a próxima!
terça-feira, 25 de novembro de 2014
Agentuino + Zabbix - parte 2 - implementação do Zabbix
Olá pessoal,
No último post vimos o uso do Agentuino que implementa uma biblioteca para tornar o Arduino um agente SNMP e como ele disponibiliza informações coletadas pelo Arduino através de SNMP, fazendo que agentes de monitoramento SNMP (Zabbix, Nagios, etc) possam ser utilizados para verificar estas informações e disponibilizá-los para visualização e monitoramento. No caso do nosso projeto de monitoramento de temperatura vamos usar o Zabbix para visualizar e monitorar a temperatura.
Hoje veremos como utilizar o Zabbix para monitoramento SNMP:
Zabbix:
Deve-se instalar um Zabbix em uma máquina física ou através de máquina virtual. Lembrando que o Zabbix é open-source e é praticamente uma distro Linux especializada em monitoramento. A instalação é bem simples.
Download:
http://www.zabbix.com/download.php
Uma vez instalado o Zabbix devemos acessá-lo para configurar o monitoramento do Arduino:
Entre com o usuário Admin e senha configurada para o acesso admin. Uma vez logado vá em Configurações, Templates e clique no botão Criar Template:
Dê um nome para o template. No caso eu coloquei como SNMP Arduino. Clique em Salvar.
Em Configurações, Templates, selecione SNMP Arduino:
Clique em Itens:
Clique em Criar Item:
Preencha os campos:
- Nome: Nome do Item. Neste caso coloquei como Temperatura
- Tipo: Agente SNMPv1 (o Agentuino está implementado em SNMP v1).
- Chave: temp (é o campo disponibilizado pelo SNMP que contém a temperatura coletada).
- SNMP OID: é a OID que está armazenando a temperatura.
- Comunidade SNMP: public
Os demais campos pode deixar como estão. Dê um Salvar.
Agora vamos criar um gráfico para visualizarmos a temperatura. Clique em Gráficos:
Clique em Criar Gráfico:
Dê um nome para o Gráfico e clique em Adicionar (como mostra a figura):
Escolha o item Temperatura que foi criado anteriormente:
Clique em Salvar:
Clique na aba Visualizar:
Vamos criar o host agora. Vá em Configuração, Hosts e clique em Criar host:
Preencha os campos:
- Nome do host
- Nome de exibição
- Interfaces SNMP: coloque o endereço IP do Arduino.
Clique em Salvar.
Selecione a aba Templates e clique em Adicionar:
Selecione o template SNMP Arduino:
Clique em Salvar:
Clique em Macros e preencha os campos:
- Macro: {$SNMP_COMMUNITY}
- Valor: public
Clique em Salvar
Para visualizar a tela vá em Monitoramento, Telas e escolha a tela que você criou (Arduino Temperatura):
Com isso configuramos o Zabbix para mostrar a temperatura de forma gráfica. No próximo post vamos configurar Triggers (gatilhos) para avisar via e-mail ou SMS se a temperatura está acima do esperado.
Até a próxima!
No último post vimos o uso do Agentuino que implementa uma biblioteca para tornar o Arduino um agente SNMP e como ele disponibiliza informações coletadas pelo Arduino através de SNMP, fazendo que agentes de monitoramento SNMP (Zabbix, Nagios, etc) possam ser utilizados para verificar estas informações e disponibilizá-los para visualização e monitoramento. No caso do nosso projeto de monitoramento de temperatura vamos usar o Zabbix para visualizar e monitorar a temperatura.
Hoje veremos como utilizar o Zabbix para monitoramento SNMP:
Zabbix:
Deve-se instalar um Zabbix em uma máquina física ou através de máquina virtual. Lembrando que o Zabbix é open-source e é praticamente uma distro Linux especializada em monitoramento. A instalação é bem simples.
Download:
http://www.zabbix.com/download.php
Uma vez instalado o Zabbix devemos acessá-lo para configurar o monitoramento do Arduino:
Entre com o usuário Admin e senha configurada para o acesso admin. Uma vez logado vá em Configurações, Templates e clique no botão Criar Template:
Dê um nome para o template. No caso eu coloquei como SNMP Arduino. Clique em Salvar.
Em Configurações, Templates, selecione SNMP Arduino:
Clique em Itens:
Clique em Criar Item:
Preencha os campos:
- Nome: Nome do Item. Neste caso coloquei como Temperatura
- Tipo: Agente SNMPv1 (o Agentuino está implementado em SNMP v1).
- Chave: temp (é o campo disponibilizado pelo SNMP que contém a temperatura coletada).
- SNMP OID: é a OID que está armazenando a temperatura.
- Comunidade SNMP: public
Os demais campos pode deixar como estão. Dê um Salvar.
Agora vamos criar um gráfico para visualizarmos a temperatura. Clique em Gráficos:
Clique em Criar Gráfico:
Dê um nome para o Gráfico e clique em Adicionar (como mostra a figura):
Escolha o item Temperatura que foi criado anteriormente:
Clique em Salvar:
Preencha os campos:
- Nome do host
- Nome de exibição
- Interfaces SNMP: coloque o endereço IP do Arduino.
Clique em Salvar.
Selecione a aba Templates e clique em Adicionar:
Selecione o template SNMP Arduino:
Clique em Salvar:
Clique em Macros e preencha os campos:
- Macro: {$SNMP_COMMUNITY}
- Valor: public
Clique em Salvar
Observe que o host Arduino Sensor no ícone de Disponibilidade SNMP está em verde.
Vamos agora criar uma Tela de visualização. Vá em Configuração, Telas e clique em Criar tela:
Escolha um Nome para a tela e especifique o número de linhas e colunas. No caso é 1 x 1 pois é somente o gráfico que iremos exibir na tela.
Clique em Alterar:
Escolha como Recurso o Gráfico simples e clique no botão Selecionar do campo Parâmetro:
Nas caixas escolha o Grupo onde o host Arduino Sensor está e selecione o Host Arduino Sensor.
Selecione o item Temperatura:
Deixe os campos no padrão e clique em Salvar:
Para visualizar a tela vá em Monitoramento, Telas e escolha a tela que você criou (Arduino Temperatura):
Com isso configuramos o Zabbix para mostrar a temperatura de forma gráfica. No próximo post vamos configurar Triggers (gatilhos) para avisar via e-mail ou SMS se a temperatura está acima do esperado.
Até a próxima!
Assinar:
Postagens (Atom)