install_distributed
This is an old revision of the document!
Table of Contents
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
install_distributed.1753560544.txt.gz · Last modified: by wikiadm



