Prometheus

2020-05-14  本文已影响0人  KwongRay

[TOC]

一、 介绍

  1. Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。
  2. Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。
  3. Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus
  4. 与其他监控系统相比,Prometheus的主要特点是:
    • 一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
    • 非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
    • 一种灵活的查询语言。
    • 不依赖分布式存储,单个服务器节点。
    • 时间集合通过HTTP上的PULL模型进行。
    • 通过中间网关支持推送时间。
    • 通过服务发现或静态配置发现目标。
    • 多种模式的图形和仪表板支持。

二、Prometheus架构

architecture.png

其大概的工作流程是:

三、 安装部署

四、各组件监控

以下各种配置,凡是带有exporter的,都需要提前安装
凡是修改的配置都在prometheus.yml文件

- job_name: 'node'
    static_configs:
    - targets: ['192.168.80.130:9100']
      labels:
        env: test
        name: node1
        instance: 192.168.80.130
- job_name: 'mysqld'
    static_configs:
    - targets: ['192.168.28.131:9104']
      labels:
        env: test
        name: mysql-5.7
        instance: 192.168.28.131:3306
- job_name: elasticsearch
    scrape_interval: 10s
    metrics_path: "/_prometheus/metrics"
    static_configs:
    - targets: ['192.168.28.130:9200']
      labels:
        env: test
        name: elasticsearch
- job_name: redis
    static_configs:
    - targets: ['192.168.28.130:9121']
      labels:
        env: test
        name: redis
        instance: 192.168.28.130:3306
[
 {
   "targets": [
     "127.0.0.1:9900"
   ],
   "labels": {
     "job":"spring-boot-service",
     "env":"dev",
     "application":"api-gateway",
     "instance":"127.0.0.1:9900"
   }
 },
 {
   "targets": [
     "127.0.0.1:8000"
   ],
   "labels": {
     "job":"spring-boot-service",
     "env":"dev",
     "application":"uaa-server",
     "instance":"127.0.0.1:8000"
   }
 },
 {
   "targets": [
     "127.0.0.1:7000"
   ],
   "labels": {
     "job":"spring-boot-service",
     "env":"dev",
     "application":"pscp-user",
     "instance":"127.0.0.1:7000"
   }
 }
] 
  1. 修改prometheus的配置
  - job_name: spring-boot-service
    metrics_path: "/actuator/prometheus"
    file_sd_configs:
    - files: ['F:/code/pscp-platform/pscp-tool/prometheus-2.18.1.windows-amd64/*.json']
   #这里的路径就是上面新建的json文件
上一篇 下一篇

猜你喜欢

热点阅读