ELK以及Grafana对google股价分析

目的:还原《learning ELK stack》第二章中的例子,学习timelion基本的使用方法,完成时间序列的绘图

环境unbuntu16,

注意:ELK中下载程序版本号要一致,否则可能不能使用

1、下载并安装ELK工具

(1)安装Elastic Search

    从该网址下载最新的版本:https://www.elastic.co/downloads/elasticsearch

  下载TAR版本,解压,运行:bin/elasticsearch

(2)安装kibana

从该网址下载最新的版本:https://www.elastic.co/downloads/kibana

下载TAR版本,解压,运行:bin/kibana

(3)安装Logstash

从该网址下载最新的版本:https://www.elastic.co/downloads/logstash

下载TAR版本,解压,运行:bin/logstash -f logstash.conf

注意:这里的logstash.conf需要根据实际情况进行定制

2、获取数据源

从该网址获取google的历史股票值:https://finance.yahoo.com/quote/GOOG/history?ltr=1

Google的股价

文件格式如下:

采集的google股价

删除:Date,Open,High,Low,Close,Adj Close,Volume

3、编辑logstash.conf文件

input{

      file{

      path => "/home//xxx/GOOG8.csv"

      start_position => "beginning"

}

}

filter{

      csv{

      columns => ["date_of_record","open","high","low","close","volume","adj_close"]

      separator => ","

}

      date{

      match => ["date_of_record","yyyy-MM-dd"]

}

      mutate {

      convert => ["open", "float"]

      convert => ["high", "float"]

      convert => ["low", "float"]

      convert => ["close", "float"]

      convert => ["volume", "integer"]

      convert => ["adj_close", "float"]

}

}

output {

    # tdout { codec => "rubydebug" }

    # 筛选过滤后的内容输出到终端显示

    elasticsearch {  # 导出到es,最常用的插件

        #codec => "json"

        # 导出格式为json

        hosts => ["127.0.0.1:9200"]

        # ES地址+端口

        index => "logstash-new11-%{+YYYY.MM.dd}"     

    }

}

然后运行:bin/logstash -f logstash.conf,将数据输入到elasticsearch中。

5、在kibana中进行时间序列的绘制,使用Timelion完成

输入:.es(index='logstash-new11-*',metric='avg:volume',timefield='@timestamp').lines(show=1)

解释,metric起到聚合分析的作用,由于每一时刻只有一个文档,并且只有一个值,那么平均值就是文档中采集时刻的值


使用kibana的google股价的时间序列展示

6、下载grafana

从该网址下载最新的版本:https://grafana.com/grafana/download

下载:wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.2_amd64.deb

sudo dpkg -i grafana_5.2.2_amd64.deb

使用说明:http://docs.grafana.org/installation/debian/

启动grafana:sudo service grafana-server start

This will start the grafana-server process as the grafana user, which was created during the package installation. The default HTTP port is 3000 and default user and group is admin.用户名和密码默认是:admin

(1)添加数据源

添加data source

(2)添加dashboard

选择graph


metric选择“sum”即可出现值,选择其它函数则不会出现值,但是改变Draw mode就可显示,这是为什么?




将Draw mode改成bar后数据即可显示



7、警告引擎和规则指南

来源:http://docs.grafana.org/alerting/rules/

警报只适用于Grafana v4.0及以上版本。5.2版本以后支持ES数据库,要使用相关告警功能,请下载最新的Grafana版本。

(1)简介

在Grafana中,警报(Alerting )允许您将规则附加到仪表板面板上。当您保存仪表板时,Grafana将把警报规则提取到一个单独的警报规则存储中,并安排它们进行评估。

在图形面板的alert选项卡中,您可以配置应该评估警报规则的频率,以及警报更改状态和触发其通知所需满足的条件。

(2)执行

警报规则是在一个调度器和查询执行引擎中的Grafana后端计算的,该引擎是core Grafana的一部分。目前只支持一些数据源。他们包括Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, MySQL, Postgres and Cloudwatch。

注意:对Elasticsearch的告警支持仅在Grafana v5.2或更高版本中可用。

(3)聚类

目前的警报支持一种有限形式的高可用性。由于Grafana的v4.2.0,所以在运行多台服务器时,警报通知会被deduped。这意味着所有警报都在每个服务器上执行,但是由于deduping逻辑,不会发送重复的警报通知。将来将引入适当的警报负载平衡。

(4)规则配置

目前只有图形面板支持警报规则,但这将在以后的版本中添加到Singlestat和表格面板。

(5)名称与评价间隔

在这里,您可以指定警报规则的名称以及调度程序计算警报规则的频率。

(6)条件

目前唯一存在的条件类型是查询条件,它允许您指定查询字母、时间范围和聚合函数。



(7)查询条件的例子

avg() OF query(A,5m,now) IS BELOW 14

(1)avg()控制如何将每个系列的值变成可以与阈值进行比较的值。单击该函数将其更改为另一个聚合函数。

(2)query(A, 5m, now) 。A这个字母定义了要从Metrics标签执行什么查询。第二个参数定义了时间范围,5m,Now,是5分钟前到现在。你也可以做10 m,Now-2m来定义一个时间范围,时间范围是10分钟前到2分钟之前。如果您想忽略最后2分钟的数据,这是非常有用的。

(3)IS BELOW 14定义阈值和阈值的类型。您可以点击下面的按钮来更改阈值的类型。

警报规则中使用的查询不能包含任何模板变量。目前我们只支持条件之间的AND和OR运算符,它们是串行执行的。

对GOOGLE股票的close设置阈值,并设置相关查询条件,出现告警:

相关的告警测试:




相关告警发送配置参考:https://blog.csdn.net/jailman/article/details/78920166;;;https://blog.csdn.net/xiegh2014/article/details/79002607;;https://blog.csdn.net/Jailman/article/details/78920166


8、配置Alerting告警

1、修改grafana配置文件

sudo gedit /etc/grafana/grafana.ini

288:enabled = true

289:host = smtp.163.com:25

290:user = 你的邮箱名

292:password = *******

295:skip_verify = true

296:from_address = 你的邮箱名@163.com

379:execute_alerts = true

9、模板的使用

参考:http://www.bubuko.com/infodetail-2130749.html和https://segmentfault.com/a/1190000008897731

http://docs.grafana.org/features/datasources/elasticsearch/#templating

https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

注意:在Elasticsearch升级到5.0以后,去掉了原有的string类型,添加了text和keyword类型。其中text类型适用于电子邮件正文、产品描述等需要进行全文索引的信息;而keyword适用于电子邮箱地址、主机名、网络传输状态码、国际邮政编码、标记文件等能够精确命中字段的信息。

(1)进入dashbord的界面并点击“setting”

(2)在“general”中进行常规设置



(3)进入“variables”进行设置

重点在这里,{ "find" : "terms", "field" : "src_ip.keyword" },这里面一定要遵守json格式,花括号里的空格要留好,否则报错,field字段必须后面要加一个.keyword,否则出现不了数据


(4)进入dashboard界面,更改查询参数


你可能感兴趣的:(ELK以及Grafana对google股价分析)