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.
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:
-
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.
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*
-
Az előző tanfolyamon elkészült virtuális gépeket innen lehet letölteni: ELK szerver és APP szerver
-
A használathoz a korábbi alkalomhoz hasonlóan VMWare ingyenes Player kell, amit innen lehet letölteni
-
A VMWare Windows 10-re telepítéséhez lehet, hogy le kell tiltani a Credential Guard/Device Guard nevű szolgáltatást. Részletes leírás a linken.
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.
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.
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
indítsunk egy adminisztrátori parancssort (elevated command prompt),
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"
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:
cinst visualstudio2015community
Ezzel meg is vagyunk az előkészületekkel, a többit a tanfolyamon folytatjuk!
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.
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.
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.
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.
Ú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 #.
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.