Configureren van Logstash op Droplets om Nginx-logboeken naar gehoste OpenSearch door te sturen

Inleiding

Houden van de hand van de logboeken van de webserver is essentieel voor het vloeiend uitvoeren van uw website, het oplossen van problemen en het begrijpen van het gebruikersgedrag. Als u Nginx gebruikt, produceert het toegang- en foutlogboeken vol met nuttige informatie. Om deze logboeken te beheren en te analyseren, kunt u Logstash gebruiken om ze te verwerken en door te sturen en DigitalOcean’s Managed OpenSearch om de gegevens te indexeren en te visualiseren.

In dit handleiding zal u worden geleid door de installatie van Logstash op een Droplet, het instellen ervan om uw Nginx-logboeken te verzamelen en ze naar DigitalOcean Managed OpenSearch te sturen.

Vereisten

Gebruiksomgeving

U zou deze opzet misschien nodig hebben als u:

  • Monitoren en probleemoplossen: Traceert de prestaties en fouten van de web-server door realtime logs te analyseren.
  • Analyseren van prestaties: Verkrijg inzichten in webverkeerspatronen en servermetrieken.
  • Centraliseren van logboeken: Aggregee logboeken van meerdere Nginx-servers naar een enkele OpenSearch-instantie voor gemakkelijkere beheer.

Opmerking: Het installeren duurt ongeveer 30 minuten.

Stap 1 – Logstash installeren op Droplets

Logstash kan worden geïnstalleerd met behulp van binaire bestanden die hier beschikbaar zijn of pakketbronnen die zijn aangepast aan uw besturingssysteem. Om gemakkelijker beheer en updates uit te voeren, is het over het algemeen aanbevolen om pakketbronnen te gebruiken. U kunt de APT-pakketbeheerder gebruiken op Debian-gebaseerde systemen zoals Ubuntu, terwijl u op Red Hat-gebaseerde systemen zoals CentOS of RHEL de yum-beheerder kunt gebruiken. Beide methodes zorgen ervoor dat Logstash correct is ingebed in de pakketbeheerinfrastructuur van uw systeem, wat de installatie en onderhoud vergemakkelijkt.

In dit gedeelte zullen we u door de installatie van Logstash leiden met behulp van zowel de apt als de yum pakketbeheerders, zodat u Logstash kunt configureren op uw Droplet, ongeacht uw Linux-distributie.

Om het besturingssysteem te vinden, voert u het volgende commando uit:

cat /etc/os-release

Voor systemen gebaseerd op APT (Ubuntu/Debian)

1.下载并安装公开签名密钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

2.如果尚未安装,请安装 apt-transport-https:

sudo apt-get install apt-transport-https

3.将 Logstash 仓库定义添加到您的 apt 源列表并保存:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Notitie: Zorg ervoor dat u geen add-apt-repository-opdrachten gebruikt, omdat dit een deb-src-entrée kunnen toevoegen die niet wordt ondersteund. Als u een fout tegenover een deb-src-entrée tegenkomt, verwijder dan deze uit het bestand /etc/apt/sources.list. Als u de deb-src-entrée heeft toegevoegd, zult u een fout zoals volgt zien:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Als u alleen de deb-src-entrée uit het bestand /etc/apt/sources.list verwijdert, zal de installatie zoals verwacht werken.

4. Bijwerken van het pakketindice om het nieuwe archief te includen:

sudo apt-get update

5. Installeer Logstash met behulp van de pakketbeheerder apt:

sudo apt-get install logstash

6. Start Logstash en schakel het in om automatisch opstarten bij het opstarten van het systeem:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash is nu geïnstalleerd en draait op uw systeem.

Voor YUM-gebaseerde systemen (CentOS/RHEL):

1. Download en installeer de publieke handtekeningssleutel voor het Logstash-archief:

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

2. Maak een archiefbestand voor Logstash in /etc/yum.repos.d/. Bijvoorbeeld, maak een bestand genaamd logstash.repo. U kunt de onderstaande inhoud kopiëren en plakken om het bestand te maken en de inhoud bij te werken:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Het archief is klaar om te gebruiken.

3. Installeer Logstash met de YUM-pakketbeheerder:

sudo yum install logstash

4. Start Logstash en schakel het in om automatisch opstarten bij het opstarten van het systeem:

sudo systemctl start logstash
sudo systemctl enable logstash

Logstash is nu geïnstalleerd en draait op uw systeem.

Stap 2 – Installeren van de Open Search Uitvoerplugin

U kunt de OpenSearch uitvoerplugin installeren door de volgende opdracht uit te voeren:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

U kunt meer informatie over de plugin vinden op dit Logstash-output-opensearch plugin archief.

Stap 3 – Configureren van Logstash om Nginx Logboeken naar OpenSearch te verzenden

Een Logstash pijpleiding bestaat uit drie hoofdstadia: invoer, filter en uitvoer. Logstash pijpleidingen maken gebruik van plugins. U kunt community plugins gebruiken of u kunt uw eigen maken.

  • Invoer: In dit stadion worden gegevens verzameld van verschillende bronnen. Logstash ondersteunt vele invoerplugins om gegevensbronnen als logbestanden, databases, berichtenwachtrijen en clouddiensten te kunnen afhandelen.
  • Filter: In dit stadion worden de gegevens verwerkt en gemodificeerd die zijn verzameld in de invoerstadium. Filters kunnen de gegevens wijzigen, verrijken en structuren om ze bruikbaarder en gemakkelijker analyseerbaar te maken.
  • Uitvoer: In deze fase worden de gegevens verwerkt en verzonden naar een bestemming. Bestemmingen kunnen databases, bestanden en data stores zoals OpenSearch zijn.

Laten we nu een pijplijn aanmaken.

1.Maak een Logstash-configuratiebestand aan op /etc/logstash/conf.d/nginx-to-opensearch.conf met het volgende inhoud:

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

Vervang:

  • OpenSearch-Hostname door de hostnaam van uw OpenSearch-server.
  • <your_password> door uw OpenSearch-wachtwoord.

2.Toepassing van de nieuwe configuratie door Logstash te herstarten:

sudo systemctl restart logstash

3.Controleer de Logstash-logboeken om te zien of de gegevens correct worden verwerkt en doorgevoerd:

sudo tail -f /var/log/logstash/logstash-plain.log

Inhoud van de nginx-to-opensearch.conf-configuratie

INPUT

Het input-blok configureert twee bestandsinvoer om logboeken te lezen:

Nginx-logs:
Paden:
/var/log/nginx/access.log (voor toegangslogboeken)
/var/log/nginx/error.log (voor foutenlogboeken)
Startpositie: beginning – Leest vanaf het begin van de logbestanden.
Sincedb Pad: /dev/null – Schakelt de volgfunctie voor doorlopend lezen uit.
Tags:
["nginx_access"] voor toegangslogboeken
["nginx_error"] voor foutenlogboeken.

Opmerking: Zorg ervoor dat de Logstash-dienst toegang heeft tot de invoerpaden.

FILTER

Het filter blok verwerkt logs op basis van hun tags:

Logverwerking:
Toegangslogs:
Gebruikt een grok filter om het toegangslogformaat te parsen, waarbij velden zoals client_ip, timestamp, method, request, http_version, response, bytes, referrer en user_agent worden geëxtraheerd.
Verwijdert het originele message en enkele metadatavelden.

Foutlogs:
Controleert of de nginx_error tag aanwezig is en brengt een grok filter toe om velden zoals timestamp, level, pid, tid en error_message te extraheren.
Verwijdert ook het message en de metadatavelden.

UITVOER

Het output blok routeert gebeurtenissen naar OpenSearch op basis van hun tags:

Routeren naar OpenSearch:
Voor zowel toegangs- als foutlogs geeft het specificerend:
Hosts: URL van de OpenSearch-instance.
Gebruiker: doadmin voor authenticatie.
Wachtwoord: Uw OpenSearch-wachtwoord.
Index:
nginx_access-%{+YYYY.MM.dd} voor toegangslogs
nginx_error-%{+YYYY.MM.dd} voor foutlogs
SSL-instellingen: Schakelt SSL en certificaatcontrole in.

Stap 4 – OpenSearch configureren

1.Open uw webbrowser en ga naar de URL van het OpenSearch Dashboard:

https://<OpenSearch-Hostname>

Vervang OpenSearch-Hostname door de hostname van uw OpenSearch server.

2.Maak een index patronen.
a. Ga links naar de zijbalk naar Beheer > Dashboard Beheer > Index Patronen.
b. Klik op Index patronen aanmaken in de rechterbovenhoek.
c. Voeg nginx_access-* of nginx_error-* toe als het index patronen voor alle indices die zijn aangemaakt door Logstash. Klik op Volgende stap.
d. Klik op Index patronen aanmaken.

3.Controleer of het index patronen succesvol is aangemaakt en zichtbaar is in de lijst met index patronen.

4.Ga links naar Ontdekken en selecteer het door u aangemaakte index patronen (nginx_access-* of nginx_error-*). Controleer of logboekposten zichtbaar zijn en correct zijn geïndexeerd.

5.Maak visualisaties en dashboards. Bekijk Hoe een dashboard in OpenSearch aanmaken voor meer details.

Problemen oplossen

Verificatie van Connectiviteit

U kunt controleren of Logstash met OpenSearch kan verbinden door de connectiviteit te testen:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

Vervang:

  • OpenSearch-Hostname door de hostname van uw OpenSearch-server.
  • <your_password> door uw wachtwoord voor OpenSearch.

Data Ingestie

U kunt ervoor zorgen dat de gegevens correct in OpenSearch worden geïndexeerd door de volgende curl-commando te gebruiken:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

Vervang:

  • OpenSearch-Hostname door de hostname van uw OpenSearch-server.
  • <your_password> door uw wachtwoord voor OpenSearch.

Vuurwerkwerk en Netwerkconfiguratie

Zorg ervoor dat de brandweerregels en netwerkinstellingen verkeer toestaan tussen Logstash en OpenSearch op poort 25060.

Conclusie

In deze handleiding heb je geleerd hoe u Logstash installeert om Nginx-logbestanden te verzamelen en door te sturen naar OpenSearch.

U heeft gezien hoe u de pakketbeheerder apt of yum kunt gebruiken, afhankelijk van uw Linux-distributie, om Logstash op uw Droplet te starten. U heeft ook een Logstash-configuratiebestand gemaakt en aangepast om ervoor te zorgen dat de Nginx-logbestanden correct worden geparseerd en naar OpenSearch worden verzonden. Daarna heeft u een indexpatroon in OpenSearch Dashboards ingesteld om te controleren of de logbestanden correct zijn geïndexeerd en zichtbaar zijn voor analyse.Met deze stappen voltooid, moet u nu een werkende setup hebben waarin Logstash Nginx-logbestanden verzamelt en naar OpenSearch stuurt. Deze setup laat u gebruik maken van OpenSearch’s krachtige zoek- en visualisatiemethodes om uw serverlogbestanden te analyseren.

Als u problemen ondervindt, bekijk dan de probleemoplossings tips die we hebben gegeven en raadpleeg de Logstash en OpenSearch-documentatie voor meer hulp. Vaste monitoring zorgt ervoor dat uw logging-systeem goed en effectief draait.

Source:
https://www.digitalocean.com/community/tutorials/forward-nginx-logs-to-opensearch-using-logstash