Changes

Jump to: navigation, search

Centralized logging in swarm

3,554 bytes added, 20:35, 14 September 2018
Logspout
For now it only captures stdout and stderr, but a module to collect container syslog is planned.
===Telepítés===
<pre>
docker service create --name logspout \
</pre>
 
A log végén meg kell jelenjen az alábbi sor, ami jelzi, hogy a logstash-ez kapcsolódik az 51415-ös porton.
<pre>
# docker service logs logspout
logspout.0.lh7yq14rapf7@mg2 | # ADAPTER ADDRESS CONTAINERS SOURCES OPTIONS
logspout.0.lh7yq14rapf7@mg2 | # syslog logstash:51415 map[]
</pre>
 
{{note|Ha nincs elég memória szabadon a node-on, akkor a logspout nem fog tudni elindulni. }}
 
 
===Tesztelés===
 
A '''logspout''' minden egyes node-on ott fut, és bármelyik node-on is keletkezzen log az stdout-on, azt el fogja küldeni a logstash-nek az '''51415'''-ös portra. Mivel mind a ketten az '''elk''' nevű overlay hálózatra kapcsolódnak, a logspout közvetlen eléri a '''logstash'''-t az bármelyik node-on is legyen. A közös overlay hálózatokon a service nevet domain névként használhatjuk, a swarm DNS szervere visszaadja az összes konténer IP címét, ami a service-hez tartozik. Mivel a logstash-böl csak egy példány fut, így az összes logspout konténer közvetlen el tudja neki küldeni az összegyűjtött logokat.
 
Úgy fogjuk tesztelni, hogy elsőként elkezdjük figyelni interaktív módban (-f) a '''logstash''' log-ját. Majd egy tetszőleges node-on (mindegy melyiken, a '''logspout''' minden node-on fut) elindítunk egy ubuntu image-ből álló konténert, ami egy sort fog írni az '''stdout'''-ra. Ennek azonnal meg kell jelennie a logstash logjában. Az ubuntu-nak nem is kell swarm service-ként futnia, a logspout mivel a lokális docker démonra csatlakozik, a standalone docker konténerek logját is be tudja gyűjteni.
 
 
Indítsuk el a logstash log-nézőt:
<pre>
# docker service logs -f logstash
</pre>
 
 
Indítsuk el az ubuntu-t standalone docker konténerként, ami az stdout-ra fog írni a konténeren belül. Ezt az logspout-nak észre kell venni, és el kell küldeni a logstash-nek, aki már be tudja tölteni a megfelelő alakban az ElasticSarch-be. Az ubuntu konténer ahogy kiírta az üzenetet az stdout-ra le fog állni, így kapásból törölhetjük is. Fontos, hogy '''-d''' kapcsolóval futtassuk az ubuntu konténert, interaktív módban a logspout nem gyűjti be a logokat.
<pre>
# docker run -d --rm --name ubunto ubuntu echo "hello logspout" > /dev/stdout
</pre>
A '''--rm''' hatására az ubuntu konténer azonnal törölve lesz, ahogy lefutott az echo.
 
 
Szinte azonnal meg kell jelenjen a "hello logspout" üzenet a logstash logjában, amit interaktív módban figyelünk:
<pre>
logstash.1.ggjdb8navgso@mg1 | {
logstash.1.ggjdb8navgso@mg1 | "@version" => "1",
logstash.1.ggjdb8navgso@mg1 | "timestamp" => "2018-09-14T20:31:00Z",
logstash.1.ggjdb8navgso@mg1 | "program" => "ubunto",
logstash.1.ggjdb8navgso@mg1 | "severity" => 6,
logstash.1.ggjdb8navgso@mg1 | "facility_label" => "user-level",
logstash.1.ggjdb8navgso@mg1 | "pid" => "3291",
logstash.1.ggjdb8navgso@mg1 | "priority" => 14,
logstash.1.ggjdb8navgso@mg1 | "@timestamp" => 2018-09-14T20:31:00.000Z,
logstash.1.ggjdb8navgso@mg1 | "facility" => 1,
logstash.1.ggjdb8navgso@mg1 | "timestamp8601" => "2018-09-14T20:31:00Z",
logstash.1.ggjdb8navgso@mg1 | "severity_label" => "Informational",
logstash.1.ggjdb8navgso@mg1 | "message" => "hello logspout\n",
logstash.1.ggjdb8navgso@mg1 | "host" => "10.0.0.5",
logstash.1.ggjdb8navgso@mg1 | "logsource" => "836892e1d7fa"
logstash.1.ggjdb8navgso@mg1 | }
</pre>
==Docker logger driver vs logspout==

Navigation menu