Prometheus Monitoring System & Time Series Database

Posted Vincen_shen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prometheus Monitoring System & Time Series Database相关的知识,希望对你有一定的参考价值。

什么是 TSDB (Time Series Database):

我们可以简单的理解为.一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的.

时间序列数据库的特点:

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

因此非常适用于用来存储和处理监控数据。

 

什么是Prometheus

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

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

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

 

Features

prometheus主要的特性:

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

Components

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

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 上。

 

 

以上是关于Prometheus Monitoring System & Time Series Database的主要内容,如果未能解决你的问题,请参考以下文章

Kube-Prometheus修改拉取时间

Rancher2.6全新Monitoring快速入门

Rancher2.6全新Monitoring快速入门

Prometheus不刮取其他碎片

k8s 安装 prometheus 过程记录

prometheus+grafana监控rabbitmq