# vim /etc/elasticsearch/elasticsearch.yml
# 記錄獲取慢日誌
index.search.slowlog.threshold.fetch.warn: 1s
index.search.slowlog.threshold.fetch.info: 200ms
index.search.slowlog.threshold.fetch.debug: 60ms
index.search.slowlog.threshold.fetch.trace: 50ms
# 記錄查詢慢日誌
index.search.slowlog.threshold.query.warn: 1s
index.search.slowlog.threshold.query.debug: 500ms複製代碼
# vim /etc/elasticsearch/elasticsearch.yml
index.search.slowlog.threshold.index.warn: 10s
index.search.slowlog.threshold.index.info: 5s
index.search.slowlog.threshold.index.debug: 2s
index.search.slowlog.threshold.index.trace: 500ms
index.search.slowlog.level: info
index.search.slowlog.source: 1000複製代碼
# vim /etc/elasticsearch/logging.yml
index.search.slowlog: TRACE, index_search_slow_log_file
index.indexing.slowlog: TRACE, index_indexing_slow_log_file
additivity:
index.search.slowlog: true
index.indexing.slowlog: true
deprecation: false
index_search_slow_log_file:
type: dailyRollingFile # 日誌類型,天天一個文件
file: ${path.logs}/${cluster.name}_index_search_slowlog.log # 文件命名格式
datePattern: "'.'yyyy-MM-dd" # 每日備份的後綴
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n" #記錄日誌的開頭格式
index_indexing_slow_log_file:
type: dailyRollingFile
file: ${path.logs}/${cluster.name}_index_indexing_slowlog.log
datePattern: "'.'yyyy-MM-dd"
layout:
type: pattern
conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"複製代碼
這時一個索引級別的日誌,也就是說能夠獨立應用給索引:linux
PUT /my_index/_settings
{
"index.search.slowlog.threshold.query.warn" : "10s", # 查詢慢於10秒輸出一個WARN日誌
"index.search.slowlog.threshold.fetch.debug": "500ms", # 獲取慢於500毫秒輸出一個DEBUG日誌
"index.indexing.slowlog.threshold.index.info": "5s" # 索引慢於5秒輸出一個INFO日誌
}複製代碼
input{
file{
start_position => "beginning"
path=> ["填入你的ES慢日誌路徑"]
sincedb_path => "./slowlogdb"
}
}
filter {
ruby{
code => "temp=event['message'].split(', '); t1= temp[0] common_attr=t1.split(']') event['time']=common_attr[0].split('[')[1] event['loglevel']=common_attr[1].split('[')[1] event['slowtype']=common_attr[2].split('[')[1] event['indexname']=common_attr[3].split('[')[1] t2= temp[1] time_attr=t2.split('[') event['took_millis']= time_attr[1].split(']')[0] t3= temp[2] t4= temp[3] t5= temp[4] t6= temp[5] shards_attr=t6.split('[') event['total_shards']= shards_attr[1].split(']')[0] t7= temp[6] t8= temp[7] event['search_type']= t5 event['message']= t7 event['extra_source']= t8 "}
mutate{
convert => ["took_millis","integer"] #設置took_millis的類型爲integer類型
}
mutate{
convert => ["total_shards","integer"] #設置total_shards的類型爲integer類型
}
}
output{
elasticsearch{
index => "es-slowlog-%{+YYYY-MM}"
hosts=> [填入你的ES集羣主機列表]
flush_size => 3000
}
}複製代碼
在logstash調試模式輸出ES慢日誌各字段含義說明:面試
{
# 慢查詢的語句
"message" => "source[{\"fields\":[\"_parent\",\"_source\"],\"query\":{\"bool\":{\"must\":[],\"must_not\":[],\"should\":[{\"match_all\":{}}]}},\"from\":0,\"size\":50,\"sort\":[],\"aggs\":{},\"version\":true}]",
"@version" => "1",
"@timestamp" => "2018-03-15T12:20:40.091Z",
# 慢查詢日誌路徑
"path" => "/root/test.log",
# 慢查詢主機名
"host" => "c7-node1.fblinux.com",
# 慢查詢產生時間
"time" => "2018-03-15 11:26:30,318",
# 慢查詢級別
"loglevel" => "INFO ",
# 慢查詢類型
"slowtype" => "index.search.slowlog.query",
# 索引名稱
"indexname" => "test-2018-03",
# 慢查詢時間,單位毫秒
"took_millis" => 64,
# 總shards數量
"total_shards" => 1188,
"search_type" => "search_type[QUERY_THEN_FETCH]",
"extra_source" => "extra_source[],"
}複製代碼
版權申明:做者:西門飛冰,一名90後it男,一直在北京工做,熱愛運動,熱愛冒險,熱愛旅行。原文:http://www.fblinux.com/?p=1334,由做者原創投稿,版權歸原創者全部。除非沒法確認,咱們都會標明做者及出處,若有侵權煩請告知,咱們會當即刪除並表示歉意,謝謝。redis
關注 民工哥技術之路 微信公衆號對話框回覆關鍵字:1024 能夠獲取一份最新整理的技術乾貨:包括系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、架構師綜合教程、架構師實戰項目、大數據、Docker容器、ELK Stack、機器學習、BAT面試精講視頻等。數據庫