2019独角兽企业重金招聘Python工程师标准>>>
##Elastic Search 1.7 http://ec2-54-249-170-153.ap-northeast-1.compute.amazonaws.com:9200/ 安装在~目录 bin/elasticsearch start 9200和9300一定在AWS上要打开
###安装 wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.0.tar.gz
##Kibana 4.1 http://ec2-54-249-170-153.ap-northeast-1.compute.amazonaws.com:5601/
新版在~目录下
bin/kinaba启动
老版_http://ec2-54-249-156-176.ap-northeast-1.compute.amazonaws.com/_拷到了/var/www下 和elasticsearch的绑定在config.js上
##LogStash 1.4.2 在~目录 crawler.conf文件保存在wildfire项目的lib/task下 bin/logstash agent -f ~/rails_app/src/wildfire/lib/tasks/crawler.conf
###安装 wget https://download.elastic.co/logstash/logstash/logstash-1.5.3.tar.gz tar -zxvf logstash-1.5.3.tar.gz screen -x ScanGreen1
##FAQ
- AWS EC2中安装需要的注意事项
- 9200,9300,5601端口要记得打开
- elasticsearch的地址不要写外部IP,否则会很浪费data,写内部ip
elasticsearch {
host => "ip-10-160-94-102.ap-northeast-1.compute.internal"
port => 9200
cluster => "elasticsearch"
protocol => http
}
-
grok有哪些pattern?
这里有全部的列表;
值得一提的是,QUOTEDSTRING和GREEDYDATA都是文字内容比较多的时候比较好用的pattern;
Grok debugger是一个巨好用的工具;
-
如何丢失掉不需要的日志?
网上有说用grep filter的,但是一方面grep不是官方插件(而是logstash-contrib里面的),另外新版好像也没有了。于是我最终还是只用了if语句和grok。
基本逻辑就是
- 每个match都给加一个tag
- 结束前判断是不是有有用的tag存在
if !("tagA" in [tags] or "tagB" in [tags]) {
drop { }
}
-
为什么索引的值不能做sum/average,为什么我的字段不是Number类型而是String?
grok的文档是很有误导性的,%{NUMBER:myfield}的意思仅仅是使用数字的正则表达式去匹配,而匹配的结果grok都默认以string的类型去索引。
如果想要指定索引的类型,需要写成%{NUMBER:myfield:int},:float也是可以用的。
如果某个字段的索引已经是string了,要改成int应该是可以用elasticsearch的Mapping API的,但是我没有成功。我最后成功是把之前的索引都删掉重做了。
$ curl -XDELETE 'http://localhost:9200/twitter/'
-
怎么制作visualization?
好多东西我也没理解,简单说些基本原理和小技巧吧:
- "split"相当于group by
- "search"的创建在"discover"里
- terms选择后,size写0意思就是没有limit
- terms选择后,可以用include或exclude限定这个字段,相当于where