ááá˘áŤ
áá áľáááľ áĽá¨áá¨áá áĽáŤá áĽá ááĽá áŤáá¸á á¨á°ááŤáŠ áááἠááľáłááťáá˝á á¨ááľáŹáľ á áľáááááľ á ááĽáááᢠELK áĽáá° ááłáŞáŤ á°ááá§á. áá á˝áá áá á ááá á áááááľ á¨ááľ áľááá áááľ áŤááŤá.
áááá á á
áášá ááááá˝ áἠá áááŁáá, ááá áá á°ááŁáŤá á˝ááŽá˝á á áááłáľ áá áá°áŽá áĽáááááá. áá
á¨ááá áľ ááááŤáľ á á á áááł áľáá
áá á áŤáá á°ááľ áĽá ááá-á¨á°á°áŠ ááľáá˝ áĽá ááĽááśá˝ á áááŤá¸á áá ᣠá˘áŤááľ áĽá á áááá¸áá˘
ááááá á áśáá°á á áááĽá á áŠá á á°ááá°ááᢠá¨áá
á á áá, áĽá áááľ ááťáá ááá á˝áá áá ááá á¨á áááľá¨á á¨ááŤáľá˝á á á°ááĽ-á¨á°áťá docker-compose.yml áá á. áĽáá áľá ááľá á¨á°áá¨á ááľááá, á áá ááááłá˝áá áááááľ áľáá˝ áĽáááŤáá áĽá ፠áá.
áĽáá° á áááłá°á áá á¨áá°áá áŞáŤá˝á áááἠááľáłááťáá˝á áááá á áĽá áááľáŹáľ áľáááąá áááľá°áŤá¨á á¨á°á°á¨áá áá¨áŤ áá á¨áááľ áá á áá°áłáŤáᢠáľááá , áĽáŤááłááąá á áŤá á á°áá á ááĽááľ á áá áĽáá°áá ááľááá, á¨ááŤá áá° áááááłá¸á ááááą.
áľááá á áááľáłá˝ áĽááááá˘
á áŤáŁá˘, áá°ááŤáľ, Logstash á ááŤáŁ ááľáĽ ááľáŹáľ
ááá°ááŤáľ, docker-compose áĽáá áááá, áĽáá á¨á°ááášáľ áá¨áŤáá˝ á MacOS áĽá Ubuntu 18.0.4 áá á°áŤáá°áá.
á áĽá áŚáŞá áá docker-compose.yml áá á¨áá á¨á á¨áááľáłá˝ ááľá docker.elastic.co/logstash/logstash:6.3.2 áá
ááá¨áŤáá˝ áĽáá áááá.
áááľáłá˝ ááááľáŁ á¨á°áᨠdocker-compose.yml á˝áááᢠá áĽááἠááľáá á¨áľááá ááľáአááľááá ááťá áá á ᣠáá á¨ááá á áá ᣠá¨áśáá°á-áŽáááľ ááá ááá ááĽá á¨ááááá áľ á ááľ á¨á°áá°á á°ááŁá ááłáá˘
áľá áá á áááá˝ á á ááŠ
á¨ááĽáŤáŞáŤá áĽáá°áá¨á°áá, logstash áĽáá° á ááľ á°áἠáá°áŤ áá˝áá, á áá
áááł, *.conf áááá ááá ááĽá áťááá˝ ááľá°ááá áŤáľááááá, á áá
áá ᨠpipelines.yml áááá ááľá°ááá áŤáľááááá, áĽáąá á á°áŤá. , ááĽáŤááłááą áťáá áááá˝á .conf áááá¨áłáá˘
ááá°ááá ááááľ áŤááᢠá¨á áá áááἠáĽá áá°á á¨áá˝á ááľáá áá áᢠáľááá
, pipelines.yml áá áá, áĽá ááĽáŤááłááą áťáá .conf áááá˝á á¨áááľáááĽá áľ á¨á§á᧠ááľáá áá፠á áŤá.
á ááŤáŁá ááľáĽ áá á¨ááááŞáŤ ááá á á - logstash.yml. áĽá á áááŤáá, áĽááłá áĽáá áááá.
áľááá á¨áĽá á¨áá፠ááá á á¨áá¨á°áá áá-
áááá, áá
á áááľ 5046 áá á¨áá¤áľ áá¨á áááá á tcp áá áĽáá áĽááľáŁáá, áĽá 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 (ááá ááá á¨á°ááá¨á áľ) áá áĽá áĽááą áĽáá á á ááá ááľá áá á¨áá°á á°á˝áá á áááŤá¸áá áĽáŹ á áľáŁááá˘
- á ááľ á áááááľ (á áááááśá˝) logstash ᨠdocker.elastic.co/logstash/logstash:6.3.2 ááľá áĽáááĽáŤáá áĽá logstash_one_channel á¨áá áľá áĽáá°á áááá˘
- áá°áĽ 5046 á ááŤáŁá ááľáĽ áá° á°ááłáłá á¨ááľáĽ áá°áĽ áĽááľá°áááááá˘
- á¨áĽáá ./config/pipelines.yml á¨á§á᧠ááááŞáŤ áááá á áá áŤáááŤá ááľáĽ ááłáá /usr/share/logstash/config/pipelines.yml ááá áĽááááŁááᤠáááľáłá˝ ááľáś á°ááŁá˘-áĽáť áŤá°ááááá˘
- á¨á§á᧠áá á¨áľ áááá˝ áŁááá áľ á¨./config/pipelines áááŤá áá° /usr/share/logstash/config/pipelines áá፠áĽá áĽáá˛áá á°ááŁá˘-áĽáť áĽáá°áááááá˘
pipeg.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] á¨áááľ áá¨áá á¨áááľ á áááá á°ááľáŽ áááŁáľ á áá°áťáá ::á¨áĽáŤáľ ááľááľ]ááľá˛á áááâáŁ...
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,:".ááľáľá-áááľáłá˝"]ᣠ:non_running_pipelines=>[ ]}
logstash_one_channel | [2019-04-29T11:29:00,015][ERROR][logstash.inputs.metrics] X-Pack á Logstash áá á°ááá áá á Elasticsearch áá á áá°ááᢠáĽáŁáá á¨ááľáľá áŁá
áŞáá ááá áá X-Packá á Elasticsearch áá ááŤáᢠááá˝ áŁá
áŞáŤáľ ááአáá˝ááá˘
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] [ááľá ááááŤ] [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][ááľá ááááŤ] [logstash.licensechecker.licensereader] á¨áá° á¨ES ááłá áá áŤááá áááááľ áááľááłáľ áááŻááŁááá áá áľá
á°áľ á ááĽááłáᢠ{: url=>"
áĽá á¨áĽá áá áá áá ááłáŁáá˘
áĽáá
á§áá§á á á°áłáŤ áááł á¨ááá¨áá áááĽááľáŁ á áá á¨áľá
á°áľ áááááąá áĽá á á˘áŤ áááááá ááá¨á á¨ááá¨áá áááĽááľ á á á¨ááá´á á áááťááá˘
áá
á¨áááá á ááľá ááľáĽ á á°áŤá°á°á logstash.conf ááľáĽ á¨elasticsearch áááŠá áá¨ááἠá ááአááᢠá¨ááá á áá, áááľáłá˝ áĽáá° á¤áá ááá á áŤá áá áĽáá°áá°áŤ ááááłá, áĽá áĽá áá¨áá.
ááľáŤáľ áá˝áá, áá ááš á áá°áá.
áááľáá áá áá áźá á 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
á áá ááá ááá á°á á ááᢠááŤáŁá ááá¨áŤáá˝ ááá áá.
á á á áᥠáŁáá áŽááśá ááľáĽ áĽáá°áá áá°á¨áĽ áĽáá˝ááááĄ-
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 | }
á á ááľ áťáá ááľáĽ ááľáŠ
áľááá ááááᢠá áá áááľáłá˝ á ááĽáł ááááá áá ááá°áľ áľá˝ááá ᢠáá áá ᨠpipelines.yml áááá á ááአá¨á ááľ áťáá áá á ááľáŤáľ áá ááááľ áĽáá°ááá˝á áĽááá˘
á¨á°áᥠáá
á ááá áá á áĽáŽ á¨ááĽáŤáľ á á ááá ááá
áĽáá
áŚáá´áá áááŞáŤ ááľáĽ á á°áἠá°áĽáŤááˇá áááľ á ááĽá
á áŠá˛áŤá ááá ἠá¨áááá˝á áá
á á°á áááá áľ
á¨áá¤áľ ááá á á á°á á°á¨á°á áĽáááľá˘ áľáŤáá á tcp áá á áá°áá. áĽáá áá áá á áľá°áłá˝ ááá áá˝áá?
á¨áἠááľ á áá áá áááááśá˝á ááááŠ
á ááśáá˛á á¨áá¨áŤ áááááśá˝á ááááá¨áľ áĽáá°áá
áŤá á áľá°áłá˝ ááľá á áá˘
áá
áá áááľá¨á, á ááá˘áŤá ááá ááľáĽ á¨áἠá˘á á°á°áŞá ááŤá°áľ áŤáľáááááłá.
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
}
}
á¨ááá ááἠá ááááľ áá
áĽáá˛áá á¨ááá áááłá ááááá¨áľ ááľááá. á¨ááá áá á áĽáŠ áááł á¨áá°áŤ á¨áá, ááá á áááľ ááŞá á áŤáľáááá, áĽáŠ, á˘áŤááľ áá áŤáŁá˘áŤá áĽá á ááá áá˝áá.
áĽáá° ááááŤá, á¨á á°áŤá áá´á á¨á áŤáľ -f áá á°ááłáłá ááá á áá áľ, áááľá. á á˛áľ ááľááŽá˝á áŤááŁá ááá áĽáá° á ááŤá áááá ááá áŤááŁá.
áľááá áĽá ááááľ á¨áááááá:
- á á ááľ á¨áááἠááľáłááť ááá áá á¨á°á¨áአááľááŽá˝á ááá á áĽáááááá.
- á¨á°áá ááá á¨á¨áľ áááá¨áľ áĽá¨áťáá áá° áĽá á¨áááἠááľáłááťáá˝ á¨á°áá ááἠááá á áĽááááááá˘
- áááľáłá˝ áĽáá°áá á˛ááá áá á ááἠáĽáá°áá áĽáá°áááá áá áá¨ááἠáĽááááááá˘
- áááľáłá˝ á¨á°á°áá¨á áĽá ááᥠá áááá˝ áá ááťáá á¨áá á áĽáąá áľáááľ áá áá ááἠáĽáá°ááá á áá¨ááἠáĽááááááá˘
áá¨áŤáá áááŤááľ á ááľ á°á¨á᪠ááľáá áá° 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
á¨áááἠááľáłááť áááá˝á áááá á áĽá áááá áľáááá áĽáá áááá-
â¨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 | }
á áŁá áĽáŠ! ááá á°ááľáˇá, ááááą á áľááá á°ááľáá, ááá ááá á°á á áá.
áááľáłá˝ áŤáá áĽá áĽáá°áá áŤáľáááŠá˘ áĽáá áĽá ᢠáááłá˘ áĽáááŤá˘ áĽááá á ááááŚá˝ áĽáá°áá á ááá ááá˘
áĽá á áá á áŁá á°áá áá¨áŤ.
áááľáłá˝ áĽááľáá˝ááá-
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_one_channel áĽá docker rm logstash_one_channel) ááá á áááłáᢠá¨á°áá á á áľ á¨ááá á áááἠá ááŤáŁá ááľáĽ á°á¨áá˝áˇá. á¨áŁáś á¨áááá á á˛áľ ááľááŽá˝á áĽáť ááá ááá˘
ááŁá áááá˝á á ááá ἠáá
áááľáłá˝ áááááŞáŤ áá áĽáŤááľá áá áĽáá áᣠááá áá áá áľáłá˝ á áľááľáá á áá áĽá áĽááąá áááľáŹáłá¸á áĽááááááá˘
á¨áá á á°á áááá áľ á¨áá¤áľ ááá áááľáłá˝ áĽááŤááľ ááá ááá á ááááᢠá áááľáłá˝ á á˛áľ ááľááŽá˝ áĽáť áá á¨ááľá°áááąáľá˘
ááľááŽá˝á á¨ááŁá áááá˝ áááłáĽáŁ á ááá˘áŤá ááá áá á°á¨á᪠ááľáá áŤáááĄ-
input {
file {
start_position => "beginning"
path => "/usr/share/logstash/input/*.log"
}
}
á á°á¨ááŞá ᣠáአáľááľ á á ᣠáá áááľáłá˝ áá áŤááŤá¸á á áłá˛áľ áááá˝á áĽáť áá á¨áááŤáᢠá áááľáłá˝ áĽááł ááľá ááľáĽ ááá አá°ááłáłá áááá˝ ááľááá áá áá¸áá áŤáľáłááłá áĽá á áá á ááľáŁá¸á á á˛áľ ááááŚá˝á áĽáť áááľáłáá˘
á¨áá¤áľ áááá á ááĽááľ á áá áá áĽáááᢠáĽá á°á¨á᪠á ááŤáŽá˝ á á, á áá áá áááŁá áá¨áŤáá˝ á á á áá.
ááľáá áĽá á¨ááἠáááĽ
á¨áá¨á°ááá á˝áá ááááłáľ áĽááááᣠá¨á ááľ áťáá á¨ááᥠáááááśá˝ á áá áĽáá áᣠá ááłááśáš áá¨á á°áŞ áá¸áᣠá ááłááśáš á°áá á¨áľá á°áľ áááĽááśá˝ áá¸áᢠá áá፠áááŤáŤáᢠá ááłááśáš INFO áá¸áᣠááá˝ á°áá áľá á°áľ áá¸áá˘
á áááŤá áá ááááŤá¸á áááŁá. áĽáááŤá˘ áá¨á á°áŞ áááááśá˝á á á ááľ áťáá áĽáá˝áááᣠá áááá á°áá á¨áľá á°áľ áááĽááśá˝á áĽáá˝áááá˘
áá áá áááľá¨á, áááŁáŤáľ áĽá ááááŁáľ á¨áá¤áľ ááá áááą.
á¨ááŁáŞáŤáá ááá á áá áá ááŞáá áááĽááľ áĽááá¨ááŤáá ᣠá¨áĽáą áá˝ (ááá-áĽá´áľ áĽááśá˝) áĽááááá ᣠá¨áĽáą áá ááľááá ááĽáŤáľ á¨ááá˝áá ᾠᣠáááľá ᢠáĽáá° áááłááš áá°áá°á. áĽá á áá¤áą ááá ááľáĽ áááĽááśá˝á áĽááááŁáá áĽá áĽáŤááłááąá áá° áŤáą áťáá áĽáááŤááá˘
áááĽááľá á¨ááŠá áá áá°áá°á
á¨á˝áá ááĽá¨ááááá˝á ááá°áá°á áĽá á¨ááľáŽá˝á áľáĽáľáĽ áááááľ, á ááŁáŞáŤ ááá ááľáĽ áአáááá á á - ááŽá.
áĽáá
áá áááá ááá፠áááľá áľ áŤá´á áἠáłááľááἠ(ááá
á áĽá á
áłááá˘
áá áá áááľá¨á á áá¤áľ ááľááŽá˝ á áá¸áľ áá ááá°á áŤáľáááááłá. áĽáá°áá á áááĄ-
1 áá¨á áááĽááľ1
2 á¨áľá
á°áľ áááĽááľ2
áĽáááŤá˘ ááááŞáŤ ááŞáŁ á¨á፠INFO/ERRORᣠá¨á፠á¨á°áá°á áá á¨ááá ááá°áľá˘
á áľá¸á᪠á áá°áá, ááá áá á¨á á áŤáŠá ááá
ááá¨áłáľ á á áá.
áľááá ᣠá ááŁáŞáŤá áááᣠá ááŽá áááá ááľáĽáŁ ááĽá¨áááááťá˝áá ááá°áá°á áľááá°-áĽááľá áááá á ááĽáá˘
áá á áááľááá˘
filter {
grok {
match => { "message" => ["%{INT:message_id} %{LOGLEVEL:message_type} %{WORD:message_text}"] }
}
}
á áá á¨áą, áá°á á á áááá˝ áá. áĽáá° INTᣠLOGLEVELᣠWORD áŤá ááá á¨áá á
áŚá˝ áĽá
á áá ááááᢠá¨áĽááą ááááŤ, áĽáá˛áá ááá˝ á
áŚá˝, áĽáá
ááłáŠ áá˝áá.
á ááᣠá áá ááŁáŞáŤ ááľáĽ áľáááᣠááĽá¨áááá˝á áá° áśáľáľ ááľáŽá˝ áá˝ ááá¨áŤáᥠmessage_idᣠmessage_typeᣠmessage_textá˘
á áá¤áą ááá ááľáĽ ááłáŤá.
á áá¤áą ááá ááľáĽ áááááśá˝á ááááá á¨áľáĽáá áá
á áá¤áą ááá, áĽáá°áááľáłáá°á, áááĽááśášá á áááľ áĽá¨áśá˝ áĽáá¨ááá¸á áá á. áĽááśáš - á˘áá á¨ááᣠáá° áŽááśá áĽáááŁááᣠáĽá á¨áľá á°áśá˝ ááᣠáá° ááá áĽáááŁááá˘
áĽááá á áááááśá˝ áĽáá´áľ ááŤáá áĽáá˝ááá? á¨á˝áአáááł á áľááľá áááľá áá ááá - á¨ááá á áá ᣠááľááá á¨á°áá°á á¨áááĽááľ ááááľ ááľá á áá ᣠáá á áááľ áĽá´áśá˝á INFO áĽá áľá á°áľ áĽáť áááľáľ áá˝ááᢠááááŤáá á°á á áá áá፠á¨ááá°ááá á áĽáą áá ááá˘
if [message_type] == "ERROR" {
# ĐĐ´ĐľŃŃ Đ˛ŃвОдиП в ŃаКН
} else
{
# ĐĐ´ĐľŃŃ Đ˛ŃвОдиП в stdout
}
á¨ááłáá˝ áĽá áŚááŹá°áŽá˝ áá á¨áĽáŤ ááá፠á áá
ááá ááľáĽ áááá
á áá, áľá áá°áá°ááŤá áŤáą.
á¨áŽááśá áá ááľáŁ ááá ááá áĽáá ááá˝ áá - 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 áŤáááĄ-
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
áĽááááŤáá, áĽááááŤáá, ááááá á áááľ á
á¨áśá˝ áĽááŤáá.
ááá: hab.com