22 de junho de 2016

Zabbix com PostgreSQL, PHP 7 e .htacces no CentOS 7

Zabbix com PostgreSQL, PHP 7 e .htacces no CentOS 7


Diego Santana

A necessidade de monitoramento se tornou fundamental após o notável crescimento do uso de aplicações e servidores num ambiente corporativo. É comum que uma empresa possua diversos servidores conectados através de uma rede, compartilhando informações importantes, essencial para o funcionamento orquestrado de outros serviços que dependem de sua execução.

É aqui que o Zabbix entra, possibilitando o monitoramento dos serviços e dispositivos em execução em uma rede, tornando disponíveis diversas ferramentas gráficas para análise da estrutura monitorada. Diversas são as possibilidade oferecidas pelo Zabbix.

O procedimento a seguir mostra como realizar a compilação e instalação do Zabbix Server com suporte para monitoramento via SNMP num servidor CentOS 7.2, utilizando o PostgreSQL como servidor de banco de dados, PHP 7 como motor para execução do frontend, e restrições de acesso web através de arquivo .htacces do Apache.

Num próximo artigo explicaremos como configurar o monitoramento de rede através do SNMP.

Este procedimento assume que o usuário esteja como root no terminal.

1 - Desativar o firewall iptables 
# systemctl stop firewalld
# systemctl disable firewalld

1.1 – Apagar regras default do iptables 
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X

1.2 - Desabilitar o selinux
# sed -ie "s/=enforcing/=disabled/" /etc/selinux/config
# reboot
OBS: Você pode desabilitar o selinux manualmente mudando o valor enforcing para disabled no arquivo /etc/selinux/config

1.3 - Atualizar o sistema.
# yum update -y
# yum upgrade -y

2 - É necessário instalar alguns pacotes para que seja possível compilar o Zabbix Server.
# yum groupinstall -y "Development Tools";yum install -y httpd vim postgresql-server postgresql-devel net-snmp net-snmp-devel
OBS: Os pacotes de desenvolvimento "Development Tools" já vêm instalado por default na versão minima do CentOS 7.2.

3 - Realizar o download do source do programa fping, utilizado pelo servidor para monitorar a conexão dos clientes, e configurar as permissões do executável.
# wget http://fping.org/dist/fping-3.13.tar.gz
# tar -zxvf fping-*.tar.gz
# cd fping-*
# ./configure
# make
# make install
# chown root:root /usr/local/sbin/fping
# chmod a+s /usr/local/sbin/fping

4 - Realizar o download e extrair o código fonte do Zabbix.
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz
# tar -zxvf zabbix-*.tar.gz
# cd zabbix-*

5 - Criar o usuário zabbix e adicioná-lo ao grupo apropriado.
# groupadd zabbix
# useradd -g zabbix zabbix

6 - Inicializar o banco de dados PostgreSQL.
# postgresql-setup initdb

7 - Editar o arquivo de configuração HBA inserindo as linhas como segue e salvar.
# vim /var/lib/pgsql/data/pg_hba.conf

local all all trust
host all all 127.0.0.1/32 trust
host all all 192.168.10.0/24 trust
host all all ::1/128 trust
OBS: Modificar o endereço 192.168.10.0/24 com o endereço de sua rede, para permitir conexões ao banco de dados. É possível liberar conexões para um IP apenas, inserindo o IP completo no lugar do endereço de rede.

8 - Editar o arquivo de configuração do PostgreSQL e inserir/alterar a linha como segue, para permitir que o serviço ouça conexões em todas as interfaces.
# vim /var/lib/pgsql/data/postgresql.conf

listen_addresses = '*'

9 - Iniciar e habilitar o início automático do PostgreSQL.
# systemctl start postgresql
# systemctl enable postgresql

10 - Entrar no prompt do PostgreSQL e criar a base de dados e o usuário do zabbix.
# psql -U postgres
psql> create database zabbix;
psql> CREATE USER zabbix WITH PASSWORD 'Password';
psql> GRANT ALL PRIVILEGES ON DATABASE zabbix to zabbix;
psql> FLUSH PRIVILEGES
psql> \q

11 - Realizar a importação das tabelas necessárias à criação da base de dados.
# cd zabbix-*/database/postgresql/
# psql -U zabbix zabbix < schema.sql
# psql -U zabbix zabbix < images.sql
# psql -U zabbix zabbix < data.sql

12 - Criar a senha da base de dados do zabbix.
# psql -U postgres zabbix
zabbix=# \password
zabbix=# \q
# systemctl restart postgresql

13 - Entrar na pasta com o source e compilar o servidor zabbix server com suporte a snmp.
# cd zabbix-*
# ./configure --prefix=/usr --enable-server --with-postgresql --with-net-snmp
# make install

14 - Criar os diretórios necessários para a execução do serviço.
# mkdir /var/log/zabbix/
# mkdir /var/run/zabbix/
# chown zabbix:zabbix /var/log/zabbix/
# chown zabbix:zabbix /var/run/zabbix/

15 - Editar o arquivo de configuração do Zabbix Server e inserir as linhas como segue.
# vim /usr/etc/zabbix_server.conf

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Password
DBPort=5432
StartPollers=15
FpingLocation=/usr/local/sbin/fping
User=zabbix

16 - Copiar o arquivo necessário para iniciar o serviço do Zabbix Server, e inserir/alterar as linhas como a seguir, caso estejam diferentes:
# cp zabbix-*/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
# vim /etc/init.d/zabbix_server

BASEDIR=/usr
BINARY_NAME=zabbix_server
PIDFILE=/var/run/zabbix/$BINARY_NAME.pid

17 - Iniciar o serviço do Zabbix Server
# /etc/init.d/zabbix_server start

18 - Adicionar os repositórios necessários para a instalação do php 7 para execução do frontend do Zabbix Server
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install -y php70w php70w-opcache php70w-pgsql php70w-bcmath php70w-mbstring php70w-gd php70w-xml

19 - Criar o diretório zabbix no apache e copiar os arquivos da interface web do Zabbix Server
# mkdir /var/www/html/zabbix
# cd frontends/php
# cp -a . /var/www/html/zabbix/
# chown -R apache:apache zabbix/
# chmod -R 755 zabbix/

20 - Criar o arquivo dos usuários que terão permissão para acesso à página do Zabbix via htaccess
# htpasswd -c /etc/httpd/passwd zabbix
OBS: Para adicionar usuários ao arquivo basta executar o comando htpasswd sem opções "htpasswd /etc/httpd/passwd user"

21 - Criar o alias virtual para acesso ao diretório do zabbix, e inserir a configuração à seguir para permitir acesso apenas para usuários cadastrados no htacces.
# vim /etc/httpd/conf.d/zabbix.conf

Alias /zabbix /var/www/html/zabbix

<Directory "/var/www/html/zabbix">
      Options FollowSymLinks
      AllowOverride none

      AuthType Basic
      AuthName "Authentication Required"
      AuthUserFile "/etc/httpd/passwd"
      Require valid-user
      Order allow,deny
      Allow from all

<IfModule php7_module>
      php_value max_execution_time 300
      php_value memory_limit 128M
      php_value post_max_size 16M
      php_value upload_max_filesize 2M
      php_value max_input_time 300
      php_value date.timezone America/Sao_Paulo
</IfModule>
</Directory>

<Directory "/var/www/html/zabbix/conf">
      Require all denied
</Directory>

<Directory "/var/www/html/zabbix/include">
      Require all denied
</Directory>

22 - Iniciar/reiniciar o serviço do apache
# systemctl start httpd

23 – Acessar o endereço http://ip_zabbix_server/zabbixSerá solicitado um usuário e senha para acesso à página do zabbix. Insira o login e senha do usuário criado na seção 15 deste documento.

23.1 – Será apresentada a tela inicial para iniciar algumas últimas configurações do servidor Zabbix, apenas avance para o próximo passo.

23.2 – A próxima tela listará as dependências e avisará caso alguma não seja satisfeita.

23.3 – Na tela seguinte é onde a conexão com o banco de dados será configurada. Inserir os dados para acesso ao banco de dados, IP, usuário e senha (criado na seção 10) e siga para a próxima tela.

23.4 – Na próxima tela o zabbix solicita informações sobre o endereço IP do servidor Zabbix, e sua porta de execução.

23.5 – Ao seguir será mostrada uma tela com o resumo das configurações. Apenas siga em frente, e caso algo esteja incorreto, revise os passos anteriores.

23.6 – E após avançar mais um passo finalmente é mostrada a finalização da instalação, e apresentado o caminho do arquivo de configuração, criado automaticamente. Este arquivo é salvo dentro da pasta conf localizada no diretório onde estão as páginas do Zabbix  (/var/www/html/zabbix/conf/zabbix.conf.php). Essa parte da configuração pode ser feita manualmente, criando o arquivo de configuração com um editor de textos, e inserindo as seguintes informações:
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'POSTGRESQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '5432';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'Password';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbix-server';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
OBS: Não é recomentado realizar esta configuração manualmente, pois caso estejam faltando dependências o processo terminará com erros. Mas é essencial lembrar desse arquivo, pois ele será necessário caso futuramente sejam necessárias alterações no nome de usuário, senha ou endereço do banco de dados sejam alterados.

23.7 – Para acessar a interface web, utilize como usuário Admin e a senha zabbix.


Nenhum comentário:

Postar um comentário