Git Product home page Git Product logo

zabbixchatbot's Introduction

Zabbix-Chat-Bot

Zabbix Chat Bot, é um script em python que é utilizado como um intermediário entre o Telegram (bot) e o Zabbix que iremos coletar as informações

Variáveis

Variável Exemplo Descrição
LINK http://192.168.162.202/zabbix/chart2.php?graphid={graphid}&from=now-24h&to=now&height=201&width=1679 IP ou dominio de Acesso ao FrontEnd Do zabbix
varZabbixServer http://192.168.162.202/zabbix/ IP de Acesso ao FrontEnd Do zabbix
url_template http://192.168.162.202/zabbix/chart2.php?graphid={graphid}&from=now-24h&to=now&height=201&width=1679&profileIdx=web.charts.filter&_=vx2jnxh4 IP ou dominio de Acesso ao FrontEnd Do zabbix
token BotToken Token do Bot do Telegram
varPassword zabbix Senha do user que tem acesso a API do Zabbix
varUsername Admin Nome do user que tem acesso a API do Zabbix

SystemD

Para utilizar o script como um serviço no systemd:

  • Mova o arquivo zabbix-chat-bot.py para /usr/lib/zabbix/alertscripts/
mv  zabbix-chat-bot.py /usr/lib/zabbix/alertscripts/
  • Instalar dependências:

Debian:

# apt install python3-pip python-urllib3
# pip install -r requirements.txt
  • Edite o script e alimente as variáveis

  • Crie um serviço no systemd para deixar o script em execução:

vim /etc/systemd/system/zabbix-chat-bot.service 

Conteudo:

[Unit]
Description=Python Script Zabbix Chat Bot
[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/lib/zabbix/alertscripts/zabbix-chat-bot.py
Restart=on-abort
[Install]
WantedBy=multi-user.target
  • De a permissão de execução no service
# chmod a+x /etc/systemd/system/zabbix-chat-bot.service
  • Ative o script para executar com o sistema e inicie ele
# systemctl daemon-reload
# systemctl enable --now zabbix-chat-bot.service
  • Para validar se executou corretamente, valide o status do serviço
# systemctl status zabbix-chat-bot

DockerFile

Para instalar o Docker

curl -fsSL https://get.docker.com/ | bash

Para utilizar o Zabbix Chat bot em um container usando o DockerFile, primeiro temosq ue buildar a imagem: PS: Antes de executar os comandos tenha certeza que os arquivos desse repositório estão no diretório atual

docker build -t zabbix-chat-bot .

Agora basta iniciar o nosso container

docker container run -d zabbix-chat-bot

Funcionamento

As funções:

def help(update, context):
def menuLINK(update, context):
def menuOLT(update, context):

Possui qual o

text= 

que será enviado para o usuário sempre que ele digitar:

dispatcher.add_handler(CommandHandler("help", help))
dispatcher.add_handler(CommandHandler("graficos", help))
dispatcher.add_handler(CommandHandler("links", menuLINK))
dispatcher.add_handler(CommandHandler("olts", menuOLT))

Então caso quiser alterar o conteúdo, ou a palavra que vai chamar a função, basta alterar.

Adicionado Host/Grafico

Para adicionar o gráfico de um hosts manualmente, temos que fazer o seguinte:

  • Garantir que a função que chama o gráfico, contenha o texto que você quer utilizar para exibir o gráfico:
def menuLINK(update, context):
chat_id = update.message.chat_id
context.bot.sendMessage(chat_id=chat_id, text="LINKS IP's Robson GO:\n"
"/linkCidade1 - Ver informações do Link de CIDADE 1\n"
"/linkCidade2 - Ver informações do Link CIDADE 2\n"
)

No caso acima o /linkCidadade1 e /linkCidade2 são os menus que iram chamar alguma função.

dispatcher.add_handler(CommandHandler("linkCidade1", lambda update, context: enviar_grafico(update, context, get_graphid('CCR 1016','Interface vlan195(Telefonia Made4it e Persis): Network traffic'))))
dispatcher.add_handler(CommandHandler("linkCidade2", lambda update, context: enviar_grafico(update, context, get_graphid('CCR 1016', 'Interface vlan4000(GERENCIA-Meth-OLT-MADE4OLT): Network traffic'))))

Agora basta adicionar qual o HOST e o GRÁFICO que deseja: No meu caso:

Host: CCR 1016 Gráfico: Interface vlan4000(GERENCIA-Meth-OLT-MADE4OLT): Network traffic

Script

Requisitos

A nova função de script funciona da seguinte forma:

Enviamos o nome do Host e o Nome do Script, via API do zabbix valida se existe o host e script e então executa o script para o host especifico.

Para exemplo criei um script que realiza o reboot do zabbix server (via agent) e reboota um mikrotik (via script ssh).

Primeiro temos que configurar o user do zabbix_server para poder dar comandos em nosso servidor.

  • Instale o pacote sudo

Debian:

# apt install sudo
  • Edite o arquivo: /etc/sudoers e permita o zabbix executar comandos sem senha
# vim /etc/sudoers 

Adicione, logo abaixo de root ALL=(ALL:ALL) ALL

zabbix ALL=(ALL) NOPASSWD:ALL
  • Vamos dar um shell para o user Zabbix e criar a home dele
# sudo chsh -s /bin/bash zabbix
# mkdir /var/lib/zabbix/
# chown -R zabbix. /var/lib/zabbix/

Para teste você pode instalar o pacote nmap em seu servidor, e testar a execução do script que já existe no Zabbix, que é o: Detect operating system

Pois ele utiliza o sudo e o shell para executar o comando e dar o retorno.

Configuração

Agora precisamos criar nossos scripts no FrontEnd do Zabbix, na versão 6.4 fica em: Alerts > Script

image

  • Crie os seguintes Scripts: image image

Conteudo:

sudo /usr/bin/python3 /usr/lib/zabbix/alertscripts/reboot_device.py {$USER} {$PASS} {HOST.CONN} {$TYPE}
  • Lembresse de mover o script que está nesse repositório para /usr/lib/zabbix/alertscripts/reboot_device.py

Variáveis

  • {$USER} - Usuário SSH

  • {$PASS} - Senha SSH

  • {HOST.CONN} - IP do Host, variavel padrão do zabbix

  • {$TYPE} - Tipo do Host, com base no tipo do host pode mudar o comando, por enquanto suporte somente a mikrotik

  • Essas variáveis seram enviadas via MACRO do HOST

image

  • Apos criar os scripts, vincular as macros no host, vá ao telegram e faça os testes Exemplo: image

zabbixchatbot's People

Contributors

bryambalan avatar softwaresmade4it avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.