容器化和微服务,让世界花枝招展,又支离破碎。一个典型的运行在容器云之上的微服务架构的应用,一般是由多种服务和基础设施的支撑而来的。这对运维工做提出一个很大的挑战 —— 一个应用后端的众多系统,到底是怎样的工做情况?后端
事实上,全部构成这一应用的微服务以及支撑这一应用的全部基础设施,都会有各自的日志、指标数据,以及构建在上游的监控、日志系统。各处分散的数据和系统,会给支持团队形成极大的负担,也最终成为开发运维工做的拦路虎。服务器
以前的经验中,能够把自家应用的各类业务、技术指标经过 Zabbix 或者 influxDB 进行存储,经由 Grafana 的插件系统进行整合展现,目前流行的容器云支撑系统 Kubernetes,也可以经过 influxDB 在 Grafana 上展现 Heapster 搜集到的数据。指标的事情解决了,下面天然就是日志了。微信
Grafana 也提供了针对 Elasticsearch 的数据源插件。下面用 Kubernetes 中正在运行的日志收集实例来展现 Grafana 对 ES 的支持。架构
创建数据源
首先是创建一个 Elasticsearch 类型的数据源。这里使用了一个 Kubernetes 集群的 ES 日志。Type 部分选择 Elasticsearch,而后填写 URL 地址、认证方式。Index name 填写 logstash-*
。大体如图所示。运维
点击下面的 Test & Save
,测试成功后完成数据源设置。微服务
Access 通常来讲都是选择 Proxy,也就是服务器间通讯。测试
创建指标
接下来进入展现环节。利用新建的 ES 数据源,来创建展现单元。spa
曲线图
首先创建一个 Graph Panel,数据源选择上面新建的 ES。.net
Query 一栏须要按照 Lucene 语法进行查询。这里咱们选择 kubernetes.container_name: "jenkins"
,也就是容器名称为 “jenkins” 的日志项。插件
其余能够保持缺省便可。
配置结束以后,稍等几秒钟,就会出现数据点。
日志表格
我的感受上面的的数字在日志来讲用处并不大,咱们的目的仍是在同一界面下查看日志。
创建一个 Table Panel。配置数据源为 ES。Metric 选择 Raw Document
。
通过短暂等候,上面表格会出现一堆的 JSON 文本,咱们要经过 Options 来进行展示配置。
在 Columns 中咱们简单的新加两列:”kubernetes.container_name” 和 “log”,就会以表格的形式把这两列展现出来。
告一段落
至此,Grafana 就成为一个集成了众多来源的运维入口。通过进一步的加工和配置(其实很是大量很是琐碎),仅从这一个入口就可以完成不少的平常巡检任务;更重要的是,由于数据的统一展现,在业务、服务和基础设施之间创建了直观的联系,为事故的处理甚至预测,提供了更多的便利条件。
本文分享自微信公众号 - 伪架构师(fake-architect)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。