Slik installerer du Elasticsearch, Logstash og Kibana (ELK Stack) på CentOS/RHEL 7


Hvis du er en person som er, eller har vært tidligere, ansvarlig for å inspisere og analysere systemlogger i Linux, vet du hvilket mareritt denne oppgaven kan bli hvis flere tjenester overvåkes samtidig.

Tidligere måtte den oppgaven for det meste gjøres manuelt, og hver loggtype ble håndtert separat. Heldigvis er kombinasjonen av Elasticsearch, Logstash og Kibana på serversiden, sammen med Filebeat på klienten side, får den en gang vanskelige oppgaven til å se ut som en tur i parken i dag.

De tre første komponentene danner det som kalles en ELK-stack, hvis hovedformål er å samle logger fra flere servere samtidig (også kjent som sentralisert logging).

Foreslått lesing: 4 gode loggovervåkings- og administrasjonsverktøy for åpen kildekode for Linux

Et innebygd java-basert nettgrensesnitt lar deg inspisere logger raskt med et blikk for enklere sammenligning og feilsøking. Disse klientloggene sendes til en sentral server av Filebeat, som kan beskrives som en loggforsendelsesagent.

La oss se hvordan alle disse delene passer sammen. Vårt testmiljø vil bestå av følgende maskiner:

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM.
Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM.
Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

Vær oppmerksom på at RAM-verdiene oppgitt her ikke er strenge forutsetninger, men anbefalte verdier for vellykket implementering av ELK-stakken på den sentrale serveren. Mindre RAM på klienter vil ikke utgjøre mye forskjell, om noen, i det hele tatt.

Installere ELK Stack på serveren

La oss begynne med å installere ELK-stakken på serveren, sammen med en kort forklaring på hva hver komponent gjør:

  1. Elasticsearch lagrer loggene som sendes av klientene.
  2. Logstash behandler disse loggene.
  3. Kibana gir nettgrensesnittet som vil hjelpe oss med å inspisere og analysere loggene.

Installer følgende pakker på den sentrale serveren. Først og fremst vil vi installere Java JDK versjon 8 (oppdatering 102, den siste når dette skrives), som er en avhengighet av ELK-komponentene.

Det kan være lurt å sjekke først på Java-nedlastingssiden her for å se om det er en nyere oppdatering tilgjengelig.

yum update
cd /opt
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm"
rpm -Uvh jre-8u102-linux-x64.rpm

På tide å sjekke om installasjonen ble fullført:

java -version

For å installere de nyeste versjonene av Elasticsearch, Logstash og Kibana, må vi opprette repositories for yum manuelt følgende:

Aktiver Elasticsearch Repository

1. Importer den offentlige Elasticsearch GPG-nøkkelen til rpm-pakkebehandlingen:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

2. Sett inn følgende linjer i depotkonfigurasjonsfilen elasticsearch.repo:

[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3. Installer Elasticsearch-pakken.

yum install elasticsearch

Når installasjonen er fullført, vil du bli bedt om å starte og aktivere elasticsearch:

4. Start og aktiver tjenesten.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Tillat trafikk gjennom TCP-port 9200 i brannmuren din:

firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

6. Sjekk om Elasticsearch svarer på enkle forespørsler over HTTP:

curl -X GET http://localhost:9200

Utdataene fra kommandoen ovenfor skal være lik:

Pass på at du fullfører trinnene ovenfor og fortsett deretter med Logstash. Siden både Logstash og Kibana deler Elasticsearch GPG-nøkkelen, er det ikke nødvendig å importere den på nytt før du installerer pakkene.

Foreslått lesing: Administrer systemlogger (konfigurer, roter og importer til database) i CentOS 7

Aktiver Logstash Repository

7. Sett inn følgende linjer i depotkonfigurasjonsfilen logstash.repo:

[logstash]
name=Logstash
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

8. Installer pakken Logstash:

yum install logstash

9. Legg til et SSL-sertifikat basert på IP-adressen til ELK-serveren på følgende linje under [ v3_ca ]-delen i >/etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Generer et selvsignert sertifikat som er gyldig i 365 dager:

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

11. Konfigurer Logstash-inndata-, utdata- og filterfiler:

Inndata: Opprett /etc/logstash/conf.d/input.conf og sett inn følgende linjer i den. Dette er nødvendig for at Logstash skal «lære» hvordan man behandler beats som kommer fra klienter. Sørg for at banen til sertifikatet og nøkkelen samsvarer med de riktige banene som beskrevet i forrige trinn:

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

Utdatafil (/etc/logstash/conf.d/output.conf):


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

Filtrer (/etc/logstash/conf.d/filter.conf) fil. Vi vil logge syslog-meldinger for enkelhets skyld:


filter {
if [type] == "syslog" {
	grok {
  	match => { "message" => "%{SYSLOGLINE}" }
	}

	date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
  }
}

12. Bekreft Logstash-konfigurasjonsfilene.

service logstash configtest

13. Start og aktiver logstash:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

14. Konfigurer brannmuren slik at Logstash kan hente loggene fra klientene (TCP-port 5044):

firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent

Aktiver Kibana Repository

14. Sett inn følgende linjer i depotkonfigurasjonsfilen kibana.repo:

[kibana]
name=Kibana repository
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

15. Installer pakken Kibana:

yum install kibana

16. Start og aktiver Kibana.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Sørg for at du har tilgang til Kibanas nettgrensesnitt fra en annen datamaskin (tillat trafikk på TCP-port 5601):

firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

18. Start Kibana (http://192.168.0.29:5601) for å bekrefte at du har tilgang til nettgrensesnittet:

Vi kommer tilbake hit etter at vi har installert og konfigurert Filebeat på klientene.

Foreslått lesing: Overvåk serverlogger i sanntid med «Log.io»-verktøyet i Linux

Installer Filebeat på klientserverne

Vi vil vise deg hvordan du gjør dette for klient #1 (gjenta for klient #2 etterpå, endre stier hvis det er aktuelt for distribusjonen din).

1. Kopier SSL-sertifikatet fra serveren til klientene:

scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/

2. Importer den offentlige GPG-nøkkelen Elasticsearch til rpm-pakkebehandlingen:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

3. Opprett et depot for Filebeat (/etc/yum.repos.d/filebeat.repo) i CentOS > baserte distribusjoner:

[filebeat]
name=Filebeat for ELK clients
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

4. Konfigurer kilden for å installere Filebeat på Debian og dens derivater:

aptitude install apt-transport-https
echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list
aptitude update

5. Installer pakken Filebeat:

yum install filebeat        [On CentOS and based Distros]
aptitude install filebeat   [On Debian and its derivatives]

6. Start og aktiver Filebeat:

systemctl start filebeat
systemctl enable filebeat

Konfigurer Filebeat

Et ord av forsiktighet her. Filebeat-konfigurasjonen er lagret i en YAML-fil, som krever streng innrykk. Vær forsiktig med dette når du redigerer /etc/filebeat/filebeat.yml som følger:

  1. Under stier, angi hvilke loggfiler som skal "sendes" til ELK-serveren.
  2. Under prospektører:
input_type: log
document_type: syslog
  1. Under utdata:

    1. Fjern kommentaren til linjen som begynner med logstash.
    2. Angi IP-adressen til ELK-serveren din og porten der Logstash lytter til verter.
    3. Sørg for at banen til sertifikatet peker til den faktiske filen du opprettet i Trinn I (Logstash-delen) ovenfor.

Trinnene ovenfor er illustrert i følgende bilde:

Lagre endringer, og start deretter Filebeat på nytt på klientene:

systemctl restart filebeat

Når vi har fullført trinnene ovenfor på klientene, kan du gjerne fortsette.

Tester Filebeat

For å verifisere at loggene fra klientene kan sendes og mottas vellykket, kjør følgende kommando på ELK-serveren:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Utdataene skal være lik (legg merke til hvordan meldinger fra /var/log/messages og /var/log/secure mottas fra klient1 og klient2):

Ellers må du sjekke konfigurasjonsfilen for Filebeat for feil.

journalctl -xe

etter at du har forsøkt å starte på nytt, vil Filebeat peke deg til den eller de fornærmende linjene.

Tester Kibana

Etter at vi har verifisert at logger blir sendt av klientene og mottatt på serveren. Det første vi må gjøre i Kibana er å konfigurere et indeksmønster og sette det som standard.

Du kan beskrive en indeks som en fullstendig database i en relasjonsdatabasekontekst. Vi vil gå med filebeat-* (eller du kan bruke et mer presist søkekriterium som forklart i den offisielle dokumentasjonen).

Skriv inn filebeat-* i Indeksnavn eller mønsterfeltet og klikk deretter på Opprett:

Vær oppmerksom på at du vil få lov til å legge inn et mer finmasket søkekriterium senere. Deretter klikker du på stjernen inne i det grønne rektangelet for å konfigurere det som standard indeksmønster:

Til slutt, i Oppdag-menyen finner du flere felt du kan legge til i loggvisualiseringsrapporten. Bare hold musepekeren over dem og klikk Legg til:

Resultatene vil vises i det sentrale området av skjermen som vist ovenfor. Spill gjerne litt (legg til og fjern felt fra loggrapporten) for å bli kjent med Kibana.

Som standard vil Kibana vise postene som ble behandlet i løpet av de siste 15 minuttene (se øvre høyre hjørne), men du kan endre atferden ved å velge en annen tidsramme:

Sammendrag

I denne artikkelen har vi forklart hvordan du setter opp en ELK-stabel for å samle systemloggene sendt av to klienter, en CentOS 7- og en Debian 8-maskiner.

Nå kan du referere til den offisielle Elasticsearch-dokumentasjonen og finne flere detaljer om hvordan du bruker dette oppsettet til å inspisere og analysere loggene dine mer effektivt.

Hvis du har spørsmål, ikke nøl med å spørre. Vi ser frem til å høre fra deg.