ืืืื, ืื ืืคืฉืจ ืืืืืื ืคืจืืืงื ืืืืกืก 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-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.
ืืืืืจืืชื ืืืืืจื ืืืืืื ืืื ืืืืงืื:
- ืืืืจ request_timeout ืืขืจื ืืืืืื ืืืื ืืื ืืจืฉ (ืืืืช ืฉื ืืืช). ืืืืื ืืืืืจื, ืืงืจืืืจืืื ืืขืืงืจื ืืืืืจื ืื ืืื ื ืฉื ืคืจืืืจ ืื ืืืื ืืืขืืืืช ืืืืืจืืช ืืืื ืืืกืจ ืคืกืง ืืื.
- ืืืชื ืืืืืขืืช ืขื ืืจืืื ืืกืฃ slow_flush_log_threshold. ืืงืกื ืืืืืจื ืืฉืื elapsed_time ืืฆืื ืืช ืืืื ืืืืืชื ืฉืืืืืจ ื ืืงื.
- ืืืืจ ืืช request_timeout ืืขืจื ืืืืื ืืืขืจื ืืืงืกืืืื ืฉื elapsed_time ืฉืืืฉื ืืืืื ืชืงืืคืช ืืชืฆืคืืช. ืื ื ืืืฉืืื ืืช ืขืจื request_timeout ื-elapsed_time + 50%.
- ืืื ืืืกืืจ ืืืืจืืช ืขื ืฉืืืคืืช ืืืืจ ืืจืืืืช ืืืืืื, ืืชื ืืืื ืืืขืืืช ืืช ืืขืจื ืฉื 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 ืืกืืจ ืื ืืื, ืืื ืืืจืืช ืื ืืคืกืืื.
ืงืจื ืื ืืืืจืื ืืืจืื ืืืืื ืฉืื ื:
ืืื ื- Zabbix 5.0 ืืคืื ืืืืจืื ืฉืืจืื ืืฉืืื Kubernetes ืืื ืืฉืืชื Kubernetes: ืืืืข ืื ืื ืืฉืื ืืืืืืจ ืืช ื ืืืื ืืฉืืื ืืืขืจืืช? ืฉืืืฉื ืืจืืงืื ืคืฉืืืื ืืืืืฅ ืชืืื ืืช Docker ืืืืื ืฉื ืืกืคืจ ืจื ืฉื ืคืจืืืงืื ืืื ืืจื ื ืืืจืืื ืืื
ืืงืืจ: www.habr.com