zoukankan      html  css  js  c++  java
  • 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 上。

     

  • 相关阅读:
    Stack堆栈的数据结构
    反坦克导弹相关网页
    Java 执行jar文件出现版本错误信息
    Python3 数字保留后几位
    Python3: Windows系统上同时安装Python2和Python3
    Linux 搭建FTP
    DBCP、c3p0、Druid三大连接池区别
    Sybase 存储过程中IF的用法
    Confluence5.8部分空间名称显示为问号的解决方案
    Mysql 更改编码方式
  • 原文地址:https://www.cnblogs.com/vincenshen/p/8677627.html
Copyright © 2011-2022 走看看