Kubernetes logging…

Alparslan Ozturk
2 min readFeb 22, 2021

--

Kubernetes kümesi yapılan kuruluma göre loglarını aşağıdaki gibi tutar. dockershim kullanıldığı ve CRI-O kullanılmadığı için benim ayarlarımda her bir container için; dosyaya ve json formatında en fazla 100 megabtylık dosyalar halinde tutulmaktadır.

cat /etc/docker/daemon.json
{

“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},

}

fluend yada fluentbit kullanmayı da düşündüm ancak benim uyglamalarımın özel loglar yoktu. yani özel bir uygulama log dosyasını izlemek ve Elasticsearch yada graylog sunucusuna gönderme ihtyacım yoktu. bende tüm container çıktılarını graylog sunusuna GELF formatında göndermek için aşağıda şekilde ayarlarımı yaptıktan sonra kuberntesi çalıştırdım.

# cat /etc/docker/daemon.json
{

“log-driver”: “gelf”,
“log-opts”: {
“gelf-address”: “udp://127.0.0.1:12201”
},

}

Tabi bu işlemi test etmek için graylog kurulumuu docker-compose ile yaptım. Bu işlem aşağıdaki iki komutla yapabilirsiniz.

sudo curl -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

#cat docker-compose.yml
version: ‘3’
services:
# MongoDB: https://hub.docker.com/_/mongo/
mongo:
image: mongo:4.2
networks:
— graylog
# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
environment:
— http.host=0.0.0.0
— transport.host=localhost
— network.host=0.0.0.0
— “ES_JAVA_OPTS=-Xms512m -Xmx512m”
ulimits:
memlock:
soft: -1
hard: -1
deploy:
resources:
limits:
memory: 1g
networks:
— graylog
# Graylog: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:4.0
environment:
# CHANGE ME (must be at least 16 characters)!
— GRAYLOG_PASSWORD_SECRET=somepasswordpepper
# Password: admin
— GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
— GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
entrypoint: /usr/bin/tini — wait-for-it elasticsearch:9200 — /docker-entrypoint.sh
networks:
— graylog
restart: always
depends_on:
— mongo
— elasticsearch
ports:
# Graylog web interface and REST API
— 9000:9000
# Syslog TCP
— 1514:1514
# Syslog UDP
— 1514:1514/udp
# GELF TCP
— 12201:12201
# GELF UDP
— 12201:12201/udp
networks:
graylog:
driver: bridge

Graylog arayüzüne http://127.0.0.1:9000 ile bağlandıktan sonra admin/admin ile login olurn. ve sonrasında UDP Input açılması gerekiyor. çünkü varsayılan gelmez. ama merak etmeyin 12201 udp portu açıktır.

sonrasında logları izleyebilirsiniz.

Bağlantılar:

--

--

Responses (1)