Prometheus 实战于源码分析之部署

Prometheus是一个通用的监控平台,它可以kubernetes结合,监控容器和主机的性能,由于它是kubernetes之前就已经有了,并不是一个专门设计用来监控kubernetes的,这一点和heapster最大差别。prometheus目标是通用,所以它不和某一个平台绑定。它的设计思想也很有意思,它是通过pull,这种设计好处是最少的降低和被监控对象的耦合,当prometheus挂掉后不会影响到被监控对象,一个经典的图片还是要和大家先分享一下
这里写图片描述
简单介绍一下基本组件,后面代码再详细分析
pushgateway是一个网关,刚才说到prometheus设计理念是pull,如果你非要push当然可以就可以通过这个gateway;exporters是各种监控agent,譬如监控主机的叫做node exporter,还有很多其他的;discovery是一个服务发现,可以通过这些服务发现动态增加监控对象;stoage是一个内存+磁盘的存储系统,负责保存监控数据,alertmanager是告警统统,当设定告警规则后如果匹配产生告警会push到里面;其它还是之前promsql查询以及webui展现。
我们先来安装使用一下:
可以通过源码编译也可以通过下载二进制包,还可以通过docker启动,如果是源码编译很简单,clone下代码make build一下就行,会产生二进制文件prometheus,如果是最新代码请选择go1.8.1以上版本。

make build
>> fetching promu
>> building binaries
 >   prometheus
 >   promtool

如果是使用容器就更简单,直接拉取镜像运行:

docker run -d     --name=prometheus     --publish=9090:9090     -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml     -v /var/prometheus/storage:/prometheus     prom/prometheus

这里用到一个配置文件prometheus.yml 简单说一下

global:
  scrape_interval: 15s
  external_labels:
    monitor: 'codelab-monitor'
scrape_configs:
  - job_name: 'node'
    scrape_interval: 5s
    static_configs:
      - targets: ['x.x.x.x:9100']
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

很简单就是定义一个全局配置和一个特定配置,至于下面的targets是什么呢?它就是上面说的exporter,这边的x.x.x.x使用的是一个主机的node exporter,localhost是prometheus系统自身监控。

docker run -d   --name=ne   -p 9100:9100   prom/node-exporter

负责采集主机性能数据当然你可以直接通过他的9100端口访问其采集的性能数据
那么prometheus也是一样,配置这些target,prometheus会按照你设定的间隔时间去pull数据保存起来,看一下自带ui的效果,是一个go gc持续时间的图:
Prometheus 实战于源码分析之部署_第1张图片
这一篇基本介绍清楚了prometheus的基本操作和原理。

你可能感兴趣的:(云计算)