Skip to content

gplesz/ELKFree201702

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ElasticSearch dióhéjban

Az ElasticSearch dióhéjban című NetAcademia tanfolyam kódtár kiegészítése

A tanfolyam a korábbi alkalom folytatása, az ott épített infrastruktúrát fogjuk kihasználni. A tanfolyam önállóan követhető, de tanácsoljuk az előző tanfolyam anyagainak és videóinak áttekintését.

A következő alkalom kódtára

Bevezetés

Az ElasticSearch dióhéjban tanfolyamból már tartottunk egy alkalmat, amikoris az infrastruktúrát állítottuk fel Windows környezetben. Az infrastruktúra a következő lett:

Emlékeztető

  • Az ELK nevű gépen telepítettünk egy ElasticSearch szervert,

  • egy RabbitMQ üzenetsort,

  • és a kettőt összekötöttük egy megfelelő Logstash konfigurációval, annak érdekében, hogy az üzenetsorba beérkező csomagok az ElasticSearch adatbázisába kerüljenek a megfelelő konverziót követően.

  • Az APP nevű gépre telepítettünk egy RabbitMQ postát (exchange) és üzenetsort (message queue),

  • majd konfiguráltuk annak érdekében, hogy ami üzenet megérkezik a postára, az átkerüljön az üzenetsorba, onnan pedig shovel segítségével az ELK szerverünk üzenetsorába, ahonnan már megy a folyamat az ElasticSearch felé.

  • Végül az ELK-n telepítettünk egy Kibana webalkalmazást, hogy az ElasticSearch által tárolt adatokat meg tudjuk jeleníteni.

  • Mindezt elindítottuk, és az APP szerver RabbitMQ postájában egy-két üzenet generálásával kipróbáltuk a működést.

Videók

A tanfolyam most készülő és a megelőző tanfolyam videóit itt lehet elérni.

  • Az előző tanfolyamot követően telepítettem a Logstash és a Kibana szervizeket az NSSM segítségével, a következő módon:

  • nssm install Kibana A megjelenő ablakban pedig a Path mezőbe: C:\ProgramData\chocolatey\lib\kibana\kibana-4.5.4-windows\bin\kibana.bat A Startup directory mezőbe: C:\ProgramData\chocolatey\lib\kibana\kibana-4.5.4-windows\bin

  • nssm install Logstash Hasonlóan a Kibanához a Path mezőbe: c:\logstash\bin\logstash.cmd és *c:\logstash\bin*

Előkészületek

Letöltések

A VMWare az első induláskor egy ingyenes regisztrációval indítható. Ehhez egy e-mail címet kér. Az ingyenes regisztrációhoz nyugodtan használjátok a saját e-mail címet, vagy az enyémet: [email protected], vagy egyszerűen egy *@mailinator.com végű címet.

Kicsomagolás, stb.

A letöltött virtuális gépeket kicsomagoljuk. Belépés a windows szerverekbe: Administrator jelszó: Windows2012

  • Készítünk egy tesztalkalmazást Visual Studio segítségével, amivel naplót fogunk tudni generálni. Ehhez telepíteni fogunk a tanfolyam elején egy Visual Studio 2015 Community változatot, de elő lehet készülni a telepítéssel.

Visual Studio 2015 Community telepítése

A tanfolyamon Windows operációs rendszeren futó Visual Studio 2015 Community fejlesztői keretrendszert fogunk használni. Azt mondanám, hogy a tanfolyam valószínűleg majdnem minden Visual Studio változattal követhető (2008/2010/2012/2013/2015), de mivel ez elérhető, ingyenes és a legfrissebb, és majd ahogy látjuk, egy jó parancssorban két parancs kiadásával telepíthető, nem nagyon van értelme alternatívákat keresni.

A tanfolyamon ezt az alkalmazást fogjuk használni. Ingyenesen elérhető önálló fejlesztők, nyílt forráskódú projektek, akadémiai kutatók számára. Továbbá oktatási célokra és kis (max 5 fős) fejlesztőcsapatoknak.

Letölteni az előző linkről vagy innen lehet. Ehhez a tanfolyamhoz telepíteni az alapértelmezett beállításokkal elég.

Vagy,

ha valaki szeret újat kipróbálni, akkor telepítheti Chocolatey csomagkezelővel is.

Erről összefoglaló ezen a tanfolyamon az első videó

Telepítés: ehhez

1. lépés

indítsunk egy adminisztrátori parancssort (elevated command prompt),

2. lépés

tegyük vágólapra ezt (igen, az egészet!):

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

3. lépés

majd a parancssorunkba illesszük be és futtassuk le.

Ezzel telepítettünk egy csomagkezelőt, innentől kezdve nem kell letölteni és telepíteni kattintgatásokkal az alkalmazásainkat, hanem a csomagkezelőnkre bizhatjuk a dolgot, legalábbis jelenleg már több, mint 4000 alkalmazás esetében.

Ha van csomagkezelőnk, a Visual Studio Community telepítése adminisztrátori parancssorból így megy:

4. lépés

cinst visualstudio2015community

Ezzel meg is vagyunk az előkészületekkel, a többit a tanfolyamon folytatjuk!

tanfolyam

Elindítjuk mindkét virtuális gépet a vmx kiterjesztésű állományra kétszer kattintva. Mivel a virtuális gépek mozogtak, így át kell állítani az App szerveren a Shovel-t, hogy a megfelelő IP címre küldje a naplónkat (admin/shovel management menüpont a RabbitMQ webes kezelőfelületén, App szerver: http://localhost:15672/#/).

Ehhez az előző Shovel-t töröljük, majd az újat az ELK szerver IP címére állítjuk. Például:

  • forrás url: amqp://netacademia:neta@localhost, forrás queue: app-logging-queue
  • cél url: amqp://netacademia:[email protected], cél queue: app-logging-queue-central

Figyeljük meg, hogy az url-ben a @ előtt a felhasználó neve és jelszava megjelenik.

Mivel a Kibana és a Logstash már fut, elindítjuk az Elasticsearch szervert az ELK gépen a C:\ProgramData\chocolatey\lib\elasticsearch\tools\elasticsearch-2.3.1\bin> könyvtárból az elasticsearch.bat futtatásával parancssorból.

Kibana elérése távolról

A Kibana portját (5601) megnyitottuk az ELK szerveren a következő parancssal:

netsh advfirewall firewall add rule name="Open Port 5601" dir=in action=allow protocol=TCP localport=5601

Figyeljünk arra, hogy a Kibana ingyenes csomagja nem autentikál, így aki látja a portot az mindenhez hozzáfér.

Elasticsearch windows service telepítése

Az eddigiekktől eltérően nem nssm-et használunk, mivel az elasticsearch saját windows szervizt tud futtatni, a C:\ProgramData\chocolatey\lib\elasticsearch\tools\elasticsearch-2.3.1\bin> könytárban adjuk ki a service install parancsot parancssorból, és a processzorarchitektúrának megfelelő szerviz települ.

Ez alapértelmezetten manual-ra van állítva, állítsuk át automatikusan elindulóra. Ehhez az elasticsearch saját service managerét érdemes használni (service manager parancs ugyaninnen), mert itt még a java beállításokat is meg tudjuk adni.

Szervizek indulási sorrendje:

A parancssorból sc config "Logstash" depend="elasticsearch-service-x64/RabbitMQ" paranccsal be tudjuk állítani, hogy a Logstash csak azután induljon el, miután az Elasticsearch ÉS a RabbitMQ szervizek már elindultak.

Visual Studio projekt

Új projekt megnyitása (Installed\Templates\Visual C#\Windows, ezen belül konzol alkalmazás), majd a Package manager Console-ból a megfelelő csomag telepítése a következő parancssal:

PM> Install-Package rabbitmq.log4net.gelf.appender

Majd a csomag weboldaláról használjuk ezt a konfigurációt, módosítva az eredeti beállításokat:

IP cím, Exchange, Username, Password

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
  </configSections>

  <log4net>
    <appender name="rabbitmq.gelf.appender" type="rabbitmq.log4net.gelf.appender.GelfRabbitMqAppender, rabbitmq.log4net.gelf.appender">
      <HostName value="192.168.196.128" />
      <VirtualHost value="/" />
      <Port value="5672" />
      <Exchange value="app-logging-exchange" />
      <Username value="netacademia" />
      <Password value="neta" />
      <Facility value="sample-application" />
    </appender>

    <root>
      <level value="ERROR" />
      <appender-ref ref="rabbitmq.gelf.appender" />
    </root>
  
  </log4net>

Az APP szerveren kinyitjuk a RabbitMQ portját:

netsh advfirewall firewall add rule name="Open Port 5672" dir=in action=allow protocol=TCP localport=5672

Létrehozunk egy topic alapú exchange-et: test-x néven az app szerveren, a Durability lenyíló értéke legyen Transient (az alapértelmezett Durable helyett), minden más beállítás alapértelmezett.

Illetve hozzunk létre egy Bindingot az Exchange-ből az app-logging-queue felé, a routing paraméter legyen #.

Windows napló begyűjtése RabbitMQ-ba

A logstash képes windows naplót gyűjteni és ezt a RabbitMQ felé továbbküldeni így (ez egy példa, most nem próbáltuk ki):

input {
	eventlog {
	    type => "Win32-EventLog"
		logfile => ["System","Security","Application"]
	}
 
output {
 rabbitmq {
		host => "localhost"
		user     => "netacademia"
		password => "neta"
		exchange    => "app-logging-exchange"
  exchange_type => "direct"
	}
}

A Logstash a konfigurációját innen szedi: C:\logstash\conf.d\neta.conf, mivel a C:\logstash\bin\logstash.cmd-t indítja az NSSM.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages