Docker Compose -Tiedoston Konfigurointi
Nyt kun kaikki tarvittavat konfiguraatiot ovat valmiina — Filebeatille, Logstashille ja Flask-sovellukselle — on aika yhdistää ne ja ajaa ne yhtenä järjestelmänä. Tätä varten käytämme Docker Composea.
Docker Compose on työkalu, jonka avulla voit määritellä kaikki tarvittavat kontit yhdessä YAML-tiedostossa ja ajaa ne yhdellä komennolla.
Sen sijaan, että kirjoittaisit erillisen docker run
-komennon jokaiselle palvelulle, kirjoitat niiden konfiguraatiot tiedostoon docker-compose.yml
ja ajat kaiken yhdessä.
Yksinkertainen docker-compose.yml
-tiedosto näyttää tältä:
docker-compose.yml
Seuraavaksi luodaan täydellinen tiedosto vaihe vaiheelta ja selitetään jokainen kontti matkan varrella.
Flask-sovellus
Tämä on pääsovelluksesi, joka tuottaa lokitietoja.
docker-compose.yml
Tämä lohko ohjeistaa Dockeria rakentamaan kontin nykyisestä kansiosta (jossa Dockerfile sijaitsee).
Kontin nimeksi tulee flask-app
.
Rivi volumes
yhdistää paikallisen ./logs
-kansion kontin sisäiseen /logs
-kansioon. Näin kaikki sovelluksen luomat lokit tallentuvat sekä kontin sisälle että tietokoneellesi.
Sovellus suoritetaan kontin sisällä portissa 5000, mutta se ohjataan koneesi porttiin 5050, jotta voit käyttää sitä selaimella osoitteessa http://localhost:5050
.
Filebeat
Filebeat toimii agenttina, joka seuraa lokitiedostoja ja lähettää uudet merkinnät Logstashille.
docker-compose.yml
Filebeat käyttää virallista 8.15.0
-kuvaa.
Se suoritetaan root
-käyttäjänä, jotta sillä on oikeus lukea lokitiedostoja.
Liitämme ./logs
-kansion vain luku -tilassa sekä filebeat.yml
-määritystiedoston. Tämä määrittää Filebeatille, mitä lokitiedostoja seurataan ja mihin ne lähetetään.
depends_on
varmistaa, että Filebeat käynnistyy vasta, kun sovellus ja Logstash ovat käynnissä.
Logstash
Logstash vastaanottaa lokit Filebeatilta, käsittelee ne (esimerkiksi jäsentää JSON-muotoon) ja välittää ne edelleen Elasticsearchiin.
docker-compose.yml
Tämä kontti käyttää virallista Logstash-kuvaa.
Liitämme logstash.conf
-määritystiedoston, joka määrittelee, miten Logstash käsittelee saapuvat lokit.
Kontti käynnistyy vasta, kun Elasticsearch on käynnissä, koska se tarvitsee kohteen käsitellyille lokitiedoille.
Portti 5044 on avattu, jotta Filebeat voi lähettää dataa Logstashille.
Elasticsearch
Elasticsearch tallentaa lokit dokumentteina ja mahdollistaa niiden nopean haun.
docker-compose.yml
Käytämme virallista Elasticsearch-kuvaa versiolla 8.15.0
.
discovery.type=single-node
määrittää, että käytössä on yhden solmun klusteri (riittää paikalliseen testaukseen);xpack.security.enabled=false
poistaa tietoturvan käytöstä, joten käyttäjätunnuksia ja salasanoja ei tarvitse käsitellä;ES_JAVA_OPTS
rajoittaa Java-prosessin muistinkäyttöä.
Palvelu on käytettävissä portissa 9200 osoitteessa http://localhost:9200
.
Kibana
Kibana on Elasticsearchin verkkokäyttöliittymä. Sen avulla voidaan visualisoida lokitietoja ja luoda koontinäyttöjä.
docker-compose.yml
Käytämme virallista Kibana-kuvaa.
Portti 5601 on avattu, joten voit käyttää Kibanaa selaimessasi osoitteessa http://localhost:5601
.
ELASTICSEARCH_HOSTS
ohjaa Kibanan meidän Elasticsearch-säilöön, jotta se voi hakea ja näyttää tietoja.
Lopullinen docker-compose.yml
Tässä on täydellinen Docker Compose -tiedosto, jossa kaikki palvelut on yhdistetty oikeassa järjestyksessä:
docker-compose.yml
Tämä docker-compose.yml
käynnistää kaikki palvelut oikeassa järjestyksessä. Flask-sovellus tuottaa lokitietoja, Filebeat kerää ne ja lähettää ne Logstashille, Logstash käsittelee lokit ja välittää ne Elasticsearchille, ja Kibana tarjoaa verkkokäyttöliittymän tietojen tarkasteluun ja analysointiin.
Jäljellä on enää järjestelmän käynnistäminen ja testaaminen, jotka käsitellään seuraavassa luvussa.
1. Mikä on Docker Composen päätarkoitus tässä kokonaisuudessa?
2. Mikä palvelu vastaa Flask-sovelluksen lokitiedostojen keräämisestä ja niiden lähettämisestä Logstashille?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 3.7
Docker Compose -Tiedoston Konfigurointi
Pyyhkäise näyttääksesi valikon
Nyt kun kaikki tarvittavat konfiguraatiot ovat valmiina — Filebeatille, Logstashille ja Flask-sovellukselle — on aika yhdistää ne ja ajaa ne yhtenä järjestelmänä. Tätä varten käytämme Docker Composea.
Docker Compose on työkalu, jonka avulla voit määritellä kaikki tarvittavat kontit yhdessä YAML-tiedostossa ja ajaa ne yhdellä komennolla.
Sen sijaan, että kirjoittaisit erillisen docker run
-komennon jokaiselle palvelulle, kirjoitat niiden konfiguraatiot tiedostoon docker-compose.yml
ja ajat kaiken yhdessä.
Yksinkertainen docker-compose.yml
-tiedosto näyttää tältä:
docker-compose.yml
Seuraavaksi luodaan täydellinen tiedosto vaihe vaiheelta ja selitetään jokainen kontti matkan varrella.
Flask-sovellus
Tämä on pääsovelluksesi, joka tuottaa lokitietoja.
docker-compose.yml
Tämä lohko ohjeistaa Dockeria rakentamaan kontin nykyisestä kansiosta (jossa Dockerfile sijaitsee).
Kontin nimeksi tulee flask-app
.
Rivi volumes
yhdistää paikallisen ./logs
-kansion kontin sisäiseen /logs
-kansioon. Näin kaikki sovelluksen luomat lokit tallentuvat sekä kontin sisälle että tietokoneellesi.
Sovellus suoritetaan kontin sisällä portissa 5000, mutta se ohjataan koneesi porttiin 5050, jotta voit käyttää sitä selaimella osoitteessa http://localhost:5050
.
Filebeat
Filebeat toimii agenttina, joka seuraa lokitiedostoja ja lähettää uudet merkinnät Logstashille.
docker-compose.yml
Filebeat käyttää virallista 8.15.0
-kuvaa.
Se suoritetaan root
-käyttäjänä, jotta sillä on oikeus lukea lokitiedostoja.
Liitämme ./logs
-kansion vain luku -tilassa sekä filebeat.yml
-määritystiedoston. Tämä määrittää Filebeatille, mitä lokitiedostoja seurataan ja mihin ne lähetetään.
depends_on
varmistaa, että Filebeat käynnistyy vasta, kun sovellus ja Logstash ovat käynnissä.
Logstash
Logstash vastaanottaa lokit Filebeatilta, käsittelee ne (esimerkiksi jäsentää JSON-muotoon) ja välittää ne edelleen Elasticsearchiin.
docker-compose.yml
Tämä kontti käyttää virallista Logstash-kuvaa.
Liitämme logstash.conf
-määritystiedoston, joka määrittelee, miten Logstash käsittelee saapuvat lokit.
Kontti käynnistyy vasta, kun Elasticsearch on käynnissä, koska se tarvitsee kohteen käsitellyille lokitiedoille.
Portti 5044 on avattu, jotta Filebeat voi lähettää dataa Logstashille.
Elasticsearch
Elasticsearch tallentaa lokit dokumentteina ja mahdollistaa niiden nopean haun.
docker-compose.yml
Käytämme virallista Elasticsearch-kuvaa versiolla 8.15.0
.
discovery.type=single-node
määrittää, että käytössä on yhden solmun klusteri (riittää paikalliseen testaukseen);xpack.security.enabled=false
poistaa tietoturvan käytöstä, joten käyttäjätunnuksia ja salasanoja ei tarvitse käsitellä;ES_JAVA_OPTS
rajoittaa Java-prosessin muistinkäyttöä.
Palvelu on käytettävissä portissa 9200 osoitteessa http://localhost:9200
.
Kibana
Kibana on Elasticsearchin verkkokäyttöliittymä. Sen avulla voidaan visualisoida lokitietoja ja luoda koontinäyttöjä.
docker-compose.yml
Käytämme virallista Kibana-kuvaa.
Portti 5601 on avattu, joten voit käyttää Kibanaa selaimessasi osoitteessa http://localhost:5601
.
ELASTICSEARCH_HOSTS
ohjaa Kibanan meidän Elasticsearch-säilöön, jotta se voi hakea ja näyttää tietoja.
Lopullinen docker-compose.yml
Tässä on täydellinen Docker Compose -tiedosto, jossa kaikki palvelut on yhdistetty oikeassa järjestyksessä:
docker-compose.yml
Tämä docker-compose.yml
käynnistää kaikki palvelut oikeassa järjestyksessä. Flask-sovellus tuottaa lokitietoja, Filebeat kerää ne ja lähettää ne Logstashille, Logstash käsittelee lokit ja välittää ne Elasticsearchille, ja Kibana tarjoaa verkkokäyttöliittymän tietojen tarkasteluun ja analysointiin.
Jäljellä on enää järjestelmän käynnistäminen ja testaaminen, jotka käsitellään seuraavassa luvussa.
1. Mikä on Docker Composen päätarkoitus tässä kokonaisuudessa?
2. Mikä palvelu vastaa Flask-sovelluksen lokitiedostojen keräämisestä ja niiden lähettämisestä Logstashille?
Kiitos palautteestasi!