In questo scenario abbiamo la necessità di personalizzare logo e vari link presenti sull’interfaccia di frontend di Zabbix. Vediamo come fare sia in ambiente tradizionale, sia in ambiente dockerizzato.
Rebranding di Zabbix in ambiente tradizionale
Nel caso di installazione tradizionale di Zabbix, l’operazione di rebranding è alquanto semplice in quanto Zabbix offre nativamente questa funzionalità. Questo GitHub repo contiene tutto quello che è necessario per l’operazione di rebranding.
Creare la struttura delle directory
Il primo passo è quello di creare la struttura delle directory. In base alla nostra versione, usiamo uno dei seguenti comandi.
Per versioni 7.0 e inferiori
sudo mkdir -p /usr/share/zabbix/local/conf
sudo mkdir -p /usr/share/zabbix/rebranding
Per versioni 7.2 e superiori
sudo mkdir -p /usr/share/zabbix/ui/local/conf
sudo mkdir -p /usr/share/zabbix/ui/rebranding
Copiare le nuove immagini
Copiamo le immagini con il nostro logo nella directory appena creata.
Per versioni 7.0 e inferiori
sudo cp /path/to/your/images/*.svg /usr/share/zabbix/rebranding/
Per versioni 7.2 e superiori
sudo cp /path/to/your/images/*.svg /usr/share/zabbix/ui/rebranding/
Impostiamo ora i permessi sui nuovi file di immagine. In genere la ownership da attribuire è www-data
o apache
, ma questo dipende dalla propria configurazione del web server.
Per versioni 7.0 e inferiori
sudo chown -R www-data:www-data /usr/share/zabbix/local/conf
sudo chmod 755 /usr/share/zabbix/local/conf
sudo chmod 644 /usr/share/zabbix/local/conf/brand.conf.php
sudo chown -R www-data:www-data /usr/share/zabbix/rebranding
sudo chmod 755 /usr/share/zabbix/rebranding
sudo chmod 644 /usr/share/zabbix/rebranding/*
Per versioni 7.2 e superiori
sudo chown -R www-data:www-data /usr/share/zabbix/ui/local/conf
sudo chmod 755 /usr/share/zabbix/ui/local/conf
sudo chmod 644 /usr/share/zabbix/ui/local/conf/brand.conf.php
sudo chown -R www-data:www-data /usr/share/zabbix/ui/rebranding
sudo chmod 755 /usr/share/zabbix/ui/rebranding
sudo chmod 644 /usr/share/zabbix/ui/rebranding/*
Creare il file di configurazione brand.conf.php
Ora non resta che creare il file di configurazione brand.conf.php
Per versioni 7.0 e inferiori
vi /usr/share/zabbix/local/conf/brand.conf.php
Per versioni 7.2 e superiori
vi /usr/share/zabbix/ui/local/conf/brand.conf.php
Nel file di configurazione inseriamo il seguente codice, personalizzandolo a piacimento
'./rebranding/my-logo-114x30.svg',
'BRAND_LOGO_SIDEBAR' => './rebranding/my-logo-91x24.svg',
'BRAND_LOGO_SIDEBAR_COMPACT' => './rebranding/my-logo-24x24.svg',
'BRAND_FOOTER' => 'Alessandro Masciadri',
'BRAND_HELP_URL' => 'https://www.alessandromasciadri.com/'
];
Rebranding di Zabbix in ambiente Docker
Nel caso in cui il nostro server Zabbix gira in ambiente Docker, le cose sono diverse. Anzitutto dobbiamo tenere in considerazione che possiamo procedere in due modi distinti:
- Bind Mount del file di configurazione e dei loghi.
- Build personalizzata dell’immagine Zabbix Frontend
1. Soluzione veloce: Bind Mount
La soluzione più veloce ed indolore (sicuramente adatta in fasi di test) è di creare i file sulla macchina host e di eseguire un bind mount dei file nel docker container. L’input a questa cosa l’ho ricevuto da questa Feature request aperta su GitHub. Creiamo quindi le cartelle e il file di configurazione sulla macchina host con questi comandi:
mkdir -p ~/zabbix/local/conf
mkdir -p ~/zabbix/rebranding
Copiamo le immagini del nostro logo nella cartella ~/zabbix/rebranding
cp /path/to/your/images/*.svg /usr/share/zabbix/rebranding/
Creiamo il file di configurazione
vi zabbix/local/conf/brand.conf.php
Inseriamo il seguente codice personalizzandolo a piacimento
'./rebranding/my-logo-114x30.svg',
'BRAND_LOGO_SIDEBAR' => './rebranding/my-logo-91x24.svg',
'BRAND_LOGO_SIDEBAR_COMPACT' => './rebranding/my-logo-24x24.svg',
'BRAND_FOOTER' => 'Alessandro Masciadri',
'BRAND_HELP_URL' => 'https://www.alessandromasciadri.com/'
];
Apriamo il docker-compose.yaml utilizzato per la build dei container e aggiungiamo le righe di bind mount dei file
volumes:
- /root/zabbix/local/conf/brand.conf.php:/usr/share/zabbix/local/conf/brand.conf.php
- /root/zabbix/rebranding/:/usr/share/zabbix/rebranding/
Nel mio caso uso il la versione con nginx e PostgreSQL, quindi il file da modificare è docker-compose_v3_alpine_pgsql_latest.yaml
. La sezione completa si presenta pertanto in questo modo:
zabbix-web-nginx-pgsql:
extends:
file: compose_zabbix_components.yaml
service: web-nginx-pgsql
image: "${ZABBIX_WEB_NGINX_PGSQL_IMAGE}:${ZABBIX_ALPINE_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}"
volumes:
- /etc/timezone:/etc/timezone:ro
- /root/zabbix/local/conf/brand.conf.php:/usr/share/zabbix/local/conf/brand.conf.php
- /root/zabbix/rebranding/:/usr/share/zabbix/rebranding/