terça-feira, 19 de novembro de 2019

Migração e Atualização do Zabbix

Última Atualização: 22/11/2019
Status: Concluído

Descrição do problema
Possuo um servidor Zabbix 4.2.2 sob CentOS 7 com mais de 3500 hosts monitorados em produção e meu banco está com 945GB.
O banco está deste tamanho por erros na configuração inicial de housekeeper do mesmo.
Irei migrar pra um servidor Oracle Linux 7.7 (que é baseado em CentoOS 7), sem os dados de histórico, pois estes ficarão no servidor antigo que será apagado depois de 3 meses.
Após a instalação e migração dos dados, será feita a atualização para versão mais nova do Zabbix 4.4.1.

Passos
1) Atualização do Oracle Linux para versão mais recente 7.7
yum update

2) Adicionar repositório Developer do PHP
vim /etc/yum.repos.d/public-yum-ol7.repo
    [ol7_developer_php72]
    enabled=1

3) Instalar servidor WEB Apache
yum install httpd
systemctl start httpd
systemctl enable httpd

4) Instalar o banco de dados MariaDB e configurando senha de Root
yum install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
    ENTER
    Y
    Senha de root
    Senha de root novamente
    Y
    N
    Y
    Y

5) Instalando o PHP
yum install php php-mysql
systemctl restart httpd

6) Adicionando o repositório do Zabbix 4.2
rpm -ivh http://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm

7) Instalando o Zabbix 4.2
yum install zabbix-server-mysql zabbix-agent zabbix-web

8) Configurando o Banco de Dados
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
quit;

9) Criando o bando de dados zabbix
cd /usr/share/doc/zabbix-server-mysql-4.2.8/
zabbix-server-mysql-4.2.8]# zcat create.sql.gz | mysql -uroot -p zabbix

10) Ajustando o PHP 1
vim /etc/httpd/conf.d/zabbix.conf
    php_value data.timezone America/Maceio

11) Configurando o Zabbix
vim /etc/zabbix/zabbix_server.conf
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
systemctl restart mariadb
systemctl restart httpd

12) Iniciando o Zabbix e configurando o SELINUX
setenforce 0
systemctl start zabbix-agent
systemctl start zabbix-server
systemctl enable zabbix-agent
systemctl enable zabbix-server
vim /etc/selinux/config
    SELINUX=disabled
systemctl restart zabbix-server

13) Ajustando o PHP 2
vim /etc/php.ini
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    date.timezone = America/Maceio
systemctl restart httpd

14) Os arquivos de configurações do banco de dados e do zabbix foram ajustados de acordo com as configurações do antigo servidor.

15) Foi feito dump do banco de dados antigo em 3 estágios:
      - Tabelas e Views particulares
      - Tabelas (users, users_groups e usrgrp)
      - Todas as outras tabelas com exceção das

  • events
  • event_recovery
  • history
  • history_log
  • history_str
  • history_text
  • history_uint
  • problem
  • trends
  • trends_uint
  • view 

16) As tabelas de usuários foram importadas, prestando atenção para deletar os INSERTS de usuários que já vem por padrão ao instalar o sistemas.

17) O dump com os dados foram inseridos ao banco. O zabbix de início ficou fora, mas em alguns minutos já voltou a funcionar.

18) Parando e atualizando o repositório do Zabbix
systemctl stop zabbix-server
systemctl stop zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
yum clean all
yum makecache

19) Comando para checar os itens instalados que precisam ser atualizados
rpm -qa | grep zabbix

20) No meu caso, retornou: zabbix-release, zabbix-agent, zabbix-web e zabbix-server-mysql
yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get

21) Voltando os serviços
systemctl start zabbix-server
systemctl start zabbix-agent


Problemas encontrados

Ao final do passo 17, fui inserir novos dados no Zabbix e começou a apresentar vários erros de INSERT no banco. Para corrigir, existe uma tabela chamada ids, essa tabela armazena o valor da próxima chave a ser criada em outras tabelas. Precisei ir nestas outras tabelas e checar o valor da maior chave inserida, este valor peguei e salvei na tabela ids. Feito isso, os erros pararam.

Ao subir os serviços no passo 21 e tentar acessar o Zabbix, foi mostrado uma mensagem de erro informando versão diferente do banco de dados. Basta aguardar, pois o próprio Zabbix está trabalhando para readequar as tabelas e atualizar o banco.

Permitir acesso remoto ao BD

1) Adicionar ao arquivo /etc/my.cnf
[mysqld]
bind-address=0.0.0.0

2) Configurações no BD
mysql -uroot -p
use mysql;
grant all on *.* to root@'%' identified by 'senha';
flush privileges;
quit;

CentOS 8 com Zabbix 4.4

1) Atualizar e instalar pacotes interessantes (na minha opinião)
dnf update
dnf install epel-release
dnf install vim
dnf install htop
dnf install freecolor

2) Instalar Servidor WEB (Apache)
dnf install httpd
systemctl start httpd
systemctl enable httpd

3) Parar o firewall
systemctl stop firewalld
systemctl disable firewall

4) Instalar o banco de dados MariaDB
dnf install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
Configurações do MariaDB após o último comando acima:
(ENTER > Y > Senha de root > Repetir a senha > Y > N > Y > Y)

5) Instalar preparativos WEB
dnf install php php-mysqlnd
systemctl restart httpd

6) Repositório do Zabbix
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el18.noarch.rpm
dnf clean all

7) Instalando o Zabbix
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

8) Configurando o Banco de Dados
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
quit;

9) Criando o Banco de Dados
cd /usr/share/doc/zabbix/zabbix-server-mysql-4.4.1
zcat create.sql.gz | mysql -uroot -p zabbix

10) Configurando Time Zone do PHP
vim /etc/httpd/conf.d/zabbix.conf
    php_value data.timezone America/Maceio

11) Configurações básicas do servidor Zabbix
vim /etc/zabbix/zabbix_server.conf
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
systemctl restart mariadb
systemctl restart httpd

12) Últimas configurações
setenforce 0
systemctl start zabbix-server
systemctl start zabbix-agent
systemctl enable zabbix-server
systemctl enable zabbix-agent
vim /etc/selinux/config ou /etc/sysconfig/selinux
    SELINUX=disabled
systemctl restart zabbix-server

Para acessar: http://ip/zabbix
Login/senha: Admin/zabbix
Arquivo de configuração criado: /etc/zabbix/web/zabbix.conf.php

quinta-feira, 6 de junho de 2019

Zabbix 4.2.2 - Problemas encontrados

Ultima Atualização: 06/06/2019
Problemas encontrados: 3
Problemas corrigidos: 3

Atualizei recentemente o Zabbix da versão 4.0 para a 4.2, os problemas encontrados serão reportados abaixo e mostrarei como solucioná-los. À medida que for encontrando mais problemas irei atualizando esta postagem.

1) Insufficient file system permissions. Assets cache directory is not writable.
Basta dar permissão ao usuário apache.
chown apache:apache /usr/share/zabbix/assets

2) Legenda dos gráficos ausente
Para esta correção basta criar um link simbólico referenciando o arquivo das fontes
cd /usr/share/zabbix/assets/fonts

ln -s /usr/share/zabbix/fonts/graphfont.ttf

3) Barra de rolagem horizontal de mapas grandes ausente
Adicionar linha aos estilos CSS blue e dark
vim /usr/share/zabbix/assets/styles/blue-theme.css

vim /usr/share/zabbix/assets/styles/dark-theme.css

Antes da alteração:
.sysmap-scroll-container {
  overflow-x: auto;
  overflow-y: hidden;
  position: relative;
  width: calc(100% - 20px);
  border: 10px solid #fff;
  background: #fff;
  display: block;
  margin: 4px 0; }

Após alteração (em negrito):
.sysmap-scroll-container {
  overflow-x: auto;
  overflow-y: hidden;
  position: relative;
  width: calc(100% - 20px);
  border: 10px solid #fff;
  background: #fff;
  display: block;
  margin: 4px 0; 
  width: max-content; }

quarta-feira, 5 de junho de 2019

CentOS + Grafana + Zabbix

Segue abaixo os passos para fazer a integração do Grafana ao Zabbix.
Testado com CentOS 7/8 e Zabbix.

Instalando os pacotes necessários
yum install fontconfig freetype* urw-fonts -y

Configurando o repositório do Grafana
vim /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Atualizando a lista de repositórios
yum repolist all

Instalando o Grafana
yum install grafana -y

Iniciando o serviço do Grafana e habilitando na inicialização do Sistema Operacional

Via INIT.D
service grafana-server start

chkconfig --add grafana-server

Via SYSTEMD
systemctl daemon-reload

systemctl start grafana-server

systemctl enable grafana-server

Instalando plugin para integração com o Zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app

Instalando plugin para criar gráfico em formato Pizza e Donut
grafana-cli plugins install grafana-piechart-panel

Caso queira listar os plugins disponíveis
grafana-cli plugins list-remote

Reiniciando o serviço Grafana
systemctl restart grafana-server

Caso utilize firewall, libere as portas dele para acessar o Grafana
firewall-cmd --add-port=3000/tcp --permanent

firewall-cmd --reload

Agora você já pode acessar o servidor do Grafana pela porta 3000.

Arquivos do Grafana
Binários: /usr/sbin/grafana-server
O script de inicialização: /etc/init.d/grafana-server
Systemd: grafana-server.service
Instala o arquivo padrão (ambiente vars): /etc/sysconfig/grafana-server
Arquivo de configuração: /etc/grafana/grafana.ini
Log do grafana: /var/log/grafana/grafana.log
Banco de dados do Grafana é em Sqlite3 e fica em: /var/lib/grafana/grafana.db

http://ipdoservidor:3000


Utilize o usuário e senha padrão:

usuário: admin
senha: admin

No primeiro logon pedirá para alterar a senha do usuário admin.


Em Configuration/Plugins habilite o plugin do Zabbix


Configurar o plugin para acessar a API do Zabbix, vá em Home depois em Add data source


Ao selecionar Zabbix, preencher com as seguintes informações:

Nome: Nome da Datasource
URL: http://ipdozabbix/zabbix/api_jsonrpc.php
Access: Browser
Username: Admin
Password: Senha (da conta Admin do Zabbix)
Trends: Habilite o Trends
Zabbix Version: Selecione a sua

Clicar em Save & Test.

Agora você já pode administrar os usuários e criar seus dashboards.

terça-feira, 4 de junho de 2019

Atualizar Zabbix 4.0 para 4.2

Segue abaixo os passos para atualização do sistema Zabbix da versão 4.0 para a versão 4.2.
Todos os comando foram testados em CentOS 7 e levou uma média de 3 minutos com o servidor parado. É bem interessante fazer um backup antes do procedimento, mas fiz e refiz em máquina virtual similar ao servidor de produção e só tive 2 problemas, suas respectivas soluções já constam no final do passo a passo.

CentoOS 7
systemctl stop zabbix-server

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm

yum clean all

yum makecache

Debian 9
rm -Rf /etc/apt/sources.list.d/zabbix.list

wget https://repo.zabbix.com/zabbix/4.2/debian/pool/main/z/zabbix-release/zabbix-release_4.2-1+stretch_all.deb

dpkg -i zabbix-release_4.2-1+stretch_all.deb

apt update

Ubuntu 18
rm -Rf /etc/apt/sources.list.d/zabbix.list

wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb

dpkg -i zabbix-release_4.2-1+bionic_all.deb

apt update

Comando para checar os itens instalados que precisam ser atualizados
rpm -qa | grep zabbix

No meu caso, retornou: zabbix-release, zabbix-agent, zabbix-web e zabbix-server-mysql
yum upgrade zabbix-server-mysql zabbix-web zabbix-agent zabbix-get

Debian 9 / Ubuntu 18
apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent

Voltando com o serviço
systemctl start zabbix-server

systemctl start zabbix-agent

ERROS ENCONTRADOS

Ao voltar o serviço, obtive o erro INSUFFICIENT FILE SYSTEM PERMISSIONS. ASSETS CACHE DIRECTORY IS NOT WRITABLE, para corrigir utilizei o comando abaixo.
chown apache:apache /usr/share/zabbix/assets

Também notei que os gráficos ficaram sem suas legendas, para corrigir utilizei os comandos abaixo.
cd /usr/share/zabbix/assets/fonts

ln -s /usr/share/zabbix/fonts/graphfont.ttf