Prometheus Monitoring System & Time Series Database

什么是 TSDB (Time Series Database):

咱们能够简单的理解为.一个优化后用来处理时间序列数据的软件,而且数据中的数组是由时间进行索引的.node

时间序列数据库的特色:

  • 大部分时间都是写入操做
  • 写入操做几乎是顺序添加;大多数时候数据到达后都以时间排序.
  • 写操做不多写入好久以前的数据,也不多更新数据.大多数状况在数据被采集到数秒或者数分钟后就会被写入数据库.
  • 删除操做通常为区块删除,选定开始的历史时间并指定后续的区块.不多单独删除某个时间或者分开的随机时间的数据.
  • 数据通常远远超过内存大小,因此缓存基本无用.系统通常是 IO 密集型
  • 读操做是十分典型的升序或者降序的顺序读,
  • 高并发的读操做十分常见.

所以很是适用于用来存储和处理监控数据。mysql

 

什么是Prometheus

Prometheus是SoundCloud发布的一个开源的系统监控和报警工具。自2012成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个很是活跃的开发人员和用户社区。它如今是一个独立的开源项目,而且独立于任何公司。为了强调这一点,并明确项目的治理结构,Prometheus在2016年加入了Cloud Native Computing Foundation,做为在 kubernetes以后的第二个由基金会主持的项目。git

Prometheus是一个强大的监控平台,提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。github

官方网站:https://prometheus.iogolang

 

Features

prometheus主要的特性:web

  • 多维数据模型(时序列数据由metric名和一组key/value组成)
  • 在多维度上灵活的查询语言(PromQl)
  • 不依赖分布式存储,单主节点工做.
  • 经过基于HTTP的pull方式采集时序数据
  • 能够经过中间网关进行时序列数据推送(pushing)
  • 目标服务器能够经过发现服务或者静态配置实现
  • 多种可视化和仪表盘支持

Components

prometheus生态系统由多个组件组成,其中许可能是可选的:sql

Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.数据库

 

Architecture

 从这个架构图,也能够看出 Prometheus 的主要模块包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就简单介绍各个组件实现的功能:数组

  1. prometheus server: 按期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。缓存

  2. exporters:负责向prometheus server作数据汇报的程序统。而不一样的数据汇报由不一样的exporters实现,好比监控主机有node-exporters,mysql有MySQL server exporter,更多请参考连接

  3. pushgateway:主要使用场景为:

       Prometheus 采用 pull 模式,可能因为不在一个子网或者防火墙缘由,致使 Prometheus 没法直接拉取各个 target 数据。在监控业务数据的时候,须要将不一样数据汇总, 由 Prometheus 统一收集。

    总结:实现相似于zabbix-proxy功能;

  4. Alertmanager:实现prometheus的告警功能。

  5. webui:主要经过grafana来实现webui展现。

 

环境搭建

Prometheus Server

  Prometheus Server 自己也将以容器的方式运行。

Exporter

  Prometheus 有不少现成的 Exporter,完整列表请参考 https://prometheus.io/docs/instrumenting/exporters/

咱们将使用:

  1. Node Exporter,负责收集 host 硬件和操做系统数据。它将以容器方式运行在全部 host 上。

  2. cAdvisor,负责收集容器数据。它将以容器方式运行在全部 host 上。

相关文章
相关标签/搜索