ααα ααααΈααααΆα
αααααααααααΆαααααααΆααααααααααα½ααααααααα ααΎαααααΌαααααααα»αααΉααααααΌαααΆαααΎααααΈααααΎαααΆααααααα ααα»ααααααααααΆααΆα αααΎαα ELK ααααΌαααΆαααααΎαααΎαααΆα§αααααα α’ααααααααααΉααα·ααΆααααΆα’αααΈαααα·αααααααααααΎααααα»αααΆαααα‘αΎαααααααα
ααΎααα·ααααααααααα
ααΎααααΈαα·αααααΆα’αααΈαααααααΆαααααααΆααΆααα’ααααααα ααα»ααααααΎαα
αααααααααΆαα·αααααΎααΆααααααααΆααααα αΆααΆαααααααα αααααΊαααααΆαααααΆααα·ααααααΆ αααααΈααΆααΆαα―αααΆαα
αααΎααα½ααα αα·αααΌαααΆααααααααααα½α
ααΆααααα
ααααα ααΆααΆαααα α»αα
αααΎαααΆαα αααΆαα αα
ααΆααααΎαααΆαααααΎααα½αααα
ααΎαααΆαααΆαααααααΆααααααΆαααα docker-compose α ααΎαααΈααααα
ααα ααΎαααΆαα―αααΆα docker-compose.yml ααααααααααΆαααα’ αααα’αα»ααααΆαα±ααααΎαααΎααααααααΎαααααααΆααααα αΆα α αΎαααΆα αΆααααΌα
ααΆαα½αααΎαααΆ αααααααααΆααα·ααα·ααααααα αΎα α₯α‘αΌααααααΎαααΉαααααααααΆααααα·α
ααΎααααΈααααααααααΌαααΆαααααααΎα α αΎααααααΆααΆα
ααΆα’αα»αα ααΆαααααΆααΆαααααααα ααΆααααααααααααααααααΎααααΈααα½α αα·αααααΎαααΆααααααα ααα»ααΈαααααα·ααΈααααααΎααα·αααΆαααααααααααΆαααααααα ααΌα ααααα αΎα ααΎαααΆααααααα α α·αααααΆααΆααΆαααααααα·ααααΆαααΆαααΆαα»ααΈαα½ααααΆα ααααα‘ααααΈααααΆ α αΎααααααΆαααααααα‘αααα ααΆααααααΆαααααααα½ααααα·αα
ααΌα ααααααΎαα αΆααααααΎαααΆαα½α logstash α
ααα·ααααΆα ααΆαααΆαααααααΆα ααααΎαααΆα Logstash αα αααα»ααα»αααΊααα
αααααΆααααΆαααΆαααααααΆα ααΎαααααΎ docker-compose ααΆααα·ααααααααααΆααα·αααααΆαα ααΈαααααααΌαααΆαα’αα»αααααα ααΎ MacOS αα·α Ubuntu 18.0.4 α
ααΌαααΆα logstash αααααααΌαααΆαα α»αααααααα αααα»α docker-compose.yml ααΎαααααααΎαααΊ docker.elastic.co/logstash/logstash:6.3.2
ααΎαααΉαααααΎααΆαααααΆααααΆααα·αααααα
ααΎαααΆαααααα docker-compose.yml ααΆα ααααα‘ααααΎααααΈααααΎαααΆα logstash α ααΆααΆααα·αααΆαα ααΆα’αΆα α αΆααααααΎαααΌαααΆαααΈαααααΆααααΆααααααααΆ ααα»ααααααΎααααα»ααααααααΆααααα αΆααΆααααΆαααα½α αααα’αααΈαααΆααα’ααααααΌαααΆαα αΆααααααΎαααΈ docker-compose α
ααααααα’αααΈα―αααΆαααααααα ααΆαααααααα
ααΌα
ααΆααααααααΈααΆααα·αααααΆ logstash α’αΆα
ααααΌαααΆαααααΎαααΆαααΆαααααααΆααααΆααααα½α αααα»αααααΈαααααΆααααΌαααΆαααααααΆααα―αααΆα *.conf α¬αααααΆααααΆαααααΆα
αααΎα αααα»αααααΈαααααΆααααΌαααΆαααααααΆααα―αααΆα pipelines.yml αααααΆαααα ααΉαααααΆαααα
α―αααΆα .conf αααααΆααααΆαααααΈαα½ααα
ααΎαααΆαααααααΌαααΈααΈαα ααΆα αΆααααΌα
ααΆααΎαααΆαααααααααΆααα αα·αα’αΆα
ααααΎααΆαααααααΆαααΆαα ααΌα
ααααα αΎα ααΎαααΆααααααΎα pipelines.yml α αΎααααααΎααααααΈ pipelines αααααΎαααΉαααΆααα―αααΆα .conf αααααΆααααΆαααααΈαα½ααα
αα ααΆααααα»ααα»αααΆαα―αααΆαααααααα ααΆαααααααααα½ααααααααα - logstash.yml α ααΎαβαα·αβαααβααΆβαα ααΎαβααααΎβααΆβααΌα βααΆα
ααΌα αααααα ααΆααααααααααααααααΎαα
ααΎααααΈααα½αααΆααα·αααααααααα
αΌα αααααΆααααααααααΎααααααααΆαααααΊααΆ tcp αα
ααΎα
ααα 5046 α αΎααααααΆααααααααααΎαααΉαααααΎ 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 αα ααΆααααα»ααα»α ααα 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 ααα ααΌαααα‘αΎα X-Pack αα
ααΎ Elasticsearch ααΎααααΈααααΎαα»αααΆααααα½ααα·αα·αααα αα»αααΆαααααααααα’αΆα
ααΆαα
logstash_one_channel | [2019-04-29T11:29:00,526][INFO][logstash.agent] ααΆαα
αΆααααααΎαααααααααα Logstash API endpoint {: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
α₯α‘αΌααααα’αααΈααααααααΆαααΊααα’α αα»αααααααα½α ααΆαααααααΆααααΆααα·αααααα
ααΎαα’αΆα ααΆαααααααααα αααα»ααα»αααΌααααααΆααα
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 ααααααα½αα―αα ααααα»ααααα―αααΆα 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, i.e. α’αΆααααααΆααααααΈ α¬ααΆαααααΎααα½α α’αΆαα―αααΆαααΆααααΌαα
ααΌα ααααα’αααΈαααααΎαα ααααα½αααΆαα
- ααΎαα ααααα½ααααααΆαααααααααΌαααΆααααααααα α―αααΆααααααα ααα»αα½αα
- ααΎαα ααααα½ααα·αααααααααααααΌαααΆαααααααα α―αααΆααααααα ααα»ααΆα αααΎα αααααααααα’αΆα αααααα’αααΈαααααΆαααα½αααΈααααααααΆα
- ααΎαα ααααααΎα±ααααααΆααααΆ αα αααααα logstash ααααΌαααΆαα αΆααααααΎαα‘αΎααα·α ααΆαα·αααα½αααΆααα·ααααααααααααααααααα
- ααΎαα αααα·αα·αααααΎαααΆααααα·αααΎ logstash ααααΌαααΆααα·α α αΎααα·αααααααα ααααααααααΌαααΆαααααααα α―αααΆα ααααα ααααααααΎαααααΎαααΆαααΆ ααΎαααΉαααα½αααΆααα·αααααααααα
ααΎααααΈααααΎααΆααα·ααααα ααΎααααααααααααΆαααα½αααααα 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 | }
α’ααα αΆααα! α―αααΆαααααΌαααΆαααΎα ααααΌαααααΌαααΆααααααΆαααααΆαααααΉαααααΌα α’αααΈααααααααΆαααΊααα’α
αααααα logstash α αΎαα αΆααααααΎααααααααα ααΌαβαααα αΆαα ααααΆααα ααΆαααααα ααΎααα·αααα½αααΆααααααααααΆααΆααααααααααααααα
α αΎαα₯α‘αΌααααααΆααα·αααααααααααΆα αΆααααα»αα
ααα‘αΎα logstash αα·αααααα·ααααα·:
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 αααααα logstash_one_channel && docker rm logstash_one_channel) αααααααΆαα’αααΈααΉαααααΌαααΆαααΆαααααα ααΈααΆααααα―αααΆααααααΆααααΌαααΆαα’αΆαααααΌαααΆααααααΆαα»ααα ααΆααααα»ααα»αα ααααα·αααΎα’αααααααΎαααΆαααΆααΈααααΌα ααΆααΉαααα½ααααααααααΆααααααΈααα»αααααα
ααΆαα’αΆαα―αααΆααααααΆαααααΆαα
α§αααΆααΆααΎααααα»αααΎαααααΎαααΆα logstash ααΆααΎαααααΌα ααα»ααααααΎαααΆααααααα ααα»αα½α
α αΎα α αΎαααΎαα
ααααααΎαααΆααα½αααΆα
ααααα·αααΎααΎαααααΎαααΆα logstash ααΆαα½αααααααααα
αΌααααααΎαααΆαααααΎααΆαααΎ ααΎαααΉααα·αααα½αααΆαα’αααΈααΆααα’ααα ααΆααααααααΆααααααΈααΉαααααΌαααΆαααααΎαααΆαααα logstash α
ααΎααααΈα±αααααααΆααααΈα―αααΆααααααΆαααααΆααααααΌαααΆαααΆαα‘αΎα α’ααααα½ααααααααααααααΆαααααααααα ααααααααα αΌαα
input {
file {
start_position => "beginning"
path => "/usr/share/logstash/input/*.log"
}
}
ααΎαααΈααααα ααα ααΆαααΆααα»ααααααααααΆαα½αα ααΆαααααΆααααα―αααΆαααααΈααα logstash αα·αααΆααααΆαααΎαα αααααΆααα―αααΆαααΌα ααααΆαααααΆααα½α α αΎααα αααα»αααΆααααα·αααααΆααα logstash ααΆααΆαα αα αΆαααα αααααααΆαα½α α αΎα α αΎαα₯α‘αΌααααααΉαααααααΆαα»ααααΈαα αααα»ααα½αααΆααα»αααααα
α αΌαααΎαααααα ααΈααα α αΎααα·ααααΆααααααααα αΌαα αα ααΆααααααΎαααΆα αααΎα ααα»ααααααΆαααααααααΆαααααααΆααααΎααααααΆααααΆααα·αααααααααααααααααααΆααααααααα
ααΆαααααΆααααααΌαααααΌα αα·ααα·αααααα
αααααΆααααααααααααΆααααα αΆααΆαααααα α§αααΆααΆααΎαααΆαααΆαααΈααΆααααα½α ααααααΆααααααΆα αα·αααααααΆααΆαααα α»αα αα½αααΆαα»αααααΆααΆαααααΆαα ααααααΆ INFO αααααααααΆ ERRORα
ααΎαααααΌαααααααα½ααααα α αααα ααα ααΆαααααα ααΎαβαααααβααΆαβααααααΆαβαααα»αβααΆαααβαα½α α αΎαβααΆαβααα α»αβαααα»αβαα½αβαααβα
ααΎααααΈααααΎααΌα αααααααΆααααΈααΈααααααααα αΌααα ααααααα·ααα·αααααα
αααααααΎαααααααααα ααΎαααΉααααααΆαα αΌα αααααα½αααΆα hash (key-value pairs) ααΈααΆ αααααΎαα’αΆα ααααΎααΆαααΆααα½α α αΎα αααααΊα§α αα»αααΎααΆαααααααααα α αΎααα αααα»αααααααααααα ααΎαααΉαααααΎαααΎαααΆα α αΎαααααΎααΈαα½αααα ααΆααααα»αααα·ααααααααα½αα
αααααΆαααΆαα½α grok
ααΎααααΈαααααααα’ααααα’ααααα αα·αααα½αααΆααααα»αααααΆαααΈαα½αααΆ ααΆααααααα·ααΈαααα½ααα·ααααα½ααα αααα»ααααααααααα - grok α
ααααα·αααααααααα½αα―αααΌαααααα
ααααΆααααααααΆααα·αααααΆαααα’α·αα’αααΈααΆαα
ααΈααα (αααααΆααααΏαααααααα»αααα
ααΎααααΈααααΎααΌα αααα’αααααααΌααααααα α α·αααααΎααααααααααααα’αααααααα αΌαα αααα»αααΆααα½αααααΌα αααα
1 ααΆααααααΆα 1
2 ααΆαααα α»α 2
ααΆαααααα α§ααααααααααα’ααααααααΆααααα»α αααααΆαααα INFO/ERROR αααααΆααααααΆααααα½αα
ααα½ααααααααΆαα
αααααα
ααΆαα·ααα·ααΆαααααα»ααααααΆαααααααααΆααααΎααααΈαααααΈαααααΆαααααααααα·ααααα·ααΆαα
ααΌα αααα αα αααα»ααααααααααααααααααα·ααΈαααα½α grok ααΎαααααΌααααααααααΆααααααΆαααααααααα’ααααααααααΎαα
ααΆααΉαααΎααα ααΌα αααα
filter {
grok {
match => { "message" => ["%{INT:message_id} %{LOGLEVEL:message_type} %{WORD:message_text}"] }
}
}
ααααΆααααΆααΆααααααααααααΆα ααααΌαααααα·ααα½α
ααΆααααααΌαααΆαααααΎααααΆααααΌα
ααΆ INT, LOGLEVEL, WORD α ααΆααα·αααααΆαααααα½ααα ααααΌα
ααΆααααΌααααααααα’αΆα
ααααΆααα
ααΈααα
α₯α‘αΌαααα ααααααΆαααααααααα ααααα’ααααααααααΎαααΉααααααα ααΆ hash ααααΆαα ααα½αααΈα message_id, message_type, message_textα
αα½αααΆααΉαααααΌαααΆααααα αΆααα αααα»ααααααααααααα
ααΆααααααΌαααΆααα ααΆααααααααααααααααααααΎααΆααααααααΆ if
αα αααα»αααααααααααα ααΌα αααααΎαα αα αΆα ααΎαααΉααααααααΆαααΆααΈαααααααΈαα αα½αα ααα½α - αααααΆ iNFO ααΉαα αααα ααΆαααα»αααΌα α αΎααααααΆαααα α»α ααΎαααΉααααα αααα α―αααΆααα½αα
ααΎααΎααααα ααααΆαααΆααααααααααααααΆ? αααααααααααααα αΆααΆαααααΆααααααααααΆααα½α α αΎα - αααααΆααααΈααΆααα’αα ααΎαααΆααααα’αααααααα message_type ααΆααααΆαααα½α α αΎα αααα’αΆα ααα½αααααΆαααααΈααααααααα»αααααα INFO αα·α ERROR α ααΆαααα·ααα ααΎααΌαααααΆαααα αααααΎαααΉαααααΎααΆαααααΎαααΎααααααααΎααΆααα if statementα
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
ααΎαααΎαααααΎαααΆαααΆ ααΆαααααααΆ α αΎαααΎαααΆααααα
ααααΆααΈαααααααΈαα
ααααα: www.habr.com