elasticsearch+logstash之间传输效率以及es-sql查询效率简单测试
来源:互联网 发布:东四命与西四命算法 编辑:程序博客网 时间:2024/05/16 08:53
对于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命令了)
方法来自:logstash中文文档,很不错
我的实际测试:
测试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_logfor 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.1sdone
其中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的优化问题:
配置index.refresh_interval参数
如何提高ElasticSearch 索引速度
如何提高ElasticSearch 索引速度
linux日志信息
shell 的echo命令会将输入的字符串送往标准输出
- elasticsearch+logstash之间传输效率以及es-sql查询效率简单测试
- SQL技巧以及一些查询效率问题
- MongoDB入库、更新、查询效率简单测试
- SQL提高查询效率
- SQL查询优化效率
- 提高SQL查询效率
- 提高查询效率 sql
- SQL查询效率
- SQL 分页查询效率
- SQL提高查询效率
- SQL查询的效率
- 提高SQL查询效率
- sql查询执行效率
- SQL 查询的效率
- SQL 查询效率
- SQL 查询效率
- SQL 查询效率
- SQL查询效率
- WEB应用从服务器主动推送Data到客户端的方式
- PHP中”单例模式“实例讲解
- scala控制抽象
- Arctic Network
- 2463: [中山市选2009]谁能赢呢?
- elasticsearch+logstash之间传输效率以及es-sql查询效率简单测试
- 函数指针与指针函数
- C语言实验——素数
- RecyclerView详细介绍-----多item布局(三)
- 集装箱问题
- 连接池配置出现access denied for user 'root'@'localhost'(using password:YES)异常
- 第二十六讲项目1-投票表决器
- 题解-ACM2016级新生周赛(11.13)
- 第五部知识点