Skip to content
Open

PR #2

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions configs/elasticsearch/elasticsearch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cluster.name: "elk"
network.host: 0.0.0.0 # Для корректной работы внутри контейнера

xpack.security.enabled: true # Для поддержки функционала, обеспечивающего безопасность кластера
xpack.license.self_generated.type: basic # Типа лицензии "basic" для наших нужд хватит с головой
xpack.security.authc.api_key.enabled: true
xpack.security.transport.ssl.enabled: false # Обязательно для 8.x
xpack.security.http.ssl.enabled: false # Для упрощения в dev-режиме
20 changes: 20 additions & 0 deletions configs/filebeat/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
logging.level: debug
logging.selectors:
- "*"

filebeat.inputs:
- type: filestream
enabled: true
# Я запущу filebeat в докере и проброшу логи приложения по данному пути
paths:
- ./logs/*.log
# В fields мы можем указать дополнительные поля, а затем в logstash вытаскивать их
# и делать какую-нибудь дополнительную работу с логами
fields:
# Название нашего сервиса
service: host_metrics_app
codec: plain

output.logstash:
# Будьте внимательны при запуске вне докера и вместо logstash укажите правильный адрес хоста с logstash.
hosts: [ "logstash:5044" ]
8 changes: 8 additions & 0 deletions configs/kibana/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
server.name: kibana
server.host: 0.0.0.0
server.publicBaseUrl: "http://localhost:5601"
monitoring.ui.container.elasticsearch.enabled: true # Для корректного сбора метрик с elastic search, запущенного в контейнере

elasticsearch.hosts: [ "http://elasticsearch:9200" ]
#elasticsearch.username: elastic
#elasticsearch.password: MyPw123
1 change: 1 addition & 0 deletions configs/logstash/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
http.host: "0.0.0.0"
4 changes: 4 additions & 0 deletions configs/logstash/pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- pipeline.id: service_stamped_json_logs
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "/usr/share/logstash/config/pipelines/service_stamped_json_logs.conf"
37 changes: 37 additions & 0 deletions configs/logstash/pipelines/service_stamped_json_logs.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
input {
file {
path => "/logs/app.log"
sincedb_path => "/usr/share/logstash/sincedb"
start_position => "beginning"
}
}

filter {
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{LOGLEVEL:level}%{SPACE}%{NUMBER:pid}%{SPACE}---%{SPACE}\[%{DATA:thread}\]%{SPACE}%{DATA:logger}%{SPACE}:%{SPACE}%{GREEDYDATA:message}"
}
tag_on_failure => ["_grokparsefailure"]
}

date {
match => [ "timestamp", "ISO8601" ]
target => "@timestamp"
}
}

output {

elasticsearch {
hosts => "elasticsearch:9200"
index => "logs-%{+YYYY.MM.dd}"
user => "elastic"
password => "MyPw123"
ssl => false
ssl_certificate_verification => false
}

stdout {
codec => rubydebug
}
}
21 changes: 17 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ services:
image: elastic/elasticsearch:8.10.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
ELASTIC_PASSWORD: "MyPw123"
discovery.type: single-node
bootstrap.memory_lock: true
ES_JAVA_OPTS: "-Xms4g -Xmx4g"
volumes:
- ./configs/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
ulimits:
memlock:
soft: -1
Expand All @@ -19,8 +23,10 @@ services:
image: logstash:8.10.1
container_name: logstash
volumes:
- ./configs/logstash/pipelines:/usr/share/logstash/config/pipelines:ro
- ./logs:/logs
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
- ./configs/logstash/config.yml:/usr/share/logstash/config/logstash.yml
- ./configs/logstash/pipelines.yml:/usr/share/logstash/config/pipelines.yml
ports:
- "5044:5044"
networks:
Expand All @@ -29,6 +35,11 @@ services:
kibana:
image: kibana:8.10.1
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_SERVICEACCOUNTTOKEN=AAEAAWVsYXN0aWMva2liYW5hL2tpYmFuYS10b2tlbjprekRyaVh2SlRUaU5sbkdYdjZvdnl3
volumes:
- ./configs/kibana/config.yml:/usr/share/kibana/config/kibana.yml:ro
ports:
- "5601:5601"
networks:
Expand All @@ -39,6 +50,8 @@ services:
app:
build: .
container_name: spring-app
volumes:
- ./logs/:/logs/
ports:
- "8080:8080"
networks:
Expand All @@ -48,4 +61,4 @@ services:

networks:
elk:
driver: bridge
driver: bridge
Loading