日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elk示例-精简版2

發布時間:2025/3/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elk示例-精简版2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Danbo 時間:2016-03-13

1.保存進Elasticsearch

Logstash可以試用不同的協議實現完成將數據寫入Elasticsearch的工作,本節中介紹HTTP方式。

配置示例:

output {elasticsearch {hosts => ["192.168.0.2:9200"]index => "logstash-%{type}-%{+YYYY.MM.dd}"document_type => "%{type}"workers => 1flush_size => 20000idle_flush_time => 10template_overwrite => true} }

解釋:

批量發送

flush_size 和 idle_flush_time 共同控制Logstash向 Elasticsearch發送批量數據的行為。上面的示例說明:Logstash會將數據攢到20k條數據然后一次性發送出去,并且設置最大老化時間為10s。

默認情況下:flush_size 是500條,idle_flush_time是1s,注意,這點也是很多人單改大flush_size 也沒能提高ES性能的原因。

索引名

寫入的ES索引的名稱,這里可以使用變量。為了更貼合日志場景,Logstash 提供了%{+YYYY.MM.dd} 這種寫法。在語法解析的時候,看到以+號開頭的,就會自動認為后面是時間格式,嘗試用時間格式來解析后續字符串。

索引名中不能有大寫字母,否則ES在日志中會報錯InvalidIndexNameException,但是Logstash不會報錯。

?

模板

Elasticsearch支持給索引預定義設置和mapping。logstash自帶有一個優化好的模板。內容如下:

其中的關鍵設置包括

template for index-pattern

只匹配logstash-* 的索引才會應用這個模板。有時候我們會變更Logstash的默認索引名稱,記住也得通過PUT方式上傳可以匹配你自定義索引名的模板。當然,更建議的做法是,把自定義的名稱放在"logstash-"后面,變成index => "logstash-custom-%{+yyyy.MM.dd}"

refresh_interval for indexing?

Elasticsearch 是一個近實時搜索引擎。它實際上是每1s 刷新一次數據。對于日志分析應用我們用不著那么實時,所以logstash自帶的模板修改成了5s,其實還可以繼續提高這個刷新間隔以提高數寫入性能。

multi-field with not_analyzed

Elasticsearch 會自動使用自己的默認分詞器(空格,點,斜線等分隔)來分析字段。分詞器對于搜索和評分是非常重要的,但是大大降低了索引寫入和聚合請求的性能。所以logstash模板定義了一種叫“多字段”(multi-field)類型的字段,并給這個字段設置為不啟用分詞器。也就是當你想獲取url字段的聚合結果的時候,不要直接用“url”,而是用“url.raw”作為字段名。

geo_point

Elasticsearch 支持geo_point 類型,geo distance 聚合等等,比如說,你可以請求某個geo_point 點方圓10km內的數據點的總數。

doc_values

doc_values 是Elasticsearch 1.0版本引入的新特性。啟用該特性的字段,索引寫入的時候回在磁盤上構建fielddata。doc_values 只能給不分詞(對于字符串字段就是設置了 “index ”)

2.標準輸入(Stdout)

output {stdout {codec => rubydebugworkers => 2} }

輸出插件同一具有一個參數是workers。logstash 為輸出做了多線程的準備。

其次是codec 設置。P39。可能除了 codecs/multiline,其他codec 插件本身并沒有太多的設置項。所以,上面的示例配置我們可以寫成:

output {stdout {codec => rubydebug {}workers => 2} }

單就 outputs/stdout 插件來說,其最重要和常見的用途就是調試。

3.發送網絡數據(TCP)

配置示例如下:

output {tcp {host => "192.168.0.2"port => 8888codec => json_lines} }

在收集端采用TCP方式發送給遠端的TCP端口。這里需要注意的是,默認的codec 選項是json。而遠端的Logstash::Inputs::TCP 的默認codec 選項卻是 line! 所以不指定各自的codec,對接肯定是失敗的。

另外,由于IO BUFFER 的原因,即使是兩端共同約定為json 依然無法正常運行,接收端會認為一行數據沒有結束,一直等待直到自己OutOfMemory!

正確的做法是:發送端指定codec 為json_lines,這樣每條數據后面會加上一個回車,接收端指定codec 為json_lines或者json 均可,這樣才能正常處理。包括在收集端已經切割好的字段,也可以直接帶入手機端使用了。

?

?

?

?

?

*******

轉載于:https://www.cnblogs.com/danbo/p/5274030.html

總結

以上是生活随笔為你收集整理的elk示例-精简版2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。