宜信大数据:如何快速搭建监控报警系统
《宜信大数据:如何快速搭建监控报警系统》要点: 作者:宜信大数据创新中心LAIN团队 在系统的开发及运维中,监控报警始终是非常重要的环节.监控报警系统能够帮助开发运维人员及时理解系统的状况,便于出现问题时及时定位,同时可以根据整个监控指标的趋势图规划后续的开发运维计划.本文希望通过介绍宜信大数据创新中心的监控报警系统,给大家快速搭建一套监控报警系统提供一些参考. 基本架构在宜信大数据创新中心,我们使用了自研开源的基于 Docker 的 PaaS 平台?LAIN?帮助业务快速开发迭代.为了使得整个平台更加稳定,我们也基于一些开源组件构建了一套方便可用的监控报警系统. 通常一套监控报警系统会包括这么几个模块:
我们在进行技术选型时主要考虑的是希望各组件专注做一件事情并把它做好.基于这点,我们选择了?collectd?进行数据收集,Graphite?进行数据存储,?Grafana?进行数据展示,icinga2?进行监控报警.基本的架构如图所示: 下面我们通过一个例子介绍下各个组件的基本情况:假设我们需要监控某台服务器上8080端口的连接数,并对其设置报警阈值. 数据收集监控报警系统最基础的一环就是如何对监控指标的相关数据进行收集.我们选用collectd 进行收集. collectd 的优势包括:
那如果我们想通过 collectd 收集机器 8080 端口的连接数,并将相应数据发送给Graphite.在安装好 collectd 之后只需要在 /etc/collectd.conf 配置文件中加入下列语句即可: 整个配置文件比较好理解,首先声明了机器的主机名,载入 tcpconns 以及 write_graphite 两个插件. tcpconns配置成了会收集本机的 8080 端口的相关连接信息,如果申明其中的 ListeningPorts 变量为 true 意味着插件会收集本机上所有被 socket 监听的端口,设置为 false 则只会收集指定的端口. write_graphite配置成使用 tcp 协议将消息发送给 localhost 的 2003 Port,此处 Host 和 Port 指的就是 Graphite 的数据收集模块 carbon-cache 所在的机器的 Hostname 或者 IP 地址以及相应监听的端口. 配置文件中具体配置项的含义以及支持的插件的配置项都可以在 collectd.conf 的?Manpage?中看到. 数据存储Graphite是一个很受欢迎的指标收集平台.其主要组件包括:
CarbonCarbon主要包括三个组件:carbon-cache、carbon-relay 以及 carbon-aggregator. carbon-cache主要负责接收指标数据,然后定期将接收到的数据写入到磁盘中.同时它还停供了查询接口,可以直接查询位于内存中的还未被写入磁盘的相关热点数据. 给 carbon-cache 发送数据非常简单,如果不用 collectd 的 write_graphite plugin 进行发送,也完全可以通过非常简单的命令给 carbon-cache 发送数据: echo "foo.bar 1 `date +%s`"| nc localhost 2003 其中主要包括三项:指标名、指标相关数据以及时间戳. 对于一个数据量不大的监控系统来说,其实一个简单的 carbon-cache 实例就已经足够了.但是随着监控指标的增多,仅仅靠一个 carbon-cache 可能会导致 I/O 出现瓶颈.这个时候就需要考虑carbon-relay,可以通过定制相应的规则将服务按一定的规则(比如一致性哈希)发送给后端的多个 carbon-cache. carbon-aggregator的作用其实与 statsd 相似,主要是起到一个数据归集的作用.一方面可以减轻 carbon-cache 的压力,一方面有些情况下需要进行统计工作,也可以通过 carbon-aggregator进行处理. Whispercarbon-cache的数据会从内存中落地到 whisper 中.whisper 是一种基于文件的时间序列型数据库,针对存入其中的每一个指标都会生成一个固定大小的基于时间序列的 .wsp 存储文件.固定大小的一个优势是能够根据需要收集的指标数粗略的估计出总共需要的磁盘空间. 对于大多数指标的监控而言,大家更加关心的是最近一段时间的详细数据,而对于之前的监控数据,只需要能够看到一个大致的趋势就已经足够了.用户可以通过配置文件规定存在于whisper 中的指标的数据精度,设置随着时间的推移慢慢降低存储精度. 比如我们可以在配置 carbon-cache 时,在配置文件?storage-schemas.conf?中配置成如下形式: [default] pattern = .* retentions = 1m:7d,10m:30d,30m:1y 其中 pattern 匹配指标的名字,retentions 指定这个指标应该保留多久.此配置信息则表示相应的符合条件的指标数据,1 分钟精度的会保留 7 天,之后降为 10 分钟精度,保留 30 天,再之后降为 30 分钟精度,保留 1 年. (编辑:ASP站长网) |