<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>RaffaeleChiatto.com</title>
	<atom:link href="https://www.raffaelechiatto.com/feed/" rel="self" type="application/rss+xml"/>
	<link>https://www.raffaelechiatto.com</link>
	<description>Il Blog di Informatica a 360°</description>
	<lastBuildDate>Mon, 13 Jul 2026 07:03:56 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.raffaelechiatto.com/wp-content/uploads/2025/05/favicon-150x150.png</url>
	<title>RaffaeleChiatto.com</title>
	<link>https://www.raffaelechiatto.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<itunes:explicit>no</itunes:explicit><itunes:subtitle>Il Blog di Informatica a 360°</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Gadgets"/></itunes:category><item>
		<title>Installazione e Configurazione Base di Heimdall su Ubuntu Server 26.04</title>
		<link>https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-heimdall-su-ubuntu-server-26-04/</link>
					<comments>https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-heimdall-su-ubuntu-server-26-04/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Mon, 13 Jul 2026 07:01:17 +0000</pubDate>
				<category><![CDATA[Heimdall]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1124220</guid>

					<description><![CDATA[&#160; Quando si gestiscono diversi servizi self-hosted, dalla NAS al gestionale, dai container Docker agli strumenti di monitoraggio, ci si ritrova presto con una collezione disordinata di indirizzi IP, porte e bookmark sparsi tra browser e appunti. Tenere tutto sotto controllo diventa rapidamente scomodo, soprattutto quando il numero di applicazioni cresce. Heimdall nasce proprio per [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091056 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<p>Quando si gestiscono diversi servizi self-hosted, dalla NAS al gestionale, dai container Docker agli strumenti di monitoraggio, ci si ritrova presto con una collezione disordinata di indirizzi IP, porte e bookmark sparsi tra browser e appunti.</p>
<p>Tenere tutto sotto controllo diventa rapidamente scomodo, soprattutto quando il numero di applicazioni cresce.</p>
<p>Heimdall nasce proprio per risolvere questo problema: è una dashboard leggera e open source che funge da punto d&#8217;accesso unico a tutte le applicazioni e i servizi del nostro homelab o della nostra infrastruttura.</p>
<p>Con un&#8217;interfaccia pulita e personalizzabile, permette di organizzare i collegamenti in un&#8217;unica pagina, aggiungere icone, e per molti servizi supportati mostra anche informazioni in tempo reale tramite appositi &#8220;enhanced links&#8221; (ad esempio lo stato di un container, lo spazio su disco di una NAS o le statistiche di un servizio).</p>
<p>In questa guida vedremo come installare e configurare Heimdall su Ubuntu Server 26.04, partendo dai prerequisiti fino alla prima messa in funzione della dashboard.</p>
<p>Affronteremo l&#8217;installazione tramite Docker, l&#8217;approccio più pulito e replicabile, e vedremo le configurazioni di base per iniziare subito a organizzare i nostri servizi in modo ordinato ed elegante.</p>
<p>&nbsp;</p>
<h3><strong>PREREQUISITI</strong></h3>
<p>Server Ubuntu 26.02</p>
<p>Utente con diritti di sudo</p>
<h3></h3>
<h3><strong>METODO 1 &#8211; DOCKER (CONSIGLIATO)</strong></h3>
<p>Installare Docker se non presente</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt update</pre><p>Rimuovere l&#8217;eventuale <strong>docker.io</strong> già installato e aggiungere il repo Docker:</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt remove -y docker.io
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc</pre><p>Aggiungere il repository con il seguente comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release &amp;&amp; echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
sudo apt update</pre><p>Installare tutto il pacchetto completo (engine + CLI + compose plugin):</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable --now docker

sudo usermod -aG docker $USER

newgrp docker</pre><p>Creare la struttura e il file Compose con i seguenti comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">mkdir -p ~/heimdall/config

cd ~/heimdall

cat &gt; compose.yaml &lt;&lt; 'EOF'
services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Rome
volumes:
- ./config:/config
ports:
- 8080:80
- 8443:443
restart: unless-stopped
EOF</pre><p>Verificare <strong>PUID/PGID</strong> con id e correggere se diversi da 1000. Avviare con il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">docker compose up -d

docker compose logs -f</pre><p>Se è tutto OK dovremmo visualizzare il seguente ouput:</p><pre class="urvanov-syntax-highlighter-plain-tag">heimdall | [migrations] started
heimdall | [migrations] 01-nginx-site-confs-default: executing...
heimdall | [migrations] 01-nginx-site-confs-default: succeeded
heimdall | [migrations] 02-default-location: executing...
heimdall | [migrations] 02-default-location: succeeded
heimdall | [migrations] done
heimdall | ───────────────────────────────────────
heimdall |
heimdall | ██╗ ███████╗██╗ ██████╗
heimdall | ██║ ██╔════╝██║██╔═══██╗
heimdall | ██║ ███████╗██║██║ ██║
heimdall | ██║ ╚════██║██║██║ ██║
heimdall | ███████╗███████║██║╚██████╔╝
heimdall | ╚══════╝╚══════╝╚═╝ ╚═════╝
heimdall |
heimdall | Brought to you by linuxserver.io
heimdall | ───────────────────────────────────────
heimdall |
heimdall | To support LSIO projects visit:
heimdall | https://www.linuxserver.io/donate/
heimdall |
heimdall | ───────────────────────────────────────
heimdall | GID/UID
heimdall | ───────────────────────────────────────
heimdall |
heimdall | User UID: 1000
heimdall | User GID: 1000
heimdall | ───────────────────────────────────────
heimdall | Linuxserver.io version: v2.7.6-ls351
heimdall | Build-date: 2026-06-26T20:11:47+00:00
heimdall | ───────────────────────────────────────
heimdall |
heimdall | Setting resolver to 127.0.0.11
heimdall | Setting worker_processes to 2
heimdall | generating self-signed keys in /config/keys, you can replace these w ith your own keys if required
heimdall | ..+......+......+...+..+......+...+.+........+...+++++++++++++++++++ ++++++++++++++++++++*........+......+.+...........+....+...+.....+.............. ....+...+......+.+..+.+...........+.........+.........+......+....++++++++++++++ +++++++++++++++++++++++++*.........+...+..+....+........+...+...+.+...+...+..... +.........+...+...............+.+..+...+....+...+........+....+................. .+...+.........+...........+..........+.....+..........+......+.....+...+....... ...+...........+.........+.......+.....+.++++++
heimdall | .+.+........+++++++++++++++++++++++++++++++++++++++*...+............ .....+...+.+...+.....+.+.....+....+...+..+++++++++++++++++++++++++++++++++++++++ *...........+.....+.......+........+.+..+...+.......+..+...+.......+...+........ +.+........+.+.....+......................+...............+...+..+.............+ ..+...+....+......+...........+....+......+...........+...+.+......+.....+...... .......+..+...+................+...+.....+...+...+....+............+...+..+...+. +......+.....+......+.........+......+...+.+....................+.+..+.+........ ...+......+.............+......+...+..+.+..................+...........+......+. ........+.++++++
heimdall | -----
heimdall | New container detected, installing Heimdall
heimdall | Creating app key. This may take a while on slower systems
heimdall |
heimdall | INFO Application key set successfully.
heimdall |
heimdall | [custom-init] No custom files found, skipping...
heimdall | [ls.io-init] done.</pre><p>Accedere via <strong>http://IP_SERVER:8080</strong> (o <strong>https://IP_SERVER:8443</strong>).</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124221 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-1024x488.png" alt="" width="1024" height="488" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-980x467.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se è andato tutto a buon fine dovremmo visualizzare una schermata come quella sovrastante</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124222 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-1024x499.png" alt="" width="1024" height="499" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-980x478.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-480x234.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Dopo aver caricato un po di applicazioni dovremmo visulizzare una schermata simile a quella sovrastante</p>
<p>&nbsp;</p>
<h3><strong>METODO 2 &#8211; INSTALLAZIONE NATIVA CON LEMP</strong></h3>
<p>Heimdall è un&#8217;app Laravel/PHP. Servono PHP 8.x, un web server e SQLite.</p>
<p>Eseguire i seguenti comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt update

sudo apt install -y nginx php-fpm php-cli php-sqlite3 php-xml php-mbstring php-zip php-curl php-bcmath git unzip</pre><p>Scaricare l&#8217;ultima release da GitHub (controlla il tag aggiornato su github.com/linuxserver/Heimdall/releases):</p><pre class="urvanov-syntax-highlighter-plain-tag">cd /var/www

sudo git clone https://github.com/linuxserver/Heimdall.git heimdall

cd heimdall

sudo git checkout $(git describe --tags --abbrev=0)</pre><p>Installare Composer e le dipendenze con i seguenti comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">curl -sS https://getcomposer.org/installer | php

sudo mv composer.phar /usr/local/bin/composer

sudo composer install --no-dev --optimize-autoloader</pre><p>Configurare l&#8217;ambiente con i comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo cp .env.example .env

sudo php artisan key:generate

sudo chown -R www-data:www-data /var/www/heimdall

sudo chmod -R 755 /var/www/heimdall/storage</pre><p>Creare il virtual host Nginx in <strong>/etc/nginx/sites-available/heimdall</strong> con il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo nano /etc/nginx/sites-available/heimdall</pre><p>Quindi inccolare il seguente output:</p><pre class="urvanov-syntax-highlighter-plain-tag">server {
listen 80;
server_name _;
root /var/www/heimdall/public;
index index.php;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}</pre><p>Verificare il path esatto del socket PHP-FPM con ls /run/php/, poi attivare e riavviare con i comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">sudo ln -s /etc/nginx/sites-available/heimdall /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl reload nginx</pre><p>Accedere via <strong>http://IP_SERVER.</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124221 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-1024x488.png" alt="" width="1024" height="488" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-980x467.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_01-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se è andato tutto a buon fine dovremmo visualizzare una schermata come quella sovrastante</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124222 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-1024x499.png" alt="" width="1024" height="499" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-980x478.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/07/inst-heimdall-ubuntu-26_02-480x234.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Dopo aver caricato un po di applicazioni dovremmo visulizzare una schermata simile a quella sovrastante</p>
<p>&nbsp;</p>
<h3><strong>PRO E CONTRO</strong></h3>
<h4></h4>
<h4><strong>Pro</strong></h4>
<p><strong>Semplicità d&#8217;uso</strong> — Interfaccia molto intuitiva, aggiungere applicazioni richiede pochi clic. Adatto anche a chi è alle prime armi con il self-hosting.</p>
<p><strong>Leggero</strong> — Consuma poche risorse, gira senza problemi anche su hardware modesto come un Raspberry Pi o una piccola VM.</p>
<p><strong>Enhanced links</strong> — Per diversi servizi popolari (Pi-hole, Portainer, Nextcloud, Sonarr/Radarr, ecc.) mostra statistiche in tempo reale direttamente sulla tile, non solo un semplice collegamento.</p>
<p><strong>Estetica curata</strong> — Sfondi personalizzabili, tile con icone, layout pulito. Visivamente è una delle dashboard più gradevoli.</p>
<p><strong>Setup rapido</strong> — Con Docker è operativo in pochi minuti, configurazione persistente in un singolo volume.</p>
<p><strong>Open source e gratuito</strong> — Mantenuto attivamente, immagine ufficiale curata da LinuxServer.io.</p>
<h4></h4>
<h4><strong>Contro</strong></h4>
<p><strong>Solo bookmark e widget base</strong> — Non è un dashboard &#8220;data-driven&#8221; avanzato. Se cerchi grafici complessi, aggregazione di metriche o widget altamente configurabili, resta limitato.</p>
<p><strong>Catalogo enhanced links limitato</strong> — Il numero di integrazioni native è relativamente ristretto e cresce lentamente rispetto ad alternative.</p>
<p><strong>Nessun auto-discovery</strong> — Ogni applicazione va aggiunta manualmente. Non rileva automaticamente i container Docker in esecuzione (a differenza di alternative come Homepage o Dashy).</p>
<p><strong>Configurazione non dichiarativa</strong> — Tutto si gestisce dalla GUI; non esiste un file di configurazione YAML versionabile. Poco comodo se vuoi un approccio &#8220;as code&#8221; o replicare il setup tra più ambienti.</p>
<p><strong>Sviluppo lento</strong> — Il progetto è stabile ma il ritmo di rilascio di nuove funzionalità è piuttosto contenuto.</p>
<p><strong>Multi-utente assente</strong> — Nessuna gestione di utenti o permessi: è pensato per uso personale/singolo, non per team con viste differenziate.</p>
<h3></h3>
<h3><strong>IN SINTESI</strong></h3>
<p>Heimdall è una scelta eccellente se vuoi una dashboard bella, semplice e leggera per organizzare i tuoi servizi senza complicazioni. Se invece cerchi configurazione dichiarativa, auto-discovery dei container o widget di monitoraggio ricchi, vale la pena valutare alternative come Homepage, Dashy o Homarr.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-heimdall-su-ubuntu-server-26-04/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configurazione dell’SMTP Server su SQL Server Enterprise – Database Mail</title>
		<link>https://www.raffaelechiatto.com/configurazione-dellsmtp-server-su-sql-server-enterprise-database-mail/</link>
					<comments>https://www.raffaelechiatto.com/configurazione-dellsmtp-server-su-sql-server-enterprise-database-mail/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Thu, 09 Jul 2026 06:16:39 +0000</pubDate>
				<category><![CDATA[SQL Server 2022]]></category>
		<category><![CDATA[SQL Server 2025]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Enterprise]]></category>
		<category><![CDATA[SSMS]]></category>
		<category><![CDATA[T-SQL]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1124136</guid>

					<description><![CDATA[&#160; La gestione delle notifiche email è uno di quegli aspetti dell&#8217;amministrazione SQL Server che spesso viene trascurata finché non si ha bisogno davvero di sapere in tempo reale che un job è fallito, che un backup non è andato a buon fine o che un alert di monitoraggio si è attivato nel cuore della [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091056 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<p>La gestione delle notifiche email è uno di quegli aspetti dell&#8217;amministrazione SQL Server che spesso viene trascurata finché non si ha bisogno davvero di sapere in tempo reale che un job è fallito, che un backup non è andato a buon fine o che un alert di monitoraggio si è attivato nel cuore della notte.</p>
<p>In ambienti enterprise, dove l&#8217;affidabilità dei processi schedulati è critica, avere un sistema di notifiche email configurato correttamente fa la differenza tra scoprire un problema all&#8217;alba di lunedì mattina e ricevere un avviso alle 2:00 di notte, quando si può ancora intervenire in tempo.</p>
<p>In questo articolo vedremo come configurare Database Mail su SQL Server Enterprise e come collegarlo all&#8217;SQL Server Agent per abilitare le notifiche automatiche tramite SMTP.</p>
<p>Partiremo dalla configurazione del profilo mail, analizzeremo le opzioni di sicurezza e autenticazione supportate incluso l&#8217;uso di account moderni come Microsoft 365 con autenticazione SMTP AUTH fino ad arrivare alla creazione degli operatori e all&#8217;associazione delle notifiche ai job agent.</p>
<p>Una configurazione completa, testata in produzione su SQL Server 2022 e 2025.</p>
<p>&nbsp;</p>
<h3><strong>PREREQUISITI</strong></h3>
<p>Accesso a SSMS con privilegi sysadmin<br />
Credenziali del server SMTP (host, porta, utente, password)<br />
Service Broker abilitato su msdb (verificato automaticamente dalla procedura guidata)</p>
<h3></h3>
<h3><strong>STEP 1 — ABILITARE DATABASE MAIL XPS</strong></h3>
<p>Database Mail è disabilitato per default. Prima di tutto va abilitato tramite s<strong>p_configure </strong>con i seguenti comandi:</p><pre class="urvanov-syntax-highlighter-plain-tag">sqlUSE master;
GO
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
GO</pre><p>&nbsp;</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-01.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124137 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-01-1024x683.png" alt="" width="1024" height="683" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-01-980x654.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-01-480x320.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se è andato tutto a buon fine dovremmo visualizzare una schermata come quella sovrastante</p>
<p>&nbsp;</p>
<h3><strong>STEP 2 — AVVIARE LA PROCEDURA GUIDATA DA SSMS</strong></h3>
<p>A questo punto avviare la procedura tramite SSMS</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-02.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124138 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-02-1024x542.png" alt="" width="1024" height="542" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-02-980x519.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-02-480x254.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>In <strong>Object Explorer</strong> espandere il nodo <strong>Management</strong> e fare clic con il tasto destro su <strong>Database Mail</strong> e selezionare <strong>Configure Database Mail</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-03.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124139 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-03.png" alt="" width="720" height="570" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-03.png 720w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-03-480x380.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 720px, 100vw" /></a></p>
<p>Si aprirà il wizard. Cliccare <strong>Next</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-04.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124140 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-04.png" alt="" width="723" height="572" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-04.png 723w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-04-480x380.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 723px, 100vw" /></a></p>
<p>Alla prima schermata selezionare <strong>Set up Database Mail by performing the following tasks</strong> e cliccare <strong>Next</strong></p>
<p>&nbsp;</p>
<h3><strong>STEP 3 — CREARE UN PROFILO</strong></h3>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-05.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124141 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-05.png" alt="" width="721" height="572" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-05.png 721w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-05-480x381.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 721px, 100vw" /></a></p>
<p>Nella schermata <strong>New Profile</strong> inserire un nome per il profilo (es. <strong>SQLMailProfile</strong>) e una descrizione.</p>
<p><strong>NOTA BENE</strong>: Il profilo è il contenitore che raccoglie uno o più account SMTP.</p>
<p>Cliccare <strong>Add…</strong> per aggiungere un account SMTP.</p>
<p>&nbsp;</p>
<h3><strong>STEP 4 — CONFIGURARE L&#8217;ACCOUNT SMTP</strong></h3>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-06.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124142 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-06.png" alt="" width="722" height="575" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-06.png 722w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-06-480x382.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 722px, 100vw" /></a></p>
<p>Nella finestra <strong>New Database Mail Account</strong> compila i campi:</p>
<p><strong>Account name</strong>: Nome univoco dell&#8217;account SMTP</p>
<p><strong>Description</strong>: semplice descrizione</p>
<p><strong>Email Address</strong>: Mittente delle email</p>
<p><strong>Display Name</strong>: Nome visualizzato</p>
<p><strong>Reply e-mail (opzionale)</strong>: indirizzo reply-to</p>
<p><strong>Server name</strong>: FQDN o IP del server SMTP</p>
<p><strong>Port number</strong>: Porta SMTP — tipicamente 25 o 587, oppure 465 per SSL Microsoft</p>
<p><strong>This Server requires a secure connection (SSl)</strong>: Abilita se richiesto dal server</p>
<p>Nella Sezione autenticazione ci sono tre opzioni:</p>
<ul>
<li><strong>Windows Authentication</strong> (NTLM, solo per Exchange on-premises)</li>
<li><strong>Basic Authentication</strong> (username e password espliciti)</li>
<li><strong>Anonymous</strong> (nessuna credenziale, solo se il server SMTP lo consente)</li>
</ul>
<p>Per Office 365 / SMTP esterno scegli Basic Authentication e inserisci username e password.</p>
<p>Cliccare <strong>OK</strong> per confermare la configurazione</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-07.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124143 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-07.png" alt="" width="723" height="571" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-07.png 723w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-07-480x379.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 723px, 100vw" /></a></p>
<p>Cliccare <strong>Next</strong></p>
<p>&nbsp;</p>
<h3><strong>STEP 5 — GESTIRE LA SICUREZZA DEL PROFILO</strong></h3>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-08.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124144 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-08.png" alt="" width="720" height="574" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-08.png 720w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-08-480x383.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 720px, 100vw" /></a></p>
<p>Nella schermata <strong>Manage Profile Security</strong> spuntare la casella <strong>Public</strong> e impostare il profilo come <strong>Default Profile = Yes</strong></p>
<p>Questo permette a qualsiasi utente con accesso a msdb di inviare email senza specificare un profilo esplicitamente.</p>
<p>&nbsp;</p>
<h3><strong>STEP 6 — PARAMETRI DI SISTEMA (OPZIONALI)</strong></h3>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-09.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124145 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-09.png" alt="" width="723" height="576" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-09.png 723w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-09-480x382.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 723px, 100vw" /></a></p>
<p>Lasciare i valori di default. Il Logging Level è impostato su Extended di default, che registra errori, warning e messaggi informativi.</p>
<p>Cliccare <strong>Next</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-10.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124146 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-10.png" alt="" width="723" height="578" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-10.png 723w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-10-480x384.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 723px, 100vw" /></a></p>
<p>Cliccare <strong>Finish</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-11.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124147 size-full" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-11.png" alt="" width="720" height="573" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-11.png 720w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-11-480x382.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 720px, 100vw" /></a></p>
<p>Cliccare <strong>Close</strong> per chiudere il wizard</p>
<p>&nbsp;</p>
<h3><strong>STEP 7 — INVIO DI UNA MAIL DI TEST</strong></h3>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-12.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124148 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-12-1024x576.png" alt="" width="1024" height="576" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-12-980x551.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-12-480x270.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Da <strong>SSMS</strong> cliccare di destro su <strong>Database Mail → Send Test E-Mail…</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-13.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124149 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-13-1024x677.png" alt="" width="1024" height="677" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-13-980x648.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-13-480x318.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Selezionare il profilo, inserire un destinatario e cliccare <strong>Send Test E-Mail</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-14.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124151 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-14-1024x683.png" alt="" width="1024" height="683" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-14-980x653.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/conf-smtp-sql-ent-14-480x320.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se riceviamo la mail cliccare <strong>OK</strong> per confermare che tutto funzioni</p>
<p>In alternaitva è possibile fare il test dell&#8217;email tramite script T-SQL:</p><pre class="urvanov-syntax-highlighter-plain-tag">sqlEXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLMailProfile',
@recipients = 'tuo@indirizzo.it',
@subject = 'Test Database Mail',
@body = 'Configurazione SMTP completata con successo!';</pre><p>&nbsp;</p>
<h3><strong>CONFIGURAZIONE DEL SERVER SMTP TRAMITE SCRIPT T-SQL</strong></h3>
<p>In alternativa al wizard è possibile configurare tutto via <strong>T-SQL</strong> se si preferisce configurare tutto via script (utile per automazione o documentazione):</p><pre class="urvanov-syntax-highlighter-plain-tag">sql-- 1. Abilita Database Mail
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1; RECONFIGURE;

-- 2. Crea il profilo
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'SQLMailProfile',
@description = 'Profilo SMTP per SQL Server';

-- 3. Crea l'account SMTP
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'SMTPAccount',
@email_address = 'sqlserver@nposervices.com',
@display_name = 'SQL Server Alerts',
@mailserver_name = 'smtp.office365.com',
@port = 587,
@enable_ssl = 1,
@username = 'sqlserver@nposervices.com',
@password = 'TUA_PASSWORD';

-- 4. Associa account al profilo
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'SQLMailProfile',
@account_name = 'SMTPAccount',
@sequence_number = 1;

-- 5. Rendi il profilo pubblico e default
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'SQLMailProfile',
@principal_name = 'public',
@is_default = 1;

Verifica e troubleshooting
sql-- Controlla la coda dei messaggi inviati
SELECT * FROM msdb.dbo.sysmail_sentitems ORDER BY sent_date DESC;

-- Controlla eventuali errori
SELECT * FROM msdb.dbo.sysmail_event_log ORDER BY log_date DESC;

-- Verifica configurazione profili e account
EXEC msdb.dbo.sysmail_help_profile_sp;
EXEC msdb.dbo.sysmail_help_account_sp;</pre><p>A questo punto dovremmo essere in grado di inviare le mail con il nostro SQL Server&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/configurazione-dellsmtp-server-su-sql-server-enterprise-database-mail/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Meridian ARC, oltre il ticket: Orbit per la governance dei contratti e il CRM interno della Enterprise Edition</title>
		<link>https://www.raffaelechiatto.com/meridian-arc-oltre-il-ticket-orbit-per-la-governance-dei-contratti-e-il-crm-interno-della-enterprise-edition/</link>
					<comments>https://www.raffaelechiatto.com/meridian-arc-oltre-il-ticket-orbit-per-la-governance-dei-contratti-e-il-crm-interno-della-enterprise-edition/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Mon, 06 Jul 2026 06:55:42 +0000</pubDate>
				<category><![CDATA[Merdian ARC]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[ITSM]]></category>
		<category><![CDATA[Meridian ARC]]></category>
		<category><![CDATA[MSP]]></category>
		<category><![CDATA[Orbit]]></category>
		<category><![CDATA[Service Manager]]></category>
		<category><![CDATA[SLA]]></category>
		<category><![CDATA[Team Leader]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1124127</guid>

					<description><![CDATA[&#160; Meridian ARC oltre il ticket: Orbit e il CRM interno della Enterprise Edition Un buon Service Desk gestisce i ticket. Ma chi eroga servizi IT a più clienti sa che il lavoro vero comincia *attorno* al ticket: i contratti, gli SLA concordati, i verbali di avanzamento, chi è responsabile di cosa, le offerte da [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091056 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<h3><strong>Meridian ARC oltre il ticket: Orbit e il CRM interno della Enterprise Edition</strong></h3>
<p>Un buon Service Desk gestisce i ticket. Ma chi eroga servizi IT a più clienti sa che il lavoro vero comincia *attorno* al ticket: i contratti, gli SLA concordati, i verbali di avanzamento, chi è responsabile di cosa, le offerte da preparare. E poi c&#8217;è la macchina interna — documenti da firmare, cespiti aziendali da assegnare ai dipendenti, ricevute da tracciare.</p>
<p>Meridian ARC affronta questi due mondi con due aree dedicate, distinte dal Service Desk:</p>
<p><strong>Orbit</strong> — l&#8217;area di <strong>governance e gestione contrattuale</strong>, cliente-centrica.<br />
<strong>CRM / Gestionale interno</strong> — la console per le <strong>risorse interne</strong> dell&#8217;MSP.</p>
<p>La cosa interessante, dal punto di vista delle licenze, è che <strong>Orbit è quasi tutto incluso nella Community</strong>, mentre il <strong>CRM interno è ciò che la Enterprise Edition sblocca davvero</strong>. Vediamoli in dettaglio.</p>
<p>Questo articolo è dedicato alle aree <strong>Orbit</strong> e <strong>CRM interno</strong>. Il modulo ITSM / Service Desk (Incident, Problem, Change, SLA, CMDB…) ha un articolo a parte.</p>
<p>Home di Orbit: la griglia dei clienti assegnati al Service Manager</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-01-home.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124099 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-01-home-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-01-home-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-01-home-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Orbit: la governance del cliente, già nella Community</strong></h4>
<p>Orbit è la seconda area della piattaforma, accessibile al personale MSP (Service Manager, Team Leader). È pensata per la <strong>governance</strong>: tutto ciò che riguarda il rapporto contrattuale e organizzativo con il cliente, sopra e oltre il singolo ticket. E — buona notizia — fa parte del nucleo <strong>Community</strong>.</p>
<h3></h3>
<h4><strong>Contratto &amp; SLA</strong></h4>
<p>Una vista del contratto attivo del cliente: livelli di servizio, KPI, orari di lavoro, RPO/RTO, CSAT e note interne. È il punto di riferimento per il Service Manager quando deve verificare <strong>cosa abbiamo promesso</strong> a quel cliente.</p>
<p>Contratto &amp; SLA: copertura, periodo KPI, RPO/RTO, retention e livelli di priorità</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-02-contratto.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124101 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-02-contratto-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-02-contratto-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-02-contratto-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>SAL e verbali</strong></h4>
<p>La gestione degli <strong>Stati Avanzamento Lavori</strong> in due forme:</p>
<ul>
<li><strong>SAL cliente</strong> — rendicontazione condivisa tra Service Manager e Team Leader.</li>
<li><strong>Verbale di governance</strong> — riservato al Service Manager.</li>
</ul>
<p>Con ordine del giorno, minuta, <strong>action item</strong> e <strong>decision log</strong>. Le riunioni di governance smettono di vivere in file Word sparsi e diventano parte del sistema.</p>
<p>Editor di un SAL: ordine del giorno, minuta, action log e decision log</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-04-sal.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124103 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-04-sal-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-04-sal-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-04-sal-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>Matrice RACI</strong></h4>
<p>Una <strong>matrice RACI interattiva</strong> che incrocia funzioni con servizi, sottoprocessi e task, con assegnazioni di governance (Service Manager, Technical Service Manager, Project Manager, operatore) e import/export. Finalmente <strong>chi fa cosa</strong> è esplicito e tracciato.</p>
<p>Matrice RACI interattiva: funzioni, servizi, task e assegnazioni, con import/export</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-05-raci.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124105 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-05-raci-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-05-raci-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-05-raci-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>Contatti e anagrafiche</strong></h4>
<p>L&#8217;anagrafe completa del rapporto: contatti del cliente, aziende stakeholder, prodotti/applicazioni, staff interno, gruppi di team e code TK — con un workflow per le richieste di modifica.</p>
<h3></h3>
<h4><strong>Documentazione</strong></h4>
<p>Un repository documentale per ciascun cliente (upload/download): contratti, allegati tecnici, documentazione di progetto, sempre nel contesto del cliente giusto.</p>
<h3></h3>
<h4><strong>Offerte &amp; Preventivi</strong></h4>
<p>Il modulo per creare e gestire <strong>quote</strong> per cliente: figure professionali, listini, regole di margine, righe d&#8217;offerta ed <strong>export in Word/PDF</strong>. Con una macchina a stati (bozza → inviata → ordine), audit e revisioni. La parte commerciale e quella operativa vivono nello stesso sistema.</p>
<p>Offerte &amp; Preventivi: elenco delle quote per cliente con stato, categoria e scadenza</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-07-offerte.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124107 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-07-offerte-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-07-offerte-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/orbit-07-offerte-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>In altre parole: <strong>tutta la governance cliente-centrica è già nella Community</strong>. Contratti, SAL, RACI, anagrafiche e offerte non sono funzioni <strong>premium</strong> — sono parte dell&#8217;impianto base.</p>
<p>&nbsp;</p>
<h3><strong> Il CRM interno: ciò che sblocca la Enterprise Edition</strong></h3>
<p>Qui cambia la prospettiva. Mentre Orbit guarda <strong>al cliente</strong>, il <strong>Gestionale interno</strong> (la terza area, riservata all&#8217;MSP) guarda <strong>dentro l&#8217;organizzazione</strong>: i documenti da firmare, i beni aziendali, le risorse interne. E questa console è disponibile <strong>solo nelle immagini Enterprise</strong> — nella Community il codice non è proprio presente.</p>
<p>È, di fatto, <strong>il vero motivo per cui molti MSP passano alla Enterprise</strong>.</p>
<h3></h3>
<h4><strong>Firma digitale (FEA)</strong></h4>
<p>Preparazione della firma elettronica avanzata su documenti PDF o template: la richiesta di firma viene inviata ai destinatari, con OTP, tracciamento dello stato, invio e download del documento firmato. Sotto il cofano: conservazione a <strong>10 anni</strong> e <strong>crypto-shredding</strong> (la chiave di cifratura del documento viene distrutta in caso di cancellazione GDPR).</p>
<p>Console Firme documenti: documenti firmabili dell&#8217;MSP via FEA con email + OTP</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-08-firme.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124078 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-08-firme-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-08-firme-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-08-firme-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>Repository documenti interno</strong></h4>
<p>Una libreria interna all&#8217;MSP per template e documenti standard: cartelle, upload e download, separata dalla documentazione cliente di Orbit.</p>
<h3></h3>
<h4><strong>Magazzino cespiti</strong></h4>
<p>L&#8217;inventario dei beni aziendali: categorie, articoli con due modelli di tracciamento — <strong>serializzato</strong> (seriale, IMEI, MAC, barcode, numero interno) o <strong>a quantità</strong> (consumabili) — con giacenze e movimenti append-only (carico, scarico, rettifica).</p>
<p>Magazzino cespiti: categorie, articoli serializzati e a quantità, con conteggio assegnati</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-09-magazzino.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124079 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-09-magazzino-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-09-magazzino-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-09-magazzino-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>Assegnazione materiale</strong></h4>
<p>Il tracciamento dell&#8217;assegnazione e della restituzione di un bene a un dipendente, <strong>con ricevuta digitale firmabile</strong>. Il magazzino e la firma si parlano: assegni il portatile dal bene stesso e generi automaticamente la ricevuta da far firmare.</p>
<p>Assegnazioni materiale: cespiti assegnati ai dipendenti con ricevuta firmata (FEA)</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-10-assegnazioni.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124080 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-10-assegnazioni-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-10-assegnazioni-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-10-assegnazioni-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h4><strong>Firma documenti massiva</strong></h4>
<p>Le <strong>campagne di firma massiva</strong>: lo stesso documento a più firmatari, con solleciti manuali, tracking dello stato di firma ed export CSV per la compliance. Utile per policy aziendali, informative, accettazioni da raccogliere da tutto lo staff.</p>
<p>Firma documenti massiva: lo stesso documento a più firmatari, con tracking dello stato</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124081 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h2></h2>
<h3><strong>Orbit + CRM: il confronto Community vs Enterprise</strong></h3>
<p>| Funzionalità | Componente | Community | Enterprise |<br />
|&#8212;|&#8212;|:&#8212;:|:&#8212;:|<br />
| Home MSP + dashboard cliente | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Contratto &amp; SLA (vista governance) | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| SAL / Verbali (cliente + governance) | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Matrice RACI interattiva | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Contatti / anagrafiche cliente | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Documentazione cliente | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Offerte &amp; Preventivi (con margine, export Word/PDF) | Orbit | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Firma digitale (FEA) | CRM interno | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Repository documenti interno | CRM interno | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Magazzino cespiti | CRM interno | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Assegnazione materiale (ricevuta firmata) | CRM interno | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Firma documenti massiva | CRM interno | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |</p>
<p>Dettaglio tier: firma digitale, magazzino e assegnazioni richiedono il tier <strong>Professional</strong> con l&#8217;add-on <strong>Workforce &amp; Signature</strong>; la firma massiva è <strong>Enterprise</strong>. In entrambi i casi servono le immagini Enterprise — nella Community questa console non esiste.</p>
<h2></h2>
<h3><strong>Come funziona la licenza Enterprise</strong></h3>
<p>Il modello di licenza di Meridian ARC è pensato anche per ambienti regolati, ed è il motivo per cui sblocca queste funzioni in modo netto.</p>
<p><strong>1. Stesso codice, immagini diverse</strong><br />
La Community **non contiene** il codice del CRM interno: non è una funzione <strong>spenta da un flag</strong>, è proprio un&#8217;immagine Docker diversa. Le variabili d&#8217;ambiente, da sole, non sbloccano nulla.</p>
<p><strong>2. Licenza verificata offline</strong><br />
L&#8217;attivazione usa una chiave <strong>Ed25519</strong> validata localmente. L&#8217;istanza non deve &#8220;chiamare casa&#8221;: funziona on-premise e in ambienti air-gapped, senza dipendere da un server di attivazione e senza lock-in.</p>
<p><strong>3. Professional ed Enterprise sono due tier</strong><br />
La <strong>license key</strong> decide quali feature e add-on sono attivi. Per il CRM interno: l&#8217;add-on <strong>Workforce &amp; Signature</strong> abilita firma digitale, magazzino e assegnazioni; la firma massiva richiede il tier Enterprise.</p>
<p><strong>4. Upgrade senza reinstallare</strong><br />
Si parte dalla Community, si puntano le immagini Enterprise e si applica la licenza da <strong>Admin → Licenza &amp; Edizione</strong>. Dati, OAuth e configurazione restano identici: nessuna migrazione, nessun fermo del servizio.</p>
<h3></h3>
<h4><strong>Attivazione in 3 passi</strong></h4>
<p><strong>1. Parliamone</strong> — esigenze, clienti gestiti, volumi, integrazioni.<br />
<strong>2. Accesso e licenza</strong> — token di sola lettura al registry privato + file <strong>azienda.license.key</strong> firmato.<br />
<strong>3. Attivazione</strong> — <strong>docker login</strong>, si puntano le immagini Enterprise nello stesso stack, si applica la licenza dal pannello Admin.</p>
<p>Admin → Licenza &amp; Edizione: stato della licenza, edizione e feature/add-on attivi</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124098 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h2></h2>
<h3><strong>In conclusione</strong></h3>
<p>Meridian ARC separa con chiarezza tre piani di lavoro: il <strong>ticket</strong> (il Service Desk), la <strong>governance del cliente</strong> (Orbit) e la <strong>macchina interna dell&#8217;MSP</strong> (il CRM).</p>
<p>Orbit — contratti, SAL, RACI, anagrafiche, offerte — è già tutto nella Community: la governance non è un lusso da pagare. La Enterprise sblocca invece la console interna, dove la <strong>firma digitale</strong>, il <strong>magazzino cespiti</strong>, le <strong>assegnazioni con ricevuta firmata</strong> e la <strong>firma massiva</strong> automatizzano e mettono a norma i processi interni di chi gestisce davvero molte persone e molti beni.</p>
<p>Se il tuo MSP è cresciuto al punto da dover firmare documenti in modo strutturato, tracciare i cespiti aziendali e raccogliere firme da tutto lo staff, il CRM interno della Enterprise è esattamente il pezzo che ti manca.</p>
<p>Trovi tutti i dettagli su Orbit, il CRM interno e le condizioni Enterprise su <a href="https://meridian-arc.io" target="_blank" rel="noopener">meridian-arc.io</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/meridian-arc-oltre-il-ticket-orbit-per-la-governance-dei-contratti-e-il-crm-interno-della-enterprise-edition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PatchMon v2 — Abilitare le notifiche email (SMTP)</title>
		<link>https://www.raffaelechiatto.com/patchmon-v2-abilitare-le-notifiche-email-smtp/</link>
					<comments>https://www.raffaelechiatto.com/patchmon-v2-abilitare-le-notifiche-email-smtp/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Mon, 29 Jun 2026 06:14:42 +0000</pubDate>
				<category><![CDATA[PatchMon]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[smtp]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1123838</guid>

					<description><![CDATA[&#160; Monitorare un&#8217;infrastruttura Linux senza ricevere notifiche è un po&#8217; come guidare di notte senza luci: tutto sembra tranquillo finché non lo è più. PatchMon v2 risolve questo problema mettendo a disposizione un sistema di notifiche flessibile e ben strutturato che permette di ricevere alert in tempo reale e report periodici direttamente nella propria casella [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091056 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<p>Monitorare un&#8217;infrastruttura Linux senza ricevere notifiche è un po&#8217; come guidare di notte senza luci: tutto sembra tranquillo finché non lo è più.</p>
<p>PatchMon v2 risolve questo problema mettendo a disposizione un sistema di notifiche flessibile e ben strutturato che permette di ricevere alert in tempo reale e report periodici direttamente nella propria casella di posta.</p>
<p>In questa guida vedremo come configurare una destinazione SMTP all&#8217;interno dell&#8217;interfaccia di PatchMon v2 come definire le regole di routing degli alert verso quella destinazione e come impostare report email programmati giornalieri, settimanali o mensili con le sezioni più utili per tenere sempre sotto controllo lo stato del parco macchine.</p>
<p>La configurazione si gestisce interamente dalla UI web, senza toccare file di configurazione a mano: bastano pochi minuti per iniziare a ricevere le prime notifiche.</p>
<p>&nbsp;</p>
<h3><strong>PREREQUISITI</strong></h3>
<p>PatchMon v2 installato</p>
<blockquote class="wp-embedded-content" data-secret="69qa8nBoQn"><p><a href="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-patchmon-v2-su-ubuntu-server-26-04/">Installazione e Configurazione Base di PatchMon v2 su Ubuntu Server 26.04</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“Installazione e Configurazione Base di PatchMon v2 su Ubuntu Server 26.04” — RaffaeleChiatto.com" src="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-patchmon-v2-su-ubuntu-server-26-04/embed/#?secret=I80kvIXxWc#?secret=69qa8nBoQn" data-secret="69qa8nBoQn" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>La configurazione si divide in 3 fasi: configurare la destinazione SMTP, creare le regole di routing degli alert e impostare i report programmati.</p>
<p>&nbsp;</p>
<h3><strong>FASE 1 &#8211; AGGIUNTA DELLA DESTINAZIONE SMTP</strong></h3>
<p>In PatchMon v2 le destinazioni (SMTP, webhook, ntfy) si gestiscono da <strong>Reporting → scheda Destinations</strong>.</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-01.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123842 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-01-1024x510.png" alt="" width="1024" height="510" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-01-980x488.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-01-480x239.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Apri la UI web di PatchMon quindi cliccare su <strong>Reporting</strong> nel menu laterale</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-02.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123843 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-02-1024x510.png" alt="" width="1024" height="510" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-02-980x488.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-02-480x239.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Clicca sulla scheda <strong>Destinations</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-03.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123844 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-03-1024x507.png" alt="" width="1024" height="507" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-03-980x485.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-03-480x237.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Clicca <strong>Add Destination</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-04.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123845 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-04-1024x505.png" alt="" width="1024" height="505" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-04-980x483.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-04-480x236.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Selezionare <strong>SMTP Delivery</strong> quindi <strong>Next</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-05.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123847 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-05-1024x506.png" alt="" width="1024" height="506" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-05-980x485.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-05-480x237.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Inserire tutti i dati relativi al server SMTP quindi cliccare <strong>Create</strong></p>
<p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> NOTA BENE</strong>: in v2.0.2 è stato corretto un bug per cui l&#8217;opzione <strong>Use TLS</strong> non veniva rispettata. Assicurati di essere aggiornato almeno a quella versione.</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-06.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123848 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-06-1024x506.png" alt="" width="1024" height="506" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-06-980x484.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-06-480x237.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se è tutto corretto dovremmo vedere la <strong>Destination</strong> creata come nella figura sovrastante</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-07.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123849 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-07-1024x488.png" alt="" width="1024" height="488" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-07-980x467.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-07-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare <strong>Test</strong> per verificare che le mail arrivino</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-08.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123850 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-08-1024x508.png" alt="" width="1024" height="508" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-08-1024x508.png 1024w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-08-980x486.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-08-480x238.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Aprire la mail e verificare di aver ricevuto un messaggio come quello sovrastante</p>
<h3></h3>
<h3><strong>FASE 2 &#8211; CREAZIONE DELLE EVENT RULES (ROUTING DEGLI ALERT)</strong></h3>
<p>Le <strong>Event Rules</strong> per instradare gli alert verso le destinazioni si trovano in <strong>Reporting → scheda Event Rules</strong>.</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-09.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123852 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-09-1024x489.png" alt="" width="1024" height="489" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-09-980x468.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-09-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Andare su Reporting quindi selezionare <strong>Event Rules</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-10.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123853 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-10-1024x489.png" alt="" width="1024" height="489" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-10-980x468.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-10-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare <strong>Add Event Rule</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-11.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123854 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-11-1024x488.png" alt="" width="1024" height="488" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-11-980x467.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-11-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>In questa schermata selezionare</p>
<ul>
<li><strong>Destination</strong>: inserire la destinazione SMTP creata nella Fase 1</li>
<li><strong>Events: </strong>selezionare gli eventi che devono scatenare l&#8217;alert</li>
<li><strong>Minimum Severity: </strong>si può scegliere tra Informational, Warning, Error e Critical</li>
<li><strong>Host Group: </strong>selezionare gli host group a cui applicare la regola</li>
</ul>
<p>Cliccare <strong>Add</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-12.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123856 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-12-1024x487.png" alt="" width="1024" height="487" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-12-980x466.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-12-480x228.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Dovremmo visualizzare in questa schermata tutte le <strong>Rules</strong> create</p>
<p>&nbsp;</p>
<h3><strong>FASE 3 — CONFIGURAZIONE DEI REPORT PROGRAMMATI</strong></h3>
<p>Le Schedulazioni le troviamo in <strong>Reporting → scheda Scheduled Reports</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-13.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123857 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-13-1024x489.png" alt="" width="1024" height="489" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-13-980x468.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-13-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare su <strong>Scheduled Reports</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-14.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123858 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-14-1024x489.png" alt="" width="1024" height="489" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-14-980x468.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-14-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare su <strong>New Report</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-15.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123860 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-15-1024x489.png" alt="" width="1024" height="489" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-15-980x468.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-15-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Le opzioni disponibili configurabili sono:</p>
<ul>
<li><strong>Report Name</strong>: Nome del Report</li>
<li><strong>Schedule</strong>: daily, weekdays, weekly (scegli i giorni) o monthly</li>
<li><strong>Deliver to</strong>: spunta la tua destinazione email creata in precedenza</li>
<li><strong>Delivery time</strong>: ora e minuto nel timezone del server</li>
<li><strong>Sections</strong>: scegli cosa includere nel report — open alerts, host con aggiornamenti pendenti, top security packages, stato compliance, ecc.</li>
<li><strong>Scope to host Groups</strong>: selezionare i gruppi a cui applicare la schedulazione</li>
</ul>
<p>Cliccare <strong>Create</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-16.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123861 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-16-1024x487.png" alt="" width="1024" height="487" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-16-980x466.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/05/enable-alert-smtp-patchmon-16-480x228.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Dovremmo visualizzare una schermata con la schedulazione creata</p>
<p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ATTENZIONE:</strong> PatchMon mantiene un Delivery Log con traccia completa di ogni notifica inviata: stato, errori e numero di tentativi.</p>
<p>E&#8217; possibile consultarlo in Reporting per verificare che le email vengano consegnate correttamente.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/patchmon-v2-abilitare-le-notifiche-email-smtp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Monitoraggio della salute dei dischi SSD e NVMe su VMware ESXi con pyVmomi, Prometheus e Grafana</title>
		<link>https://www.raffaelechiatto.com/monitoraggio-della-salute-dei-dischi-ssd-e-nvme-su-vmware-esxi-con-pyvmomi-prometheus-e-grafana/</link>
					<comments>https://www.raffaelechiatto.com/monitoraggio-della-salute-dei-dischi-ssd-e-nvme-su-vmware-esxi-con-pyvmomi-prometheus-e-grafana/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Thu, 25 Jun 2026 06:42:38 +0000</pubDate>
				<category><![CDATA[Gitea]]></category>
		<category><![CDATA[Grafana]]></category>
		<category><![CDATA[Prometheus]]></category>
		<category><![CDATA[VmWare]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[Portainer]]></category>
		<category><![CDATA[pyVmomi]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[vmware]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1123925</guid>

					<description><![CDATA[&#160; In questo articolo vedremo come costruire un sistema completo di monitoraggio della salute dei dischi SSD e NVMe installati negli host VMware ESXi, utilizzando esclusivamente strumenti open source: pyVmomi per interfacciarsi con le API vSphere, Prometheus e Pushgateway per la raccolta e lo storage delle metriche, e Grafana per la visualizzazione e gli alert. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091057 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/DIFFICULT-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/DIFFICULT-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/DIFFICULT-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<p>In questo articolo vedremo come costruire un sistema completo di monitoraggio della salute dei dischi SSD e NVMe installati negli host VMware ESXi, utilizzando esclusivamente strumenti open source: pyVmomi per interfacciarsi con le API vSphere, Prometheus e Pushgateway per la raccolta e lo storage delle metriche, e Grafana per la visualizzazione e gli alert.</p>
<p>La soluzione non richiede l&#8217;installazione di agenti sugli host ESXi, non dipende da VIB di terze parti e funziona correttamente anche con il Secure Boot abilitato.</p>
<p>&nbsp;</p>
<h3><strong>PREREQUISITI</strong></h3>
<p>Uno o più host VMware ESXi gestiti da vCenter<br />
Un server Linux con Docker e Portainer già installati</p>
<blockquote class="wp-embedded-content" data-secret="cBRzJoqYI0"><p><a href="https://www.raffaelechiatto.com/installazione-e-configurazione-di-portainer-su-ubuntu-server-24-04/">Installazione e Configurazione di Portainer su Ubuntu Server 24.04</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“Installazione e Configurazione di Portainer su Ubuntu Server 24.04” — RaffaeleChiatto.com" src="https://www.raffaelechiatto.com/installazione-e-configurazione-di-portainer-su-ubuntu-server-24-04/embed/#?secret=LgF9KOnck3#?secret=cBRzJoqYI0" data-secret="cBRzJoqYI0" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Grafana già installato e funzionante su Docker</p>
<blockquote class="wp-embedded-content" data-secret="0XpAbl5Moz"><p><a href="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-grafana-su-ubuntu-server-24-04/">Installazione e Configurazione base di Grafana su Ubuntu Server 24.04</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“Installazione e Configurazione base di Grafana su Ubuntu Server 24.04” — RaffaeleChiatto.com" src="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-grafana-su-ubuntu-server-24-04/embed/#?secret=c8eOjidcVZ#?secret=0XpAbl5Moz" data-secret="0XpAbl5Moz" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>&nbsp;</p>
<p>Un&#8217;istanza Gitea per il versioning dei file di configurazione</p>
<blockquote class="wp-embedded-content" data-secret="HFN1EnAD97"><p><a href="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-gitea-su-ubuntu-server-24-04/">Installazione e Configurazione Base di Gitea su Ubuntu Server 24.04</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="“Installazione e Configurazione Base di Gitea su Ubuntu Server 24.04” — RaffaeleChiatto.com" src="https://www.raffaelechiatto.com/installazione-e-configurazione-base-di-gitea-su-ubuntu-server-24-04/embed/#?secret=hTl882tQVM#?secret=HFN1EnAD97" data-secret="HFN1EnAD97" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Accesso amministrativo a vCenter per la creazione di un utente dedicato</p>
<h4><strong>ARCHITETTURA</strong></h4>
<p>Host ESXi 1 ──┐<br />
Host ESXi 2 ──┤──→ vCenter API ──→ smart-exporter ──→ Pushgateway ──→ Prometheus ──→ Grafana<br />
Host ESXi 3 ──┘ (Python/pyVmomi)</p>
<p>└──────────── Stack Docker ────────────┘</p>
<p>Lo smart-exporter è un container Python che si connette a vCenter tramite le API vSphere, itera su tutti gli host registrati, legge lo stato operativo dei dischi e pubblica le metriche sul Pushgateway. Prometheus scrape il Pushgateway periodicamente e Grafana visualizza i dati.</p>
<p>&nbsp;</p>
<h3><strong>FASE 1 — CREAZIONE DI UN UTENTE DEDICATO SUL VCENTER</strong></h3>
<p>Per motivi di sicurezza è consigliabile non usare l&#8217;utente amministratore per il monitoraggio. Creare quindi un utente read-only dedicato.</p>
<p>Accedere a vCenter e andare su:</p>
<p><strong>Administration → Single Sign-On → Users and Groups → Add</strong></p>
<p>Compilare i campi:</p>
<p><strong>Username</strong>: monitoring-smart<br />
<strong>Password</strong>: scegli una password sicura</p>
<p>Assegnare il ruolo:</p>
<p><strong>Administration → Access Control → Global Permissions</strong></p>
<p>Assegnare il ruolo Read-Only all&#8217;utente monitoring-smart</p>
<p>Spuntare <strong>Applica a tutti gli oggetti figli</strong></p>
<p>&nbsp;</p>
<h3><strong>FASE 2 &#8211; STRUTTURA DEL REPOSITORY DI GITEA</strong></h3>
<p>Creare un nuovo repository su Gitea chiamato <strong>esxi-smart-monitoring</strong> con la seguente struttura:</p>
<p><strong>esxi-smart-monitoring/</strong><br />
<strong>├── .gitignore</strong><br />
<strong>├── docker-compose.yml</strong><br />
<strong>└── exporter/</strong><br />
<strong>├── Dockerfile</strong><br />
<strong>├── requirements.txt</strong><br />
<strong>└── smart_exporter.py</strong></p>
<p>&nbsp;</p>
<h3><strong>FASE 3 — CREAZIONE DEI FILE DI CONFIGURAZIONE</strong></h3>
<p>Di seguito il contenuto del file <strong>.gitignore</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag">ssh_key/</pre><p>Di seguito il contenuto del file <strong>exporter/requirements.txt</strong></p><pre class="urvanov-syntax-highlighter-plain-tag">pyVmomi==8.0.3.0.1
prometheus-client==0.20.0
schedule==1.2.1
urllib3==2.2.1</pre><p>Adesso creare lo script si connette a vCenter tramite pyVmomi, itera su tutti gli host ESXi registrati e per ogni host legge lo stato operativo dei dischi locali. Le metriche vengono pubblicate sul Pushgateway in formato Prometheus.</p>
<p>Di seguito il contenuto del file <strong>exporter/smart_exporter.py</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag">python#!/usr/bin/env python3

import os
import ssl
import time
import schedule
import logging
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim
from prometheus_client import Gauge, push_to_gateway, CollectorRegistry

logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s'
)
log = logging.getLogger(__name__)

VCENTER_HOST = os.environ.get('VCENTER_HOST')
VCENTER_USER = os.environ.get('VCENTER_USER')
VCENTER_PASSWORD = os.environ.get('VCENTER_PASSWORD')
VCENTER_PORT = int(os.environ.get('VCENTER_PORT', 443))
VERIFY_SSL = os.environ.get('VCENTER_SSL', 'false').lower() == 'true'
PUSHGATEWAY_URL = os.environ.get('PUSHGATEWAY_URL', 'http://pushgateway:9091')
INTERVAL_MINUTES = int(os.environ.get('INTERVAL_MINUTES', 5))


def get_vcenter_connection():
if not VERIFY_SSL:
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
else:
context = ssl.create_default_context()

return SmartConnect(
host=VCENTER_HOST,
user=VCENTER_USER,
pwd=VCENTER_PASSWORD,
port=VCENTER_PORT,
sslContext=context
)


def get_all_hosts(content):
container = content.viewManager.CreateContainerView(
content.rootFolder,
[vim.HostSystem],
recursive=True
)
hosts = list(container.view)
container.Destroy()
return hosts


def collect_smart_metrics():
log.info("Starting SMART collection cycle")

try:
si = get_vcenter_connection()
content = si.RetrieveContent()
hosts = get_all_hosts(content)
log.info(f"Found {len(hosts)} ESXi hosts")

for host in hosts:
host_name = host.name
log.info(f"Processing host: {host_name}")

try:
storage_system = host.configManager.storageSystem
devices = storage_system.storageDeviceInfo.scsiLun

registry = CollectorRegistry()

smart_health = Gauge(
'esxi_smart_health',
'SMART health status (1=OK, 0=FAIL)',
['host', 'device', 'device_name'],
registry=registry
)
device_is_ssd = Gauge(
'esxi_device_is_ssd',
'Whether the device is an SSD (1=SSD, 0=HDD)',
['host', 'device', 'device_name'],
registry=registry
)

for device in devices:
dev_id = device.canonicalName if hasattr(device, 'canonicalName') else device.uuid
dev_name = device.displayName if hasattr(device, 'displayName') else dev_id

log.info(f" Device: {dev_name} ({dev_id})")

# Rileva se SSD
is_ssd = getattr(device, 'ssd', False)
device_is_ssd.labels(
host=host_name,
device=dev_id,
device_name=dev_name
).set(1 if is_ssd else 0)

# Leggi stato operativo
try:
op_state = getattr(device, 'operationalState', [])
health_ok = 1
if op_state:
for state in op_state:
if 'degraded' in str(state).lower() or \
'error' in str(state).lower():
health_ok = 0
break

smart_health.labels(
host=host_name,
device=dev_id,
device_name=dev_name
).set(health_ok)
log.info(f" Health: {'OK' if health_ok else 'FAIL'}")

except Exception as e:
log.warning(f" Could not get health for {dev_id}: {e}")
continue

push_to_gateway(
PUSHGATEWAY_URL,
job='esxi_smart',
grouping_key={'host': host_name},
registry=registry
)
log.info(f" → Pushed metrics for host {host_name}")

except Exception as e:
log.error(f"Error processing host {host_name}: {e}")
continue

Disconnect(si)
log.info("Collection cycle completed")

except Exception as e:
log.error(f"Failed to connect to vCenter: {e}")


if __name__ == '__main__':
log.info(f"Starting ESXi SMART exporter, interval: {INTERVAL_MINUTES} min")
log.info(f"vCenter: {VCENTER_HOST}, Pushgateway: {PUSHGATEWAY_URL}")

collect_smart_metrics()

schedule.every(INTERVAL_MINUTES).minutes.do(collect_smart_metrics)

while True:
schedule.run_pending()
time.sleep(30)</pre><p>Di seguito il contenuto del file <strong>exporter/Dockerfile</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag">dockerfileFROM python:3.12-slim

WORKDIR /app

COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

COPY smart_exporter.py /app/smart_exporter.py

CMD ["python", "-u", "/app/smart_exporter.py"]</pre><p>La configurazione vCenter viene passata tramite variabili d&#8217;ambiente, evitando così problemi di bind mount. La configurazione di Prometheus viene iniettata tramite Docker configs, una funzionalità nativa di Docker Compose che non richiede file sul disco dell&#8217;host.</p>
<p>Di seguito il contenuto del file <strong>docker-compose.yml</strong>:</p><pre class="urvanov-syntax-highlighter-plain-tag">yamlversion: '3.8'

services:

pushgateway:
image: prom/pushgateway:latest
container_name: pushgateway
restart: unless-stopped
ports:
- "9091:9091"
networks:
- esxi_monitoring

prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- prometheus_data:/prometheus
configs:
- source: prometheus_config
target: /etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=30d'
networks:
- esxi_monitoring

smart-exporter:
build: ./exporter
container_name: smart-exporter
restart: unless-stopped
environment:
- VCENTER_HOST=vcenter.dominio.local
- VCENTER_USER=monitoring-smart@dominio.local
- VCENTER_PASSWORD=la-tua-password
- VCENTER_PORT=443
- VCENTER_SSL=false
- PUSHGATEWAY_URL=http://pushgateway:9091
- INTERVAL_MINUTES=5
depends_on:
- pushgateway
networks:
- esxi_monitoring

configs:
prometheus_config:
content: |
global:
scrape_interval: 60s
evaluation_interval: 60s

scrape_configs:
- job_name: 'pushgateway'
honor_labels: true
static_configs:
- targets: ['pushgateway:9091']

volumes:
prometheus_data:

networks:
esxi_monitoring:
driver: bridge</pre><p><strong>NOTA BENE</strong>: sostituire le variabili <strong>VCENTER_HOST, VCENTER_USER e VCENTER_PASSWORD</strong> con i valori reali del tuo ambiente.</p>
<h3><strong>FASE 4 — COLLEGARE GRAFANA ALLA NETWORK DI PROMETHEUS</strong></h3>
<p>Poiché Grafana è già installato in uno stack Docker separato, dobbiamo collegarla alla network esxi_monitoring affinché possa raggiungere Prometheus per nome container.</p>
<p>Eseguire il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">docker network connect &lt;nome_stack&gt;_esxi_monitoring grafana</pre><p>Verificare che la connessione funzioni con il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">docker exec -it grafana wget -qO- http://prometheus:9090/-/healthy</pre><p>Se è tutto OK la risposta dovrebbe essere:</p><pre class="urvanov-syntax-highlighter-plain-tag">Prometheus Server is Healthy.</pre><p><strong>NOTA BENE:</strong> questa connessione va persa al riavvio del container. Per renderla permanente aggiungi la network esxi_monitoring come esterna nel docker-compose.yml dello stack Grafana.</p>
<p>&nbsp;</p>
<h3><strong>FASE 5 — DEPLOY SU PORTAINER</strong></h3>
<p>Su Portainer creare un nuovo stack collegato al repository Gitea:</p>
<p><strong>Stacks → Add stack → Repository</strong></p>
<p><strong>Repository URL</strong>: http://&lt;IP_GITEA&gt;/&lt;utente&gt;/esxi-smart-monitoring</p>
<p><strong>Compose path</strong>: docker-compose.yml</p>
<p>Cliccare <strong>Deploy the stack</strong></p>
<p>Verificare che tutti i container siano in stato Running con il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">docker ps --format "table {{.Names}}\t{{.Status}}" | grep -E "prometheus|smart|pushgateway"</pre><p>Dovremmo visualizzare un output simile al seguente:</p><pre class="urvanov-syntax-highlighter-plain-tag">smart-exporter Up 1 days
prometheus Up 1 days
pushgateway Up 1 days</pre><p>Controllare i log dello smart-exporter per verificare la connessione a vCenter con il comando:</p><pre class="urvanov-syntax-highlighter-plain-tag">docker logs smart-exporter --tail 30</pre><p>L&#8217;output atteso dovrebbe essere simile al seguente:</p><pre class="urvanov-syntax-highlighter-plain-tag">2026-01-01 10:00:00,000 INFO Starting ESXi SMART exporter, interval: 5 min
2026-01-01 10:00:00,000 INFO vCenter: vcenter.dominio.local, Pushgateway: http://pushgateway:9091
2026-01-01 10:00:00,000 INFO Starting SMART collection cycle
2026-01-01 10:00:00,000 INFO Found 4 ESXi hosts
2026-01-01 10:00:00,000 INFO Processing host: esxi01.dominio.local
2026-01-01 10:00:00,000 INFO Device: Local NVMe Disk (...) (...)
2026-01-01 10:00:00,000 INFO Health: OK
2026-01-01 10:00:00,000 INFO → Pushed metrics for host esxi01.dominio.local
2026-01-01 10:00:00,000 INFO Collection cycle completed</pre><p>&nbsp;</p>
<h3><strong>FASE 6 &#8211; CONFIGURAZIONE DELLE DASHBOARD SU GRAFANA</strong></h3>
<p>Di seguito i vari step da seguire per la realizzazione della Dashboard.</p>
<p>&nbsp;</p>
<h4><strong>STEP 1 — VERIFICA DEL DATASCOURCE DI PROMETHEUS</strong></h4>
<p>Aprire Grafana nel browser<br />
Nel menu a sinistra cliccare <strong>Connections</strong> (icona a forma di fulmine)<br />
Cliccare <strong>Data sources</strong><br />
Cercare <strong>Prometheus</strong> nella lista e cliccrci sopra</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-01.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123932 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-01-1024x497.png" alt="" width="1024" height="497" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-01-980x475.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-01-480x233.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Verificare che l&#8217;URL sia <strong>http://prometheus:9090</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-02.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123933 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-02-1024x493.png" alt="" width="1024" height="493" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-02-980x472.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-02-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Scorrere in fondo alla pagina e cliccare <strong>Save &amp; Test</strong></p>
<p>Dovrebbe apparire il banner verde <strong>Successfully queried the Prometheus API</strong></p>
<p>&nbsp;</p>
<h4><strong>STEP 2 — CREARE UNA NUOVA DASHBOARD</strong></h4>
<p>Adesso procedere con la creazione della Dashboard</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-03.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123934 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-03-1024x491.png" alt="" width="1024" height="491" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-03-980x470.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-03-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Nel menu a sinistra cliccare <strong>Dashboards</strong> quindi cliccare il pulsante blu <strong>Create Dashboard</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-04.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123935 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-04-1024x487.png" alt="" width="1024" height="487" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-04-980x466.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-04-480x228.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare <strong>Add visualization</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-05.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123936 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-05-1024x493.png" alt="" width="1024" height="493" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-05-980x472.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-05-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Selezionare il datasource <strong>Prometheus</strong></p>
<p>&nbsp;</p>
<h4><strong>STEP 3 — PANNELLO 1: HEALTH STATUS</strong></h4>
<p>Si apre l&#8217;editor del pannello. Procedere così:</p>
<p>Tipo grafico (in alto a destra):</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-06.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123937 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-06-1024x490.png" alt="" width="1024" height="490" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-06-980x469.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-06-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cambiare da <strong>Time series</strong> a <strong>Stat</strong> come nell&#8217;immagine sovrastante</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-07.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123939 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-07-1024x492.png" alt="" width="1024" height="492" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-07-980x471.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-07-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Impostare la Query (in basso):</p>
<p>Nel campo query selezionare la voce: <strong>esxi_smart_health</strong></p>
<p>Cliccare <strong>Run queries</strong></p>
<p>Dovresti vedere dei valori 0 o 1 apparire nell&#8217;anteprima.</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-08.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123940 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-08-1024x493.png" alt="" width="1024" height="493" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-08-980x472.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-08-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Inserire il Titolo nella colonna destra nel campo <strong>Title</strong>:</p>
<p><strong>Health Status Dischi</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-09.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123941 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-09-1024x490.png" alt="" width="1024" height="490" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-09-980x469.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-09-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Nella colonna destra scorrere fino a <strong>Value mappings</strong> quindi cliccare su <strong>Add value mapping</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-10.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123942 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-10-1024x490.png" alt="" width="1024" height="490" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-10-980x469.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-10-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p><strong>Tipo</strong>: Value</p>
<p><strong>Value</strong>: 1 → Display text: OK → Color: Verde</p>
<p>Clicca <strong>Add value mapping</strong> di nuovo</p>
<p><strong>Value</strong>: 0 → Display text: FAIL → Color: Rosso</p>
<p>Cliccare <strong>Update</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-11.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123943 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-11-1024x492.png" alt="" width="1024" height="492" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-11-980x471.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-11-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Se è tutto corretto dovremmo vedere una schermata come quella sovrastante</p>
<p>Adesso andare al fondo della colonna destra fino a <strong>Thresholds</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-12.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123945 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-12-1024x492.png" alt="" width="1024" height="492" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-12-980x471.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-12-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Impostare:</p>
<p><strong>Base</strong> → Rosso</p>
<p><strong>Aggiungi soglia</strong>: 1 → Verde</p>
<p>Individuare le <strong>Standard options</strong>:</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-13.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123946 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-13-1024x491.png" alt="" width="1024" height="491" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-13-980x470.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-13-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Impostare nelle <strong>Standard options → Display name</strong> (colonna destra) il seguente valore:</p>
<p><strong>${__series.labels.device_name} &#8211; ${__series.labels.host}</strong></p>
<p>Cliccare in alto a destra <strong>Save Dashboard</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-14.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123947 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-14-1024x488.png" alt="" width="1024" height="488" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-14-980x467.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-14-480x229.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Inserire il titolo quindi cliccare <strong>Save</strong></p>
<p>&nbsp;</p>
<h4><strong>STEP 4 — PANNELLO 2: INVENTARIO DISCHI</strong></h4>
<p>Tornare alla dashboard e cliccare <strong>Add → Visualization</strong>.</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-15.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123948 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-15-1024x492.png" alt="" width="1024" height="492" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-15-980x471.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-15-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p><strong>Tipo grafico</strong>: Cambiare a Table</p>
<p><strong>Query</strong>: esxi_device_is_ssd</p>
<p>Cliccare <strong>Run queries</strong></p>
<p><strong>Titolo</strong>: Inventario Dischi</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-16.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123950 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-16-1024x490.png" alt="" width="1024" height="490" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-16-980x469.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-16-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Cliccare sul tab <strong>Transformations</strong> in basso accanto a Queries:</p>
<p>Clicca <strong>Add transformation</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-17.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123951 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-17-1024x491.png" alt="" width="1024" height="491" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-17-980x470.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-17-480x230.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Scegliere <strong>Labels to fields</strong></p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-18.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123952 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-18-1024x493.png" alt="" width="1024" height="493" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-18-980x471.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-18-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Apparirà una colonna per ogni label: <strong>host, device, device_name</strong></p>
<p>Nella lista dei campi tenere: <strong>host, device_name, device</strong></p>
<p>Clicca <strong>Add transformation</strong> → cerca <strong>Organize fields</strong></p>
<p><strong>Nascondere</strong>: Time, __name__, job, instance</p>
<p>Quindi rinominare:</p>
<p><strong>host → Host</strong><br />
<strong>device_name → Disco</strong><br />
<strong>device → Device ID</strong><br />
<strong>Value #A → Health</strong><br />
<strong>Value #B → Tipo</strong></p>
<p>Cliccare <strong>Apply</strong></p>
<p>&nbsp;</p>
<h4><strong>STEP 5 — PANNELLO 2: CONTEGGIO DISCHI OK PER HOST</strong></h4>
<p>Cliccare <strong>Add → Visualization</strong></p>
<p><strong>Impostare il tipo grafico in</strong>: Stat</p>
<p><strong>Query</strong>: count by (host) (esxi_smart_health == 1)</p>
<p><strong>Titolo</strong>: Dischi OK per host</p>
<p><strong>In Standard options → Unit impostare</strong>: short</p>
<p><strong>In Standard options → Display name</strong>: ${__series.labels.host}</p>
<p><strong>In Thresholds impostare</strong>: Base → Verde (tutti OK è buono)</p>
<p>Cliccare <strong>Apply</strong></p>
<p>&nbsp;</p>
<h4><strong>STEP 6 — SALVATAGGIO DELLA DASHBOARD</strong></h4>
<p>Cliccare l&#8217;icona salva in alto a destra (o Ctrl+S)</p>
<p><strong>Nome dashboard</strong>: ESXi Disk Health</p>
<p><strong>Folder</strong>: puoi lasciare General</p>
<p>Cliccare <strong>Save</strong></p>
<p>Al termine dopo varie implementazioni dovremmo visualizzare la nostra Dashoboard</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-19.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1123953 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-19-1024x493.png" alt="" width="1024" height="493" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-19-980x472.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/mon-ssd-esxi-grafana-19-480x231.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h3><strong>FASE 7 &#8211; JSON DASHBOARD</strong></h3>
<p>Di seguito il codice Json pronto per avere la Dashboard pronta:</p><pre class="urvanov-syntax-highlighter-plain-tag">{
"__inputs": [
{
"name": "DS_PROMETHEUS",
"label": "Prometheus",
"description": "",
"type": "datasource",
"pluginId": "prometheus",
"pluginName": "Prometheus"
}
],
"__elements": {},
"__requires": [
{ "type": "grafana", "id": "grafana", "name": "Grafana", "version": "10.0.0" },
{ "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" },
{ "type": "panel", "id": "stat", "name": "Stat", "version": "" },
{ "type": "panel", "id": "table", "name": "Table", "version": "" },
{ "type": "panel", "id": "gauge", "name": "Gauge", "version": "" },
{ "type": "panel", "id": "piechart", "name": "Pie chart", "version": "" },
{ "type": "panel", "id": "timeseries","name": "Time series","version": "" }
],
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": { "type": "grafana", "uid": "-- Grafana --" },
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations &amp; Alerts",
"type": "dashboard"
}
]
},
"description": "Monitoraggio salute dischi SSD e NVMe su host VMware ESXi tramite pyVmomi e Prometheus",
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 1,
"id": null,
"links": [],
"panels": [

{
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
"id": 100,
"title": " Riepilogo Generale",
"type": "row"
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "blue", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 0, "y": 1 },
"id": 1,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "Dischi Totali",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(esxi_smart_health)", "instant": true, "legendFormat": "Totale", "refId": "A"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 4, "y": 1 },
"id": 2,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "Dischi OK",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(esxi_smart_health == 1)", "instant": true, "legendFormat": "OK", "refId": "A"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }, { "color": "red", "value": 1 }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 8, "y": 1 },
"id": 3,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "Dischi FAIL",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(esxi_smart_health == 0) or vector(0)", "instant": true, "legendFormat": "FAIL", "refId": "A"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "blue", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 12, "y": 1 },
"id": 4,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "Host Monitorati",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(count by (host) (esxi_smart_health))", "instant": true, "legendFormat": "Host", "refId": "A"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "blue", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 16, "y": 1 },
"id": 5,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "SSD/NVMe",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(esxi_device_is_ssd == 1)", "instant": true, "legendFormat": "SSD/NVMe", "refId": "A"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "grey", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 4, "w": 4, "x": 20, "y": 1 },
"id": 6,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "auto"
},
"title": "HDD",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count(esxi_device_is_ssd == 0) or vector(0)", "instant": true, "legendFormat": "HDD", "refId": "A"
}]
},

{
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 5 },
"id": 101,
"title": " Health Status per Host",
"type": "row"
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [
{ "options": { "0": { "color": "red", "index": 1, "text": "FAIL" }, "1": { "color": "green", "index": 0, "text": "OK" } }, "type": "value" }
],
"thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "green", "value": 1 }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 6, "w": 24, "x": 0, "y": 6 },
"id": 10,
"options": {
"colorMode": "background", "graphMode": "none", "justifyMode": "center",
"orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"textMode": "value_and_name"
},
"title": "Health Status Dischi — Tutti gli Host",
"type": "stat",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "esxi_smart_health{host=~\"$host\"}",
"instant": true,
"legendFormat": "{{device_name}} | {{host}}",
"refId": "A"
}]
},

{
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 12 },
"id": 102,
"title": " Inventario Dischi",
"type": "row"
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"custom": {
"align": "left",
"cellOptions": { "type": "auto" },
"filterable": true,
"inspect": false
},
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] }
},
"overrides": [
{
"matcher": { "id": "byName", "options": "Value" },
"properties": [
{ "id": "displayName", "value": "Health" },
{
"id": "mappings",
"value": [
{ "options": { "1": { "color": "green", "index": 0, "text": "<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> OK" },
"0": { "color": "red", "index": 1, "text": "<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> FAIL" } }, "type": "value" }
]
},
{ "id": "custom.cellOptions", "value": { "type": "color-background" } },
{ "id": "custom.width", "value": 120 }
]
},
{
"matcher": { "id": "byName", "options": "host" },
"properties": [
{ "id": "displayName", "value": "Host" },
{ "id": "custom.width", "value": 220 }
]
},
{
"matcher": { "id": "byName", "options": "device_name" },
"properties": [
{ "id": "displayName", "value": "Disco" },
{ "id": "custom.width", "value": 260 }
]
},
{
"matcher": { "id": "byName", "options": "device" },
"properties": [
{ "id": "displayName", "value": "Device ID" },
{ "id": "custom.width", "value": 420 }
]
},
{
"matcher": { "id": "byName", "options": "Time" },
"properties": [{ "id": "custom.hidden", "value": true }]
}
]
},
"gridPos": { "h": 10, "w": 12, "x": 0, "y": 13 },
"id": 20,
"options": {
"cellHeight": "sm",
"footer": { "countRows": false, "fields": "", "reducer": ["sum"], "show": false },
"showHeader": true,
"sortBy": [{ "desc": false, "displayName": "Host" }]
},
"title": "Health Status Dischi",
"transformations": [
{
"id": "labelsToFields",
"options": { "mode": "columns", "keepLabels": ["host", "device_name", "device"] }
},
{
"id": "organize",
"options": {
"excludeByName": { "Time": true, "__name__": true, "job": true, "instance": true },
"indexByName": { "host": 0, "device_name": 1, "device": 2, "Value": 3 },
"renameByName": {}
}
}
],
"type": "table",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "esxi_smart_health{host=~\"$host\"}",
"instant": true,
"legendFormat": "",
"refId": "A",
"format": "table"
}]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"custom": {
"align": "left",
"cellOptions": { "type": "auto" },
"filterable": true,
"inspect": false
},
"mappings": [],
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] }
},
"overrides": [
{
"matcher": { "id": "byName", "options": "Value" },
"properties": [
{ "id": "displayName", "value": "Tipo" },
{
"id": "mappings",
"value": [
{ "options": { "1": { "color": "blue", "index": 0, "text": "<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> SSD/NVMe" },
"0": { "color": "grey", "index": 1, "text": " HDD" } }, "type": "value" }
]
},
{ "id": "custom.cellOptions", "value": { "type": "color-background" } },
{ "id": "custom.width", "value": 140 }
]
},
{
"matcher": { "id": "byName", "options": "host" },
"properties": [
{ "id": "displayName", "value": "Host" },
{ "id": "custom.width", "value": 220 }
]
},
{
"matcher": { "id": "byName", "options": "device_name" },
"properties": [
{ "id": "displayName", "value": "Disco" },
{ "id": "custom.width", "value": 260 }
]
},
{
"matcher": { "id": "byName", "options": "device" },
"properties": [
{ "id": "displayName", "value": "Device ID" },
{ "id": "custom.width", "value": 420 }
]
},
{
"matcher": { "id": "byName", "options": "Time" },
"properties": [{ "id": "custom.hidden", "value": true }]
}
]
},
"gridPos": { "h": 10, "w": 12, "x": 12, "y": 13 },
"id": 21,
"options": {
"cellHeight": "sm",
"footer": { "countRows": false, "fields": "", "reducer": ["sum"], "show": false },
"showHeader": true,
"sortBy": [{ "desc": false, "displayName": "Host" }]
},
"title": "Tipo Disco (SSD/NVMe vs HDD)",
"transformations": [
{
"id": "labelsToFields",
"options": { "mode": "columns", "keepLabels": ["host", "device_name", "device"] }
},
{
"id": "organize",
"options": {
"excludeByName": { "Time": true, "__name__": true, "job": true, "instance": true },
"indexByName": { "host": 0, "device_name": 1, "device": 2, "Value": 3 },
"renameByName": {}
}
}
],
"type": "table",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "esxi_device_is_ssd{host=~\"$host\"}",
"instant": true,
"legendFormat": "",
"refId": "A",
"format": "table"
}]
},

{
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 23 },
"id": 103,
"title": " Distribuzione e Statistiche",
"type": "row"
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "palette-classic" },
"custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } },
"mappings": []
},
"overrides": [
{ "matcher": { "id": "byName", "options": "OK" }, "properties": [{ "id": "color", "value": { "fixedColor": "green", "mode": "fixed" } }] },
{ "matcher": { "id": "byName", "options": "FAIL" }, "properties": [{ "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } }] }
]
},
"gridPos": { "h": 8, "w": 8, "x": 0, "y": 24 },
"id": 30,
"options": {
"legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": ["value", "percent"] },
"pieType": "pie",
"tooltip": { "mode": "single", "sort": "none" }
},
"title": "Distribuzione Health Status",
"type": "piechart",
"targets": [
{ "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "count(esxi_smart_health == 1)", "instant": true, "legendFormat": "OK", "refId": "A" },
{ "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "count(esxi_smart_health == 0) or vector(0)", "instant": true, "legendFormat": "FAIL", "refId": "B" }
]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "palette-classic" },
"custom": { "hideFrom": { "legend": false, "tooltip": false, "viz": false } },
"mappings": []
},
"overrides": [
{ "matcher": { "id": "byName", "options": "SSD/NVMe" }, "properties": [{ "id": "color", "value": { "fixedColor": "blue", "mode": "fixed" } }] },
{ "matcher": { "id": "byName", "options": "HDD" }, "properties": [{ "id": "color", "value": { "fixedColor": "grey", "mode": "fixed" } }] }
]
},
"gridPos": { "h": 8, "w": 8, "x": 8, "y": 24 },
"id": 31,
"options": {
"legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": ["value", "percent"] },
"pieType": "donut",
"tooltip": { "mode": "single", "sort": "none" }
},
"title": "Distribuzione Tipo Disco",
"type": "piechart",
"targets": [
{ "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "count(esxi_device_is_ssd == 1)", "instant": true, "legendFormat": "SSD/NVMe", "refId": "A" },
{ "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "expr": "count(esxi_device_is_ssd == 0) or vector(0)", "instant": true, "legendFormat": "HDD", "refId": "B" }
]
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "thresholds" },
"mappings": [],
"max": 4, "min": 0,
"thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "yellow", "value": 1 }, { "color": "green", "value": 2 }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 8, "w": 8, "x": 16, "y": 24 },
"id": 32,
"options": {
"minVizHeight": 75, "minVizWidth": 75, "orientation": "auto",
"reduceOptions": { "calcs": ["lastNotNull"], "fields": "", "values": false },
"showThresholdLabels": false, "showThresholdMarkers": true
},
"title": "Dischi OK per Host",
"type": "gauge",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "count by (host) (esxi_smart_health{host=~\"$host\"} == 1)",
"instant": true, "legendFormat": "{{host}}", "refId": "A"
}]
},

{
"collapsed": false,
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 32 },
"id": 104,
"title": " Storico Health Status",
"type": "row"
},

{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"color": { "mode": "palette-classic" },
"custom": {
"axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto",
"barAlignment": 0, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none",
"hideFrom": { "legend": false, "tooltip": false, "viz": false },
"insertNulls": false, "lineInterpolation": "stepAfter", "lineWidth": 2,
"pointSize": 5, "scaleDistribution": { "type": "linear" },
"showPoints": "auto", "spanNulls": false,
"stacking": { "group": "A", "mode": "none" },
"thresholdsStyle": { "mode": "off" }
},
"mappings": [], "max": 1.1, "min": -0.1,
"thresholds": { "mode": "absolute", "steps": [{ "color": "green", "value": null }] },
"unit": "short"
},
"overrides": []
},
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 33 },
"id": 40,
"options": {
"legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true },
"tooltip": { "mode": "multi", "sort": "none" }
},
"title": "Storico Health Status (1=OK, 0=FAIL)",
"type": "timeseries",
"targets": [{
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"expr": "esxi_smart_health{host=~\"$host\"}",
"legendFormat": "{{device_name}} | {{host}}", "refId": "A"
}]
}

],
"refresh": "5m",
"schemaVersion": 38,
"tags": ["esxi", "vmware", "disk", "smart", "storage"],
"templating": {
"list": [
{
"current": {},
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"definition": "label_values(esxi_smart_health, host)",
"hide": 0,
"includeAll": true,
"multi": true,
"name": "host",
"options": [],
"query": { "query": "label_values(esxi_smart_health, host)", "refId": "StandardVariableQuery" },
"refresh": 2,
"regex": "",
"sort": 1,
"type": "query",
"label": "Host ESXi",
"allValue": ".*"
}
]
},
"time": { "from": "now-24h", "to": "now" },
"timepicker": {},
"timezone": "browser",
"title": "ESXi Disk Health Monitoring",
"uid": "esxi-disk-health-v2",
"version": 1,
"weekStart": ""
}</pre><p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/monitoraggio-della-salute-dei-dischi-ssd-e-nvme-su-vmware-esxi-con-pyvmomi-prometheus-e-grafana/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Meridian ARC ITSM: tutte le funzionalità del Service Desk e cosa sblocca la Enterprise Edition</title>
		<link>https://www.raffaelechiatto.com/meridian-arc-itsm-tutte-le-funzionalita-del-service-desk-e-cosa-sblocca-la-enterprise-edition/</link>
					<comments>https://www.raffaelechiatto.com/meridian-arc-itsm-tutte-le-funzionalita-del-service-desk-e-cosa-sblocca-la-enterprise-edition/#respond</comments>
		
		<dc:creator><![CDATA[Raffaele Chiatto]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 06:27:27 +0000</pubDate>
				<category><![CDATA[Merdian ARC]]></category>
		<category><![CDATA[CMDB]]></category>
		<category><![CDATA[Incident]]></category>
		<category><![CDATA[ITSM]]></category>
		<category><![CDATA[KB]]></category>
		<category><![CDATA[KEDB]]></category>
		<category><![CDATA[Meridian ARC]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Service Request]]></category>
		<category><![CDATA[SLA]]></category>
		<guid isPermaLink="false">https://www.raffaelechiatto.com/?p=1124077</guid>

					<description><![CDATA[&#160; Meridian ARC ITSM: il Service Desk completo e cosa aggiunge la Enterprise Edition Quando si parla di software ITSM (IT Service Management) la domanda ricorrente è sempre la stessa: cosa mi danno davvero gratis, e per cosa devo pagare?. Con la maggior parte dei prodotti la risposta è frustrante — la versione gratuita è [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-full wp-image-1091056 alignnone" src="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png" alt="" width="679" height="89" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR.png 679w, https://www.raffaelechiatto.com/wp-content/uploads/2020/12/INTERMEDIATE-BAR-480x63.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 679px, 100vw" /></p>
<p>&nbsp;</p>
<h3><strong>Meridian ARC ITSM: il Service Desk completo e cosa aggiunge la Enterprise Edition</strong></h3>
<p>Quando si parla di software ITSM (IT Service Management) la domanda ricorrente è sempre la stessa: <strong>cosa mi danno davvero gratis, e per cosa devo pagare?</strong>. Con la maggior parte dei prodotti la risposta è frustrante — la versione gratuita è una demo mutilata, pensata per farti sentire stretto entro la prima settimana.</p>
<p><strong>Meridian ARC</strong> ribalta questo schema. La sua Community Edition è un Service Desk ITIL <strong>completo e pronto alla produzione</strong>: la Enterprise non <strong>sblocca le funzioni base</strong> aggiunge le funzioni che servono a chi del servizio IT fa il proprio business. In questo articolo vediamo tutte le funzionalità del modulo ITSM (il <strong>Desk</strong>) e, soprattutto, dove finisce la Community e dove inizia la Enterprise — con un occhio a come funziona concretamente la licenza EE.</p>
<p>Questo articolo è dedicato al solo modulo <strong>ITSM / Service Desk</strong>. Le aree Orbit (governance e contratti) e CRM interno hanno un articolo a parte.</p>
<p>Dashboard del Service Desk di Meridian ARC: ticket aperti, SLA, KPI in tempo reale, asset CMDB e ultimi incident</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-01-desk-dashboard.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124082 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-01-desk-dashboard-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-01-desk-dashboard-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-01-desk-dashboard-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h3></h3>
<h3><strong>La base: un ciclo ITIL completo, già nella Community</strong></h3>
<p>Partiamo da un punto fermo, perché è il vero elemento differenziante. La <strong>Community Edition</strong> di Meridian ARC non è una versione di prova: copre l&#8217;intero ciclo di vita di un ticket secondo le pratiche ITIL, ed è pensata per girare in produzione, on-premise o in cloud privato, sui tuoi server.</p>
<p>Ecco cosa include — <strong>tutto gratuito e self-hosted.</strong></p>
<p>&nbsp;</p>
<h4><strong>Gestione ticket end-to-end</strong></h4>
<p>Il cuore del sistema. Cinque tipi di ticket nativi, ciascuno con il proprio flusso:</p>
<ul>
<li><strong>Incident</strong> — gestione interruzioni e malfunzionamenti</li>
<li><strong>Problem</strong> — analisi delle cause (RCA con metodi *5 Whys* e *Ishikawa*), workaround, registrazione del *known error* e post-review.</li>
<li><strong>Change Request</strong> — con tipi (standard, normale, emergency, pre-autorizzato), finestra di deployment, test plan, piano di rollback e **workflow di approvazione** (interno, cliente o entrambi, anche tramite link pubblico per il cliente).</li>
<li><strong>Service Request</strong> — richieste di servizio.</li>
<li><strong>Security Incident</strong> — tipologia dedicata agli incidenti di sicurezza.</li>
</ul>
<p>Gli stati del ticket sono strutturati (nuovo → preso in carico → in lavorazione → risolto → chiuso, più stati di attesa) e alcuni di essi sospendono automaticamente il contatore SLA.</p>
<p>Dettaglio di un ticket Incident con stato, priorità, badge SLA e cronologia</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-02-ticket-detail.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124084 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-02-ticket-detail-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-02-ticket-detail-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-02-ticket-detail-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Change Management: stato di approvazione, finestra di deployment e calendario dei change</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-04-changes.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124086 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-04-changes-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-04-changes-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-04-changes-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Code, priorità e categorie</strong></h4>
<ul>
<li><strong>Code di supporto</strong> con SPOC (single point of contact), coda di default ed email di gruppo.</li>
<li><strong>Livelli di priorità</strong> personalizzabili per cliente (nome, colore, ordine).</li>
<li><strong>Categorie</strong> per tipo di ticket, con regole di approvazione configurabili.</li>
<li><strong>Orari di lavoro</strong> (business hours) per coda, con fuso orario — base di calcolo per gli SLA.</li>
</ul>
<p>&nbsp;</p>
<h4><strong>SLA inclusi</strong></h4>
<p>Configurazione delle metriche di servizio — *prima risposta*, *presa in carico*, *risoluzione* — per priorità, coda e tipo di ticket. Gli stati di attesa mettono in pausa il conteggio, così non vieni penalizzato per tempi che non dipendono da te.</p>
<p>Contratto &amp; SLA del cliente: copertura, RPO/RTO, retention e livelli di priorità</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-05-sla.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124087 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-05-sla-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-05-sla-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-05-sla-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>CMDB e gestione asset</strong></h4>
<p>Un CMDB vero, non un elenco statico: Configuration Item per cliente, con numero auto-generato, hostname, IP/MAC, seriale, produttore, modello, date di acquisto, scadenza garanzia e fine vita. Le relazioni tra CI permettono di mappare le dipendenze, e l&#8217;anagrafica licenze software con alert di scadenza completa il quadro.</p>
<p>CMDB: l&#8217;inventario dei Configuration Item del cliente</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-06-cmdb.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124089 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-06-cmdb-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-06-cmdb-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-06-cmdb-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Service Catalog, Knowledge Base e Task Flows</strong></h4>
<ul>
<li><strong>Service Catalog</strong> con form dinamici: il cliente compila e la richiesta diventa un ticket.</li>
<li><strong>Knowledge Base</strong> con articoli pubblici e interni, versionamento e template; collegando un articolo a un ticket Problem si costruisce il <strong>KEDB</strong> (Known Error Database).</li>
<li><strong>Task Flows</strong>: una richiesta dal catalogo può generare più task ordinati, ciascuno assegnato a una coda diversa — flussi multi-stage anche paralleli.</li>
</ul>
<p>Service Catalog: le voci di servizio con form dinamici</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-07-catalog.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124090 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-07-catalog-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-07-catalog-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-07-catalog-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Automazioni, email e portale</strong></h4>
<ul>
<li>Motore di automazione** config-driven: trigger (ticket creato, cambio stato, assegnazione, commento, SLA violato), condizioni e azioni (imposta priorità, assegna, trasferisci coda, aggiungi commento). In Community è incluso con un tetto di **3 regole**.</li>
<li><strong>Email-to-Ticket</strong> (Mailgun/SMTP) con processamento inbound via webhook.</li>
<li><strong>Portale self-service</strong> per il cliente: apertura ticket, commenti, consultazione di KB e catalogo.</li>
<li><strong>CSAT</strong>: survey di soddisfazione dopo la risoluzione.</li>
<li><strong>RBAC</strong>, <strong>LDAP/Active Directory</strong> e <strong>SSO (OAuth 2.0)</strong> per autenticazione e controllo accessi.</li>
<li><strong>Allegati</strong> con scansione antivirus (ClamAV) ed email templates personalizzabili.</li>
</ul>
<p>Knowledge Base: articoli pubblici e interni, pubblicabili nel portale self-service del cliente</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-08-kb.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124091 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-08-kb-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-08-kb-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-08-kb-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Editor di una regola di automazione: trigger, condizioni e azioni</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-09-automation.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124093 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-09-automation-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-09-automation-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-09-automation-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>In sintesi: con la Community gestisci clienti reali, SLA, asset e tutto il ciclo operativo. <strong>Non è una demo</strong></p>
<p>&nbsp;</p>
<h3><strong>Cosa aggiunge la Enterprise Edition</strong></h3>
<p>La Enterprise entra in gioco quando il servizio diventa il business: gestisci SLA contrattuali con penali, vuoi misurare la marginalità di commessa e devi integrare l&#8217;ITSM con il resto dei tuoi sistemi. Ecco cosa si attiva.</p>
<p>&nbsp;</p>
<h4><strong>Operazioni sotto pressione</strong></h4>
<ul>
<li><strong>Major Incident con War Room</strong> — dichiarazione di incidente grave con *incident commander*, *communications officer*, collaborazione in war room e postmortem strutturato. Quando un disservizio diventa una crisi, hai un protocollo, non l&#8217;improvvisazione.</li>
<li><strong>OLA e gestione avanzata degli SLA</strong> — Operational Level Agreement con tracciamento degli handoff inter-team e target in minuti lavorativi; pause SLA legate ai contratti.</li>
<li><strong>Skill routing &amp; supervisor</strong> — assegnazione basata sulle competenze degli agenti (con livello 1–5) e vista supervisore con la disponibilità del team.</li>
</ul>
<p>Dashboard KPI &amp; Performance: il polso operativo del servizio in tempo reale</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-12-kpi.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124097 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-12-kpi-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-12-kpi-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-12-kpi-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>Supervisor view: carico di lavoro in tempo reale e routing per competenze del team</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-10-supervisor.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124094 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-10-supervisor-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-10-supervisor-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-10-supervisor-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Margine e controllo</strong></h4>
<ul>
<li><strong>Costing &amp; marginalità</strong> — figure professionali con costo giornaliero/orario; il tempo registrato sui ticket si trasforma in **costo e margine per cliente, in tempo reale**. Non a fine anno.</li>
<li><strong>Reporting esteso</strong> (tier Professional) — filtri salvati per entità, export massivo e *time tracking*.</li>
<li><strong>Forecasting</strong> — analisi di trend.</li>
</ul>
<p>Marginalità di commessa: valore venduto, costo consuntivo e margine per cliente</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-11-marginalita.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124095 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-11-marginalita-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-11-marginalita-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-11-marginalita-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h4><strong>Integrazioni e automazione (add-on *Integrations &amp; API*)</strong></h4>
<ul>
<li><strong>REST API versionata</strong> con Personal Access Token (abilities selettive: lettura/scrittura ticket, lettura CMDB e BI), rate limit per tier.</li>
<li><strong>Webhook in/out</strong> firmati HMAC-SHA256.</li>
<li><strong>Notifiche Slack/Teams</strong>, <strong>import asset massivo</strong> da CSV/JSON.</li>
<li><strong>Automazione avanzata</strong> (regole illimitate e logiche più ricche rispetto alle 3 della Community).</li>
</ul>
<h3></h3>
<h4><strong>BI &amp; Analytics (add-on)</strong></h4>
<p><strong>Feed BI</strong> read-only per Power BI/Tableau, <strong>export avanzato</strong> (PDF/Excel formattati) e <strong>dashboard estese</strong>.</p>
<h3></h3>
<h4><strong>Omnichannel (add-on)</strong></h4>
<p><strong>Chatbot</strong> sul portale per ricerca in KB e apertura ticket.</p>
<h3></h3>
<h4><strong>Workforce &amp; Signature (add-on) + Firma massiva</strong></h4>
<ul>
<li><strong>Firma digitale (FEA)</strong> con OTP, conservazione a 10 anni e <strong>crypto-shredding</strong> (cancellazione della chiave su richiesta GDPR).</li>
<li><strong>Magazzino cespiti</strong> — beni serializzati e consumabili, movimenti append-only.</li>
<li><strong>Assegnazione materiale</strong> al dipendente con ricevuta firmabile.</li>
<li><strong>Firma documenti massiva</strong> — lo stesso documento a più firmatari, con tracking dello stato (questa funzione è di tier <strong>Enterprise</strong>).</li>
</ul>
<p><strong>Nota</strong>: firma digitale, magazzino e assegnazioni sono disponibili dal tier <strong>Professional</strong> (con l&#8217;add-on <strong>Workforce &amp; Signature</strong>); Major Incident, costing, skill routing, OLA e firma massiva sono <strong>Enterprise</strong>. Lo strumento di firma vive principalmente nella console interna, di cui parlo nell&#8217;articolo dedicato a Orbit + CRM.</p>
<p>Firma documenti massiva: campagne di firma dello stesso documento a più destinatari, con tracking dello stato</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124081 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/crm-11-firma-massiva-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<p>&nbsp;</p>
<h3><strong>Community vs Enterprise: il confronto</strong></h3>
<p>| Funzionalità | Community | Enterprise |<br />
|&#8212;|:&#8212;:|:&#8212;:|<br />
| Incident / Problem / Change (con approvazione) | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Service Request / Security Incident | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Code, SPOC, priorità, categorie | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| SLA base + pause | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| CMDB + relazioni CI + licenze software | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Service Catalog + form dinamici | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Knowledge Base + KEDB | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Task Flows | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Automazioni | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (max 3 regole) | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (illimitate + avanzate) |<br />
| Email-to-Ticket, Portale, CSAT, RBAC, LDAP/SSO | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Major Incident / War Room | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| OLA e SLA avanzati | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Skill routing &amp; supervisor | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Costing &amp; marginalità di commessa | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| Reporting esteso + time tracking | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (da Professional) |<br />
| Forecasting | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |<br />
| REST API + token, webhook in/out | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (add-on) |<br />
| Slack/Teams, feed BI, import asset, chatbot | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (add-on) |<br />
| Firma digitale (FEA), magazzino, assegnazioni | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (da Professional, add-on) |<br />
| Firma documenti massiva | — | <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> |</p>
<h2></h2>
<h4><strong>Limiti operativi per edizione</strong></h4>
<p>| Limite | Community | Professional | Enterprise |<br />
|&#8212;|:&#8212;:|:&#8212;:|:&#8212;:|<br />
| Agenti (seat) | 20 | illimitato | illimitato |<br />
| Clienti gestiti | 3 | illimitato | illimitato |<br />
| Regole di automazione | 3 | illimitato | illimitato |<br />
| Retention audit | 90 giorni | 365 giorni | 36 mesi |<br />
| Storage allegati | 5 GB | 10 GB/agente | 25 GB/agente |<br />
| Rate limit API | nessuna API | 120 req/min | 600 req/min |</p>
<p>&nbsp;</p>
<h3><strong>Come funziona la licenza Enterprise</strong></h3>
<p>Questa è la parte che rende Meridian ARC diverso da un classico SaaS — e che lo rende adatto ad ambienti regolati (bancario, sanitario, PA).</p>
<p><strong>1. È lo stesso codice, ma immagini diverse.</strong><br />
Community ed Enterprise condividono lo stesso prodotto, ma la Community **non contiene affatto** il codice delle funzioni Enterprise: non è una versione depotenziata via flag, è proprio un&#8217;immagine Docker diversa. Le variabili d&#8217;ambiente, da sole, non bastano a sbloccare nulla.</p>
<p><strong>2. La licenza è una chiave firmata, verificata offline.</strong><br />
L&#8217;attivazione avviene con una chiave **Ed25519** validata localmente: l&#8217;istanza **non deve &#8220;chiamare casa&#8221;**. Funziona in ambienti air-gapped, senza dipendere da un server di attivazione. Nessun lock-in.</p>
<p><strong>3. Professional ed Enterprise sono due tier dello stesso impianto.</strong><br />
La *license key* determina quali feature e add-on sono attivi. La Professional copre il passo intermedio; l&#8217;Enterprise sblocca tutto. Non c&#8217;è un prodotto nuovo da imparare.</p>
<p><strong>4. L&#8217;upgrade non richiede reinstallazione.</strong><br />
Si parte dalla Community, poi si punta alle immagini Enterprise e si applica la licenza da **Admin → Licenza &amp; Edizione**. OAuth, configurazione <code>.env</code> e dati restano identici: nessuna migrazione, nessun fermo del servizio.</p>
<h3></h3>
<h4><strong>Attivazione in 3 passi</strong></h4>
<p>1. <strong>Parliamone</strong> — esigenze, clienti gestiti, volumi e integrazioni. Si valuta insieme il tier giusto.<br />
2. <strong>Accesso e licenza</strong> — un token di sola lettura al registry privato delle immagini + il file <code>azienda.license.key</code> firmato.<br />
3. <strong>Attivazione</strong> — un <code>docker login</code> al registry, si puntano le immagini Enterprise nello stesso stack e si applica la licenza dal pannello Admin.</p>
<p>Admin → Licenza &amp; Edizione: stato della licenza e feature attive</p>
<p><a href="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-1124098 size-large" src="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-1024x640.png" alt="" width="1024" height="640" srcset="https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-980x613.png 980w, https://www.raffaelechiatto.com/wp-content/uploads/2026/06/itsm-13-licenza-480x300.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></a></p>
<h2></h2>
<h3><strong>In conclusione</strong></h3>
<p>La forza del modello di Meridian ARC sta in una promessa rispettata: <strong>la Community è davvero completa</strong>. Puoi gestire un help desk ITIL serio, con clienti, SLA, CMDB e automazioni, senza spendere un euro e senza che i tuoi dati lascino i tuoi server.</p>
<p>La Enterprise non ti vende ciò che dovrebbe essere gratis: ti vende ciò che serve quando il servizio cresce — gestione delle crisi, marginalità misurabile, integrazioni e firma digitale. E lo fa con un modello di licenza pulito, offline, senza lock-in.</p>
<p>Se gestisci servizi IT per più clienti e ti riconosci in almeno uno di questi tre segnali — <strong>eroghi SLA contrattuali con penali</strong>, <strong>vuoi conoscere il margine di commessa</strong>, <strong>devi integrare l&#8217;ITSM con altri sistemi</strong> — è il momento di guardare alla Enterprise.</p>
<p>Trovi tutti i dettagli, la guida di installazione della Community e le condizioni Enterprise su <a href="https://meridian-arc.io" target="_blank" rel="noopener">meridian-arc.io</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.raffaelechiatto.com/meridian-arc-itsm-tutte-le-funzionalita-del-service-desk-e-cosa-sblocca-la-enterprise-edition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>