7,540
edits
Changes
→Swarm stack
:[[File:ClipCapIt-180928180930-200815152409.PNG]]
https://www.elastic.co/guide/en/kibana/current/docker.html<br>
===Volume plugin===
Három fontos mappáját kell kivezessük az NFS meghajtóra a Kibana konténernek:
* /usr/share/kibana/config: konfig mappa helye
* /usr/share/kibana/data : ez a munkaterület
* /usr/share/kibana/plugins : ide írnak a plugin-ek.
===Telepítés===
A Kibana-t is az '''elk''' overlay hálózatra fogjuk csatlakoztatni, így közvetlenül el fogja érni az elasticsearch szolgáltatást a 9200 porton. Az elasticsearch domain nevet fel fogja oldani a swarm DNS szerver a konténer IP címére az '''elk''' hálózaton. Az Elasticsearch szerver elérhetőségét most nem config fájlal adjuk meg, hanem a '''ELASTICSEARCH_URL''' környezeti változóval. A Kibana web-es felülete a '''5601'''-es porton érhető el, azt publikáljuk az ingress overlay hálózatra, így bármelyik node publikus IP címével el fogjuk érni a Kibana-t.
<pre>
-e ELASTICSEARCH_URL=http://elasticsearch:9200 \
-p 5601:5601 \
--mount "type=volume,src=192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/kibana/config/\
,dst=/usr/share/kibana/config,volume-driver=nfs" \
--mount "type=volume,src=192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/kibana/data/\
,dst=/usr/share/kibana/data,volume-driver=nfs" \
--mount "type=volume,src=192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/kibana/plugins/\
,dst=/usr/share/kibana/plugins,volume-driver=nfs" \
docker.elastic.co/kibana/kibana:6.4.0
</pre>
<br>
{{note|A legjobb a *'''Discover* ''' képernyőben, hogy szabad szavasan is lehet benne keresni, írjunk be bármilyen szöveget, amelyik logban az szerepelt, azt meg fogja mutatni, pl egy IP cím, vagy bármilyen más id}}
Most keressünk a logstash-* patternekben. <br>
Listázzuk ki az összes olyan logstash-* indexbe tartozó log bejegyzést, amit nem az elastch termékek generáltak:
NOT program: kibana* and NOT program : logmanager_*
Vagy szimplán keressünk rá a "hello logspout" üzenetre, amit a tesztelés céljából indított ubuntu konténer küldött be. Mivel szabad szavasan is lehet keresni, csak írjuk be felülre hogy "hello logspout".
:[[File:ClipCapIt-180929-152229.PNG]]
{{note|Figyeljünk a jobb felső sarokban keresési intervallum beállításokra. Alapértelmezetten csak 15 perces adatokban keres}}
<br>
==Visualize==
A Vizualize felületen 18 féle diagram típusból választhatunk:
=Swarm stack=
'''dockerelastic-composestack.yml'''
<syntaxhighlight lang="C++">
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.0
ports:
- "9200:9200"
networks:
- elk
volumes:
- "elasticsearch-conf:/usr/share/elasticsearch/config"
- "elasticsearch-data:/usr/share/elasticsearch/data"
environment:
- "discovery.type=single-node"
deploy:
restart_policy:
condition: on-failure
resources:
reservations:
memory: 500m
logstash:
image: docker.elastic.co/logstash/logstash:6.4.0
networks:
- elk
environment:
- "LOGSPOUT=ignore"
volumes:
- "logstash-conf:/usr/share/logstash/pipeline"
deploy:
restart_policy:
condition: on-failure
resources:
reservations:
memory: 100m
logspout:
image: gliderlabs/logspout:v3.2.5
networks:
- elk
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "SYSLOG_FORMAT=rfc3164"
command:
- "syslog://logstash:51415"
deploy:
mode: global
restart_policy:
condition: on-failure
kibana:
image: docker.elastic.co/kibana/kibana:6.4.0
networks:
- elk
volumes:
- "kibana-conf:/usr/share/kibana/config"
- "kibana-data:/usr/share/kibana/data"
- "kibana-plugins:/usr/share/kibana/plugins"
environment:
- "LASTICSEARCH_URL=http://elasticsearch:9200"
ports:
- 5601:5601
deploy:
restart_policy:
condition: on-failure
networks:
elk:
driver: overlay
volumes:
elasticsearch-conf:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/elasticsearch/config
elasticsearch-data:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/elasticsearch/data
logstash-conf:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/logstash/config
kibana-conf:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/kibana/config
kibana-data:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/kibana/data
kibana-plugins:
driver: nfs
driver_opts:
share: 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/kibana/plugins
</syntaxhighlight>
# docker stack deploy --compose-file docker-compose.yml logmanager
Ugyan a service-ek nevébe a swarm bele fogja tenni a logmanager előtagot (ami a stack neve), ettől függetlenül a compose fájlban szereplő névvel a stack service-ek még mindig tudják használni a DNS névfeloldást egymás IP címeinek a kitalálásár az '''elk''' overlay hálózaton. (A hálózat nevébe is megváltozik: logmanager_elk)
<pre># docker stack lsNAME SERVICESlogmanager 4</pre> <pre># docker stack ps logmanager ...</syntaxhighlightpre> =Elasticsarch cluster= ==Áttekintés==Alap esetben az ES cluster építése egy automatizált folyamat, a user elől el van fedve. Kicsit leegyszerűsítve nincs más dolgunk, mint hogy elindítani a kívánt számú ES példányt ugyan azzal a cluster névvel egy közös hálózaton, a cluster felépítése teljesen automatikusan végbe fog menni. Négyféle alap node típus van: * '''Master-eligible node''': A master node-ok vezérli a cluster infrastruktúrát. Nyilván tartja a cluster tagokat, vezérli az index-ek létrehozását, törlését, valamint dönt róla hogy shard melyik node-ra kerüljön (node.master = true)* '''Data node''': Ezek a node-ok tárolják az adatbázis adatokat és hajtrák végre az adatmanipulációs és kereső műveleteket, lényegében ők a munkások. (node.data = true)* '''Ingest node''': Ingest nodes are able to apply an ingest pipeline to a document in order to transform and enrich the document before indexing. With a heavy ingest load, it makes sense to use dedicated ingest nodes and to mark the master and data nodes as node.ingest: false.* '''Tribe node''': több cluster között képes kapcsolatot teremteni, az egyetlen node típus ami több cluster-nek is a tagja lehet. * '''Coordinating node''': A kliens kéréseket a Coordinating node-ok kapják meg és továbbítják a data node-oknak, akik a keresés eredményét visszaküldik a keresést indító Coordinating node-nak, összegzi az eredményeket és visszaküldi a kliensnek. Lényegében minden node egyben Coordinating node is, tehát bárhova beérkezhet a kliens kérés. Azonban nagyon nagy terhelés mellett készíthetünk dedikált Coordinating node-okat, amiken az előző négy típust kikapcsoljuk, és a klienseknek csak ezen node-okon keresztül kommunikálhatnak a cluster-el. Elviekben egy node egyben több szerepben is lehet, sőt, alap beállítások mellett minden egyes létrehozott node egyben master, data és ingest node is egyben. Ez kis cluster méret mellett ideális, nincs más dolgunk mint hogy ugyan azokkal a beállításokkal elindítunk pl 5 node-ot, ezek automatikusan cluster-t fognak formálni és meg fogják választani a vezetőt. Nagyobb terhelés mellett viszont már érdemes specializált node-okat létrehozni, külön master és külön data node-okat. Ezen felül érdemes lehet szintén dedikált coordinating node-okat is bevezetni.
Két megközelítés közül választhatunk:
* '''Automatikus cluster formálás:''' egy darab swarm service-t definiálunk, és egyszerűen meghatározzuk a replikák számát, elindul több konténerben az Elasticsearch egy swarm service-ként: http://derpturkey.com/elasticsearch-cluster-with-docker-engine-swarm-mode/
* '''Kézi cluster létrehozás:''' Minden egyes cluster tagot külön swarm service-ként definiálunk a compose fájlban 1-es replika számmal, tehát előre pontosan megmondjuk, hogy hány darab fog futni, és hogy melyik node-nak milyen szerepe van: http://blog.ruanbekker.com/blog/2018/04/29/running-a-3-node-elasticsearch-cluster-with-docker-compose-on-your-laptop-for-testing/