开发程序出现错误是一件很正常的事,即使有**的程序员也是如此,关键是要及时发现并定位错误。
在开发阶段我们有很多方法可以发现并定位错误,比如IDE检查、断点、CodeReview、测试、回归等。但是一旦部署到生产**之后,这些方法就不行了。如果再有问题你可能就只能借助事先设置好的日志和监控了。
一般日志和监控要设置在可能会出现问题的地方,比如发送/接收请求的地方、响应/接收响应的地方等,因为这样监控系统为相应的监控指标设置监控提醒后,才有可能发现问题。
监控系统只负责发现问题,具体是什么原因引起这样的问题,我们还是需要借助相关的日志记录。一般日志记录里有详细的请求信息和响应信息,并且有先后顺序。这样结合具体的问题,前后对比一下日志信息基本上就可以定位到具体的原因了。
现在管理日志和执行监控的工具有很多,但是使用较为广泛、性能较为高效的应该还是 Kibana 和 Grafana。
虽然,Kibana 和 Grafana 都可以管理日志和执行监控,但是由于各自明显的优缺点,现在很多开发者也喜欢搭配着使用。比如,让 Kibana 负责管理日志,让 Grafana负责执行监控。
Kibana
用 Kibana 管理日志记录是有优势的的,因为其底层依赖的 Elasticsearch 是在 Lucene 基础上构建而成的全文本搜索引擎,它可以快速地储存、搜索和**海量数据。这刚好符合数据量极大、查询**的日志场景。
Kibana 可支持很多复杂的查询,比如按字符匹配、按区间搜索、按字段搜索等,如下:
最后,Kibana 安装很简单,这里是安装和配置 Kibana 的操作手册:https://www.elastic.co/guide/cn/kibana/current/install.html。按照手册说明,你基本可以快速安装配置好 Kibana。
Grafana
Grafana 是一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用**中最流行的时序数据展示工具。与 Kibana 仅支持 Elastic Stack 不同,Grafana 支持大部分常用的时序数据库,如Elasticsearch、MySQL等。
另外,与 Kibana 的可视化相比 Grafana 的可视化也更灵活,它可以支持图形、表格、统计、仪表等更多种面板,开发者可以很容易的使用这些面板组合出非常酷炫的监控视图。如下:
图形面板
表格面板
统计面板
仪表面板
再一个,Grafana 创建监控更简单,只需要下面四步操作:
1、添加数据源:只有管理员可以添加数据源
2、创建控制台:展示监控数据
3、设置通知频道:告诉监控预**要通知给谁,支持邮箱、钉钉等多种**。
4、设置监控规则:告诉监控系统,什么情况才需要预**通知。
Kibana,Grafana —— 真是错误猎手,系统的定海神针,一旦用上你就无法自拔。