场景
如果您厌倦了使用SQL来做Grafana图表,现在SLS刚好实现了ES接口兼容,可以使用Grafana ES来连。
可以获得以下特性
- 不需要安装Grafana SLS的插件,使用Grafana自带的ES插件即可
- 使用ES插件配置图表,不需要写SQL就可以快速配置漂亮的图表
使用方法
部署一个Grafana(已有的话就跳过)
假设你已经有一个部署好的Grafana 8.x或9.x ,如果还没有Grafana,用容器启动一个也非常方便。
docker run --name grafana -d -p 3000:3000 grafana/grafana:9.5.5
对应机器的http://机器ip:3000 即可访问到Grafana
配置数据源
- 登录Grafana控制台。
- 找到DataSouce配置入口,选择DataSource类型为Elasticsearch
- 在数据源配置页参考如下方式配置
URL格式为 https://${project}.${slsEndpoint}/es/ ,假设我们的project名字为etl-dev 同时广州的endpoint是 cn-huhehaote.log.aliyuncs.com
那么对应的URL为https://etl-dev.cn-huhehaote.log.aliyuncs.com/es/
注意要开启Basic Auth, User/Password 填写 阿里云AccessKeyId和AccessKeySecret
Index Name的格式是 ${project}.${logstore}, 比如我的project名字为etl-dev,logstore名字为accesslog,那么index名字为etl-dev.accesslog
注意如果是8.x的Grafana需要选择版本为 7.10+
配置图表
选好数据源默认就出图了
下面以Nginx访问日志为例看一下配置
整体qps曲线
在Query框中可以填写过滤条件,语法是ES Lucene的语法
统计status为200的曲线
在Query中输入status: 200 即可查询满足这个条件的曲线
统计Top请求的URI
Group By点+ 选择 Terms,字段为request_uri
统计RT 分位数
metric选择 Percentiles并选择upstream_response_time字段, 在Values中可以选择具体的分位数值,比如50,95,99
按Top请求URI看RT 分位数
点+增加Group By Terms,选择request_uri,metric选择Percentiles并选择upstream_response_time字段
看非200的Top请求URI
点+增加Group By Terms,选择request_uri
看非200的Top请求URI以及对应的Method
相比上面增加配置request_method的group by
小结
通过以上演示可以看到,其核心逻辑主要就3点:
- group by选择维度
- metric选择要统计的指标
- query为过滤条件,过滤出想要的数据
通过ES的插件对接SLS的ES兼容接口,可以很方便地做图表可视化,而无需写SQL。
期待大家的使用~