GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare lo stack elastico su CentOS 7

Ricerca elastica è un motore di ricerca open source basato su Lucene, sviluppato in Java. Fornisce un motore di ricerca full-text distribuito e multi-tenant con un'interfaccia Web HTTP Dashboard (Kibana). I dati vengono interrogati, recuperati e archiviati con uno schema di documenti JSON. Elasticsearch è un motore di ricerca scalabile che può essere utilizzato per cercare tutti i tipi di documenti di testo, inclusi i file di registro. Elasticsearch è il cuore di 'Elastic Stack' o ELK Stack.

Archiviazione è uno strumento open source per la gestione di eventi e registri. Fornisce il pipelining in tempo reale per le raccolte di dati. Logstash raccoglierà i tuoi dati di registro, convertirà i dati in documenti JSON e li archivierà in Elasticsearch.

Kibana è uno strumento di visualizzazione dei dati open source per Elasticsearch. Kibana fornisce una bella interfaccia web dashboard. Ti consente di gestire e visualizzare i dati da Elasticsearch. Non è solo bello, ma anche potente.

In questo tutorial, ti mostrerò come installare e configurare Elastic Stack su un server CentOS 7 per il monitoraggio dei log del server. Quindi ti mostrerò come installare "Elastic beats" su un sistema operativo client CentOS 7 e Ubuntu 16.04.

Prerequisiti

  • CentOS 7 64 bit con 4 GB di RAM - elk-master
  • CentOS 7 64 bit con 1 GB di RAM - client1
  • Ubuntu 16.04 64 bit con 1 GB di RAM - client2

Passaggio 1: Prepara il sistema operativo

In questo tutorial, disabiliteremo SELinux sul server CentOS 7. Modifica il file di configurazione di SELinux.

vim /etc/sysconfig/selinux

Cambia il valore di SELinux da forzato a disabilitato.

SELINUX=disabled

Quindi riavvia il server.

reboot

Accedi nuovamente al server e controlla lo stato di SELinux.

getenforce

Assicurati che il risultato sia disabilitato.

Fase 2:installa Java

Java è necessario per la distribuzione dello stack elastico. Elasticsearch richiede Java 8, si consiglia di utilizzare Oracle JDK 1.8. Installerò Java 8 dal pacchetto rpm Oracle ufficiale.

Scarica Java 8 JDK con il comando wget.

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

Quindi installalo con questo comando rpm;

rpm -ivh jdk-8u77-linux-x64.rpm

Infine, controlla la versione di java JDK per assicurarti che funzioni correttamente.

java -version

Vedrai la versione Java del server.

Fase 3 - Installa e configura Elasticsearch

In questo passaggio installeremo e configureremo Elasticsearch. Installerò Elasticsearch da un pacchetto rpm fornito da elastic.co e lo configurerò per l'esecuzione su localhost (per rendere sicura la configurazione e assicurarmi che non sia raggiungibile dall'esterno).

Prima di installare Elasticsearch, aggiungi la chiave elastic.co al server.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Quindi, scarica Elasticsearch 5.1 con wget e installalo.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

Elasticsearch è installato. Ora vai nella directory di configurazione e modifica il file di configurazione elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Abilita il blocco della memoria per Elasticsearch rimuovendo un commento alla riga 40. Ciò disabilita lo scambio di memoria per Elasticsearch.

bootstrap.memory_lock: true

Nel blocco "Rete", decommenta le righe network.host e http.port.

network.host: localhost
http.port: 9200

Salva il file ed esci dall'editor.

Ora modifica il file elasticsearch.service per la configurazione del blocco della memoria.

vim /usr/lib/systemd/system/elasticsearch.service

Decommenta la riga LimitMEMLOCK.

LimitMEMLOCK=infinity

Salva ed esci.

Modifica il file di configurazione sysconfig per Elasticsearch.

vim /etc/sysconfig/elasticsearch

Decommenta la riga 60 e assicurati che il valore sia 'illimitato'.

MAX_LOCKED_MEMORY=unlimited

Salva ed esci.

La configurazione di Elasticsearch è terminata. Elasticsearch verrà eseguito sull'indirizzo IP localhost sulla porta 9200, abbiamo disabilitato lo scambio di memoria per esso abilitando mlockall sul server CentOS.

Ricarica systemd, abilita Elasticsearch per l'avvio all'avvio, quindi avvia il servizio.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Attendi un secondo che Eelasticsearch si avvii, quindi controlla le porte aperte sul server, assicurati che lo "stato" per la porta 9200 sia "ASCOLTA".

netstat -plntu

Quindi controlla il blocco della memoria per assicurarti che mlockall sia abilitato e verifica che Elasticsearch sia in esecuzione con i comandi seguenti.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Vedrai i risultati qui sotto.

Fase 4 - Installa e configura Kibana con Nginx

In questo passaggio, installeremo e configureremo Kibana con un server web Nginx. Kibana ascolterà l'indirizzo IP dell'host locale e Nginx fungerà da proxy inverso per l'applicazione Kibana.

Scarica Kibana 5.1 con wget, quindi installalo con il comando rpm:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

Ora modifica il file di configurazione di Kibana.

vim /etc/kibana/kibana.yml

Decommenta le righe di configurazione per server.port, server.host e elasticsearch.url.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Salva ed esci.

Aggiungi Kibana da eseguire all'avvio e avvialo.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana verrà eseguito sulla porta 5601 come applicazione nodo.

netstat -plntu

L'installazione di Kibana è terminata. Ora dobbiamo installare Nginx e configurarlo come proxy inverso per poter accedere a Kibana dall'indirizzo IP pubblico.

Nginx è disponibile nel repository Epel, installa epel-release con yum.

yum -y install epel-release

Quindi, installa il pacchetto Nginx e httpd-tools.

yum -y install nginx httpd-tools

Il pacchetto httpd-tools contiene strumenti per il server web, useremo l'autenticazione di base htpasswd per Kibana.

Modifica il file di configurazione di Nginx e rimuovi il 'server { } ', in modo da poter aggiungere una nuova configurazione di host virtuale.

cd /etc/nginx/
vim nginx.conf

Rimuovi il { } blocco del server.

Salva il file ed esci da vim.

Ora dobbiamo creare un nuovo file di configurazione dell'host virtuale nella directory conf.d. Crea il nuovo file 'kibana.conf' con vim.

vim /etc/nginx/conf.d/kibana.conf

Incolla la configurazione qui sotto.

server {
    listen 80;

    server_name elk-stack.co;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Salva ed esci.

Quindi crea un nuovo file di autenticazione di base con il comando htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
TYPE YOUR PASSWORD

Testa la configurazione di Nginx e assicurati che non ci siano errori. Quindi aggiungi Nginx da eseguire all'avvio e avvia Nginx.

nginx -t
systemctl enable nginx
systemctl start nginx

Passaggio 5 - Installa e configura Logstash

In questo passaggio, installeremo Logsatash e lo configureremo per centralizzare i log del server dai client con filebeat, quindi filtreremo e trasformeremo i dati Syslog e li sposteremo nella scorta (Elasticsearch).

Scarica Logstash e installalo con rpm.

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

Genera un nuovo file di certificato SSL in modo che il client possa identificare il server elastico.

Vai alla directory tls e modifica il file openssl.cnf.

cd /etc/pki/tls
vim openssl.cnf

Aggiungi una nuova riga nella sezione '[ v3_ca ]' per l'identificazione del server.

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 10.0.15.10

Salva ed esci.

Genera il file del certificato con il comando openssl.

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt

I file del certificato si trovano nelle directory '/etc/pki/tls/certs/' e '/etc/pki/tls/private/'.

Successivamente, creeremo nuovi file di configurazione per Logstash. Creeremo un nuovo file "filebeat-input.conf" per configurare le origini dei log per filebeat, quindi un file "syslog-filter.conf" per l'elaborazione syslog e il file "output-elasticsearch.conf" per definire l'output di Elasticsearch.

Vai alla directory di configurazione di logstash e crea i nuovi file di configurazione nella sottodirectory 'conf.d'.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Configurazione di input:incolla la configurazione di seguito.

input {
  beats {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

Salva ed esci.

Crea il file syslog-filter.conf.

vim conf.d/syslog-filter.conf

Incolla la configurazione qui sotto.

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Usiamo un plugin di filtro chiamato 'grok ' per analizzare i file syslog.

Salva ed esci.

Crea il file di configurazione dell'output 'output-elasticsearch.conf'.

vim conf.d/output-elasticsearch.conf

Incolla la configurazione qui sotto.

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Salva ed esci.

Infine aggiungi logstash da avviare all'avvio e avvia il servizio.

sudo systemctl enable logstash
sudo systemctl start logstash

Passaggio 6:installazione e configurazione di Filebeat sul client CentOS

I Beats sono data shipper, agenti leggeri che possono essere installati sui nodi client per inviare enormi quantità di dati dalla macchina client al server Logstash o Elasticsearch. Sono disponibili 4 beat, "Filebeat" per "File di registro", "Metricbeat" per "Metriche", "Packetbeat" per "Dati di rete" e "Winlogbeat" per il client Windows "Registro eventi".

In questo tutorial, ti mostrerò come installare e configurare "Filebeat" per trasferire i file di registro dei dati al server Logstash tramite una connessione SSL.

Accedi al server client1. Copiare quindi il file del certificato dal server elastico al server client1.

ssh [email protected]

Copia il file del certificato con il comando scp.

scp [email protected]:~/logstash-forwarder.crt .
TYPE elk-server password

Crea una nuova directory e sposta il file del certificato in quella directory.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Quindi, importa la chiave elastica sul server client1.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Scarica Filebeat e installalo con rpm.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat è stato installato, vai alla directory di configurazione e modifica il file 'filebeat.yml'.

cd /etc/filebeat/
vim filebeat.yml

Nella sezione dei percorsi alla riga 21, aggiungi i nuovi file di registro. Aggiungeremo due file '/var/log/secure' per l'attività ssh e '/var/log/messages' per il log del server.

  paths:
    - /var/log/secure
    - /var/log/messages

Aggiungi una nuova configurazione alla riga 26 per definire i file di tipo syslog.

  document-type: syslog

Filebeat utilizza Elasticsearch come destinazione di output per impostazione predefinita. In questo tutorial, lo cambieremo in Logshtash. Disabilita l'output di Elasticsearch aggiungendo commenti alle righe 83 e 85.

Disabilita l'output di elasticsearch.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Ora aggiungi la nuova configurazione di output di logstash. Decommenta la configurazione dell'output di logstash e modifica tutti i valori nella configurazione mostrata di seguito.

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Salva il file ed esci da vim.

Aggiungi Filebeat per iniziare all'avvio e avvialo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Passaggio 7 - Installa e configura Filebeat sul client Ubuntu

Connettiti al server tramite ssh.

ssh [email protected]

Copia il file del certificato sul client con il comando scp.

scp [email protected]:~/logstash-forwarder.crt .

Crea una nuova directory per il file del certificato e sposta il file in quella directory.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Aggiungi la chiave elastica al server.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Scarica il pacchetto Filebeat .deb e installalo con il comando dpkg.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Vai alla directory di configurazione di filebeat e modifica il file 'filebeat.yml' con vim.

cd /etc/filebeat/
vim filebeat.yml

Aggiungi i nuovi percorsi dei file di registro nella sezione di configurazione dei percorsi.

  paths:
    - /var/log/auth.log
    - /var/log/syslog

Imposta il tipo di documento su syslog.

  document-type: syslog

Disabilita l'output di elasticsearch aggiungendo commenti alle righe mostrate di seguito.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Abilita l'output logstash, decommenta la configurazione e modifica i valori come mostrato di seguito.

output.logstash:
  # The Logstash hosts
  hosts: ["10.0.15.10:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Salva il file ed esci da vim.

Aggiungi Filebeat per iniziare all'avvio e avvialo.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Controlla lo stato del servizio.

systemctl status filebeat

Passaggio 8:test dello stack elastico

Apri il tuo browser web e visita il dominio dello stack elastico che hai utilizzato nella configurazione di Nginx, il mio è "elk-stack.co". Accedi come utente amministratore con la tua password e premi Invio per accedere alla dashboard di Kibana.

Crea un nuovo indice predefinito 'filebeat-*' e fai clic sul pulsante 'Crea'.

L'indice predefinito è stato creato. Se hai più battute sullo stack elastico, puoi configurare la battuta predefinita con un solo clic sul pulsante "stella".

Vai a 'Scopri ' e vedrai tutti i file di registro dei server elk-client1 e elk-client2.

Un esempio di output JSON dal registro del server elk-client1 per un accesso ssh non valido.

E c'è molto di più di quello che puoi fare con la dashboard di Kibana, basta giocare con le opzioni disponibili.

Elastic Stack è stato installato su un server CentOS 7. Filebeat è stato installato su un CentOS 7 e un client Ubuntu.


Cent OS
  1. Come installare i pacchetti RPM su CentOS

  2. Come installare Elasticsearch su CentOS 7

  3. Come installare Graylog2 su CentOS 7 / RHEL 7

  4. Come installare Ntopng su CentOS 6

  5. Come installare lo stack ELK su CentOS 7

Come installare Graylog 3.0 su CentOS 7 / RHEL 7

Come installare ELK Stack su RHEL 8

Come installare HHVM su CentOS 6

Come installare Deluge su CentOS 7

Come installare ELK Stack su CentOS 7

Come installare ELK Stack su CentOS 8