zabbix
http://www.ttlsa.com/zabbix/zabbix_server-conf-detail/
https://blog.csdn.net/zhs2014150551/article/details/48975931
https://segmentfault.com/a/1190000008942618
logstash
input
,常見得輸入內(nèi)容
1) file:從文件系統(tǒng)上的文件讀取,與UNIX命令非常相似 tail -0F
2) syslog:在已知端口上偵聽syslog消息進(jìn)行解析
3) redis:使用redis通道和redis列表從redis服務(wù)器讀取曙咽。Redis通常用作集中式Logstash安裝中的“代理”风罩,該安裝將Logstash事件從遠(yuǎn)程Logstash“托運(yùn)人”排隊(duì)筐钟。
4) beats:處理 Beats發(fā)送的事件,beats包括filebeat燃观、packetbeat、winlogbeat拯田。
filter
圆仔,常見的過濾器
1) grok:解析并構(gòu)造任意文本垃瞧。Grok是目前Logstash中將非結(jié)構(gòu)化日志數(shù)據(jù)解析為結(jié)構(gòu)化和可查詢內(nèi)容的最佳方式。Logstash內(nèi)置了120種模式坪郭,您很可能會(huì)找到滿足您需求的模式个从!
2) mutate:對事件字段執(zhí)行常規(guī)轉(zhuǎn)換。您可以重命名歪沃,刪除嗦锐,替換和修改事件中的字段。
3) drop:完全刪除事件沪曙,例如調(diào)試事件奕污。
4) clone:制作事件的副本,可能添加或刪除字段液走。
5) geoip:添加有關(guān)IP地址的地理位置的信息(也在Kibana中顯示驚人的圖表L寄)
output
輸出內(nèi)容
1) elasticsearch:將事件數(shù)據(jù)發(fā)送給Elasticsearch。如果您計(jì)劃以高效缘眶,方便且易于查詢的格式保存數(shù)據(jù)...... Elasticsearch是您的最佳選擇
2) file:將事件數(shù)據(jù)寫入磁盤上的文件嘱根。
3) graphite:將事件數(shù)據(jù)發(fā)送到graphite,這是一種用于存儲(chǔ)和繪制指標(biāo)的流行開源工具巷懈。http://graphite.readthedocs.io/en/latest/
4) statsd:將事件數(shù)據(jù)發(fā)送到statsd该抒,這是一種“偵聽統(tǒng)計(jì)信息,如計(jì)數(shù)器和定時(shí)器顶燕,通過UDP發(fā)送并將聚合發(fā)送到一個(gè)或多個(gè)可插入后端服務(wù)”的服務(wù)凑保。如果您已經(jīng)在使用statsd,這可能對您有用割岛!
影響logstash性能因素如下:
logstash是一個(gè)pipeline愉适,數(shù)據(jù)流從input進(jìn)來,在filter進(jìn)行正則解析癣漆,然后通過output傳輸給ES维咸。
filebeat->logstash tcp連接
logstash->es tcp連接
logstash input
logstash filter
logstash output
logstash filter & logstash output ( 瓶頸)
升級(jí)logstash版本 1.7 -> 2.2
2.2版本之后的logstash優(yōu)化了input,filter,output的線程模型。
增大 filter和output worker 數(shù)量 通過啟動(dòng)參數(shù)配置 -w 48 (等于cpu核數(shù))
logstash正則解析極其消耗計(jì)算資源惠爽,而我們的業(yè)務(wù)要求大量的正則解析癌蓖,因此filter是我們的瓶頸。
官方建議線程數(shù)設(shè)置大于核數(shù)婚肆,因?yàn)榇嬖贗/O等待租副。
考慮到我們當(dāng)前節(jié)點(diǎn)同時(shí)部署了ES節(jié)點(diǎn),ES對CPU要求性極高较性,因此設(shè)置為等于核數(shù)用僧。
增大 woker 的 batch_size 150 -> 3000 通過啟動(dòng)參數(shù)配置 -b 3000
batch_size 參數(shù)決定 logstash 每次調(diào)用ES bulk index API時(shí)傳輸?shù)臄?shù)據(jù)量结胀,考慮到我們節(jié)點(diǎn)機(jī)256G內(nèi)存,應(yīng)該增大內(nèi)存消耗換取更好的性能责循。
增大logstash 堆內(nèi)存 1G -> 16G
logstash是將輸入存儲(chǔ)在內(nèi)存之中糟港,worker數(shù)量 * batch_size = n * heap (n 代表正比例系數(shù))
worker * batch_size / flush_size = ES bulk index api 調(diào)用次數(shù)
優(yōu)化
在配置文件中可以通過配置pipeline.workers來調(diào)整filter和
output的線程數(shù)
網(wǎng)友的測評(píng)數(shù)據(jù)是兩個(gè)點(diǎn)的logstah可以承受600+的連接數(shù)
pipeline.workers:
決定filter和output的線程數(shù),官方建議大于CPU數(shù)院仿,如果logstah節(jié)點(diǎn)是混用服務(wù)器秸抚,
建議等于或小于CPU數(shù)
pipeline.batch.size:
單個(gè)線程每次調(diào)用ES bulk index API時(shí)的事件數(shù)。
這些時(shí)間將被放到內(nèi)存中歹垫。最好的設(shè)定值是不斷地測試剥汤,測試,測試排惨。
JVM_heap:內(nèi)存堆大小吭敢,通過配置jvm_option來修改。
logstash的優(yōu)化相關(guān)配置
實(shí)際output 時(shí)的線程數(shù)
默認(rèn)配置 ---> pipeline.output.workers: 1
可優(yōu)化為 ---> pipeline.output.workers: 不超過pipeline 線程數(shù)
每次發(fā)送的事件數(shù)
默認(rèn)配置 ---> pipeline.batch.size: 125
可優(yōu)化為 ---> pipeline.batch.size: 1000
發(fā)送延時(shí)
默認(rèn)配置 ---> pipeline.batch.delay: 5
可優(yōu)化為 ---> pipeline.batch.size: 10
總結(jié)
通過設(shè)置-w參數(shù)指定pipeline worker
數(shù)量若贮,也可直接修改配置文件logstash.yml省有。這會(huì)提高filter和output的線程數(shù)
,如果需要的話谴麦,將其設(shè)置為cpu核心數(shù)的幾倍是安全
的蠢沿,線程在I/O上是空閑的。
默認(rèn)每個(gè)輸出在一個(gè)pipeline worker
線程上活動(dòng)匾效,可以在輸出output
中設(shè)置workers設(shè)置舷蟀,不要將該值設(shè)置大于pipeline worker
數(shù)。
還可以設(shè)置輸出的batch_size
數(shù)面哼,例如ES輸出與batch size一致野宜。
filter設(shè)置multiline
后,pipline worker會(huì)自動(dòng)將為1魔策,如果使用filebeat匈子,建議在beat中就使用multiline,如果使用logstash作為shipper闯袒,建議在input 中設(shè)置multiline虎敦,不要在filter中設(shè)置multiline。
(3)Logstash中的JVM配置文件
Logstash是一個(gè)基于Java開發(fā)的程序政敢,需要運(yùn)行在JVM中其徙,可以通過配置jvm.options
來針對JVM進(jìn)行設(shè)定。比如內(nèi)存的最大最小喷户、垃圾清理機(jī)制
等等唾那。JVM的內(nèi)存分配不能太大不能太小,太大會(huì)拖慢操作系統(tǒng)褪尝。太小導(dǎo)致無法啟動(dòng)闹获。默認(rèn)如下:
-Xms256m #最小使用內(nèi)存
-Xmx1g #最大使用內(nèi)存
參考文檔:
https://www.cnblogs.com/along21/p/8613115.html#auto_id_12
https://blog.csdn.net/weixin_34092455/article/details/91719799
https://www.cnblogs.com/along21/p/8613115.html