Prometheus是什么?

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。

Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。

输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus

与其他监控系统相比,Prometheus的主要特点是:

  1. 一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)。
  2. 非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
  3. 一种灵活的查询语言。
  4. 不依赖分布式存储,单个服务器节点。
  5. 时间集合通过HTTP上的PULL模型进行。
  6. 通过中间网关支持推送时间。
  7. 通过服务发现或静态配置发现目标。
  8. 多种模式的图形和仪表板支持

此次搭建的架构

架构图

操作步骤

安装Prometheus

这个我们通过docker来安装,非docker会遇到很多奇怪的bug,为了少爬坑,我选择了docker来进行操作

  1. 首先我们添加YUM源:
[root@heroyf ~]# sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
  1. 安装docker
[root@heroyf ~]# yum -y install docker-engine
  1. 启动docker
[root@heroyf ~]# systemctl enable docker.service
[root@heroyf ~]# systemctl start docker
  1. 配置Prometheus文件
global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus

  - job_name: linux
    static_configs:
      - targets: ['被监控服务器的ip地址:9100']
        labels:
          instance: db1

  - job_name: mysql
    static_configs:
      - targets: ['被监控服务器的ip地址:9104']
        labels:
          instance: db1
  1. 启动Prometheus
[root@heroyf ~]# docker run -d \
  -p 9090:9090 \
  --name prometheus \
  -v ~/prometheus.yml:/etc/prometheus/prometheus.yml \
  quay.io/prometheus/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \

第一次运行此命令时,它将从Docker Hub中提取Docker镜像。此命令很长,并且包含许多命令行选项。 让我们更详细地看看它:
- -d选项启动在独立模式下的Prometheus的容器,这意味着容器将在后台启动,并不会按终止CTRL+C 。
- –name选项给定容器一个名字。
- -p 9090:9090的选项公开Prometheus的web端口(9090),并使其通过主机系统的外部IP地址访问。
- -v […]选项挂载prometheus.yml从主机文件系统的配置文件到哪里Prometheus希望它(容器内的位置/etc/prometheus/prometheus.yml )。
- --config.file选项相应地设置到Prometheus配置文件的位置,在容器内 。

我们可以通过docker ps来查看该容器是否在运行

CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
fa38e7bf5775        quay.io/prometheus/prometheus   "/bin/prometheus -..."   4 hours ago         Up 4 hours          0.0.0.0:9090->9090/tcp   prometheus

attention切记要在走下一步之前在你所购买的云厂商的安全组中打开对应的端口,比如这里的9000端口,否则会被防火墙给阻拦。

接下来我们通过访问 http://monitor_ip_address:9090 来访问,不出意外的话应该就能看到了
Prometheus web

我们进入Status->Targets可以看到如下的情景
Prometheus status

唯一你们和我不同的是,你们的状态机会是Down,因为还没安装探针。所以下篇我们来在被监控端安装探针

版权声明:本文为原创文章,版权归 heroyf 所有
本文链接: https://heroyf.club/2019/03/make_monitor_1/


“苹果是给那些为了爱选择死亡的人的奖励”