几种常见的用于监控的开源软件
Grafana是一款高颜值并且兼具高性能的监控展示工具
Grafana监控体系的四部分,包括Graphite + Grafana + Seyren +Collectd。
Graphite是一款企业级的监控工具,其采用Django框架,可以运行在廉价的硬件资源之上。Graphite采用简单的文本协议和绘图功能可以方便地使用在任何操作系统上。
安装Graphite本身及其依赖的一些工具:graphite-carbon、grephit-web依赖PosetgreSQL数据库、配置Apache用于web访问Graphite
Grafana支持很多的数据源,主要支持的有如下数据源:
zabbix:整合了四种功能的监控系统
1.支持多种接口完成数据采集:agent,SNMP,IPMI(英特尔智慧平台接口),jmx
2.数据存储:mysql,pgsql
3告警:email,script脚本(短信,微信)
(1)可以告警升级,刚开始出故障时,发短信给运维工程师,隔两小时后没有解决问题,就发给他的领导,再隔两小时没解决,发给领导的领导
(2)可以发远程命令,刚开始出故障时,尤其是服务级故障,先不要立即发告警,在第一个周期内,试图尝试去解决问题,远程指挥目标主机重启一下服务,如果问题解决,就不用发警报了,如果没有解决,那就开始发警报
4.展示:简单图,图形,screen,slide,show,map
Zabbix的特点:
1.开源免费,社区支持。 它没有社区版和商业版之分。
2.分布式高可用。很多监控软件是单点,没有缓存,没有HA等这些技术。而Zabbix支持分布式。
3.低级别发现和自动发现。 随着监控设备数量越来越多,手动添加监控很烦,可能重复或遗漏。低级别发现和自动发现这两个功能非常有用,能大大提升监控的准确性和及时性。
4.全栈级监控。 我们需要监控的平台以及每个平台上有不同的产品。可以搭建多套独立的监控平台去完成,也可以用Zabbix实现全栈级统一的监控。
5.可定制。 引入DevOps的时候,Zabbix提供了标准的API可以和DevOps流水线进行集成。监控中整个DevOps流水线中应该是一个重要构成部分,因为CI/CD更偏向持续交付,但是交付后,还需要进行持续监控。
Grafana和与Zabbix结合,获得酷炫的监控界面
结合grafana展示接口形成监控系统
1.statsd+influxdb(时序数据库)+grafana
2.promethues(自身就相当于时序数据库,可收集数据,存储下来,并展示,但展示界面不好看,所以可结合grafana)+grafana
3.graphite+grafana
在业务层用作埋点系统
Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端)。我们可以通过客户端方面的对核心业务进行埋点。如下单流程、添加购物车流程。
在应用层用作应用监控系统
一些主流应用可以通过官方或第三方的导出器,来对这些应用做核心指标的收集。如redis,mysql。
在系统层用作系统监控
除了常用软件, prometheus也有相关系统层和网络层exporter,用以监控服务器或网络。
集成其他的监控
prometheus还可以通过各种exporte,集成其他的监控系统,收集监控数据,如AWS CloudWatch,JMX,Pingdom等等
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它的特点有:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口等。
可以用于日志搜索和格式化?
Logstash数据分析工具,它可以对系统生成的日志进行采集、分析、存储。2013年,Logstash被ElasticSearch公司收购,ELK Stack正式成为官方用语。
Logstash能够把多个日志文件汇总为一个日志文件,它使用JRuby编写。Logstash的理念很简单,只做三件事:1.Collect:数据输入 2.Enrich:数据加工,如过滤、改写等 3.Transport:数据输出。
Kibana是一个开源的分析与可视化平台,用来搜索、查看存储在ElasticSearch索引中的数据。
Consul有多个组件,但是整体来看,它是你基础设施中用于发现和配置服务的一个工具。它提供如下几个关键功能:
服务发现:Consul的某些客户端可以提供一个服务,比如api和mysql,其他客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易找到他们所依赖的服务。
健康检查:Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%一下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
键值存储:应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协助、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
多数据中心:Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。
Consul被设计为对DevOps群体和应用开发者友好,非常适合现代的、可伸缩的基础设施。