Fluentd: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€

Fluentd: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€

Π’ нашС врСмя Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Π±Π°Π·Π΅ Kubernetes Π±Π΅Π· стСка ELK, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π»ΠΎΠ³ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ систСмных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² кластСра. Π’ своСй ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ стСк EFK с Fluentd вмСсто Logstash.

Fluentd β€” это соврСмСнный ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ Π»ΠΎΠ³ΠΎΠ², Π½Π°Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠΉ всё Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΊ Cloud Native Computing Foundation, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° использованиС совмСстно с Kubernetes.

Π€Π°ΠΊΡ‚ использования Fluentd вмСсто Logstash Π½Π΅ измСняСт ΠΎΠ±Ρ‰ΡƒΡŽ ΡΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ комплСкса, ΠΎΠ΄Π½Π°ΠΊΠΎ, для Fluentd Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ свои спСцифичСскиС Π½ΡŽΠ°Π½ΡΡ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ· Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

НапримСр, Π½Π°Ρ‡Π°Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ EFK Π² Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с высокой ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ записи Π»ΠΎΠ³ΠΎΠ², ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Kibana Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сообщСния ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΠΎ нСсколько Ρ€Π°Π·. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм Π²Π°ΠΌ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ происходит Π΄Π°Π½Π½ΠΎΠ΅ явлСниС ΠΈ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° дублирования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Fluentd Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ ΠΊΠ°ΠΊ DaemonSet (автоматичСски запускаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΠ·Π»Π΅ кластСра Kubernetes) ΠΈ отслСТиваСт stdout Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² /var/log/containers. ПослС сбора ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΈ Π² Π²ΠΈΠ΄Π΅ JSON-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ElasticSearch, поднятый Π² кластСрном Π»ΠΈΠ±ΠΎ standalone Π²ΠΈΠ΄Π΅, Π² зависимости ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ отказоустойчивости. Π’ качСствС графичСского интСрфСйса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Kibana.

ΠŸΡ€ΠΈ использовании Fluentd с Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ситуациСй, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ElasticSearch ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ содСрТаниС ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ лишь ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ сообщСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π»ΠΎΠ³Π° Nginx. Π’ Ρ„Π°ΠΉΠ»Π΅ Π»ΠΎΠ³Π° Π΄Π°Π½Π½ΠΎΠ΅ сообщСниС сущСствуСт Π² СдинствСнном экзСмплярС:

127.0.0.1 192.168.0.1 - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0" -

Однако, Π² ElasticSearch сущСствуСт нСсколько Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих Π΄Π°Π½Π½ΠΎΠ΅ сообщСниС:

{
  "_index": "test-custom-prod-example-2020.01.02",
  "_type": "_doc",
  "_id": "HgGl_nIBR8C-2_33RlQV",
  "_version": 1,
  "_score": 0,
  "_source": {
    "service": "test-custom-prod-example",
    "container_name": "nginx",
    "namespace": "test-prod",
    "@timestamp": "2020-01-14T05:29:47.599052886 00:00",
    "log": "127.0.0.1 192.168.0.1 - [28/Feb/2013:12:00:00  0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0" -",
    "tag": "custom-log"
  }
}

{
  "_index": "test-custom-prod-example-2020.01.02",
  "_type": "_doc",
  "_id": "IgGm_nIBR8C-2_33e2ST",
  "_version": 1,
  "_score": 0,
  "_source": {
    "service": "test-custom-prod-example",
    "container_name": "nginx",
    "namespace": "test-prod",
    "@timestamp": "2020-01-14T05:29:47.599052886 00:00",
    "log": "127.0.0.1 192.168.0.1 - [28/Feb/2013:12:00:00  0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0" -",
    "tag": "custom-log"
  }
}

ΠŸΡ€ΠΈΡ‚ΠΎΠΌ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС Π΄Π²ΡƒΡ….

Π’ΠΎ врСмя фиксации Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Π»ΠΎΠ³Π°Ρ… Fluentd ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ большоС количСство ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ содСрТания:

2020-01-16 01:46:46 +0000 [warn]: [test-prod] failed to flush the buffer. retry_time=4 next_retry_seconds=2020-01-16 01:46:53 +0000 chunk="59c37fc3fb320608692c352802b973ce" error_class=Fluent::Plugin::ElasticsearchOutput::RecoverableRequestFailure error="could not push logs to Elasticsearch cluster ({:host=>"elasticsearch", :port=>9200, :scheme=>"http", :user=>"elastic", :password=>"obfuscated"}): read timeout reached"

Π”Π°Π½Π½Ρ‹Π΅ прСдупрСТдСния Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠΎΠ³Π΄Π° ElasticSearch Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запрос Π·Π° установлСнноС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ request_timeout врСмя, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ пСрСсылаСмый Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΡ„Π΅Ρ€Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡ΠΈΡ‰Π΅Π½. ПослС этого Fluentd пытаСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±ΡƒΡ„Π΅Ρ€Π° Π² ElasticSearch ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ опСрация Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ:

2020-01-16 01:47:05 +0000 [warn]: [test-prod] retry succeeded. chunk_id="59c37fc3fb320608692c352802b973ce" 
2020-01-16 01:47:05 +0000 [warn]: [test-prod] retry succeeded. chunk_id="59c37fad241ab300518b936e27200747" 
2020-01-16 01:47:05 +0000 [warn]: [test-dev] retry succeeded. chunk_id="59c37fc11f7ab707ca5de72a88321cc2" 
2020-01-16 01:47:05 +0000 [warn]: [test-dev] retry succeeded. chunk_id="59c37fb5adb70c06e649d8c108318c9b" 
2020-01-16 01:47:15 +0000 [warn]: [kube-system] retry succeeded. chunk_id="59c37f63a9046e6dff7e9987729be66f"

Однако, ElasticSearch воспринимаСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· пСрСсланных Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΡ„Π΅Ρ€Π° ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ присваиваСт ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΏΠΎΠ»Π΅ΠΉ _id ΠΏΡ€ΠΈ индСксации. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΏΠΈΠΈ сообщСний.

Π’ Kibana это выглядит Ρ‚Π°ΠΊ:

Fluentd: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€

РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

БущСствуСт нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Один ΠΈΠ· Π½ΠΈΡ… β€” встроСнный Π² ΠΏΠ»Π°Π³ΠΈΠ½ fluent-plugin-elasticsearch ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ…Π΅ΡˆΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ElasticSearch Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρ‹ Π½Π° стадии пСрСсылки ΠΈ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ дублирования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Но нСльзя Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ борСтся со слСдствиСм ΠΈ Π½Π΅ устраняСт ΠΎΡˆΠΈΠ±ΠΊΡƒ с Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°, поэтому ΠΌΡ‹ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Π΅Π³ΠΎ примСнСния.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Fluentd, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π»ΠΎΠ³ΠΎΠ² Π² случаС ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ с ΡΠ΅Ρ‚ΡŒΡŽ ΠΈΠ»ΠΈ Π²ΠΎΠ·Ρ€ΠΎΡΡˆΠ΅ΠΉ интСнсивности записи Π»ΠΎΠ³ΠΎΠ². Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ElasticSearch Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² индСкс, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, которая хранится Π½Π° дискС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π² нашСм случаС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ источник ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ возникновСнию описанной Π²Ρ‹ΡˆΠ΅ ошибки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΡ„Π΅Ρ€ Fluentd Π±ΡƒΠ΄Π΅Ρ‚ достаточного объСма ΠΈ ΠΏΡ€ΠΈ этом ΡƒΡΠΏΠ΅Π²Π°Ρ‚ΡŒ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒΡΡ Π·Π° ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ врСмя.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ€Π΅Ρ‡ΡŒ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС использования Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½Π°Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ зависят ΠΎΡ‚ мноТСства Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ²: интСнсивности записи Π² Π»ΠΎΠ³ сообщСний сСрвисами, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дисковой систСмы, загруТСнности сСтСвого ΠΊΠ°Π½Π°Π»Π° ΠΈ Π΅Π³ΠΎ пропускной способности. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ подходящиС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ случая, Π½ΠΎ Π½Π΅ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ настройки Π±ΡƒΡ„Π΅Ρ€Π°, избСгая Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Π²ΡΠ»Π΅ΠΏΡƒΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΈΡˆΠ΅Ρ‚ Π² свой Π»ΠΎΠ³ Fluentd Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ значСния.

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ фиксации ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ конфигурация выглядСла ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 <buffer>
        @type file
        path /var/log/fluentd-buffers/kubernetes.test.buffer
        flush_mode interval
        retry_type exponential_backoff
        flush_thread_count 2
        flush_interval 5s
        retry_forever
        retry_max_interval 30
        chunk_limit_size 8M
        queue_limit_length 8
        overflow_action block
      </buffer>

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π»ΠΈΡΡŒ значСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:
chunk_limit_size β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π°Π½ΠΊΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ сообщСния Π² Π±ΡƒΡ„Π΅Ρ€Π΅.

  • flush_interval β€” ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ происходит очистка Π±ΡƒΡ„Π΅Ρ€Π°.
  • queue_limit_length β€” максимальноС количСство Ρ‡Π°Π½ΠΊΠΎΠ² Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
  • request_timeout β€” врСмя, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ устанавливаСтся соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ Fluentd ΠΈ ElasticSearch.

ΠžΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ queue_limit_length ΠΈ chunk_limit_size, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ «максимальноС количСство Ρ‡Π°Π½ΠΊΠΎΠ² Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ объСм». ΠŸΡ€ΠΈ нСдостаточном Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π±ΡƒΡ„Π΅Ρ€Π° Π² Π»ΠΎΠ³Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:

2020-01-21 10:22:57 +0000 [warn]: [test-prod] failed to write data into buffer by buffer overflow action=:block

Оно ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€ Π½Π΅ успСваСт ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ врСмя ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ части Π»ΠΎΠ³ΠΎΠ².

Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ двумя способами: ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² Π»ΠΈΠ±ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‡Π°Π½ΠΊΠ° Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π»ΠΈΠ±ΠΎ количСство Ρ‡Π°Π½ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‡Π°Π½ΠΊΠ° chunk_limit_size Π±ΠΎΠ»Π΅Π΅ 32 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Ρ‚ΠΎ ElasticSeacrh Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π΅Π³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ входящий ΠΏΠ°ΠΊΠ΅Ρ‚ получится слишком большим. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ queue_limit_length.

Когда Π±ΡƒΡ„Π΅Ρ€ пСрСстанСт ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈ останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сообщСниС ΠΎ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° request_timeout. Однако, ΠΏΡ€ΠΈ установкС значСния большС 20 сСкунд, Π² Π»ΠΎΠ³Π°Ρ… Fluentd Π½Π°Ρ‡Π½ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСдупрСТдСния:

2020-01-21 09:55:33 +0000 [warn]: [test-dev] buffer flush took longer time than slow_flush_log_threshold: elapsed_time=20.85753920301795 slow_flush_log_threshold=20.0 plugin_id="postgresql-dev" 

Π”Π°Π½Π½ΠΎΠ΅ сообщСниС Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмя очистки Π±ΡƒΡ„Π΅Ρ€Π° заняло большС, Ρ‡Π΅ΠΌ установлСно ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ slow_flush_log_threshold. Π­Ρ‚ΠΎ отладочная информация ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Ρ‘ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° request_timeout.

ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠΎΠ΄Π±ΠΎΡ€Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ request_timeout Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ большим, Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ (сотни сСкунд). На врСмя настройки основным ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ установки Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ исчСзновСниС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Ρƒ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠ΅ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°.
  2. Π”ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ сообщСний ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ ΠΏΠΎΡ€ΠΎΠ³Π° slow_flush_log_threshold. Π’ тСкстС прСдупрСТдСния Π² ΠΏΠΎΠ»Π΅ elapsed_time Π±ΡƒΠ΄Π΅Ρ‚ написано Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ врСмя очистки Π±ΡƒΡ„Π΅Ρ€Π°.
  3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ request_timeout большС, Ρ‡Π΅ΠΌ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ elapsed_time, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ наблюдСния. ΠœΡ‹ рассчитываСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ request_timeout ΠΊΠ°ΠΊ elapsed_time + 50%.
  4. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Π»ΠΎΠ³Π° прСдупрСТдСния ΠΎ Π΄ΠΎΠ»Π³ΠΎΠΉ очисткС Π±ΡƒΡ„Π΅Ρ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ slow_flush_log_threshold. ΠœΡ‹ рассчитываСм Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ elapsed_time + 25%.

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ значСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ случая. БлСдуя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, ΠΌΡ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ устраняСм ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Ρƒ сообщСний.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ измСняСтся количСство ошибок Π·Π° сутки, приводящих ΠΊ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ сообщСний, Π² процСссС ΠΏΠΎΠ΄Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ описанных Π²Ρ‹ΡˆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

node-1
node-2
node-3
node-4

Π”ΠΎ/ПослС
Π”ΠΎ/ПослС
Π”ΠΎ/ПослС
Π”ΠΎ/ПослС

failed to flush the buffer
1749/2
694/2
47/0
1121/2

retry succeeded
410/2
205/1
24/0
241/2

Π‘Ρ‚ΠΎΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ настройки ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ свою Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² процСссС роста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ, соотвСтствСнно, увСличСния количСства Π»ΠΎΠ³ΠΎΠ². ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ установлСнного Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° являСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³ Fluentd сообщСний ΠΎ Π΄ΠΎΠ»Π³ΠΎΠΉ очисткС Π±ΡƒΡ„Π΅Ρ€Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ€ΠΎΠ³Π° slow_flush_log_threshold. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ нСбольшой запас Π΄ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° request_timeout, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ своСврСмСнно ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ сообщСния ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… настроСк, описанный Π²Ρ‹ΡˆΠ΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Вонкая настройка Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° Fluentd являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… этапов настройки EFK стСка, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ размСщСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² индСксах. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π½Π° описанный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ настройки, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ всС Π»ΠΎΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ записаны Π² индСкс ElasticSearch Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС, Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ.

Π’Π°ΠΊΠΆΠ΅ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com