A previous version of this article was written by Toli.
Introduzione
Elasticsearch è una piattaforma per la ricerca distribuita e l’analisi dei dati in tempo reale. È una scelta popolare grazie alla sua facilità d’uso, alle sue potenti funzionalità e alla scalabilità.
Questo articolo ti guiderà nell’installazione di Elasticsearch, nella sua configurazione per il tuo caso d’uso, nella sicurezza dell’installazione e nell’inizio del lavoro con il tuo server Elasticsearch.
Prerequisiti
Prima di seguire questo tutorial, avrai bisogno di:
- Un server Ubuntu 22.04 con 2GB di RAM e 2 CPU configurato con un utente sudo non-root. Puoi ottenere questo seguendo il Setup Iniziale del Server con Ubuntu 22.04
Per questo tutorial, lavoreremo con la quantità minima di CPU e RAM richiesta per eseguire Elasticsearch. Nota che la quantità di CPU, RAM e storage che il tuo server Elasticsearch richiederà dipende dal volume di log che ti aspetti.
Passo 1 — Installazione e Configurazione di Elasticsearch
I componenti di Elasticsearch non sono disponibili nei repository di pacchetti predefiniti di Ubuntu. Tuttavia, possono essere installati con APT dopo aver aggiunto l’elenco dei pacchetti di Elastic.
Tutti i pacchetti sono firmati con la chiave di firma di Elasticsearch per proteggere il sistema dal falsificare i pacchetti. I pacchetti autenticati con la chiave saranno considerati attendibili dal gestore dei pacchetti. In questo passaggio, importerai la chiave pubblica GPG di Elasticsearch e aggiungerai l’elenco dei pacchetti di Elastic per installare Elasticsearch.
Per iniziare, usa cURL, lo strumento da riga di comando per il trasferimento di dati tramite URL, per importare la chiave pubblica GPG di Elasticsearch in APT. Nota che stiamo utilizzando gli argomenti -fsSL per silenziare tutto il progresso e possibili errori (tranne un errore del server) e per consentire a cURL di effettuare una richiesta su una nuova posizione se reindirizzato. Inoltra l’output al comando gpg --dearmor
, che converte la chiave in un formato che apt può utilizzare per verificare i pacchetti scaricati.
Successivamente, aggiungi l’elenco delle sorgenti Elastic alla directory sources.list.d
, dove apt
cercherà nuove sorgenti:
La parte [signed-by=/usr/share/keyrings/elastic.gpg]
del file istruisce apt a utilizzare la chiave che hai scaricato per verificare le informazioni del repository e dei file per i pacchetti di Elasticsearch.
Successivamente, aggiorna i tuoi elenchi dei pacchetti in modo che APT legga la nuova sorgente Elastic:
Quindi installa Elasticsearch con questo comando:
Premi Y
quando richiesto per confermare l’installazione. Se ti viene chiesto di riavviare eventuali servizi, premi INVIO
per accettare le impostazioni predefinite e continuare. Elasticsearch è ora installato e pronto per essere configurato.
Passaggio 2 — Configurazione di Elasticsearch
Per configurare Elasticsearch, modificheremo il suo file di configurazione principale elasticsearch.yml
dove sono memorizzate la maggior parte delle opzioni di configurazione. Questo file si trova nella directory /etc/elasticsearch
.
Utilizza il tuo editor di testo preferito per modificare il file di configurazione di Elasticsearch. Qui useremo nano
:
Nota: Il file di configurazione di Elasticsearch è in formato YAML, il che significa che dobbiamo mantenere il formato di rientro. Assicurati di non aggiungere spazi extra mentre modifichi questo file.
Il file elasticsearch.yml
fornisce opzioni di configurazione per il tuo cluster, nodo, percorsi, memoria, rete, scoperta e gateway. La maggior parte di queste opzioni è preconfigurata nel file, ma puoi cambiarle in base alle tue esigenze. Ai fini della nostra dimostrazione di una configurazione server singolo, modificheremo solo le impostazioni per l’host di rete.
Elasticsearch ascolta il traffico da ovunque sulla porta 9200
. È consigliabile limitare l’accesso esterno alla tua istanza di Elasticsearch per impedire a estranei di leggere i tuoi dati o spegnere il cluster di Elasticsearch tramite la sua [API REST] (https://en.wikipedia.org/wiki/Representational_state_transfer). Per limitare l’accesso e quindi aumentare la sicurezza, trova la riga che specifica network.host
, togli il commento e sostituisci il suo valore con localhost
in modo che sia così:
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .
Abbiamo specificato localhost
in modo che Elasticsearch ascolti su tutte le interfacce e gli IP associati. Se desideri che ascolti solo su un’interfaccia specifica, puoi specificarne l’IP al posto di localhost
. Salva e chiudi elasticsearch.yml
. Se stai utilizzando nano
, puoi farlo premendo CTRL+X
, seguito da Y
e quindi ENTER
.
Queste sono le impostazioni minime con cui puoi iniziare per utilizzare Elasticsearch. Ora puoi avviare Elasticsearch per la prima volta.
Avvia il servizio Elasticsearch con systemctl
. Dai a Elasticsearch qualche istante per avviarsi. Altrimenti, potresti ricevere errori relativi all’impossibilità di connessione.
In seguito, esegui il seguente comando per abilitare l’avvio di Elasticsearch ogni volta che il server si avvia:
Con Elasticsearch abilitato all’avvio, passiamo al passaggio successivo per discutere della sicurezza.
Passaggio 3 — Sicurezza di Elasticsearch
Per impostazione predefinita, Elasticsearch può essere controllato da chiunque abbia accesso all’API HTTP. Questo non è sempre un rischio per la sicurezza perché Elasticsearch ascolta solo sull’interfaccia di loopback (cioè, 127.0.0.1
), che può essere accessibile solo localmente. Di conseguenza, non è possibile l’accesso pubblico e fintanto che tutti gli utenti del server sono affidabili, la sicurezza potrebbe non essere una preoccupazione principale.
Se è necessario consentire l’accesso remoto all’API HTTP, è possibile limitare l’esposizione di rete con il firewall predefinito di Ubuntu, UFW. Questo firewall dovrebbe già essere abilitato se hai seguito i passaggi nel tutorial Configurazione Iniziale del Server con Ubuntu 22.04.
Ora configureremo il firewall per consentire l’accesso alla porta predefinita dell’API HTTP di Elasticsearch (TCP 9200) per l’host remoto attendibile, generalmente il server che stai utilizzando in una configurazione a singolo server, come 198.51.100.0
. Per consentire l’accesso, digita il seguente comando:
Una volta completato, puoi abilitare UFW con il comando:
Infine, verifica lo stato di UFW con il seguente comando:
Se hai specificato correttamente le regole, dovresti ricevere un output simile a questo:
OutputStatus: active
To Action From
-- ------ ----
9200 ALLOW 198.51.100.0
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
UFW dovrebbe ora essere abilitato e configurato per proteggere la porta 9200 di Elasticsearch.
Se desideri investire in protezione aggiuntiva, Elasticsearch offre il plugin commerciale Shield in vendita.
Passo 4 — Testing di Elasticsearch
A questo punto, Elasticsearch dovrebbe essere in esecuzione sulla porta 9200. Puoi testarlo con cURL e una richiesta GET.
Dovresti ricevere la seguente risposta:
Output{
"name" : "elastic-22",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ",
"version" : {
"number" : "7.17.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
"build_date" : "2022-02-23T22:20:54.153567231Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Se ricevi una risposta simile a quella sopra, Elasticsearch funziona correttamente. In caso contrario, assicurati di aver seguito correttamente le istruzioni di installazione e di aver concesso del tempo sufficiente affinché Elasticsearch si avvii completamente.
Per effettuare un controllo più approfondito di Elasticsearch, esegui il seguente comando:
Nell’output del comando sopra indicato puoi verificare tutte le impostazioni correnti per il nodo, il cluster, i percorsi dell’applicazione, i moduli e altro ancora.
Passo 5 — Utilizzo di Elasticsearch
Per iniziare a utilizzare Elasticsearch, aggiungiamo prima alcuni dati. Elasticsearch utilizza un’API RESTful, che risponde ai soliti comandi CRUD: crea, read, update e delete. Per lavorare con essa, utilizzeremo nuovamente il comando cURL.
Puoi aggiungere la tua prima voce in questo modo:
Dovresti ricevere la seguente risposta:
Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Con cURL, abbiamo inviato una richiesta HTTP POST al server Elasticsearch. L’URI della richiesta era /tutorial/helloworld/1
con diversi parametri:
tutorial
è l’indice dei dati in Elasticsearch.helloworld
è il tipo.1
è l’ID della nostra voce nell’indice e nel tipo sopra menzionati.
Puoi recuperare questa prima voce con una richiesta HTTP GET.
Questo dovrebbe essere l’output risultante:
Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}
Per modificare una voce esistente, puoi utilizzare una richiesta HTTP PUT.
Elasticsearch dovrebbe confermare la modifica riuscita in questo modo:
Output{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
Nell’esempio sopra abbiamo modificato il message
della prima voce in “Ciao, persone!”. Con ciò, il numero di versione è stato aumentato automaticamente a 2
.
Potresti aver notato l’argomento aggiuntivo pretty
nella richiesta sopra. Abilita il formato leggibile dall’essere umano in modo da poter scrivere ciascun campo dati su una nuova riga. Puoi anche “prettify” i tuoi risultati quando recuperi i dati per ottenere un output più leggibile inserendo il seguente comando:
Adesso la risposta sarà formattata per essere interpretata da un umano:
Output{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"message" : "Hello, People!"
}
}
}
Abbiamo ora aggiunto e interrogato i dati in Elasticsearch. Per conoscere le altre operazioni, consulta la documentazione dell’API.
Conclusione
Hai ora installato, configurato e iniziato a utilizzare Elasticsearch. Per esplorare ulteriormente le funzionalità di Elasticsearch, consulta la documentazione ufficiale di Elasticsearch.