áááá«ááºáž
á¡ááŒá¬ážá áá áºáá áºáá¯ááᯠááŒáá·áºáá»ááºá¡áá¯á¶ážááŒá¯á ááºááœáẠááá°áá®áá±á¬ ááŸááºáááºážá¡áá»á¬ážá¡ááŒá¬ážááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºááŸá¯ááŸáá·áº áááºááá¯ááºáá²á·ááááºá ELK ááᯠáááááá¬á¡ááŒá Ạááœá±ážáá»ááºáá²á·áááºá á€áá±á¬ááºážáá«ážááœáẠဠstack ááá¯áááºáá±á¬ááºáá¬ááœáẠáá»áœááºá¯ááºááá¯á·áá¡ááœá±á·á¡ááŒá¯á¶ááᯠááœá±ážááœá±ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠáááºážáá
áœááºážáá±á¬ááºááá¯ááºáááºá¡á¬ážáá¯á¶ážááᯠáá±á¬áºááŒááẠáááºážááá¯ááºááᯠááááºááŸááºáá¬ážáá±á¬áºáááºáž áááºááœá±á·áá»áá±á¬ ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáá¬ááœáẠá¡áá°ážá¡á¬áá¯á¶á
áá¯ááºááá¯áá«áááºá á¡ááŒá±á¬ááºážááá±á¬á· á
á¬ááœááºá
á¬áááºážáá²á· á¡áááºááá·áºáá¯ááºáá¬ážáá²á· áá¯á¶ááœá± á¡áá»á¬ážááŒá®ážááŸááá±ááá·áº á¡ááŸá¬ážá¡ááœááºážááœá± á¡áá»á¬ážááŒá®ážááŸááá¬ááŒá±á¬áá·áº á¡áááºážáá¯á¶ážáá±á¬á· á¡á²áá«ááœá±ááᯠáá»áœááºáá±á¬áºááá¯á· ááœá±á·áá²á·ááá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠdocker-compose ááŸáá
áºááá·áº stack ááᯠááŒáá·áºáá»ááºáá¬ážáááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááá¯á·ááœáẠááŒá¿áá¬áááŸáááá±á¬ááºááŒá
áºáá±á¬ stack ááᯠááŒáŸáá·áºáááºááá¯ááºá
á±ááá·áº áá±á¬ááºážááœááºá
áœá¬áá±ážáá¬ážáá±á¬ docker-compose.yml áá
áºáá¯ááŸááááºá ááŒá®ážáá±á¬á· á¡á±á¬ááºááœá²á áá®ážáá±ááŒá®ááá¯á· áááºááááºá á¡áᯠáá«ááá¯á·áá²á· ááá¯á¡ááºáá»ááºáá²á· ááá¯ááºáá®á¡á±á¬áẠáááºážáááºážáá±áž ááŒááºááá¯ááºáááºá
áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá áá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºážá០ááŸááºáááºážáá»á¬ážááᯠáááºáá¶ááá°áááºááŸáá·áº áá¯ááºáá±á¬ááºááẠá áá áºááᯠááŒááºáááºáááºááŸááºááẠáá»áœááºá¯ááºááá¯á·áááŒáá¯ážáááºážááŸá¯ááŸá¬ áá»ááºáá»ááºážáá¡á±á¬ááºááŒááºáá²á·áá«á ááá¯á·ááŒá±á¬áá·áºá áááºážááẠá¡á áááºá¡ááá¯ááºážáá áºáá¯á á®ááᯠáá®ážááŒá¬ážá á®áá±á·áá¬ááŒá®áž áááºážááá¯á·ááá»áááºáááºááŸá¯áá»á¬ážááá¯á· ááŒááºááœá¬ážááá·áºáááºáᯠáá»áœááºá¯ááºááá¯á· áá¯á¶ážááŒááºáá²á·áááºá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠlogstash ááŒáá·áºá áááºáá²á·áááºá
áááºáááºážáá»ááºá á¡áá¯á¶ážáá»ááŸá¯á ááœááºááááºáá¬áá áºáá¯ááœáẠLogstash áá¯ááºáá±á¬ááºááŒááºážá
ááŒáá·áºáá»ááºáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠdocker-compose ááá¯á¡áá¯á¶ážááŒá¯áááºá á€áá±áá¬ááœááºáá±á¬áºááŒáá¬ážáá±á¬á ááºážáááºááŸá¯áá»á¬ážááᯠMacOS ááŸáá·áº Ubuntu 18.0.4 ááœááºááŒá¯áá¯ááºáá²á·áá«áááºá
áá»áœááºá¯ááºááá¯á·ááá°áááºáž docker-compose.yml ááœáẠá á¬áááºážááœááºážáá¬ážááá·áº logstash áá¯á¶ááẠdocker.elastic.co/logstash/logstash:6.3.2 ááŒá áºáááºá
á ááºážáááºááŸá¯ááœá±á¡ááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
logstash áá¯ááºáá±á¬ááºááẠáá®ážááŒá¬áž docker-compose.yml ááᯠáá±ážáá²á·áááºá áá¯ááºáá«áááºá áááºážááẠcommand line á០image ááá¯á áááºááá¯ááºáá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠdocker-compose ááŸá¡áá¬á¡á¬ážáá¯á¶ážááᯠrun ááá·áºáááá»áá±á¬ááŒá¿áá¬áá áºáá¯ááŒá±ááŸááºážáá±áááºá
configuration ááá¯ááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºážáá»á¯ááºáá«á
áá±á¬áºááŒáá»ááºá០á¡á±á¬ááºáá«á¡ááá¯ááºáž logstash ááᯠáá»ááºáááºáá
áºáá¯á¡ááœáẠáá±á¬áºáááºážáá±á¬ááºáž áá¯ááºáá±á¬ááºááá¯ááºáááºá áááºážá¡ááŒá±á¡áá±ááœááºá áááºážááẠ*.conf ááá¯ááºá ááá¯á·ááá¯áẠáá»ááºáááºáá»á¬ážá
áœá¬á¡ááœááºá áááºážááẠpipelines.yml ááá¯ááºááᯠááŒááºáááºážááẠááá¯á¡ááºááŒá®áž áááºážá¡ááŒá±á¡áá±ááœááºá áá»ááºáááºáá
áºáá¯á
á®á¡ááœáẠ.conf ááá¯ááºáá»á¬ážááá¯á· ááá·áºááºáá±ážáá«áááºá
áá¯ááááááºážááᯠáá»áŸá±á¬ááºáá²á·ááŒáááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠááá¯á áá¬ááœááºáá±á¬ááºážááœááºááŒá®áž á¡ááœááºá¡á
á¬ážááŸááá¯á¶ááááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠpipelines.yml ááᯠáááºáá®ážááŒá®áž áá»ááºáááºáá
áºáá¯á
á®á¡ááœáẠ.conf ááá¯ááºáá»á¬ážááᯠááá·áºááá·áº ááá¯ááºááá¯ááºážáá»á¬áž áááºážááœáŸááºáá
áºáᯠááŒá¯áá¯ááºáá²á·áááºá
ááœááºááááºáá¬á¡ááœááºážááœáẠá¡ááŒá¬ážááœá²á·á ááºážáá¯á¶ááá¯áẠ- logstash.yml ááŸááááºá áá«ááá¯á·á á¡á²áá«ááᯠááááá°ážá áá«ááá¯á·á á¡á²áá«ááᯠáá¯á¶ážáááºá
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·á áááºážááœáŸááºááœá²á·á ááºážáá¯á¶-
input data ááá¯áááºáá¶áááŸááááºá áááºážááẠport 5046 ááœáẠtcp ááŒá
áºáááºáá¯áá»áœááºá¯ááºááá¯á·áá°áááŒá®áž output á¡ááœáẠstdout ááá¯á¡áá¯á¶ážááŒá¯áá«áááºá
á€áááºááŸá¬ ááááá¯á¶áž ááœáŸáá·áºáááºááŸá¯á¡ááœáẠááá¯ážááŸááºážáá±á¬ ááœá²á·á ááºážááŸá¯áá áºáá¯ááŒá áºáááºá áá¬ááŒá±á¬áá·áºáá²ááá¯áá±á¬á· áááŠážáá¬áááºá ááœáŸáá·áºáááºááá¯á·áá«á
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááœáẠဠdocker-compose.yml ááŸááááºá
version: '3'
networks:
elk:
volumes:
elasticsearch:
driver: local
services:
logstash:
container_name: logstash_one_channel
image: docker.elastic.co/logstash/logstash:6.3.2
networks:
- elk
ports:
- 5046:5046
volumes:
- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
- ./config/pipelines:/usr/share/logstash/config/pipelines:ro
áá«ááá¯á· áá®ááŸá¬ áá¬ááŒááºáá²á
- ááœááºáááºáá»á¬ážááŸáá·áº á¡áá¶á¡ááá¯ážá¡áá»ááºáá»á¬ážááᯠáá°áááºáž docker-compose.yml ( stack áá áºáá¯áá¯á¶ážááᯠá áááºááá·áºáá±áá¬) á០áá¯ááºáá°áá¬ážááŒá®áž á€áá±áá¬ááœáẠáááºážááá¯á·ááẠá¡áá¯á¶ážá á¯á¶áá¯ááºáá¯á¶ááœáŸá¬ááᯠááŒá®ážááŒá®ážáá¬ážáá¬áž áááááá¯ááºá á±áᯠáá»áœááºá¯ááºáááºáá«áááºá
- áá»áœááºá¯ááºááá¯á·ááẠdocker.elastic.co/logstash/logstash:6.3.2 áá¯á¶á០logstash áááºáá±á¬ááºááŸá¯(áá»á¬áž) áá áºáá¯ááᯠáááºáá®ážááŒá®áž áááºážááᯠlogstash_one_channel áᯠá¡áááºáá±ážáá«áááºá
- áá»áœááºá¯ááºááá¯á·ááẠááœááºááááºáá¬á¡ááœááºážá ááááºáááºáž 5046 ááᯠáá°áá®áá±á¬ á¡ááœááºážáááºáá±á«ááºááá¯á· áá±ážááá¯á·áá«áááºá
- áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á ááá¯ááºááœá²á·á ááºážááŸá¯áá¯á¶á ᶠááá¯áẠ./config/pipelines.yml ááᯠááœááºááááºáá¬á¡ááœááºáž /usr/share/logstash/config/pipelines.yml ááá¯ááºááá¯á· ááŒá±áá¯á¶ááœá²áá¬ážááŒá®ážá logstash á áááºážááᯠáá±á¬ááºáá°ááŒá®áž áááºááŸá¯áááºáᬠááŒá¯áá¯ááºáá±ážááẠááŒá áºáááºá
- áá»áœááºá¯ááºááá¯á·ááœáẠáá»ááºáááºáááºáááºáá»á¬ážáá«ááá·áº ááá¯ááºáá»á¬ážááŸáááá·áº ./config/pipelines áááºážááœáŸááºááᯠ/usr/share/logstash/config/pipelines áááºážááœáŸááºááá¯á· ááŒá±áá¯á¶ááœá²ááŒá®áž áááºážááᯠáááºáááºáᬠááŒá¯áá¯ááºáá¬ážáááºá
Pipelines.yml ááá¯ááº
- pipeline.id: HABR
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "./config/pipelines/habr_pipeline.conf"
HABR á¡ááŸááºá¡áá¬ážáá«ááŸááá±á¬ áá»ááºáááºáá áºáá¯ááŸáá·áº áááºážá ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºááá¯á· áááºážááŒá±á¬ááºážááᯠá€áá±áá¬ááœáẠáá±á¬áºááŒáá¬ážáá«áááºá
áá±á¬ááºáá¯á¶ážáá±á¬á· â./config/pipelines/habr_pipeline.confâ ááá¯ááºá
input {
tcp {
port => "5046"
}
}
filter {
mutate {
add_field => [ "habra_field", "Hello Habr" ]
}
}
output {
stdout {
}
}
áá±á¬áá±á¬áááºáá±á¬á· áá°á·áá²á·áá±á¬áºááŒáá»ááºááᯠáááŒáá·áºáá¡á±á¬ááºá á¡á²áá«ááᯠáá¯á¶ážááŒáá·áºáá¡á±á¬ááºá
docker-compose up
áá«ááá¯á· áá¬ááá¯ááŒááºáá²á
ááœááºááááºáᬠá áááºáá«ááŒá®á áááºážááá¯ááºáá±á¬ááºáá»ááºááᯠáá»áœááºá¯ááºááá¯á· á á áºáá±ážááá¯ááºáááº-
echo '13123123123123123123123213123213' | nc localhost 5046
ááœááºááááºáᬠááœááºááá¯ážááºááœáẠáá¯á¶á·ááŒááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· ááŒááºááœá±á·ááááº-
áá«áá±ááá·áºáááºáž áá
áºáá»áááºáááºážááŸá¬áá²á
logstash_one_channel | [2019-04-29T11:28:59,790][ERROR][logstash.licensechecker.licensereader] ááá¯ááºá ááºá¡áá»ááºá¡áááºááᯠááá¯ááºá ááºáá¬áá¬á០áá¯ááºáá°ááááá« {:message=>âElasticsearch Unreachable: [http://elasticsearch:9200/][Manticore ::ResolutionFailure] elasticsearch",...
logstash_one_channel | [2019-04-29T11:28:59,894][INFO ][logstash.pipeline ] ááá¯ááºááá¯ááºáž {:pipeline_id=>".monitoring-logstash", :thread=>"# "}
logstash_one_channel | [2019-04-29T11:28:59,988][INFO ][logstash.agent] ááŒá±ážááœá²áá±ááá·áº ááá¯ááºááá¯ááºážáá»á¬áž {:count=>2, :running_pipelines=>[:HABR, :"monitoring-logstash"], :non_running_pipelines=>[ ]}
logstash_one_channel | [2019-04-29T11:29:00,015][ERROR][logstash.inputs.metrics] X-Pack ááᯠLogstash ááœáẠááá·áºááœááºážáá¬ážáá±á¬áºáááºáž Elasticsearch ááœáẠááá«áááºáá«á á
á±á¬áá·áºááŒáá·áºáá±ážá¡ááºá¹áá«áááºááá¯á¡áá¯á¶ážááŒá¯ááẠElasticsearch ááœáẠX-Pack ááá¯ááá·áºááœááºážáá«á á¡ááŒá¬ážá¡ááºá¹áá«áááºáá»á¬áž áááŸáááá¯ááºáá«áááºá
logstash_one_channel | [2019-04-29T11:29:00,526][INFO ][logstash.agent ] Logstash API á¡áá¯á¶ážááŸáẠ{:port=>9600} ááᯠá¡á±á¬ááºááŒááºá
áœá¬ á
áááºáá²á·áááº
logstash_one_channel | [2019-04-29T11:29:04,478][INFO ][logstash.outputs.elasticsearch] Elasticsearch áá»áááºáááºááŸá¯ á¡áá¯ááºáá¯ááºááŒááºážááŸááááŸá ááŒáá·áºááŸá¯ááẠáá»ááºážáá¬áá±ážá
á
áºáá±ážááŸá¯ááᯠáá¯ááºáá±á¬ááºáá±ááẠ{:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,487][WARN ][logstash.outputs.elasticsearch] áá±áá¯á¶ážááœá¬ážáá±á¬ ES áá¬ááááá¯á· áá»áááºáááºááŸá¯ááᯠááŒááºáááºá¡áááºááœááºážááẠááŒáá¯ážáááºážáá²á·áá±á¬áºáááºáž á¡ááŸá¬ážá¡ááœááºážááŸááá²á·áááºá {:url=>â
logstash_one_channel | [2019-04-29T11:29:04,704][INFO ][logstash.licensechecker.licensereader] Elasticsearch áá»áááºáááºááŸá¯ á¡áá¯ááºáá¯ááºááŒááºážááŸááááŸá ááŒáá·áºááŸá¯ááẠáá»ááºážáá¬áá±ážá
á
áºáá±ážááŸá¯ááᯠáá¯ááºáá±á¬ááºáá±ááẠ{:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
logstash_one_channel | [2019-04-29T11:29:04,710][WARN ][logstash.licensechecker.licensereader] áá±áá¯á¶ážááœá¬ážáá±á¬ ES á
á¶ááá°áá¬ááá¯á· áá»áááºáááºááŸá¯ááᯠááŒááºáááºá¡áááºááœááºážááẠááŒáá¯ážáááºážáá²á·áá±á¬áºáááºáž á¡ááŸá¬ážá¡ááœááºážááŸááá²á·áááºá {:url=>â
ááŒá®ážáá±á¬á· áá»áœááºáá±á¬áºááá¯á·áá²á· ááŸááºáááºážá áá áºáá»áááºáá¯á¶áž ááœáá·áºáá±áááºá
á€áá±áá¬ááœáẠááá¯ááºááá¯ááºáž á¡á±á¬ááºááŒááºá
áœá¬ á
áááºááá¯ááºáá²á·áááºáá°áá±á¬ áááºáá±á·áá»áºááᯠá¡á
áááºážáá±á¬ááºááŒáá·áº áá®ážáá±á¬ááºážááá¯ážááŒáá¬ážááŒá®ážá á¡áá®áá±á¬ááºááŒáá·áº áááºááœááºááẠááŒáá¯ážáááºážááŸá¯á¡ááŒá±á¬ááºáž áááºáá±á·áá»áº á¡áá«áá±á¬ááºááŒáá·áº áá®ážáá±á¬ááºážááá¯ážááŒáá¬ážáá«áááºá
áá¯á¶ááœááºáá«ááŸááá±á¬ logstash.conf ááœáẠelasticsearch áááŸáááá¯ááºááŸá¯á
á
áºáá±ážáá»ááºáá«ááŸááá±á¬ááŒá±á¬áá·áº ááá¯ááá¯á·ááŒá
áºáááŒááºážááŒá
áºáá«áááºá áá±á¬ááºáá¯á¶ážááœááºá logstash ááẠElk stack ááá
áºá
áááºáá
áºááá¯ááºážá¡ááŒá
áºá¡áá¯ááºáá¯ááºáááºáá¯áá°ááááºá ááá¯á·áá±á¬áºáá»áœááºá¯ááºááá¯á·áááºáááºážááá¯ááœá²ááŒá¬ážáá¬ážáááºá
á¡áá¯ááºááŒá áºááá¯ááºáá±ááá·áº á¡áááºáááŒá±áá«áá°ážá
ááŒá±ááŸááºážáá»ááºááŸá¬ XPACK_MONITORING_ENABLED áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááŸáááá·áº á€á á áºáá±ážááŸá¯ááᯠááááºáááºááŒá áºáááºá
docker-compose.yml ááá¯á· ááŒá±á¬ááºážáá²ááŒá®áž áááºážááᯠáááºáá¶áá¯ááºáá±á¬ááºááŒáá«á áá¯á·á
version: '3'
networks:
elk:
volumes:
elasticsearch:
driver: local
services:
logstash:
container_name: logstash_one_channel
image: docker.elastic.co/logstash/logstash:6.3.2
networks:
- elk
environment:
XPACK_MONITORING_ENABLED: "false"
ports:
- 5046:5046
volumes:
- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
- ./config/pipelines:/usr/share/logstash/config/pipelines:ro
á¡áá¯áá±á¬á· á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá«áááºá ááœááºááááºáá¬ááẠá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠá¡áááºááá·áºááŒá áºáá±áá«ááŒá®á
áá±á¬áẠconsole ááœáẠáááºááá¯ááºááá¯ááºáááº-
echo '13123123123123123123123213123213' | nc localhost 5046
ááŒáá·áºáá«-
logstash_one_channel | {
logstash_one_channel | "message" => "13123123123123123123123213123213",
logstash_one_channel | "@timestamp" => 2019-04-29T11:43:44.582Z,
logstash_one_channel | "@version" => "1",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "host" => "gateway",
logstash_one_channel | "port" => 49418
logstash_one_channel | }
áá»ááºáááºáá áºáá¯á¡ááœááºáž á¡áá¯ááºáá¯ááºáááºá
áá«ááŒá±á¬áá·áº áá»áœááºáá±á¬áºááá¯á· á áááºáá²á·áá¬áá«á ááᯠáááºááẠlogstash ááá¯ááºááá¯áẠconfigure áá¯ááºááẠá¡áá»áááºáá°ááá¯ááºáááºá áá±á¬áá±á¬ááẠpipelines.yml ááá¯ááºááᯠááááá¡á±á¬ááºá áá»ááºáááºáá áºáá¯ááŒáá·áº áá¯ááºáá±á¬ááºááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á· áá¬áááá¯ááºáááºááᯠááŒáá·áºááŒáá«á áá¯á·á
áá»ááºáááºááœá²á·á
ááºážáá¯á¶ááá¯ááºááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážááá¯ááºáᬠáá±áá°áá»áááá¬áááᯠá€áá±áá¬ááœáẠááá¬ážáááºáááºá
áœá²ááœáẠáá±á¬ááºážá
áœá¬áá±á¬áºááŒáá¬ážááŒá±á¬ááºážá
áá¯ááŸá¬ážááá¯áááºáá»ááºáááºáá±á¬á· áá«ááá¯áá¯á¶ážáá«áááºá
Input ááá¹áááá± á¡ááá·áºááá·áºááœá¬ážááŒáá¡á±á¬ááºá TCP ááœááºá¡áá¯ááºáá¯ááºáááºááá¯áá»áœááºá¯ááºááá¯á·ááŒááºááŒá®ážááŒá áºáááºá áá®ááŸá¬ áááŒá¬ážáá¬ááœá± á áááºáááºá á¬ážá áᬠááŸáááá¯ááºááá²á
ááŸáá¯á¶ážáá¯ááºáá¶ááᯠá¡áá¯á¶ážááŒá¯á áááºáá±á·áá»áºáá»á¬ážááᯠá ááºážáááºáá«á
á¡ááá¯á¡áá»á±á¬áẠá
ááºážáááºááŸá¯ áááºáá±á·áá»áºáá»á¬áž áá¯ááºáá±ážááẠá€áá»áŸ á
áááºáááºá
á¬ážááœáẠá¡ááœáá·áºá¡áá±áž ááŸááá«áááºá
áááºážááá¯áá¯ááºáá±á¬ááºáááºá ááá·áºááœááºážááŸá¯á¡ááá¯ááºážááŸá heartbean ááááºá¡ááºááᯠááœáá·áºáá¬ážááẠááá¯á¡ááºáááºá
input {
heartbeat {
message => "HeartBeat!"
}
}
áááºážááá¯ááœáá·áºáá«á áá áºáááá áºáá»áŸááºáá áºááŒáááºá áááºáááºáá¶áá«á
logstash_one_channel | {
logstash_one_channel | "@timestamp" => 2019-04-29T13:52:04.567Z,
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "message" => "HeartBeat!",
logstash_one_channel | "@version" => "1",
logstash_one_channel | "host" => "a0667e5c57ec"
logstash_one_channel | }
áá»áœááºá¯ááºááá¯á· áááŒá¬áá áááºáá¶ááá¯áá«áá ááŒá¬ážáá¬á áá±á¬ááºááᯠááá·áºááẠááá¯á¡ááºáááºá
á€áááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠ10 á
áá¹ááá·áºááá¯ááºáž áááºáá±á·ááºá»ááᯠáááºáá¶áááŸááááºááŒá
áºáááºá
input {
heartbeat {
message => "HeartBeat!"
interval => 10
}
}
ááá¯ááºáá áºáá¯ááŸáá±áá¬ááá¯ááá°ááŒááºážá
ááá¯ááºáá¯ááºááá¯áááºáž ááŒáá·áºááẠáá¯á¶ážááŒááºáá²á·áááºá á¡áááºá áááºážááẠááá¯ááºááŸáá·áº á¡áááºááŒá±áá«áá á¡áááºážáá¯á¶áž áá±ááá¯á¶ážá¡ááœáẠá¡á±ážáá»áá·áºáááá¯á¡ááºáá«á
áá±á¬áºááŒáá»ááºá¡áá áááºáááºááŸá¯áá¯ááºááẠtail -fá i.e. ááá¯ááºážá¡áá áºáá»á¬ážáááºááŒááºáž ááá¯á·ááá¯áẠááœá±ážáá»ááºááŸá¯áá áºáá¯á¡áá±ááŒáá·áº ááá¯ááºáá áºáá¯áá¯á¶ážááᯠáááºáááºá
áá®áá±á¬á· áá»áœááºáá±á¬áºááá¯á· ááá¯áá»ááºáá¬á
- ááŸááºáááºážááá¯ááºáá áºáá¯ááœáẠááá·áºááœááºážáá¬ážáá±á¬ ááá¯ááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áááºáá¶ááá°ááá¯áá«áááºá
- áááºááá·áºáá±áá¬á០áááºáá¶áááŸááááºááᯠááœá²ááŒá¬ážááááŒááºááá¯ááºáá±á¬áºáááºáž ááŸááºáááºážááá¯ááºáá»á¬ážá áœá¬ááœáẠáá±ážááŸááºáá¬ážááá·áº áá±áá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºáá¶ááá°ááá¯áá«áááºá
- logstash ááᯠááŒááºáááºá áááºáá±á¬á¡áá«á áááºážááẠá€áá±áá¬ááᯠáááºáá¶áááŸááááºááá¯ááºááŒá±á¬ááºáž áá±áá»á¬á á±ááá¯áá«áááºá
- logstash ááá¯ááááºáá¬ážáá«áá áá±áá¬áá»á¬ážááá¯ááá¯ááºáá»á¬ážááá¯á·áááºáááºáá±ážáá¬ážáá±áá«ááá»áœááºá¯ááºááá¯á·áááºážááᯠrun áá±á¬á¡áá«áá»áœááºá¯ááºááá¯á·á€áá±áá¬ááá¯áááŸááááá·áºáááºááŒá áºááŒá±á¬ááºážá á áºáá±ážááá¯áá«áááºá
á ááºážáááºááŸá¯ááŒá¯áá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááá·áºáá¬ážáá±á¬ááá¯ááºáá»á¬ážááá·áºááá·áºáááºážááœáŸááºááá¯ááœáá·áºááŒá®áž docker-compose.yml ááœáẠáá±á¬ááºáááºá á¬ááŒá±á¬ááºážáá áºáá¯ááá·áºááŒáá«á áá¯á·á
version: '3'
networks:
elk:
volumes:
elasticsearch:
driver: local
services:
logstash:
container_name: logstash_one_channel
image: docker.elastic.co/logstash/logstash:6.3.2
networks:
- elk
environment:
XPACK_MONITORING_ENABLED: "false"
ports:
- 5046:5046
volumes:
- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
- ./config/pipelines:/usr/share/logstash/config/pipelines:ro
- ./logs:/usr/share/logstash/input
habr_pipeline.conf ááœáẠááá·áºááœááºážááŸá¯á¡ááá¯ááºážááᯠááŒá±á¬ááºážáá«á
input {
file {
path => "/usr/share/logstash/input/*.log"
}
}
á ááá¯ááºáá¡á±á¬ááº-
docker-compose up
ááŸááºáááºážááá¯ááºáá»á¬ážáááºáá®ážáááºááŸáá·áºáá±ážáá¬ážáááºáá»áœááºá¯ááºááá¯á·ááẠcommand ááá¯á¡áá¯á¶ážááŒá¯áá«áááº:
âšecho '1' >> logs/number1.log
{
logstash_one_channel | "host" => "ac2d4e3ef70f",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "@timestamp" => 2019-04-29T14:28:53.876Z,
logstash_one_channel | "@version" => "1",
logstash_one_channel | "message" => "1",
logstash_one_channel | "path" => "/usr/share/logstash/input/number1.log"
logstash_one_channel | }
áá¯ááºáá²á·á á¡áááºááŒá±áá«áááºá
áá áºáá»áááºáááºážááŸá¬áááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážááŒá±á¬ááºážá¡ááœááºááᯠá¡ááá¯á¡áá»á±á¬ááºááá·áºáá¬ážááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááá«áááºá ááá¯ááá¯áááºááŸá¬ á¡áá¬áááºááœáẠáá»áœááºá¯ááºááá¯á·ááẠáááºážááŒáá·áº ááŸááºáááºážáá»á¬ážááᯠá á áºáá¯ááºááá¯ááºáááºááŒá áºáááºá
áááºá ááºážááŒáá·áºáá¡á±á¬ááº-
echo '2' >> logs/number1.log
{
logstash_one_channel | "host" => "ac2d4e3ef70f",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "@timestamp" => 2019-04-29T14:28:59.906Z,
logstash_one_channel | "@version" => "1",
logstash_one_channel | "message" => "2",
logstash_one_channel | "path" => "/usr/share/logstash/input/number1.log"
logstash_one_channel | }
ááᯠá¡ááŒá¬ážááá¯ááºááá¯á·
echo '1' >> logs/number2.log
{
logstash_one_channel | "host" => "ac2d4e3ef70f",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "@timestamp" => 2019-04-29T14:29:26.061Z,
logstash_one_channel | "@version" => "1",
logstash_one_channel | "message" => "1",
logstash_one_channel | "path" => "/usr/share/logstash/input/number2.log"
logstash_one_channel | }
ááá¯ááºáááº! ááá¯ááºááᯠáá±á¬ááºáá°ááŒá®ážááŒá®á áááºážááŒá±á¬ááºážááᯠááŸááºáááºá áœá¬ áááºááŸááºáá±ážáá²á·áááºá á¡á¬ážáá¯á¶áž á¡áááºááŒá±áá«áááºá
logstash áááºááŒá®áž ááŒááºá áá«á á á±á¬áá·áºáá¡á±á¬ááºá ááááºááááºáá±á á¡á²áá«ááœá±á á€ááŸááºáááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áááºááááá«á
ááá¯áááºáž á¡áá²ááá·áºáá¯á¶áž á ááºážáááºáá»ááºá
logstash ááᯠinstall áá¯ááºááŒá®áž execute:
echo '3' >> logs/number2.log
echo '4' >> logs/number1.log
logstash ááá¯ááŒááºááœáá·áºááŒá®ážááŒáá·áºáá«-
logstash_one_channel | {
logstash_one_channel | "host" => "ac2d4e3ef70f",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "message" => "3",
logstash_one_channel | "@version" => "1",
logstash_one_channel | "path" => "/usr/share/logstash/input/number2.log",
logstash_one_channel | "@timestamp" => 2019-04-29T14:48:50.589Z
logstash_one_channel | }
logstash_one_channel | {
logstash_one_channel | "host" => "ac2d4e3ef70f",
logstash_one_channel | "habra_field" => "Hello Habr",
logstash_one_channel | "message" => "4",
logstash_one_channel | "@version" => "1",
logstash_one_channel | "path" => "/usr/share/logstash/input/number1.log",
logstash_one_channel | "@timestamp" => 2019-04-29T14:48:50.856Z
logstash_one_channel | }
áá°áž! á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá±á¬ááºáá°áá²á·áááºá
ááá¯á·áá±á¬áº á¡á±á¬ááºáá«ááá¯á·ááᯠáá»áœááºá¯ááºááá¯á·ááááá±ážááá«áááºá logstash ááœááºááááºáá¬ááᯠáá»ááºááá¯ááºáá»áŸáẠ(docker stop logstash_one_channel && docker rm logstash_one_channel)á ááá¯á·áá±á¬áẠáááºááá·áºá¡áá¬ááá¯á០áá±á¬ááºáá°áááºááá¯ááºáá«á áááºááŒá®ážáá±á¬ááá¯ááºá á¡áá±á¡áá¬ážááᯠááœááºááááºáá¬á¡ááœááºáž ááááºážáááºážáá¬ážáááºá áááºážááᯠá¡á á០á áááºáá¯ááºáá±á¬ááºáá«á ááá¯ááºážá¡áá áºáá»á¬ážááá¯áᬠáááºáá¶áááºááŒá áºáááºá
ááŸáááŒá®ážáá¬ážááá¯ááºáá»á¬ážááá¯áááºááŒááºážá
áá»áœááºá¯ááºááá¯á·ááẠlogstash ááᯠááááá¯á¶ážá¡ááŒááẠá
áááºáá¯ááºáá±á¬ááºáá±áááºáᯠááá¯ááŒáá«á
áá¯á·á ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááœáẠááŸááºáááºážáá»á¬ážááŸáááŒá®áž áááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááá¯áá«áááºá
á¡áááºááœááºá¡áá¯á¶ážááŒá¯áá²á·ááá·áº input ááá¹áááŒáá·áº logstash ááᯠrun áá«áá áááºááá·áºá¡áá¬á០áááŸááááºááá¯ááºáá«á logstash ááŒáá·áº ááá¯ááºážá¡áá
áºáá»á¬ážááá¯áᬠáá¯ááºáá±á¬ááºáá«áááºá
ááŸáááŒá®ážáá¬ážááá¯ááºáá»á¬ážá០ááá¯ááºážáá»á¬ážááᯠááœá²áá°ááá¯ááºáááºá ááá·áºááœááºážááŸá¯ááá¹áááœáẠáá±á¬ááºáááºá á¬ááŒá±á¬ááºážáá áºáᯠááá·áºááá·áºáááº-
input {
file {
start_position => "beginning"
path => "/usr/share/logstash/input/*.log"
}
}
ááá¯á·á¡ááŒááºá ááœá²ááŒá¬ážáá»ááºáá áºáá¯ááŸááááº- áááºážááẠlogstash áááŒááºááá±ážáá±á¬ááá¯ááºá¡áá áºáá»á¬ážááá¯áá¬á¡áá»áá¯ážáááºáá±á¬ááºáááºá logstash áááŒááºááœááºážáááºáááºááœááºááŸáááŸáá·áºááŒá®ážáá¬ážáá°áá®áá±á¬ááá¯ááºáá»á¬ážá¡ááœááºáááºážáááºáááºážááá¯á·áá¡ááœááºá¡á á¬ážááá¯ááŸááºáááá±ááŒá®ážááá¯áááºážááá¯á·áá²ááœááºá¡áá áºáá»á¬ážááá¯áá¬áá°áááá·áºáááºá
áá®ááŸá¬áááºááŒá®áž ááá·áºááœááºážááŸá¯á¡ááá¯ááºážááᯠáá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá ááœá±ážáá»ááºá áá¬áá»á¬ážá áœá¬ááŸááá«áá±ážáááºá ááá¯á·áá±á¬áº ááá¯áááºááŸá áá±á¬ááºáááºá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠáá¯á¶áá±á¬ááºáá«áááºá
Routing ááŸáá·áº Data Transformation
á¡á±á¬ááºáá«ááŒá¿áá¬ááᯠááŒá±ááŸááºážááŒáá·áºáá¡á±á¬ááºá áá»áœááºá¯ááºááá¯á·ááœáẠáá»ááºáááºáá áºáá¯á០áááºáá±á·áá»áºáá»á¬áž ááŸááááºá á¡áá»áá¯á·ááŸá¬ ááááºážá¡áá»ááºá¡áááºááŒá áºááŒá®áž á¡áá»áá¯á·ááŸá¬ á¡ááŸá¬ážáááºáá±á·áá»áºáá»á¬ážááŒá áºáááºáᯠááá¯ááŒáá«á áá¯á·á áááºážááá¯á·ááẠtag á¡á¬ážááŒáá·áºááœá²ááŒá¬ážáááºá á¡áá»áá¯á·ááẠINFO ááŒá áºááŒá®áž á¡áá»áá¯á·ááŸá¬ ERROR ááŒá áºáááºá
ááœááºáá±á«ááºááŸá¬ áá°ááá¯á·ááᯠááœá²áá¬ážááááºá á¡á²áá«ááœá±á áá»áœááºá¯ááºááá¯á·ááẠáá»ááºáááºáá áºáá¯ááœáẠá¡áá»ááºá¡áááºáááºáá±á·áá»áºáá»á¬ážááᯠáá±ážáá¬ážááŒááŒá®áž á¡ááŒá¬ážáá áºáá¯ááœáẠá¡ááŸá¬ážá¡ááœááºážáááºáá±á·áá»áºáá»á¬áž áá±ážááŒáááºá
áá«ááá¯áá¯ááºááá¯á·á ááá·áºááœááºážááŸá¯á¡ááá¯ááºážááá± á á áºáá¯ááºááŒá®áž á¡ááœááºááᯠááœáŸá±á·áá«á
á á áºáá¯ááºááŒááºážááá¹áááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºážááŸáá·áºá¡áá¯ááºáá¯ááºááá¯ááºááá·áº hash (áá±á¬á·áááºááá¯ážá¡ááœá²áá»á¬áž) ááá¯ááá°ááŒá®áž á¡áááºáááºáá±á·áá»áºááᯠááœá²ááŒááºážá áááºááŒá¬áá«áááºá á¡ááŒá±á¡áá±á¡á disassemble á á¡ááœááºá¡ááá¯ááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á·áá»áºáá»á¬ážááᯠááœá±ážáá»ááºááŒá®áž áá áºáá¯áá»ááºážá á®ááᯠáááºážáááá¯ááºááá¯ááºáá»ááºáááºááá¯á· áá±ážááá¯á·áá«áááºá
áááºáá±á·ááºá»ááᯠgrok ááŒáá·áº ááá¯ááºážááŒá¬ážáá¬ážáááºá
á á¬áá¬ážááŒáá¯ážáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž áááºážááá¯á·áá¶á០áááºáááºá¡á á¯á¶ááᯠááá°áááºá¡ááœááºá á á áºáá¯ááºááŒááºážááá¹á - grok ááœáẠá¡áá°ážááááºá¡ááºáá áºáᯠááŸááá«áááºá
á€áá±áá¬ááœáẠá¡áá±ážá
áááºáá±á¬áºááŒáá»ááºáá±ážááŒááºážááᯠáá»áœááºá¯ááºááá¯ááºááá¯áẠááááºááŸááºáá² (áá«á¡ááœáẠáá»áœááºá¯ááºáááºááœáŸááºážáá«áááºá
ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá áááºááẠinput strings á format ááá¯áá¯á¶ážááŒááºáááºááá¯á¡ááºáááºá áá«á·ááŸá¬ áá®ááá¯áá»áá¯áž ááŸááááº
1 á¡áá»ááºá¡ááẠáááºáá±á·áá»áº á
2 ERROR áááºáá±á·áá»áº á
á¡á²áá«ááœá±á identifier ááẠáŠážá
áœá¬áá¬ááŒá®ážá ááá¯á·áá±á¬áẠINFO/ERRORá ááá¯á·áá±á¬áẠáá±áá¬ááœááºáááŸááá±á¬ á
áá¬ážáá¯á¶ážá¡áá»áá¯á·á
ááááºáá²áá±ááá·áº áááºáááºááŸá¯ááá±á¬ááá¬ážááᯠáá¬ážáááºááá¯á· áá¯á¶áá±á¬ááºáá«áááºá
ááá¯á·ááŒá±á¬áá·áºá grok plugin á filter á¡ááá¯ááºážááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áá á¬ááŒá±á¬ááºážáá»á¬ážááᯠááá¯ááºážááŒá¬ážááẠáá¯á¶á á¶áá áºáá¯ááᯠáááºááŸááºááá«áááºá
á€áá²á·ááá¯á·áá¯á¶áá±á«áºáááá·áºáááº-
filter {
grok {
match => { "message" => ["%{INT:message_id} %{LOGLEVEL:message_type} %{WORD:message_text}"] }
}
}
á¡ááŒá±áá¶á¡á¬ážááŒáá·áº áááºážááẠáá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááŒá
áºáááºá á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ áá¯á¶á
á¶áá»á¬ážááᯠINTá LOGLEVELá WORD áá²á·ááá¯á· á¡áá¯á¶ážááŒá¯áááºá áááºážááá¯á·ááá±á¬áºááŒáá»ááºá¡ááŒáẠá¡ááŒá¬ážáá¯á¶á
á¶áá»á¬ážááᯠá€áá±áá¬ááœáẠááœá±á·ááá¯ááºáá«áááºá
ááᯠá€á á áºáá¯ááºááŸá¯ááᯠááŒááºáá»á±á¬áºááŒááºážááŒáá·áºá áá»áœááºá¯ááºááá¯á·á á á¬ááŒá±á¬ááºážááẠmessage_idá message_typeá message_text áááºáááºáá¯á¶ážáá¯á hash á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáá«áááºá
áááºážááá¯á·ááᯠoutput ááá¹áááœááºááŒááááá·áºáááºá
if command ááᯠá¡áá¯á¶ážááŒá¯á á¡ááœááºá¡ááá¯ááºážááá¯á· áááºáá±á·áá»áºáá»á¬ážááᯠáááºážááŒá±á¬ááºážáá±ážááŒááºážá
á¡ááœááºá¡ááá¯ááºážááœááºá áá»áœááºá¯ááºááá¯á·ááŸááºááááá²á·ááá¯á·á áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á·áá»áºáá»á¬ážááᯠáááºážááŒá±á¬ááºážááŸá áºáá¯á¡ááŒá Ạááœá²ááœá¬ážáááºááŒá áºáááºá iNFO ááŒá áºááá·áº á¡áá»áá¯á·ááẠááœááºááá¯ážááºááá¯á· áá¯ááºáá±ážáááºááŒá áºááŒá®áž á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºáá áºáá¯ááá¯á· áá¯ááºáá±ážáááºááŒá áºáááºá
á€áááºáá±á·áá»áºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áááºááá¯á·ááœá²ááŒá¬ážáááºáááºážá ááŒá¿áá¬áá¡ááŒá±á¡áá±ááẠá¡ááŒá±áá áºáá¯ááᯠá¡ááŒá¶ááŒá¯áá¬ážááŒá®ážááŒá áºáááº- á¡ááŸááºáá±á¬á·á áá»áœááºá¯ááºááá¯á·ááœáẠáááºááá¯ážááŸá áºáá¯áá¬áá°ááá¯ááºááá·áº áá®ážááŒá¬áž message_type á¡ááœááºáá áºáá¯ááŸáááŒá®ážááŒá áºáááº- INFO ááŸáá·áº ERRORá á€á¡ááŒá±áá¶áá±á«áºááœáẠif statement ááá¯á¡áá¯á¶ážááŒá¯á ááœá±ážáá»ááºááŸá¯ááŒá¯áá¯ááºáááºááŒá áºáá«áááºá
if [message_type] == "ERROR" {
# ÐЎеÑÑ Ð²ÑвПЎОЌ в Ñайл
} else
{
# ÐЎеÑÑ Ð²ÑвПЎОЌ в stdout
}
á¡ááœááºáá»á¬ážááŸáá·áº á¡á±á¬áºááá±áá¬áá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááŒá±á¬ááºáž áá±á¬áºááŒáá»ááºááᯠá€ááá¹áááœáẠááœá±á·ááá¯ááºáá«áááºá
á¡áᯠáááá·áº áááá¯á¶ážá áá°á·áá¬áá°áá²á· áááºáááºáááºá
Console outputá á¡á¬ážáá¯á¶ážááŸááºážáá«ááẠ- stdout {}
ááá¯á·áá±á¬áº ááá¯ááºáá áºáá¯ááá¯á· ááœááºáá¬ááẠ- áá»áœááºá¯ááºááá¯á·ááẠá€á¡áá¬á¡á¬ážáá¯á¶ážááᯠááœááºááááºáá¬áá áºáá¯á០áá¯ááºáá±á¬ááºáá±ááŒá®áž áá»áœááºá¯ááºááá¯á·áá±ážáá¬ážáá¬ážáá±á¬ ááááºááᯠááŒááºáá០áááºáá±á¬ááºááŒáá·áºááŸá¯ááá¯ááºá á±áááºá¡ááœáẠá€áááºážááœáŸááºáá»ááºááᯠdocker-compose.yml ááœáẠááœáá·áºááẠááá¯á¡ááºáá«áááºá
á á¯á á¯áá±á«ááºáž:
áá»áœááºá¯ááºááá¯á·áááá¯ááºá á¡ááœááºá¡ááá¯ááºážááẠá€áá²á·ááá¯á·ááŒá áºáááº-
âšoutput {
if [message_type] == "ERROR" {
file {
path => "/usr/share/logstash/output/test.log"
codec => line { format => "custom format: %{message}"}
}
} else
{stdout {
}
}
}
docker-compose.yml ááœáẠáá»áœááºá¯ááºááá¯á·ááẠá¡ááœááºá¡ááœáẠá¡ááŒá¬áž volume ááᯠááá·áºáááº-
version: '3'
networks:
elk:
volumes:
elasticsearch:
driver: local
services:
logstash:
container_name: logstash_one_channel
image: docker.elastic.co/logstash/logstash:6.3.2
networks:
- elk
environment:
XPACK_MONITORING_ENABLED: "false"
ports:
- 5046:5046
volumes:
- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
- ./config/pipelines:/usr/share/logstash/config/pipelines:ro
- ./logs:/usr/share/logstash/input
- ./output:/usr/share/logstash/output
áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠá
áááºááá¯ááºáááºá á
ááºážááŒáá·áºááŒááŒá®áž á¡ááá¯ááºážááŸá
áºááá¯ááºážááá¯á· á¡ááá¯ááºážááœá²ááŒáá·áºááŒáááºá
source: www.habr.com