Neste artigo vou mostrar como efetuar a instalação automatizada do agente Zabbix em hosts Linux, a receita foi feita em yml usando a ferramenta Visual Studio Code e Ansible. O playbook faz a instalação do agente na maquina cliente e inclui os dados da maquina já no front end do Zabbix Server. Bora lá!
Vou explicar o código bloco por blocos:
Neste primeiro bloco faço a instalação do python e python-pip vão ser uteis na hora de usar o modulo do Ansible;
---
- name: install Python e agent zabbix
apt:
name: ['python', 'python-pip']
update_cache: yes
state: present
when: (ansible_os_family == "Debian") or (ansible_os_family == "Ubuntu")
Agora eu removo somente o agente zabbix da maquina cliente.
- name: Removendo Zabbix-Agent
apt:
name: zabbix-agent
state: removed
Neste bloque armazeno as variaveis: Hostname, SO, IP e versão do agent.
- name: Registro de sistema operacional
shell: lsb_release -si | tr 'A-Z' 'a-z'
register: SO
- name: Registro da versao do sistema operacional
shell: lsb_release -sc
register: SOVERSION
- name: Registro do nome da maquina
shell: hostname
register: hname
- name: Registro de IP
shell: hostname -I | awk '{print $1}'
register: hip
- name: Registro de pacote instalado
shell: dpkg -l | grep zabbix-agent; echo $?
register: ipack
Neste ponto vejo se o pacote esta instalado utilizando a variável ipack, se estiver instalado eu removo os pacotes, se não somente pula esta etapa, depois é baixado os pacotes de instalação, neste caso da versão 4.0 do gente, logo em seguida ele irá fazer a instalação dos novos pacotes zabbix-agent e depois atualizar os repositórios.
- name: Removendo bibliotecas Zabbix-Agent
action: raw dpkg --purge zabbix-release && dpkg --purge zabbix-agent
when: ipack.stdout != "1"
- name: Baixando biblioteca Zabbix-Agent 4.0
action: raw wget https://repo.zabbix.com/zabbix/4.0/"{{ SO.stdout }}"/pool/main/z/zabbix-release_4.0.2%2B"{{ SOVERSION.stdout }}"_all.deb
- name: Executando novos repositorios .deb
action: raw dpkg -i zabbix-release_4.0-2+"{{ SOVERSION.stdout }}"_all.deb
- name: Atualizando repositorios
action: raw apt-get update
Neste passo eu instalo o zabbix-agent e copio o arquivo de configuração já com as informações, somente uma que vou adicionar com a variável de hostname porque cada maquina tem seu próprio hostname e por ultimo o agente é iniciar (start).
- name: Install agent-zabbix
apt:
name: zabbix-agent
state: installed
- name: Copiando arquivo de configuracao do zabbix-agent
copy:
src: zabbix/zabbix_agentd.conf
dest: /etc/zabbix/
- name: adicionado nome do host
action: raw sed -i "s/Hostname=zabbix/Hostname="{{ hname.stdout }}"/g" /etc/zabbix/zabbix_agentd.conf
- name: Iniciar agente zabbix
service:
name: zabbix-agent
state: started
enabled: yes
Neste ponto usamos o python-pip para copilar os pacotes zabbix-pip, aqui estou copiando o tar.gz para dentro da maquina cliente e instalando usando o pip install. Pronto já podemos utilizar o modulo do Zabbix no Ansible, lembrando que o zabbix-pip tem que estar instalado no Server e no Client.
- name: enviando arquivo zabbix pip
copy:
src: zabbix/zabbix-api-0.5.3.tar.gz
dest: /tmp/
- name: instalando o zabbix-api
shell: pip install /tmp/zabbix-api-0.5.3.tar.gz
Aqui entra o legal de tudo, usando o modulo do Zabbix ele bate no front end e já inclui todas as informações da maquina, e quando você entrar no seu Zabbix o host que você rodou este playbook já vai esta sendo coletado os dados, não é massa!!!
Eu também uso as variáveis para passar o IP e Hostname da maquina
- name: Colocando a maquina no monitoramento
local_action:
module: zabbix_host
server_url: "sua URL zabbix"
login_user: "Seu usuario"
login_password: "Sua senha"
host_name: '{{ hname.stdout }}'
visible_name: '{{ hname.stdout }}'
description: Instalacao e configuracao via ansible
host_groups:
- Linux servers
link_templates:
- Template OS Linux
status: enabled
interfaces:
- type: 1
main: 1
useip: 1
ip: '{{ hip.stdout }}'
dns: ""
port: 10050
Agora por ultimo um restart no agente
- name: Iniciar agente zabbix
service:
name: zabbix-agent
state: restarted
enabled: yes
Para executar o playbook acesse o repositório no GitHub! Além de intalar o agent no host que vai ser monitorado, ele vai incluir automáticamente o host no seu Zabbix, e já vai estar sendo monitorado! 🙂
Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.