Automatizza l'installazione di Graylog Server utilizzando Puppet
Questa guida illustra in modo approfondito come installare Graylog Server su Ubuntu/Debian/CentOS utilizzando Puppet. Graylog è uno strumento gratuito e open source utilizzato per gestire e aggregare i log. Viene utilizzato per archiviare, analizzare e inviare avvisi in base ai log raccolti. Questo strumento viene normalmente utilizzato per analizzare sia dati strutturati che non strutturati.
Il server Graylog comprende i seguenti componenti:
- MongoDB: memorizza i dati e le configurazioni.
- Graylog Server: il server che trasmette i log per la visualizzazione utilizzando l'interfaccia web integrata.
- ElasticSearch: questo è lo strumento di analisi dei log per Graylog Server.
- Java /OpenJDK: offre l'ambiente di runtime per ElasticSearch.
Puppet viene utilizzato qui per automatizzare l'installazione di tutti questi componenti sui nodi desiderati. Questo prodotto, sviluppato da Puppet Labs, può essere utilizzato per configurare, gestire e distribuire il server Graylog.
Per l'installazione di GrayLog utilizzando Ansible, consulta la guida seguente:
- Distribuisci Graylog Server utilizzando Ansible su Ubuntu/Debian/CentOS
Passaggio 1: installa e configura Puppet su Ubuntu/Debian/CentOS
Questa guida richiede che Puppet sia installato e configurato sul proprio sistema. Ciò comporta la configurazione del server Puppet e dei nodi agente ad esso collegati. L'ultima versione di Graylog è compatibile con Puppet >= 6.21.0 < 8.0.0 che può essere installato utilizzando le guide dedicate di seguito:
- Su Debian/Ubuntu
- Installa Puppet Master e Agent su Ubuntu
- Su CentOS 8
- Installa Puppet Server su CentOS 8|RHEL 8|Rocky Linux 8
- Su CentOS 7
- Installa Puppet Server e Agent su CentOS 7|RHEL 7
Dopo aver configurato il server e il client Puppet, convalida la connettività
$ sudo /opt/puppetlabs/bin/puppet agent -t
Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for rocky-linux-8.localdomain
Info: Applying configuration version '1651833223'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.01 seconds
Passaggio 2: installare i moduli pupazzo richiesti
Per questa guida, non installeremo solo il modulo Graylog ma anche altri moduli per dipendenze come Java, MongoDB ed Elasticsearch.
Installa il modulo Graylog Puppet
Inizieremo installando il modulo Graylog
$ sudo /opt/puppetlabs/bin/puppet module install graylog/graylog
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ graylog-graylog (v1.0.0)
├── puppetlabs-apt (v8.3.0)
└── puppetlabs-stdlib (v7.1.0)
Il modulo Graylog viene fornito insieme ad altri moduli richiesti:
- Il modulo Puppet APT – può anche essere installato utilizzando il comando:
sudo /opt/puppetlabs/bin/puppet module install puppetlabs-apt --version <version-number>
- Il modulo libreria standard Puppet – può anche essere installato come di seguito:
sudo /opt/puppetlabs/bin/puppet module install puppetlabs-stdlib --version <version-number>
Installa il modulo MongoDB Puppet
Successivamente, installa il modulo MongoDB.
$ sudo /opt/puppetlabs/bin/puppet module install puppet-mongodb
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppet-mongodb (v4.1.1)
├─┬ puppet-systemd (v3.8.0)
│ └── puppetlabs-inifile (v5.2.0)
├─┬ puppet-zypprepo (v4.0.1)
│ └── puppetlabs-concat (v7.1.1)
├── puppetlabs-apt (v8.3.0)
└── puppetlabs-stdlib (v7.1.0)
Sfortunatamente, questo modulo non è completamente compatibile con i sistemi Debian 11. Quindi, nel caso in cui disponi di nodi Debian 11, potresti riscontrare errori durante l'installazione.
L'altro modulo da installare è il modulo Java. Può essere installato con il comando:
$ sudo /opt/puppetlabs/bin/puppet module install puppetlabs-java
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules .
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppetlabs-java (v8.0.0)
├── puppet-archive (v6.0.2)
└── puppetlabs-stdlib (v7.1.0)
Infine, installa il modulo Elasticsearch.
$ sudo /opt/puppetlabs/bin/puppet module install puppet-elasticsearch
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppet-elasticsearch (v8.0.2)
├─┬ puppet-elastic_stack (v8.0.0)
│ ├─┬ puppet-yum (v5.4.0)
│ │ └── puppetlabs-concat (v7.1.1)
│ ├── puppetlabs-apt (v8.3.0)
│ └── puppetlabs-stdlib (v7.1.0)
├── puppetlabs-java (v8.0.0)
└── richardc-datacat (v0.6.2)
Elenca i moduli Puppet installati con il comando:
$ sudo /opt/puppetlabs/bin/puppet module list --environment production
/etc/puppetlabs/code/environments/production/modules
├── graylog-graylog (v1.0.0)
├── puppet-archive (v6.0.2)
├── puppet-elastic_stack (v8.0.0)
├── puppet-elasticsearch (v8.0.2)
├── puppet-mongodb (v4.1.1)
├── puppet-systemd (v3.8.0)
├── puppet-yum (v5.4.0)
├── puppet-zypprepo (v4.0.1)
├── puppetlabs-apt (v8.3.0)
├── puppetlabs-concat (v7.1.1)
├── puppetlabs-inifile (v5.2.0)
├── puppetlabs-java (v8.0.0)
├── puppetlabs-stdlib (v7.1.0)
└── richardc-datacat (v0.6.2)
/etc/puppetlabs/code/modules (no modules installed)
/opt/puppetlabs/puppet/modules (no modules installed)
Passaggio 3: installa Graylog Server su Ubuntu/Debian/CentOS utilizzando Puppet
Una volta installati i moduli, procederemo e creeremo un manifest per gestire MongoDB, Elasticsearch e Graylog su un singolo nodo come di seguito.
Ottenere le versioni del pacchetto:
- Rilasci Graylog
- Requisiti di sistema (versione supportata di Elasticsearch, MongoDB, Java)
Crea il file come di seguito.
sudo vim /etc/puppetlabs/code/environments/production/manifests/init.pp
Il file conterrà le righe seguenti:
class { 'mongodb::globals':
manage_package_repo => true,
}->
class { 'mongodb::server':
bind_ip => ['127.0.0.1'],
ensure => 'present',
restart => true,
}
include ::java
class { 'elasticsearch':
ensure => 'present',
status => 'enabled',
version => '7.10.2',
restart_on_change => true,
config => {
'cluster.name' => 'graylog',
'network.host' => '127.0.0.1',
},
jvm_options => [
'-Xms512m',
'-Xmx512m'
]
}
class { 'graylog::repository':
version => '4.2'
}->
class { 'graylog::server':
package_version => 'latest',
config => {
'password_secret' => 'pmHuefc3sMv6SWN6wPoCss6hTy8vksYr1QkFmtVjChi1rdRr6s7FeqNJOrWOWlipMsfmFgqGJM8HLdpF3thwFA4QvLSPhC0O', # Fill in your password secret
'root_password_sha2' => '434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75',# Fill in your root password hash
'http_bind_address' => '0.0.0.0:9000',
'http_external_uri' => 'https://0.0.0.0:9000/',
}
}
Nel file, sostituisci i valori per password_secret
generato con pwgen
come di seguito:
$ pwgen -N 1 -s 96
pmHuefc3sMv6SWN6wPoCss6hTy8vksYr1QkFmtVjChi1rdRr6s7FeqNJOrWOWlipMsfmFgqGJM8HLdpF3thwFA4QvLSPhC0O
root_password_sha2
è la password sha256 generata per l'utente amministratore:
$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: Str0ngPassw0rd
Output di esempio:
434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75
Sui sistemi Debian/Ubuntu, potresti ricevere un errore con MongoDB quando applichi il manifest. Questo errore può essere risolto modificando il manifest per utilizzare un repository MongoDB aggiunto manualmente.
Ad esempio, il repository MongoDB 4.4 può essere aggiunto a Debian Buster con i comandi:
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main"|sudo tee /etc/apt/sources.list.d/mongodb-org.list
sudo apt update
Una volta aggiunti il repository e le relative chiavi GPG e aggiornato il sistema, modifica il manifest come di seguito.
class { 'mongodb::globals':
manage_package_repo => false,
manage_package => true,
}->
class { 'mongodb::server':
bind_ip => ['127.0.0.1'],
ensure => 'present',
restart => true,
}->
class { 'mongodb::client':
}
....
Infine, esegui il manifest sull'agente come di seguito:
sudo /opt/puppetlabs/bin/puppet agent -t
Output di esempio:
Verifica se Elasticsearch è in esecuzione sulla porta 9200:
$ curl -X GET localhost:9200
{
"name" : "graylog.example.com",
"cluster_name" : "graylog",
"cluster_uuid" : "tMJGsHuNS6OUgCk5q8RGBQ",
"version" : {
"number" : "7.9.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
"build_date" : "2020-10-16T10:36:16.141335Z",
"build_snapshot" : false,
"lucene_version" : "8.6.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Passaggio 4: accedere all'interfaccia Web di Graylog
A questo punto, il server Graylog è in ascolto sulla porta 9000. Consenti questa porta attraverso il firewall:
##For Firewalld
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
##For UFW
sudo ufw allow 9000/tcp
Ora accedi all'interfaccia web di Graylog utilizzando l'URL http://IP_Address:9000
Fornire le credenziali di accesso come sopra, il nome utente predefinito è admin e la password è quella impostata con root_password_sha2. In questo caso, la password è Str0ngPassw0rd.
Una volta completata l'autenticazione, sarai in grado di vedere la dashboard Graylog sottostante.
Questo è tutto! Procedi e crea dashboard per visualizzare i log raccolti sull'interfaccia web di Graylog.
Verdetto
Questo segna la fine di questa guida su come installare Graylog Server su Ubuntu/Debian/CentOS usando Puppet. Ora possiamo concordare sul fatto che l'automazione di Puppet semplifica l'installazione e la configurazione del server Graylog. Spero che questo sia stato significativo.
Vedi altro:
- Configura il proxy Graylog Nginx con Let's Encrypt SSL
- Installa Graylog Server su Ubuntu con Let's Encrypt SSL
- I migliori libri per imparare l'automazione di marionette e chef