1. 程式人生 > >elasticsearch+logstash之間傳輸效率以及es-sql查詢效率簡單測試

elasticsearch+logstash之間傳輸效率以及es-sql查詢效率簡單測試

      對於logstash解析大批量資料並傳輸到elasticsearch中的過程簡單進行一些資料的測試,條件4G記憶體,logstash中配置index.refresh_interval=5s,(這個資料是es索引重新整理速率,就是資料傳輸到es中,es不會實時展示,延遲五秒,一般來說es配置1s),index.refresh_interval的增加可以較大提高插入資料的效率,特別的,可以將其改為-1,等到大批量資料匯入完成後,再改回去

    這裡有幾個優化logstash、elasticsearch的部落格,連線掛在最後啦。

    標準方法:

input {
    generator {
        count => 10000000
        message => '{"key1":"value1","key2":[1,2],"key3":{"subkey1":"subvalue1"}}'
        codec => json
    }
}
inputs/generator 是無中生有,output/null 則是鋸嘴葫蘆。事件流轉到這裡直接就略過,什麼操作都不做。相當於只測試 Logstash 的 pipe 和 filter 效率。
$ time ./bin/logstash -f generator_null.conf
output {
    stdout {
        codec => dots
    }
}

下面就要介紹 pv 命令了。這個命令的作用,就是作實時的標準輸入、標準輸出監控。我們這裡就用它來監控標準輸出:

$ ./bin/logstash -f generator_dots.conf | pv -abt > /dev/null
可以很明顯的看到在前幾秒中,速度是 0 B/s,因為 JVM 還沒啟動起來呢。開始執行的時候,速度依然不快。慢慢增長到比較穩定的狀態,這時候的才是你需要的資料。

但是在Centos上面過 yum 安裝的 pv 命令,版本較低,可能還不支援 -a 引數(我用的centos7,已經完全沒有pv命令了)

   我的實際測試:

     測試elastic的流程:複製檔案到指定位置,logstahs先啟動後會不斷檢測並傳輸到es

    最終測試結果:
一份168條文件,2mb,複製50次
最終是8400份資料,沒有錯誤
9:25 -- 9:25         200條/s(左右?)    一條日誌36000字元
order by log_json_content.trace.linenumber 1s不到,很快
group by linenumber 0,50,100,150  1s不到,很快
分詞器全文檢索(en?) 1s不到,很快   type=matchQuery('ERRor')  ('error')  1s不到,很快

一份168條文件,2mb,複製100次
最終是16800份資料,沒有錯誤
10:27 -- 10:28      1分10s   240條/s(可能sql不斷查詢還耽誤了點時間)  一條日誌36000字元
order by log_json_content.trace.linenumber 1s不到,很快
group by linenumber 0,50,100,150  1s不到,很快
type=matchQuery('ERRor')  ('error')  1s不到,很快

附上覆制系統自帶的日誌資料到指定位置的shell程式碼,很簡單(大神見笑)

#!/bin/bash   
file_in_Name="/home/cuixuange/Public/elk/syslog"  
cd /home/cuixuange/Public/elk/test_log

for i in $(seq 1 50)
do
    name=$(printf shell_%02d.log $i)
    touch  $name

    while read line  
    do  
        echo $line >>$name
    done < $file_in_Name 

    chmod -R 777 /home/cuixuange/Public/elk/test_log/$name
    sleep 0.1s

done

其中cd 使用注意下;後面我是為了模範真實情況使用逐條讀取複製再寫入的方式,也可以直接用cp cat 之類的

注意:ubuntu日誌資料中的日期空格應該是tab隔開的,因為同樣的資料在centos系統中發現長度就不一樣,會使得logstash中的即將使用的conf檔案中grok解析會出現問題(所以要注意到統一的問題,空格是空格,tab是tab)

下面把;logstash解析ubuntu syslog 的conf檔案放上來吧

input { 
  file{
    path => ["/home/cuixuange/Public/elk/test_log/*.log"]
    start_position=>"beginning"

   #  discover_interval => 15
   #  stat_interval => 1
   #  sincedb_write_interval => 15
   } 
}

filter{
  grok{
    match=>{ "message" => "(?m)%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" 
           }
  }

  date {
    match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss"  ]
   # locale => "en"
   # timezone=>"+00:00"
    remove_field => [ "timestamp"]
   }


}

output {
     elasticsearch {
         host => "192.168.88.130"
     #    index => "logstash-shell-%{+2016.MMM.dd}"   #logstash-* to find
    #    index => "logstash-shell"
     #    protocol => transport
         workers =>5
         template_overwrite =>true
  }
}




elasticsearch-sql外掛就不多說了,支援各種查詢方法,可以到github上面去看一下,有很多簡單例子,特別是其中的全文分詞檢索的支援,很棒,一般中文的話考慮ik分詞器

還有一開始說的es,logstash的優化問題:

相關推薦

elasticsearch+logstash之間傳輸效率以及es-sql查詢效率簡單測試

      對於logstash解析大批量資料並傳輸到elasticsearch中的過程簡單進行一些資料的測試,條件4G記憶體,logstash中配置index.refresh_interval=5s,(這個資料是es索引重新整理速率,就是資料傳輸到es中,es不會實時展示

mysql傳入一個時間範圍 查詢每一天的彙總資料 以及es-sql的寫法

案例: select sum(quantity) as quantity, sum(charge_weight) as charge_weight, sum(balance_amount) as balance_amount, DATE_FORMAT(create_time,'%

提高sql查詢效率

無法 結構 創建 存儲 開發 連續 新建 操作符 rom 1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描

轉:關於SQL查詢效率優化

1.關於SQL查詢效率,100w資料,查詢只要1秒,與您分享: 機器情況 p4: 2.4 記憶體: 1 G os: windows 2003 資料庫: ms sql server 2000 目的: 查詢效能測試,比較兩種查詢的效能 SQL查詢效率 step by step -- setp 1. --

資料庫SQL查詢效率in、exists、left join on、right join on 適用場景與比較

in 與 join例 select t1.id,sum(t1.num) from (select * from t2 where num =2) as t3 LEFT JOIN t1 on t3.id=t1.id GROUP BY t1.id; join 時間: 0.005

《提高SQL查詢效率的30種方法》

1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。  2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:  select id from t

Oracle提高SQL查詢效率where語句條件的先後次序

(1)選擇最有效率的表名順序(只在基於規則的優化器中有效): Oracle的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最後的表(基礎表 driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎

SQL查詢效率提高方法

關於SQL查詢效率,100w資料,查詢只要1秒 1.關於SQL查詢效率,100w資料,查詢只要1秒,與您分享: 機器情況 p4: 2.4 記憶體: 1 G os: windows 2003 資料庫: ms sql server 2000 目的: 查

SQL 查詢效率

很多人不知道SQL語句在SQL SERVER中是如何執行的,他們擔心自己所寫的SQL語句會被SQL SERVER誤解。比如:  select * from table1 where name='zhangsan' and tID > 10000  和執行:  se

要提高SQL查詢效率where語句條件的先後次序應如何寫

我們要做到不但會寫SQL,還要做到寫出效能優良的SQL語句。 (1)選擇最有效率的表名順序(只在基於規則的優化器中有效):  Oracle的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最後的表(基礎表 driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須

ELK (ElasticSearch + Logstash + Kibaba + Marvel)系統的搭建學習與簡單使用

ELK 實時日誌分析系統平臺的學習與使用 ElasticSearch Logstash Kibana Marvel Log Linux 簡介 工作工程中,不論是開發還是運維,都會遇到各種各樣的日誌,主要包括系統日誌、應用程式日誌和安全日誌,對於

如何在 SQL Server 2005 實例之間傳輸登錄和密碼

cati 知識庫 語句 generated target policy cond 權限 asc 簡介本文介紹如何在不同服務器上的 Microsoft SQL Server 2005 實例之間傳輸登錄和密碼。有關如何在其他版本的 SQL Server 實例之間傳輸登錄和密碼的

SQL Union和SQL Union All兩者用法區別效率以及與order by 和 group by配合問題

SQL UNION 操作符 UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。 請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 SELECT 語句中的列的順序必須相同。 SQL UNION

TCP和UDP的傳輸過程以及二者之間的區別

TCP和UDP的區別 TCP     TCP/IP協議是一個協議簇。裡面包括很多協議的。UDP只是其中的一個。之所以命名為TCP/IP協議,因為TCP,IP協議是兩個很重要的協議,就用他兩命名了。TCP和UDP協議屬於傳輸層協議,而IP協議屬於網路層協議。     TCP(

linux下用scp命令在兩個服務器之間傳輸文件,利用php_scp函數進行文件傳輸

evc 在操作 path send 返回值 遠程 false cal 上傳 在linux下利用scp進行文件傳輸, 從服務器下載文件 scp [email protected]/* */:/path/filename /path/filename 上傳

基於ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合測試

success move maven issues ats call using env proto 前言開源實時日誌分析ELK平臺(ElasticSearch, Logstash, Kibana組成),能很方便的幫我們收集日誌,進行集中化的管理,並且能很方便的進行日誌的統

(高版本)ELK(Elasticsearch + Logstash + Kibana)服務服務搭建

服務器 搜索引擎 雲計算 一、ELK是什麽鬼?ELK實際上是三個工具的集合,Elasticsearch + Logstash + Kibana,這三個工具組合形成了一套實用、易用的監控架構,很多公司利用它來搭建可視化的海量日誌分析平臺。1. ElasticSearchElasticSearch是一

PHP:測試SQL註入以及防止SQL註入

escape sca ase ouya pro sch 參與 則表達式 其中 在寫登錄註冊的時候發現了SQL和JS註入這個危害網站的用戶舉動: 測試方法: SQL註入: 1 先來做一個測試: 2 用戶名:’ or 1 # 3 密碼:隨便寫8位以上

【轉載】xShell5 利用 sftp 在本地和服務器之間傳輸文件

exc user water 文件夾路徑 secure heal health jpg 連接方式 sftp是Secure File TransferProtocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp與 ftp有著幾乎一樣的語法和功能。S

javascript中數組與字符串之間的轉換以及字符串的替換

ons spl 字符串 console 替換字符 javascrip con ole lac 數組轉化為字符串:   var a=[‘aa‘,‘bb‘,‘cc‘];   var b=a.join(‘-‘);   console.log(b)----->‘aa-bb-c