User Tools

Site Tools


wikiv1:install_distributed

Instalação distribuída

Cenário

+-------------+       +-------------+       +-------------+       +-------------+       +-------------+
|    zbDB     |       |  zbServer   |       |   zbFront   |       |   zbProxy   |       |  Grafana    |
|10.0.140.100 |       |10.0.140.110 |       |10.0.140.120 |       |10.0.140.130 |       |10.0.140.140 |
+-------------+       +-------------+       +-------------+       +-------------+       +-------------+
     ↑  ↑                 |  ↑  ↑                |  ||                     |
     |  |                 |  |  |                |  |  |                 |                     |
     |  +-----------------+  |  +----------------+  |  |                 |                     |
     +-----------------------+----------------------+  +-----------------+---------------------+                     
                             +-------------------------------------------+

Criação das VMs no Vagrant

Vagrantfile
# cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
 
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'libvirt'
 
Vagrant.configure("2") do |config|
 
  config.vm.define :zbDB do |zbDB|
    zbDB.vm.network :private_network, :ip => "10.0.240.100"
    zbDB.vm.box = "generic/oracle8"
    zbDB.vm.hostname = "zbDB"
 
    zbDB.vm.provider :libvirt do |lv|
      lv.memory = 4096
      lv.cpus = 2
      lv.storage :file, :size => '64G', :type => 'qcow2'
    end
  end
 
  config.vm.define :zbServer do |zbServer|
    zbServer.vm.network :private_network, :ip => "10.0.240.110"
    zbServer.vm.box = "generic/oracle8"
    zbServer.vm.hostname = "zbServer"
 
    zbServer.vm.provider :libvirt do |lv|
      lv.memory = 4096
      lv.cpus = 2
    end
  end
 
  config.vm.define :zbFront do |zbFront|
    zbFront.vm.network :private_network, :ip => "10.0.240.120"
    zbFront.vm.network :forwarded_port, host: 8080, guest: 80
    zbFront.vm.box = "generic/oracle8"
    zbFront.vm.hostname = "zbFront"
 
    zbFront.vm.provider :libvirt do |lv|
      lv.memory = 2048
      lv.cpus = 2
    end
  end
 
  config.vm.define :zbProxy do |zbProxy|
    zbProxy.vm.network :private_network, :ip => "10.0.240.130"
    zbProxy.vm.box = "generic/oracle8"
    zbProxy.vm.hostname = "zbProxy"
 
    zbProxy.vm.provider :libvirt do |lv|
      lv.memory = 2048
      lv.cpus = 2
    end
  end
 
  config.vm.define :grafana do |grafana|
    grafana.vm.network :private_network, :ip => "10.0.240.140"
    grafana.vm.box = "generic/oracle8"
    grafana.vm.hostname = "grafana"
 
    grafana.vm.provider :libvirt do |lv|
      lv.memory = 2048
      lv.cpus = 2
    end
  end
 
end

PGSQL

Instalação do PostgreSQL

$ sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo dnf repolist
Failed to set locale, defaulting to C.UTF-8
repo id                                                                     repo name
ol8_UEKR6                                                                   Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                                                               Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                                                           Oracle Linux 8 BaseOS Latest (x86_64)
pgdg-common                                                                 PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64
pgdg10                                                                      PostgreSQL 10 for RHEL / Rocky 8 - x86_64
pgdg11                                                                      PostgreSQL 11 for RHEL / Rocky 8 - x86_64
pgdg12                                                                      PostgreSQL 12 for RHEL / Rocky 8 - x86_64
pgdg13                                                                      PostgreSQL 13 for RHEL / Rocky 8 - x86_64
pgdg14                                                                      PostgreSQL 14 for RHEL / Rocky 8 - x86_64
$ sudo dnf module disable postgresql
$ sudo dnf install postgresql13-server postgresql13-contrib
$ sudo postgresql-13-setup initdb
$ sudo systemctl enable --now postgresql-13

Instalação da extensão TimescaleDB

$ sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/$(rpm -E %{rhel})/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
$ sudo dnf install timescaledb-2-postgresql-13
$ sudo timescaledb-tune --pg-config=/usr/pgsql-13/bin/pg_config
Using postgresql.conf at this path:
/var/lib/pgsql/13/data/postgresql.conf
 
Is this correct? [(y)es/(n)o]: y
Writing backup to:
/tmp/timescaledb_tune.backup202207082016
 
shared_preload_libraries needs to be updated
Current:
#shared_preload_libraries = ''
Recommended:
shared_preload_libraries = 'timescaledb'
Is this okay? [(y)es/(n)o]: y
success: shared_preload_libraries will be updated
 
Tune memory/parallelism/WAL and other settings? [(y)es/(n)o]: y
Recommendations based on 3.56 GB of available memory and 2 CPUs for PostgreSQL 13
 
Memory settings recommendations
Current:
shared_buffers = 128MB
#effective_cache_size = 4GB
#maintenance_work_mem = 64MB
#work_mem = 4MB
Recommended:
shared_buffers = 932011kB
effective_cache_size = 2730MB
maintenance_work_mem = 466005kB
work_mem = 9320kB
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: memory settings will be updated
 
Parallelism settings recommendations
Current:
missing: timescaledb.max_background_workers
#max_worker_processes = 8
#max_parallel_workers_per_gather = 2
#max_parallel_workers = 8
Recommended:
timescaledb.max_background_workers = 8
max_worker_processes = 13
max_parallel_workers_per_gather = 1
max_parallel_workers = 2
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: parallelism settings will be updated
 
WAL settings recommendations
Current:
#wal_buffers = -1
min_wal_size = 80MB
Recommended:
wal_buffers = 16MB
min_wal_size = 512MB
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: WAL settings will be updated
 
Miscellaneous settings recommendations
Current:
#default_statistics_target = 100
#random_page_cost = 4.0
#checkpoint_completion_target = 0.5
max_connections = 100
#max_locks_per_transaction = 64
#autovacuum_max_workers = 3
#autovacuum_naptime = 1min
#effective_io_concurrency = 1
Recommended:
default_statistics_target = 500
random_page_cost = 1.1
checkpoint_completion_target = 0.9
max_connections = 50
max_locks_per_transaction = 64
autovacuum_max_workers = 10
autovacuum_naptime = 10
effective_io_concurrency = 256
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: miscellaneous settings will be updated
Saving changes to: /var/lib/pgsql/13/data/postgresql.conf
$ sudo systemctl restart postgresql-13
$ sudo systemctl status postgresql-13
● postgresql-13.service - PostgreSQL 13 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2022-07-08 20:17:19 UTC; 8s ago
     Docs: https://www.postgresql.org/docs/13/static/
  Process: 6080 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 6086 (postmaster)
    Tasks: 9 (limit: 23062)
   Memory: 46.2M
   CGroup: /system.slice/postgresql-13.service
           ├─6086 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
           ├─6087 postgres: logger
           ├─6089 postgres: checkpointer
           ├─6090 postgres: background writer
           ├─6091 postgres: walwriter
           ├─6092 postgres: autovacuum launcher
           ├─6093 postgres: stats collector
           ├─6094 postgres: TimescaleDB Background Worker Launcher
           └─6095 postgres: logical replication launcher
 
Jul 08 20:17:19 pgsql systemd[1]: Starting PostgreSQL 13 database server...
Jul 08 20:17:19 pgsql postmaster[6086]: 2022-07-08 20:17:19.683 UTC [6086] LOG:  redirecting log output to logging collector process
Jul 08 20:17:19 pgsql postmaster[6086]: 2022-07-08 20:17:19.683 UTC [6086] HINT:  Future log output will appear in directory "log".
Jul 08 20:17:19 pgsql systemd[1]: Started PostgreSQL 13 database server.

Preparando o volume para o banco zabbix

$ sudo fdisk -l /dev/vdb
Disk /dev/vdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
$ sudo pvcreate /dev/vdb
$ sudo vgcreate vgPGSQL /dev/vdb
$ sudo lvcreate -L 32G -n lvZABBIX vgPGSQL
$ sudo mkfs.xfs /dev/vgPGSQL/lvZABBIX
$ sudo mkdir -p /pgsql/zabbix
$ sudo mount /dev/vgPGSQL/lvZABBIX /pgsql/zabbix
$ sudo blkid | egrep vg
/dev/mapper/vgPGSQL-lvZABBIX: UUID="0565add4-01b6-42ab-a65f-321071c124a9" BLOCK_SIZE="512" TYPE="xfs"
$ echo -e "UUID=0565add4-01b6-42ab-a65f-321071c124a9\t/pgsql/zabbix\txfs\tdefaults\t0 0" | sudo tee -a /etc/fstab
$ sudo mount -a
$ mount | grep pgsql
/dev/mapper/vgPGSQL-lvZABBIX on /pgsql/zabbix type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
$ df -h | grep pgsql
/dev/mapper/vgPGSQL-lvZABBIX   32G  261M   32G   1% /pgsql/zabbix

Criando o banco e o acesso do zabbix

$ sudo dnf install policycoreutils-python-utils
$ sudo chown postgres:postgres /pgsql/zabbix/ -R
$ sudo semanage fcontext -a -t postgresql_db_t "/pgsql/zabbix(/.*)?"
$ sudo restorecon -R -v /pgsql/zabbix/
$ sudo su - postgres
$ psql
# create tablespace tbZabbix location '/pgsql/zabbix';
# create role zabbix login;
# \password zabbix
# create database zabbix owner zabbix tablespace tbZabbix;
# \db+
 pg_default | postgres |               |                   |         | 23 MB   |
 pg_global  | postgres |               |                   |         | 559 kB  |
 tbzabbix   | postgres | /pgsql/zabbix |                   |         | 7909 kB |
# \q
$ exit
$ sudo vim /var/lib/pgsql/13/data/pg_hba.conf
[...]
# Acesso Zabbix
host    zabbix          zabbix          127.0.0.1/32            scram-sha-256
host    zabbix          zabbix          10.0.240.0/24           scram-sha-256
$ sudo vim /var/lib/pgsql/13/data/postgresql.conf
[...]
listen_addresses = 'localhost,10.0.240.100'
[...]
$ sudo systemctl restart postgresql-13
$ psql -h 127.0.0.1 -U zabbix zabbix
zabbix=> create extension if not exists timescaledb cascade;
WARNING:
WELCOME TO
 _____ _                               _     ____________
|_   _(_)                             | |    |  _  \ ___ \
  | |  _ _ __ ___   ___  ___  ___ __ _| | ___| | | | |_/ /
  | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
  | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /
  |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
               Running version 2.7.1
For more information on TimescaleDB, please visit the following links:
 
 1. Getting started: https://docs.timescale.com/timescaledb/latest/getting-started
 2. API reference documentation: https://docs.timescale.com/api/latest
 3. How TimescaleDB is designed: https://docs.timescale.com/timescaledb/latest/overview/core-concepts
 
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescale.com/timescaledb/latest/how-to-guides/configuration/telemetry.
 
CREATE EXTENSION
zabbix=> \dx
                                      List of installed extensions
    Name     | Version |   Schema   |                            Description
-------------+---------+------------+-------------------------------------------------------------------
 plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
 timescaledb | 2.7.1   | public     | Enables scalable inserts and complex queries for time-series data
(2 rows)
$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="10.0.240.0/24" destination address=10.0.240.100/32 service name="postgresql" accept'
$ sudo firewall-cmd --reload

Zabbix Server

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-2.el8.noarch.rpm
$ sudo dnf install zabbix-server-pgsql zabbix-agent2 zabbix-selinux-policy zabbix-sql-scripts postgresql
$ sudo dnf install net-snmp-utils net-snmp nmap tcpdump bind-utils traceroute
$ rpm -qil zabbix-sql-scripts-6.0.6-1.el8.noarch
Name        : zabbix-sql-scripts
Version     : 6.0.6
Release     : 1.el8
Architecture: noarch
Install Date: Fri Jul  8 20:37:37 2022
Group       : Applications/Internet
Size        : 8827042
License     : GPLv2+
Signature   : RSA/SHA512, Mon Jun 27 12:29:08 2022, Key ID 082ab56ba14fe591
Source RPM  : zabbix-6.0.6-1.el8.src.rpm
Build Date  : Mon Jun 27 11:26:55 2022
Build Host  : d701cf2a492e
Relocations : (not relocatable)
URL         : http://www.zabbix.com/
Summary     : Zabbix database sql scripts
Description :
SQL files needed to setup Zabbix server or proxy databases
/usr/share/doc/zabbix-sql-scripts
/usr/share/doc/zabbix-sql-scripts/AUTHORS
/usr/share/doc/zabbix-sql-scripts/COPYING
/usr/share/doc/zabbix-sql-scripts/ChangeLog
/usr/share/doc/zabbix-sql-scripts/NEWS
/usr/share/doc/zabbix-sql-scripts/README
/usr/share/doc/zabbix-sql-scripts/mysql/double.sql
/usr/share/doc/zabbix-sql-scripts/mysql/history_pk_prepare.sql
/usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql
/usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz
/usr/share/doc/zabbix-sql-scripts/postgresql/double.sql
/usr/share/doc/zabbix-sql-scripts/postgresql/history_pk_prepare.sql
/usr/share/doc/zabbix-sql-scripts/postgresql/proxy.sql
/usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz
/usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql
/usr/share/doc/zabbix-sql-scripts/sqlite3/proxy.sql
$ zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | psql -h 10.0.240.100 -U zabbix zabbix
$ psql -h 10.0.240.100 -U zabbix zabbix < /usr/share/doc/zabbix-sql-scripts/postgresql/timescaledb.sql
]$ sudo cat /etc/zabbix/zabbix_server.conf | egrep -v "^#|^$"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=10.0.240.100
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=5432
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
$ sudo systemctl enable --now zabbix-server
$ sudo systemctl enable --now zabbix-agent2
$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="10.0.240.120/32" destination address=10.0.240.110/32 service name="zabbix-server" accept'
$ sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="10.0.240.130/32" destination address=10.0.240.110/32 service name="zabbix-server" accept'
$ sudo firewall-cmd --reload

Zabbix Web

$ sudo dnf install oraclelinux-developer-release-el8 oracle-instantclient-release-el8
$ sudo dnf module enable php:7.4 php-oci8
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-2.el8.noarch.rpm
$ sudo dnf install zabbix-web-pgsql zabbix-apache-conf zabbix-agent2 zabbix-selinux-policy
$ sudo systemctl enable --now httpd
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --reload

$ sudo vim /etc/zabbix/web/zabbix.conf.php
[...]
// Uncomment and set to desired values to override Zabbix hostname/IP and port.
$ZBX_SERVER                     = '10.0.240.110';
$ZBX_SERVER_PORT                = '10051';
[...]
$ sudo systemctl restart httpd

Zabbix Proxy

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
warning: /var/tmp/rpm-tmp.yJGTHQ: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-release-6.2-1.el8         ################################# [100%]
$ sudo dnf install zabbix-proxy-sqlite3 zabbix-agent2 zabbix-get zabbix-selinux-policy
$ sudo dnf install net-snmp-utils net-snmp nmap tcpdump bind-utils traceroute
$ sudo cat /etc/zabbix/zabbix_proxy.conf | egrep -v "^#|^$"
Server=10.0.240.110
Hostname=zbProxy
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_proxy.pid
SocketDir=/run/zabbix
DBName=/var/lib/sqlite/zabbix.db
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
$ sudo sed s/SELINUX=enforcing/SELINUX=permissive/g -i /etc/selinux/config
$ sudo setenforce 0
$ sudo mkdir /var/lib/sqlite
$ sudo chown zabbix:zabbix /var/lib/sqlite/ -R
$ sudo systemctl enable --now zabbix-porxy
$ sudo systemctl enable --now zabbix-agent2

Grafana

$ cat <<EOF | sudo tee /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
EOF
$ sudo dnf update
$ sudo dnf search grafana
$ sudo dnf -y install grafana
$ sudo systemctl enable --now grafana-server.service
$ sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port to-port=3000 protocol=tcp port=80'
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all

Referências

wikiv1/install_distributed.txt · Last modified: by 127.0.0.1