<filter elb-com> @type geoip geoip_lookup_keys client_ip backend_library geoip2_c geoip_database /fluentd/plugin/GeoLite2-City.mmdb <record> location '[${location.latitude["client_ip"]},${location.longitude["client_ip"]}]' city ${city.names.en["client_ip"]} country_name ${country.names.en["client_ip"]} region_name ${subdivisions.0.names.en["client_ip"]} </record> </filter>
<filter request> @type grep <exclude> key message pattern /.*healthcheck.*|.*prometheusMetrics.*|.*(v1+\/)+(configurations)+(\/+versions).*/ </exclude> </filter>
<filter *> @type record_transformer remove_keys message </filter>
path /log-dir/*-app.log pos_file /log-dir/app.log.pos
多個日誌文件的位置記錄寫入一個位置記錄文件,會致使日誌位置記錄的錯誤,想的辦法:爲每一個日誌文件單獨配置一個位置記錄的文件。git
path /log-dir/*-app.log pos_file ${path}.ops
想經過引用的方式來爲每一個path建立一個ops,可是結局不生效經過仔細閱讀官方文檔,發現一個in_tail進程裏的ops是能夠存放多個pathdocker
我把日誌寫入docker日誌文件,發現fluentd處理讀取和處理速度並不慢,猜想多是fluentd傳輸到ES過程當中的問題。
經過在在match輸出上面刷新緩衝區,及時把緩衝區的數據送到ES,express
<match app.*> @type elasticsearch host elasticsearchlog-lb.elasticsearch-log index_name s3-fluentd-idaas type_name s3-fluentd-idaas flush_interval 2s include_timestamp true ssl_verify false </match>
第二個方法就是找到衝突的地方刪除掉衝突點(僅僅是個想法)app
id和key都沒問題,由於昨天晚上我從S3上拉取下來過,elasticsearch
今天s3的桶裏面加上了路徑ide
Amazon S3 logstash-idaas/2018/10/20/
容器日誌報出的錯誤測試
error_class=Aws::S3::Errors::NoSuchKey error="The specified key does not exist."
(1)測試沒有前綴的時候是否會報錯優化
結局:報錯少了一些,可是仍是會報錯
(2)排錯過程:插件
1.我想看看logstash中S3插件是否會給我產生靈感 否 2.我想測試fluentd中是否有插件致使了這個問題 否 經過把原有插件卸載,使用最簡插件方案來運行這個配置文件 3.Google搜索看看 否 4.SQS隊列裏含有各桶的數據,相互之間衝突,新建一個SQS解決這個問題 nice 測試出來的緣由就是SQS處理多個S3桶數據的時候,每一個桶之間的數據會相互雜糅,促使fluentd拉去數據的時候前綴路徑衝突,這個時候咱們每個桶分配一個SQS解決這個問題
2018/11/12 上午11:52:552018-11-12 11:52:55 +0800 [error]: #0 unexpected error error_class=Aws::SQS::Errors::NonExistentQueue error="The specified queue does not exist or you do not have access to it
檢查隊列名字和SQS的權限配置,還有須要檢查S3桶的事件通知日誌
2018/11/15 下午7:00:222018-11-15 19:00:22 +0800 [warn]: #0 dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch" location=nil tag="app.idaas"
經過觀看,發現這個問題主要是app.idaas標籤產生的,由於這個標籤沒有filter,後來對app.idaas進行一次filter後,這個警告問題能夠大大緩解。
<filter app.idaas> @type parser key_name thread_name reserve_data yes <parse> @type regexp expression /(?<thread_name>[\d\D]+)/ </parse> </filter>
2018/11/16 下午4:16:072018-11-16 16:16:07 +0800 [warn]: #0 Could not push logs to Elasticsearch, resetting connection and trying again. read timeout reached 2018-11-16 16:16:44 +0800 [warn]: #0 buffer flush took longer time than slow_flush_log_threshold: elapsed_time=66.07182049937546 slow_flush_log_threshold=20.0 plugin_id="object:2ac85a0bd4a0"
去除下面buffer中的timekey和timekey_wait
index_name s3-fluentd-request-%Y%m%d <buffer tag,time> timekey 4s timekey_wait 1s </buffer>
fluentd日誌處理-安裝配置(一)
https://blog.51cto.com/11078047/2316881
Fluentd 日誌處理-S3拉取日誌處理(二)
https://blog.51cto.com/11078047/2316910
Fluentd日誌處理-tail拉取(三)
https://blog.51cto.com/11078047/2316958