Weboldal keresés

Az Apache-naplók továbbítása az OpenSearch-be a Logstash segítségével


Bevezetés

A hatékony webszerver-naplókezelés kulcsfontosságú a webhely teljesítményének megőrzéséhez, a problémák hibaelhárításához és a felhasználói viselkedésbe való betekintéshez. Az Apache az egyik legnépszerűbb webszerver. Hozzáférési és hibanaplókat hoz létre, amelyek értékes információkat tartalmaznak. A naplók hatékony kezeléséhez és elemzéséhez a Logstash segítségével feldolgozhatja és továbbíthatja őket a DigitalOcean Managed OpenSearch számára indexelés és megjelenítés céljából.

Ebben az oktatóanyagban végigvezetjük Önt a Logstash Dropletre történő telepítésén, az Apache naplók összegyűjtésére konfigurálásán, valamint elemzés céljából a Managed OpenSearch szolgáltatásba történő elküldésén.

Előfeltételek

  1. Droplet(ek) telepített Apache webszerverrel.
  2. Felügyelt OpenSearch-fürt

1. lépés – A Logstash telepítése

A Logstash telepíthető bináris fájlokkal VAGY a csomagtárolókon keresztül. A könnyebb kezelés és frissítés érdekében általában csomagtárolók használata javasolt.

Ebben a részben végigvezetjük a Logstash telepítésén a Dropletre az APT és a YUM csomagkezelők használatával.

Határozzuk meg az operációs rendszert:

cat /etc/os-release

APT-alapú rendszerekhez (Ubuntu/Debian)

Töltse le és telepítse a nyilvános aláíró kulcsot:

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

Előfordulhat, hogy a folytatás előtt telepítenie kell az apt-transport-https csomagot a Debianra:

sudo apt-get install apt-transport-https

Mentse el a lerakatdefiníciót a /etc/apt/sources.list.d/elastic-8.x.list mappába:

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

Használja a fent leírt echo metódust a Logstash-tárhely hozzáadásához. Ne használja az add-apt-repository parancsot, mivel az hozzáad egy deb-src bejegyzést is, de nem biztosítunk forráscsomagot. Ha hozzáadta a deb-src bejegyzést, a következőhöz hasonló hibaüzenetet fog látni:

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

Csak törölje a deb-src bejegyzést az /etc/apt/sources.list fájlból, és a telepítésnek a várt módon kell működnie.

Futtassa a sudo apt-get update parancsot, és a tároló készen áll a használatra. A következőkkel telepítheti:

sudo apt-get update && sudo apt-get install logstash

YUM-alapú rendszerekhez (CentOS/RHEL)

Töltse le és telepítse a nyilvános aláíró kulcsot:

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

Adja hozzá a következőket a /etc/yum.repos.d/logstash.repo fájlhoz. A „tee” segítségével frissítheti és létrehozhatja a fájlt.

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

Az adattár készen áll a használatra. A következőkkel telepítheti:

sudo yum install logstash

További információkért tekintse meg a Logstash telepítési útmutatóját.

2. lépés – A Logstash konfigurálása úgy, hogy naplókat küldjön az OpenSearch-nek

A Logstash-folyamat három fő szakaszból áll: bemenetből, szűrőből és kimenetből. A Logstash csővezetékek bővítményeket használnak. Használhat közösségi bővítményeket, vagy létrehozhat saját bővítményt.

  • Bevitel: Ez a szakasz különböző forrásokból gyűjt adatokat. A Logstash számos bemeneti bővítményt támogat az adatforrások, például a naplófájlok, adatbázisok, üzenetsorok és felhőszolgáltatások kezelésére.

  • Szűrés: Ez a szakasz feldolgozza és átalakítja a beviteli szakaszban gyűjtött adatokat. A szűrők módosíthatják, gazdagíthatják és strukturálhatják az adatokat, hogy hasznosabbá és könnyebben elemezhetők legyenek.

  • Kimenet: Ez a szakasz elküldi a feldolgozott adatokat egy célállomásra. A célállomások lehetnek adatbázisok, fájlok és adattárak, például az OpenSearch.

3. lépés – Az Open Search Output Plugin telepítése

Az OpenSearch kimeneti bővítmény a következő parancs futtatásával telepíthető:

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

További információk találhatók ebben a logstash-output-opensearch-plugin tárolóban.

Most hozzunk létre egy folyamatot:

Hozzon létre egy új fájlt az /etc/logstash/conf.d/ útvonalon apache_pipeline.conf néven, és másolja ki a következő tartalmat.

input {
  file {
    path => "/var/log/apache2/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_access"
  }

  file {
    path => "/var/log/apache2/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_error"
  }
}

filter {
  if "apache_access" in [tags] {
    grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
    mutate {
        remove_field => [ "message","[log][file][path]","[event][original]" ]
      }
   } else {
   grok {
        match => { "message" => "%{HTTPD24_ERRORLOG}" }
    }
   }
}

output {
  if "apache_access" in [tags] {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_access"
    ssl_certificate_verification => true
  }

  } else {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_error"
    ssl_certificate_verification => true
  }
  }
}

Cserélje ki a értéket az OpenSearch szerver gazdagépnevére, a kódot pedig az OpenSearch jelszavára.

Bontsuk fel a fenti konfigurációt.

  • BEMENET: Ez az események forrásának konfigurálására szolgál. Itt a „fájl” bemeneti bővítmény használatos.

  • path => “/var/log/apache2/access.log” : Megadja az Apache hozzáférési naplófájl elérési útját, amelyből a Logstash olvasni fog

    Győződjön meg arról, hogy a Logstash szolgáltatás hozzáfér a bemeneti útvonalhoz.

  • { }

  • start_position => “beginning ”: Meghatározza, hogy a Logstash hol kezdje el olvasni a naplófájlt. A „kezdet” azt jelzi, hogy a Logstash-nak a fájl feldolgozását az elejétől kell kezdenie, nem pedig a végétől

  • sincedb_path => "/dev/null ": Megadja a sincedb fájl elérési útját. A Logstash a Sincedb fájlokat használja a naplófájlok aktuális pozíciójának nyomon követésére, így újraindítás vagy meghibásodás esetén ott folytathatja, ahol abbahagyta.

  • tags => “apache_access ”: címkét rendel az ebből a bemenetről beolvasott eseményekhez. A címkék hasznosak a Logstash-on belüli események azonosítására és szűrésére, amelyeket gyakran használnak a konfiguráció kimeneti vagy szűrési szakaszában. Ez utóbbihoz címkéket használunk

  • SZŰRŐ: az események feldolgozására szolgál.

    Feltételekkel kezdve:

    (if "apache_access" in [tags]):
    

    Ez ellenőrzi, hogy az apache_access címke létezik-e a bejövő naplóesemények [tags] mezőjében. Ezzel a feltétellel alkalmazzuk a megfelelő GROK-szűrőt az Apache-hozzáféréshez és a hibanaplókhoz.

  • Grok szűrő (Apache hozzáférési naplókhoz):

    grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
    

    A %{HTTPD_COMBINEDLOG} grok szűrő egy előre meghatározott minta a Logstashban, amely az Apache kombinált hozzáférési naplóformátumának elemzésére szolgál. Ez kivonja az olyan mezőket, mint az IP-cím, időbélyeg, HTTP-módszer, URI, állapotkód stb., a bejövő események üzenetmezőjéből.

  • Mutációs szűrő Eltávolítás (opcionális): Az Apache-naplók elemzése után a mutációs eltávolítást használjuk bizonyos mezők eltávolítására.

    mutate {
        remove_field => [ "message","[log][file][path]","[event][original]" ]
    }
    
  • Else feltétel: Az else blokk akkor fut le, ha az apache_access címke nincs jelen a [tags]-ban. Ez az else blokk egy másik GROK szűrőt tartalmaz az Apache hibanaplókhoz.

    grok {
        match => { "message" => "%{HTTPD24_ERRORLOG}" }
    }
    

    Ez a grok szűrő %{HTTPD24_ERRORLOG} elemzi az Apache hibanapló formátumának megfelelő üzeneteket. Kibontja a hibanaplókhoz kapcsolódó mezőket, például időbélyegzőt, naplózási szintet, hibaüzenetet stb.

    A GROK-minták a következő címen találhatók: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.

  • OUTPUT: A kimeneti beépülő modul eseményeket küld egy adott célhelyre.

    A kimeneti blokk if feltétellel kezdődik. Itt if feltételes feltételeket használunk

    if "apache_access" in [tags] {}
    

    Ha feltételes, akkor ez a naplók OpenSearch rendszerbe történő továbbítására szolgál két külön indexbe, az apache_error és az apache_access indexbe.

    Nézzük meg az OpenSearch kimeneti beépülő modult:

    hosts            => "https://XXX:25060"  Your Open search Hostname
    user             => "doadmin"            Your Open search Username
    password         => "XXXXX"              OpenSearch Password
    index            => "apache_error"       Index name in OpenSearch
    ssl_certificate_verification => true     Enabled SSL certificate verification
    

4. lépés - Indítsa el a Logstash-t

A Pipeline konfigurálása után indítsa el a Logstash szolgáltatást:

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

5. lépés – Hibaelhárítás

Ellenőrizze a csatlakozást

A kapcsolat tesztelésével ellenőrizheti, hogy a Logstash csatlakozni tud-e az OpenSearch-hez:

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

Cserélje ki a <your-opensearch-server> elemet OpenSearch szervere gazdagépnevére, a <your_username> és <your_password> helyére pedig az OpenSearch hitelesítő adatait.

Adatbevitel

Győződjön meg arról, hogy az adatok megfelelően vannak indexelve az OpenSearch-ben:

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

Cserélje ki a <your-opensearch-server> elemet OpenSearch szervere gazdagépnevére, a <your_username> és <your_password> helyére pedig az OpenSearch hitelesítő adatait. Hasonlóképpen: <a-index-név> az index nevével.

Tűzfal és hálózati konfiguráció

Győződjön meg arról, hogy a tűzfalszabályok és a hálózati beállítások lehetővé teszik a Logstash és az OpenSearch közötti forgalmat a 25060 porton.

Naplók

A Logstash naplói a /var/log/logstash/logstash-plain.log címen találhatók.

A részleteket lásd: Hibaelhárítás.

Következtetés

Ebben az útmutatóban végigvezettük a Logstash beállítását az Apache naplók összegyűjtéséhez és az OpenSearch felé történő továbbításához. Íme egy gyors összefoglaló arról, amivel foglalkoztunk:

A Logstash telepítése: Megbeszéltük, hogyan használhatja az APT vagy YUM csomagkezelőket a Linux disztribúciótól függően a Logstash telepítéséhez a Dropletre.

A Logstash konfigurálása: Létrehoztuk és beállítottuk a Logstash konfigurációs fájlt, hogy biztosítsuk az Apache naplók helyes elemzését és elküldését az OpenSearch-nek.

Ellenőrzés az OpenSearch-ben: Az OpenSearch irányítópultjain beállítunk egy indexmintát, hogy megbizonyosodjunk arról, hogy a naplók megfelelően vannak indexelve, és láthatók-e elemzés céljából.

Ha ezeket a lépéseket végrehajtja, akkor most már rendelkeznie kell egy funkcionális beállítással, ahol a Logstash összegyűjti az Apache naplókat, és elküldi az OpenSearch-nek.

Kapcsolódó cikkek: