目的:还原《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
文件格式如下:
删除: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起到聚合分析的作用,由于每一时刻只有一个文档,并且只有一个值,那么平均值就是文档中采集时刻的值
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)添加数据源
(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界面,更改查询参数