希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命名的监控系统究竟怎么样呢?今天虫虫给大家讲讲这个以神之名命名的监控系统。

普罗米修斯(Prometheus)介绍

Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。

它涵盖了可以绑定的整个生态系统工具集及其功能。

Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。

普罗米修斯的主要特点是:

  • 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
  • PromQL,一种灵活的查询语言 ,可利用此维度
  • 不依赖分布式存储;单服务器节点是自治的
  • 时间序列收集通过HTTP上的拉模型进行
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

 

实验环境:(全部关闭防火墙,禁用selinux)

Docker容器:ip

需要安装的组件

Docker:192.168.1.40

nodeExporter                 

Prometheus   server       

Cadvisor   

grafana

 

docker2:192.168.1.50

nodeExporter  

 Cadvisor

docker3:192.168.1.100

nodeExporter  

Cadvisor

需要部署的组件:

Prometheus     server:普罗米修斯的主服务器

nodeexporter:负责收集host硬件信息和操作系统信息

CAdvisor:负责收集host上运行的容器信息

grafana:负责展示普罗米修斯监控界面

1):3个节点,全部部署node-exporter和cadvisor

docker1上:部署nodeexporter,收集硬件和系统信息;且在浏览器上验证结果。网页访问成功则部署成功!!!
[root@docker ~]# docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
[root@docker2 ~]# docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
[root@docker3 ~]# docker run -d -p 9100:9100 -v /proc:/host/proc -v /sys:/host/sys -v /:/rootfs --net=host prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
PS:注意这里使用了--net=host,这样prometheus   server 可以直接与node-exporter通信。
部署安装cadvisor,收集节点容器信息:(在浏览器上验证,猫头鹰头像)
[root@docker ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor
[root@docker2 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor
[root@docker3 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor

普罗米修斯基于python Flask 普罗米修斯docker_docker

普罗米修斯基于python Flask 普罗米修斯docker_prometheus_02

2)在docker1上部署prometheus server服务:

在部署prometheus之前,我们需要对它的配置文件进行修改,所以我们先运行一个容器,先将其配置文件拷贝出来。

[root@docker ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
[root@docker ~]# docker exec -it prometheus /bin/sh
[root@docker ~]# docker cp prometheus:/etc/prometheus/prometheus.yml ./
修改:第29行,这里指定了promethus的监控项,包括它也会监控自己收集到的数据。
    - targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.1.50:8080','192.1    68.1.50:9100','192.168.1.100:8080','192.168.1.100:9100']
[root@docker ~]#docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
PS:在浏览器上点击status--targets这里能够查看到我们各个监控项

普罗米修斯基于python Flask 普罗米修斯docker_普罗米修斯基于python Flask_03

3)在docker1上,部署gragana服务,用来展示prometheus

[root@docker ~]# mkdir grafana-storage
[root@docker ~]# chmod 777 -R grafana-storage
[root@docker ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123456" grafana/grafana

##在网页上登陆,账号admin   密码123456,登陆成功后

先添加数据源--->添加普罗米修斯源---->进入后更改自定义名称及指定普罗米修斯的源----->点击save上传----->会看到普罗米修斯与grafana连接正常

普罗米修斯基于python Flask 普罗米修斯docker_docker_04

普罗米修斯基于python Flask 普罗米修斯docker_普罗米修斯基于python Flask_05

普罗米修斯基于python Flask 普罗米修斯docker_时间序列_06

PS:看到下面这个提示说明普罗米修斯和grafana服务是正常连接的,此时,虽然grafana收集到了数据,但怎么显示它,任然是个问题,grafana支持自定义显示信息,不过要自定义起来非常麻烦,不过好在,grafana官方为我们提供了一些模板,来供我们使用。

普罗米修斯基于python Flask 普罗米修斯docker_时间序列_07

登陆Grafana官网:https://grafana.com

官网下载模板:

普罗米修斯基于python Flask 普罗米修斯docker_普罗米修斯基于python Flask_08

普罗米修斯基于python Flask 普罗米修斯docker_docker_09

选择一款模板,然后我们有2种模式可以套用这个模板。

1:选择模板

普罗米修斯基于python Flask 普罗米修斯docker_prometheus_10

普罗米修斯基于python Flask 普罗米修斯docker_docker_11

点击下载。

下载完成之后,来到控制台:

普罗米修斯基于python Flask 普罗米修斯docker_docker_12

把下载好的导入

普罗米修斯基于python Flask 普罗米修斯docker_时间序列_13

第二种导入模板方式:

可以直接通过模板的id号。

普罗米修斯基于python Flask 普罗米修斯docker_普罗米修斯基于python Flask_14

普罗米修斯基于python Flask 普罗米修斯docker_prometheus_15

普罗米修斯基于python Flask 普罗米修斯docker_时间序列_16

10619,这个模板还可以。