рдИрдПрд▓рдХреЗ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд╕реЗрдЯ рдХрд░рдирд╛

рдкрд░рд┐рдЪрдп

рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд▓реЙрдЧ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдИрдПрд▓рдХреЗ рдХреЛ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЖрд▓реЗрдЦ рдЗрд╕ рд╕реНрдЯреИрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред

рд╣рдордиреЗ рдЗрд╕рдХреА рд╕рднреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдХрд╛рдлреА рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рддреИрдпрд╛рд░ рдЫрд╡рд┐рдпрд╛рдВ рдореМрдЬреВрдж рд╣реИрдВ, рдлрд┐рд░ рднреА рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдв рд▓рд┐рдпрд╛ рд╣реИред

рд╣рдордиреЗ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯреИрдХ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ docker-compose.yml рдерд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд▓рдЧрднрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрдЯреИрдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдФрд░ рд╣рдореЗрдВ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЬреАрдд рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░реАрдм рдереА, рдЕрдм рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реАред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рддреБрд░рдВрдд рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХрд╛ рдЕрд▓рдЧ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЙрдирдХреЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЙрдЪрд┐рдд рд╣реИред

рддреЛ, рд╣рдордиреЗ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХреАред

рдкрд░реНрдпрд╛рд╡рд░рдг, рдкрд░рд┐рдирд┐рдпреЛрдЬрди, рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЪрд▓рд╛рдирд╛

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╣рдо docker-compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдпреЛрдЧ MacOS рдФрд░ Ubuntu 18.0.4 рдкрд░ рдХрд┐рдП рдЧрдП рдереЗред

рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЫрд╡рд┐ рдЬреЛ рд╣рдорд╛рд░реЗ рдореВрд▓ docker-compose.yml рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдереА рд╡рд╣ docker.elastic.co/logstash/logstash:6.3.2 рд╣реИ

рд╣рдо рдЗрд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ.

рд╣рдордиреЗ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ docker-compose.yml рд▓рд┐рдЦрд╛ред рдмреЗрд╢рдХ, рдЫрд╡рд┐ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣реЗ рдереЗ, рдЬрд╣рд╛рдВ рд╣рдо рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рд╕реЗ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ

рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЛ рдпрд╛ рддреЛ рдПрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕реЗ *.conf рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдХрдИ рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ , рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП .conf рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред
рд╣рдордиреЗ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдЕрдкрдирд╛рдпрд╛. рдпрд╣ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдФрд░ рдорд╛рдкрдиреАрдп рд▓рдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди.рд╡рд╛рдИрдПрдордПрд▓ рдмрдирд╛рдИ, рдФрд░ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП .conf рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд╛рд▓реЗрдВрдЧреЗред

рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ - logstash.ymlред рд╣рдо рдЗрд╕реЗ рдЫреВрддреЗ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдЗрд╕реЗ рд╡реИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рддреЛ, рд╣рдорд╛рд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛:

рдИрдПрд▓рдХреЗ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд╕реЗрдЯ рдХрд░рдирд╛

рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрднреА рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреЛрд░реНрдЯ 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

рд╣рдо рдпрд╣рд╛рдБ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ?

  1. рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╡реЙрд▓реНрдпреВрдо рдореВрд▓ docker-compose.yml (рдЬрд╣рд╛рдВ рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреИрдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╕реЗ рд▓рд┐рдП рдЧрдП рдереЗ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдпрд╣рд╛рдВ рд╕рдордЧреНрд░ рддрд╕реНрд╡реАрд░ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  2. рд╣рдо docker.elastic.co/logstash/logstash:6.3.2 рдЫрд╡рд┐ рд╕реЗ рдПрдХ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд╕реЗрд╡рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ logstash_one_channel рдирд╛рдо рджреЗрддреЗ рд╣реИрдВред
  3. рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдкреЛрд░реНрдЯ 5046 рдХреЛ рдЙрд╕реА рдЖрдВрддрд░рд┐рдХ рдкреЛрд░реНрдЯ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  4. рд╣рдо рдЕрдкрдиреА рдкрд╛рдЗрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ ./config/pipelines.yml рдХреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓ /usr/share/logstash/config/pipelines.yml рдкрд░ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЗрд╕реЗ рдЙрдард╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рджреЗрдЧрд╛, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВред
  5. рд╣рдо ./config/pipelines рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪреИрдирд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, /usr/share/logstash/config/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

рдФрд░ рд╣рдо рдХрдВрдЯреЗрдирд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ:

рдИрдПрд▓рдХреЗ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд╕реЗрдЯ рдХрд░рдирд╛

рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рд╣рдо рдпрд╣ рднреА рджреЗрдЦрддреЗ рд╣реИрдВ:

рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:28:59,790][рддреНрд░реБрдЯрд┐][рд▓реЙрдЧрд╕реНрдЯреИрд╢.рд▓рд╛рдЗрд╕реЗрдВрд╕рдЪреЗрдХрд░.рд▓рд╛рдЗрд╕реЗрдВрд╕рд░реАрдбрд░] рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде {:рд╕рдВрджреЗрд╢=>"рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ: [http://elasticsearch:9200/][рдореИрдиреНрдЯрд┐рдХреЛрд░ ::рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд┐рдлрд▓рддрд╛] рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ", ...

рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:28:59,894][рд╕реВрдЪрдирд╛ ][рд▓реЙрдЧрд╕реНрдЯреИрд╢.рдкрд╛рдЗрдкрд▓рд╛рдЗрди ] рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╢реБрд░реВ рд╣реБрдИ {:рдкрд╛рдЗрдкрд▓рд╛рдЗрди_рдЖрдИрдбреА=>"редрдирд┐рдЧрд░рд╛рдиреА-рд▓реЙрдЧрд╕реНрдЯреИрд╢", :рдереНрд░реЗрдб=>"# "}

рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:28:59,988][рд╕реВрдЪрдирд╛ ][рд▓реЙрдЧрд╕реНрдЯреИрд╢.рдПрдЬреЗрдВрдЯ ] рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВ {:count=>2, :running_pipelines=>[:HABR, :.monitoring-logstash'], :non_running_pipelines=>[ ]}
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29T11:29:00,015][ERROR][logstash.inputs.metrics] рдПрдХреНрд╕-рдкреИрдХ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдкрд░ рдирд╣реАрдВред рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдкрд░ рдПрдХреНрд╕-рдкреИрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИрдВ.
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:29:00,526][рдЬрд╛рдирдХрд╛рд░реА ][рд▓реЙрдЧрд╕реНрдЯреИрд╢.рдПрдЬреЗрдВрдЯ] рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╢реБрд░реВ рд╣реБрдЖ {:рдкреЛрд░реНрдЯ=>9600}
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:29:04,478][рд╕реВрдЪрдирд╛ ][logstash.outputs.elasticsearch] рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29T11:29:04,487][рдЪреЗрддрд╛рд╡рдиреА][logstash.outputs.elasticsearch] рдореГрдд ES рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред {:рдпреВрдЖрд░рдПрд▓=>тАЬElasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::ResolutionFairure] рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ"}
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:29:04,704][рд╕реВрдЪрдирд╛ ][logstash.licensechecker.licensereader] рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ {:healthcheck_url=>http://elasticsearch:9200/, :path=> "/"}
рд▓реЙрдЧрд╕реНрдЯреИрд╢_рд╡рди_рдЪреИрдирд▓ | [2019-04-29рдЯреА11:29:04,710][рдЪреЗрддрд╛рд╡рдиреА ][logstash.licensechecker.licensereader] рдореГрдд рдИрдПрд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред {:url=>тАЬElasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://elasticsearch:9200/][Manticore::ResolutionFairure] рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ"}

рдФрд░ рд╣рдорд╛рд░рд╛ рд▓реЙрдЧ рд╣рд░ рд╕рдордп рдЦрд░рд╛рдм рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдиреНрдЪ рд╣реЛ рдЧрдИ рд╣реИ, рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдФрд░ рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рд╣реИред Elasticsearch: 9200ред
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ logstash.conf рдореЗрдВ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред рдЖрдЦрд╝рд┐рд░рдХрд╛рд░, рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрд▓реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред

рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди 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 | }

рдПрдХ рдЪреИрдирд▓ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдирд╛

рддреЛ рд╣рдордиреЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛. рдЕрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдЕрднреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рди рдЫреБрдПрдВ, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдХ рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдХреЗ рд╣рдо рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЪреИрдирд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣рд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ рдпрд╣рд╛рдВ
рдпрджрд┐ рдЖрдк рд░реВрд╕реА рдореЗрдВ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдПрдХ рд▓реЗрдЦ(рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рдХреНрд╡реЗрд░реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛)ред

рдЪрд▓рд┐рдП рдЗрдирдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЯреАрд╕реАрдкреА рдкрд░ рдХрд╛рдо рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рд╛рд░реНрдЯрдмреАрди рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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
   }
  }

рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рд╣рдордиреЗ рдлрд╝рд╛рдЗрд▓ рдореЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рднреА рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрджрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдХрд┐рд╕реА рдПрдЬреЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕реНрдерд╛рдиреАрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдЯреЗрд▓-рдПрдл рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддред рдирдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкрдврд╝рддрд╛ рд╣реИ рдпрд╛, рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рддрд╛ рд╣реИред

рддреЛ рд╣рдо рдХреНрдпрд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

  1. рд╣рдо рдРрд╕реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВред
  2. рд╣рдо рд╡рд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдХрдИ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЬреЛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рд╣реИ рдЙрд╕реЗ рдХрд╣рд╛рдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
  3. рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ, рддреЛ рдЙрд╕реЗ рдпрд╣ рдбреЗрдЯрд╛ рджреЛрдмрд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рди рд╣реЛред
  4. рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдмрдВрдж рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЬрд╛рд░реА рд╣реИ, рддреЛ рдЬрдм рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВрдЧреЗ, рддреЛ рд╣рдореЗрдВ рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП 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_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 | }

рд╣реБрд░реНрд░реЗ! рд╕рдм рдХреБрдЫ рдЙрдард╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛.

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХрдВрдЯреЗрдирд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (docker stop logstash_one_channel && docker rm logstash_one_channel), рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рддрдХ рдЙрд╕реЗ рдкрдврд╝рд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕реЗ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдирдИ рд▓рд╛рдЗрдиреЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред

рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝рдирд╛

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдкрд╣рд▓реА рдмрд╛рд░ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рд▓реЙрдиреНрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдЧ рд╣реИрдВ рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдпрджрд┐ рд╣рдо рдКрдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЗрдирдкреБрдЯ рд╕реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рдХреЗрд╡рд▓ рдирдИ рд▓рд╛рдЗрдиреЗрдВ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред

рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд▓рд╛рдЗрдиреЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП:

input {
  file {
    start_position => "beginning"
    path => "/usr/share/logstash/input/*.log"
   }
  }

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред рдЙрдиреНрд╣реАрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдЧрд╕реНрдЯреИрд╢ рдХреЗ рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдереАрдВ, рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдпрд╛рдж рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд▓реЗрдЧрд╛ред

рдЖрдЗрдП рдпрд╣рд╛рдВ рд░реБрдХреЗрдВ рдФрд░ рдЗрдирдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред рдЕрднреА рднреА рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рд░реВрдЯрд┐рдВрдЧ рдФрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЪреИрдирд▓ рд╕реЗ рд╕рдВрджреЗрд╢ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╕реВрдЪрдирд╛рддреНрдордХ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИрдВред рд╡реЗ рдЯреИрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реИрдВред рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд╣реИрдВ, рдЕрдиреНрдп рддреНрд░реБрдЯрд┐ рд╣реИрдВред

рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╡реЗред рд╣рдо рдПрдХ рдЪреИрдирд▓ рдореЗрдВ рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЬрд╛рдПрдБред

рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд╕реЗ рдПрдХ рд╣реИрд╢ (рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ) рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛рдиреАред рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреБрджрд╛ рдХрд░рдирд╛. рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЙрд╕рдХреЗ рдЕрдкрдиреЗ рдЪреИрдирд▓ рдкрд░ рднреЗрдЬреЗрдВрдЧреЗред

рдЧреНрд░реЛрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛

рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдЙрдирд╕реЗ рдлрд╝реАрд▓реНрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд▓рдЧрдЗрди рд╣реИ - рдЧреНрд░реЛрдХред

рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВ)ред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ), рдореИрдВ рдЕрдкрдирд╛ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

1 рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢1
2 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢2

рд╡реЗред рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реВрдЪрдирд╛/рддреНрд░реБрдЯрд┐, рдлрд┐рд░ рдмрд┐рдирд╛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рдХреБрдЫ рд╢рдмреНрджред
рдпрд╣ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЧреНрд░реЛрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЯрд░реНрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

filter {
  grok {
    match => { "message" => ["%{INT:message_id} %{LOGLEVEL:message_type} %{WORD:message_text}"] }
   }
  } 

рдореВрд▓рддрдГ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ. рддреИрдпрд╛рд░ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ INT, LOGLEVEL, WORDред рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдкреИрдЯрд░реНрди, рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдВ

рдЕрдм, рдЗрд╕ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреАрди рдлрд╝реАрд▓реНрдб рдХреЗ рд╣реИрд╢ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреА: message_id, message_type, message_textред

рдЙрдиреНрд╣реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛.

if рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗрдХреНрд╢рди рдореЗрдВ рд░реВрдЯ рдХрд░рдирд╛

рдЖрдЙрдЯрдкреБрдЯ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ, рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рджреЛ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рдереЗред рдХреБрдЫ - рдЬреЛ iNFO рд╣реИрдВ, рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдВрдЧреЗ, рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдо рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд░реЗрдВ? рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╕реБрдЭрд╛рддреА рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд░реНрдкрд┐рдд message_type рдлрд╝реАрд▓реНрдб рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рджреЛ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ: INFO рдФрд░ ERRORред рдЗрд╕реА рдЖрдзрд╛рд░ рдкрд░ рд╣рдо if рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреБрдирд╛рд╡ рдХрд░реЗрдВрдЧреЗред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ