前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >啥?Grafana 还能为日志添加告警?

啥?Grafana 还能为日志添加告警?

作者头像
米开朗基杨
发布2020-09-21 15:35:12
2.2K0
发布2020-09-21 15:35:12
举报
文章被收录于专栏:云原生实验室云原生实验室

做过运维的同学都知道,服务的可观测性是一个非常重要的渠道,能够让我们掌控线上服务运行时的状态。一个好的监控系统,其价值在于一旦出现故障能够让我们运维的同学能够快速收到服务异常的通知以及定位问题。也就是我们常说的告警的两大衡量指标,即实时性和有效性。

1

Loki 的鸡汤

那么,今天小白请出第一个云原生里负责日志存储的便是Loki。这里可能有同学就说了:"我的日志存储和分析一直用elasticsearch也可以啊,为什么要用Loki"。别急,等小白慢慢说道说道

  • 首先Loki采用Golang开发,相比ES,Loki它更加轻量也更容易部署
  • 其次Loki仅索引日志的元数据部分,日志部分全部压缩存储,这样在方便操作的同时又节能节省我们存储空间
  • Loki采用和Prometheus一样的标签建立索引,这意味我们可以通过标签将metrics和logging监控数据联动起来

另外Loki也是由三部分构成,分别是负责采集的Promtail、负责存储的Loki和负责展示的Grafana。这里又有同学要问了:"我自己有了日志采集客户端了,难道还要再加一个Promtail吗?"。其实不然,Loki的日志收集有四种方法,除了Promtail外,还可以使用 FluentdFluentBitDockerDriver的方式。

今天,小白的实践就是利用Grafana给Loki日志系统添加告警功能。

2

进入正题

假设小白认为大家已经使用上Loki并在Grafana上查询日志了。那么小白在自己的环境内操作一次通过将内核OOM的故障告警出来,向大家展示此次告警的实践。

1.小白通过标签定位到需要查看的服务,并使用关键字过滤出想要查看的日志内容

2.这时小白想看下过去一段时间内服务器上出现OOM的趋势

可以看到,这里小白的服务器每过段时间都会出现零零散散的OOM事件,那么有运维的同学就要问了:"这么多OOM怎么办,Grafana好像也没地方可以配置Loki告警啊",小白先按下不表,让我们先来看看Prometheus和Loki的查询接口:

Prometheus的查询接口

代码语言:javascript
复制
  1. # 及时查询
  2. $ curl 'http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'
  3. # 范围查询
  4. $ curl 'http://localhost:9090/api/v1/query_range?query=up&start=2015-07-01T20:10:30.781Z&end=2015-07-01T20:11:00.781Z&step=15s'

Loki的查询接口

代码语言:javascript
复制
  1. # 及时查询
  2. $ curl -G -s "http://localhost:3100/loki/api/v1/query" --data-urlencode 'query=sum(rate({job="varlogs"}[10m])) by (level)'
  3. # 范围查询
  4. $ curl -G -s "http://localhost:3100/loki/api/v1/query_range" --data-urlencode 'query=sum(rate({job="varlogs"}[10m])) by (level)' --data-urlencode 'step=300'

小白先问大家有没有发现点奇怪东西呢?没错!眼尖的同学可能看出来Prometheus和Loki在查询的URL上几乎一样,并且参数基本也是兼容的。那么我们可不可以将Grafana的上Loki数据源改成类Prometheus的格式呢?

答案是当然可以!事实上在Github上我们也可以找到相关的问题#1422和#1222

得益于prometheus和loki是一个开发团队出品,我们只需简单的配置一步,在数据源中添加一个Prometheus类型,并在地址栏中填写上 http://loki:3100/loki,这样我们就能通过像查询prometheus一样查询日志的趋势图了

这时候小白再创建一个pannel来查询内核的OOM趋势就可以得到如下结果:

接下来的工作,小白就是在Grafana上添加一个Alert小铃铛,让它每分钟去Loki里面查询有没有出现OOM的日志生成,如果计算出来的结果大于0,小白就让Grafana通过邮件告警出来。

配置完成后不急保存,我们先Test Rule看看是否生效。

看到 state:"ok",小白长舒一口,终于可以设置告警了?,接下来小白就等着告警事件触发。

2000 years later...

当告警事件发生后,在小白的Grafana页面和邮箱都收到了事件的推送,这样就能够及时知道线上服务器发生了OOM事件了。

到这里小白就完成对于Loki的日志告警啦,大家是不是觉得很简单?是的话那就对了,正如它的开发者所说Like Prometheus, but for logs.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档