Ambiente Utilizado: Ubuntu Nuvem disponível aqui
Pre-requisitos:
Ter o Nginx Proxy Manager instalado disponível aqui
Ter três entradas no DNS criadas e direcionadas para seu IP externo:
nginx.tiozaodolinux.com, zabbix.tiozaodolinux.com e grafana.tiozaodolinux.com conforme exemplo abaixo
NOTA: O dominio tiozaodolinux.com deve ser substituído pelo seu.
apt -y install mysql-server
O Mysql vem de fábrica com algumas configurações mínimas que podem ser melhoradas com algums detalhes de inicialização.
cat << '_EOF' > /etc/mysql/mysql.conf.d/90_optimize.cnf
[mysqld]
max_connections = 500
innodb_buffer_pool_size = 800M
innodb-log-file-size = 128M
innodb-log-buffer-size = 128M
innodb-file-per-table = 1
innodb_buffer_pool_instances = 8
innodb_old_blocks_time = 1000
innodb_stats_on_metadata = off
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-flush-log-at-trx-commit = 2
tmp-table-size = 96M
max-heap-table-size = 96M
open_files_limit = 65535
max_connect_errors = 1000000
connect_timeout = 60
wait_timeout = 28800
binlog_expire_logs_seconds = 360
max_binlog_size = 100M
_EOF
PS: De todos os parâmetros, um dos mais importantes pra desempenho é o
innodb_buffer_pool_size
que deve ser ajustado de acordo com a quantidade de memória do seu servidor. Não adiantaria nada alocar mais memória no servidor e não falar pro mysql aproveitar essa memória.
systemctl restart mysql.service
mysql
mysql> SHOW GLOBAL VARIABLES LIKE '%max_con%';
+---------------------------------------+---------+
| Variable_name | Value |
+---------------------------------------+---------+
| max_connect_errors | 1000000 |
| max_connections | 500 |
| mysqlx_max_connections | 100 |
| performance_schema_max_cond_classes | 150 |
| performance_schema_max_cond_instances | -1 |
+---------------------------------------+---------+
5 rows in set (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE '%innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size | 134217728 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_in_core_file | ON |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 939524096 |
+-------------------------------------+----------------+
11 rows in set (0.00 sec)
mysql> SHOW GLOBAL VARIABLES LIKE '%max_bin%';
+----------------------------+----------------------+
| Variable_name | Value |
+----------------------------+----------------------+
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 104857600 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
+----------------------------+----------------------+
3 rows in set (0.00 sec)
# Instalar pacote
apt -y install nginx
# Ajustar o nginx para escutar na porta 8080
sed -i 's/ 80 default_server/ 8080 default_server/' /etc/nginx/sites-available/default
sed -i 's/:80 default_server/:8080 default_server/' /etc/nginx/sites-available/default
# Restartar nginx
systemctl restart nginx.service
# Validar se o nginx está respondendo na porta 8080
curl -s http://localhost:8080 | grep "Welcome"
<title>Welcome to nginx!</title>
<h1>Welcome to nginx!</h1>
wget -c https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 zabbix-get zabbix-sender
ATENÇÃO: Aqui acontece uma coisa curiosa, o apache2 foi instalado e iniciado mesmo selecionando o zabbix-nginx-conf.
apt -y remove --purge apache2
mysql -uroot
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -ppassword zabbix
ATENÇÃO: Parece que travou?
Tá apenas criando o BD e povoando os schemas, tabelas, etc.
Demoraum poucodependendo do seu hardware.
Aguarde...
mysql -uroot -p
<ENTER SEM SENHA>
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
/etc/zabbix/zabbix_server.conf
sed -i 's/# DBPassword=/DBPassword=password/' /etc/zabbix/zabbix_server.conf
/etc/zabbix/nginx.conf
uncomment and set 'listen' and 'server_name' directives.sed -i 's/^#//' /etc/zabbix/nginx.conf
sed -i 's/example.com/zabbix.tiozaodolinux.com/' /etc/zabbix/nginx.conf
NOTA: zabbix.tiozaodolinux.com deve ser substituído pelo seu dominio
A configuração padrão do Zabbix pode ser tunada para um melhor desempenho conforme modelo abaixo:
remove-comment /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=password
StartPollers=100
StartPollersUnreachable=50
StartTrappers=10
StartPingers=50
StartDiscoverers=15
StartHTTPPollers=5
StartTimers=2
StartEscalators=2
StartAlerters=5
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=64M
HistoryCacheSize=64M
HistoryIndexCacheSize=32M
TrendCacheSize=32M
ValueCacheSize=256M
Timeout=15
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
PS: O
remove-comment
é um alias que remove as linhas em branco e comentários. Dê uma olhada nos ajustes-iniciais que fizemos no servidor.
systemctl enable zabbix-server zabbix-agent2 nginx php8.1-fpm
systemctl restart zabbix-server zabbix-agent2 nginx php8.1-fpm
apt -y install apt-transport-https software-properties-common wget
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list
# Atualizando as fontes
apt update
# Instalando a última versão stable
apt -y install grafana-enterprise
# Habilitando/Iniciando o grafana
systemctl enable --now grafana-server.service
# Validando o status do grafana
systemctl status grafana-server.service
Acesse sua URL do grafana http://grafana.tiozaodolinux.com
Na tela de login, coloque admin para usuário e senha inicial
Em seguida, você será convidado a trocar a senha.
Download Oficial do Zabbix - https://www.zabbix.com/download?zabbix=6.0&os_distribution=ubuntu&os_version=22.04&components=server_frontend_agent&db=mysql&ws=nginx
Manual On-Line do Zabbix - https://www.zabbix.com/documentation/6.0/en/manual/quickstart/login
Instalando Grafana via repositório apt - https://grafana.com/docs/grafana/latest/setup-grafana/installation/debian/#install-from-apt-repository
Melhorando a performance do mysql-server - https://imasters.com.br/data/mysql-performance-tuning-sempre-configure-o-innodb-buffer-pool
Calculating InnoDB Buffer Pool Size for your MySQL Server - https://scalegrid.io/blog/calculating-innodb-buffer-pool-size-for-your-mysql-server/
Como instalar zabbix-server no Ubuntu - https://bestmonitoringtools.com/how-to-install-zabbix-server-on-ubuntu/