Fluent: ืžื“ื•ืข ื—ืฉื•ื‘ ืœื”ื’ื“ื™ืจ ืืช ืžืื’ืจ ื”ืคืœื˜

Fluent: ืžื“ื•ืข ื—ืฉื•ื‘ ืœื”ื’ื“ื™ืจ ืืช ืžืื’ืจ ื”ืคืœื˜

ื›ื™ื•ื, ืื™ ืืคืฉืจ ืœื“ืžื™ื™ืŸ ืคืจื•ื™ืงื˜ ืžื‘ื•ืกืก Kubernetes ืœืœื ืžื—ืกื ื™ืช ื”-ELK, ืฉื—ื•ืกื›ืช ื™ื•ืžื ื™ื ืฉืœ ืืคืœื™ืงืฆื™ื•ืช ื•ืจื›ื™ื‘ื™ ืžืขืจื›ืช ืฉืœ ื”ืืฉื›ื•ืœ. ื‘ืชืจื’ื•ืœ ืฉืœื ื•, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืขืจื™ืžืช EFK ืขื Fluentd ื‘ืžืงื•ื Logstash.

Fluentd ื”ื•ื ืืกืคืŸ ื™ื•ืžื ื™ื ืžื•ื“ืจื ื™ ื•ืื•ื ื™ื‘ืจืกืœื™ ืฉืฆื•ื‘ืจ ื™ื•ืชืจ ื•ื™ื•ืชืจ ืคื•ืคื•ืœืจื™ื•ืช ื•ื”ืฆื˜ืจืฃ ืœ-Cloud Native Computing Foundation, ื•ืœื›ืŸ ื•ืงื˜ื•ืจ ื”ืคื™ืชื•ื— ืฉืœื• ืžืชืžืงื“ ื‘ืฉื™ืžื•ืฉ ื‘ืฉื™ืœื•ื‘ ืขื Kubernetes.

ื”ืขื•ื‘ื“ื” ืฉืœ ืฉื™ืžื•ืฉ ื‘- Fluentd ื‘ืžืงื•ื Logstash ืื™ื ื” ืžืฉื ื” ืืช ื”ืžื”ื•ืช ื”ื›ืœืœื™ืช ืฉืœ ื—ื‘ื™ืœืช ื”ืชื•ื›ื ื”, ืขื ื–ืืช, Fluentd ืžืื•ืคื™ื™ื ืช ื‘ื ื™ื•ืื ืกื™ื ืกืคืฆื™ืคื™ื™ื ืžืฉืœื” ื”ื ื•ื‘ืขื™ื ืžื”ืจื‘ื’ื•ื ื™ื•ืช ืฉืœื”.

ืœื“ื•ื’ืžื”, ื›ืฉื”ืชื—ืœื ื• ืœื”ืฉืชืžืฉ ื‘-EFK ื‘ืคืจื•ื™ืงื˜ ืขืžื•ืก ืขื ืขื•ืฆืžืช ืจื™ืฉื•ื ื’ื‘ื•ื”ื”, ืขืžื“ื ื• ื‘ืคื ื™ ื”ืขื•ื‘ื“ื” ืฉื‘ืงื™ื‘ืื ื” ื›ืžื” ื”ื•ื“ืขื•ืช ื”ื•ืฆื’ื• ืฉื•ื‘ ื•ืฉื•ื‘ ื›ืžื” ืคืขืžื™ื. ื‘ืžืืžืจ ื–ื” ื ืกืคืจ ืœื›ื ืžื“ื•ืข ืžืชืจื—ืฉืช ืชื•ืคืขื” ื–ื• ื•ื›ื™ืฆื“ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื”.

ื”ื‘ืขื™ื” ืฉืœ ืฉื›ืคื•ืœ ืžืกืžื›ื™ื

ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœื ื•, Fluentd ื ืคืจืกืช ื›-DaemonSet (ืžื•ืฉืง ืื•ื˜ื•ืžื˜ื™ืช ื‘ืžื•ืคืข ืื—ื“ ื‘ื›ืœ ืฆื•ืžืช ืฉืœ ืืฉื›ื•ืœ Kubernetes) ื•ืžื ื˜ืจืช ื™ื•ืžื ื™ ืžื™ื›ืœ ืกื˜dout ื‘-/var/log/containers. ืœืื—ืจ ืื™ืกื•ืฃ ื•ืขื™ื‘ื•ื“, ื”ื™ื•ืžื ื™ื ื‘ืฆื•ืจืช ืžืกืžื›ื™ JSON ื ืฉืœื—ื™ื ืืœ ElasticSearch, ืžื•ืขืœื™ื ื‘ืฆื•ืจืช ืืฉื›ื•ืœ ืื• ืขืฆืžืื™ืช, ื‘ื”ืชืื ืœื”ื™ืงืฃ ื”ืคืจื•ื™ืงื˜ ื•ืœื“ืจื™ืฉื•ืช ืœื‘ื™ืฆื•ืขื™ื ื•ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช. 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"
  }
}

ื™ืชืจ ืขืœ ื›ืŸ, ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ื™ื•ืชืจ ืžืฉืชื™ ื—ื–ืจื•ืช.

ื‘ื–ืžืŸ ืชื™ืงื•ืŸ ื‘ืขื™ื” ื–ื• ื‘ื™ื•ืžื ื™ Fluent, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืžืกืคืจ ืจื‘ ืฉืœ ืื–ื”ืจื•ืช ืขื ื”ืชื•ื›ืŸ ื”ื‘ื:

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 ื™ื™ื—ื•ื“ื™ื™ื ื‘ืžื”ืœืš ื”ืื™ื ื“ืงืก. ื›ืš ืžื•ืคื™ืขื™ื ืขื•ืชืงื™ื ืฉืœ ื”ื•ื“ืขื•ืช.

ื‘ืงื™ื‘ื ื” ื–ื” ื ืจืื” ื›ืš:

Fluent: ืžื“ื•ืข ื—ืฉื•ื‘ ืœื”ื’ื“ื™ืจ ืืช ืžืื’ืจ ื”ืคืœื˜

ื”ืคืชืจื•ืŸ

ื™ืฉื ืŸ ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช ืœืคืชืจื•ืŸ ื‘ืขื™ื” ื–ื•. ืื—ื“ ืžื”ื ื”ื•ื ื”ืžื ื’ื ื•ืŸ ื”ืžื•ื‘ื ื” ื‘ืชื•ืกืฃ Fluent-plugin-elasticsearch ืœื™ืฆื™ืจืช hash ื™ื™ื—ื•ื“ื™ ืœื›ืœ ืžืกืžืš. ืื ืชืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ ื–ื”, 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 chunk_limit_size ืœื™ื•ืชืจ ืž-32 ืžื’ื”-ื‘ื™ื™ื˜, ืื– ElasticSeacrh ืœื ื™ืงื‘ืœ ื–ืืช, ืžื›ื™ื•ื•ืŸ ืฉื”ื—ื‘ื™ืœื” ื”ื ื›ื ืกืช ืชื”ื™ื” ื’ื“ื•ืœื” ืžื“ื™. ืœื›ืŸ, ืื ืืชื” ืฆืจื™ืš ืœื”ื’ื“ื™ืœ ืืช ื”ืžืื’ืจ ืขื•ื“ ื™ื•ืชืจ, ืขื“ื™ืฃ ืœื”ื’ื“ื™ืœ ืืช ืื•ืจืš ื”ืชื•ืจ ื”ืžืงืกื™ืžืœื™ queue_limit_length.

ื›ืืฉืจ ื”ืžืื’ืจ ืžืคืกื™ืง ืœืขืœื•ืช ืขืœ ื’ื“ื•ืชื™ื• ื•ื ืฉืืจืช ืจืง ื”ื”ื•ื“ืขื” ืขืœ ืคืกืง ื–ืžืŸ ืœื ืžืกืคื™ืง, ืืชื” ื™ื›ื•ืœ ืœื”ืชื—ื™ืœ ืœื”ื’ื“ื™ืœ ืืช ื”ืคืจืžื˜ืจ request_timeout. ืขื ื–ืืช, ืื ืชื’ื“ื™ืจ ืืช ื”ืขืจืš ืœื™ื•ืชืจ ืž-20 ืฉื ื™ื•ืช, ื”ืื–ื”ืจื•ืช ื”ื‘ืื•ืช ื™ืชื—ื™ืœื• ืœื”ื•ืคื™ืข ื‘ื™ื•ืžื ื™ Fluent:

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%.

ื”ืขืจื›ื™ื ื”ืกื•ืคื™ื™ื ืฉืœ ืคืจืžื˜ืจื™ื ืืœื”, ื›ืคื™ ืฉืฆื•ื™ืŸ ืงื•ื“ื ืœื›ืŸ, ืžืชืงื‘ืœื™ื ื‘ื ืคืจื“ ืขื‘ื•ืจ ื›ืœ ืžืงืจื”. ืขืœ ื™ื“ื™ ื‘ื™ืฆื•ืข ื”ืืœื’ื•ืจื™ืชื ืœืขื™ืœ, ืžื•ื‘ื˜ื— ืœื ื• ืœื‘ื˜ืœ ืืช ื”ืฉื’ื™ืื” ืฉืžื•ื‘ื™ืœื” ืœื”ื•ื“ืขื•ืช ื—ื•ื–ืจื•ืช.

ื”ื˜ื‘ืœื” ืฉืœื”ืœืŸ ืžืจืื” ื›ื™ืฆื“ ืžืกืคืจ ื”ืฉื’ื™ืื•ืช ื‘ื™ื•ื, ื”ืžื•ื‘ื™ืœ ืœืฉื›ืคื•ืœ ืฉืœ ื”ื•ื“ืขื•ืช, ืžืฉืชื ื” ื‘ืชื”ืœื™ืš ื‘ื—ื™ืจืช ื”ืขืจื›ื™ื ืฉืœ ื”ืคืจืžื˜ืจื™ื ื”ืžืชื•ืืจื™ื ืœืขื™ืœ:

ืฆื•ืžืช-1
ืฆื•ืžืช-2
ืฆื•ืžืช-3
ืฆื•ืžืช-4

ืœืคื ื™ ืื—ืจื™
ืœืคื ื™ ืื—ืจื™
ืœืคื ื™ ืื—ืจื™
ืœืคื ื™ ืื—ืจื™

ืœื ื”ืฆืœื™ื— ืœืฉื˜ื•ืฃ ืืช ื”ืžืื’ืจ
1749/2
694/2
47/0
1121/2

ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ ื”ืฆืœื™ื—
410/2
205/1
24/0
241/2

ืจืื•ื™ ืœืฆื™ื™ืŸ ื‘ื ื•ืกืฃ ืฉื”ื”ื’ื“ืจื•ืช ื”ืžืชืงื‘ืœื•ืช ืขืœื•ืœื•ืช ืœืื‘ื“ ืืช ื”ืจืœื•ื•ื ื˜ื™ื•ืช ืฉืœื”ืŸ ื›ื›ืœ ืฉื”ืคืจื•ื™ืงื˜ ื™ื’ื“ืœ ื•ื‘ื”ืชืื ืœื›ืš, ืžืกืคืจ ื”ื™ื•ืžื ื™ื ื™ื’ื“ืœ. ื”ืกื™ืžืŸ ื”ืขื™ืงืจื™ ืœื–ืžืŸ ืงืฆื•ื‘ ืœื ืžืกืคืง ื”ื•ื ื”ื—ื–ืจื” ืฉืœ ื”ื•ื“ืขื•ืช ืขืœ ืฉื˜ื™ืคืช ื—ื•ืฆืฅ ืืจื•ื›ื” ืœื™ื•ืžืŸ Fluentd, ื›ืœื•ืžืจ ื—ืจื™ื’ื” ืžืกืฃ slow_flush_log_threshold. ืžื ืงื•ื“ื” ื–ื• ื•ืื™ืœืš, ืขื“ื™ื™ืŸ ื™ืฉ ืžืจื•ื•ื— ืงื˜ืŸ ืœืคื ื™ ื—ืจื™ื’ื” ืžืคืจืžื˜ืจ request_timeout, ื•ืœื›ืŸ ื™ืฉ ืฆื•ืจืš ืœื”ื’ื™ื‘ ืœื”ื•ื“ืขื•ืช ืืœื• ื‘ื–ืžืŸ ื•ืœื—ื–ื•ืจ ืขืœ ืชื”ืœื™ืš ื‘ื—ื™ืจืช ื”ื”ื’ื“ืจื•ืช ื”ืื•ืคื˜ื™ืžืœื™ื•ืช ืฉืชื•ืืจื• ืœืขื™ืœ.

ืžืกืงื ื”

ื›ื•ื•ื ื•ืŸ ืขื“ื™ืŸ ืฉืœ ืžืื’ืจ ื”ืคืœื˜ ืฉืœ Fluentd ื”ื•ื ืื—ื“ ื”ืฉืœื‘ื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœ ืงื‘ื™ืขืช ื”ืชืฆื•ืจื” ืฉืœ ืžื—ืกื ื™ืช EFK, ืงื‘ื™ืขืช ื™ืฆื™ื‘ื•ืช ืคืขื•ืœืชื” ื•ื”ืžื™ืงื•ื ื”ื ื›ื•ืŸ ืฉืœ ืžืกืžื›ื™ื ื‘ืื™ื ื“ืงืกื™ื. ื‘ื”ืชื‘ืกืก ืขืœ ืืœื’ื•ืจื™ืชื ื”ืชืฆื•ืจื” ื”ืžืชื•ืืจ, ืืชื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ื˜ื•ื— ืฉื›ืœ ื”ื™ื•ืžื ื™ื ื™ื™ื›ืชื‘ื• ืœืื™ื ื“ืงืก ElasticSearch ื‘ืกื“ืจ ื”ื ื›ื•ืŸ, ืœืœื ื—ื–ืจื•ืช ืื• ื”ืคืกื“ื™ื.

ืงืจื ื’ื ืžืืžืจื™ื ืื—ืจื™ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”