docker容器部署prometheus

docker容器部署prometheus

prometheus架构图

这里大概说下它的架构,中间的prometheus server就是它的要的核心,数据可以存本地也可以存到其他的数据库比如opentsdb,左边的下面exporter就是用来提供监控的指标的,比如上一篇我们部署的node-exporter就是其中的一个,当然还支持自己定义的监控指标,pushgetaway就是了。左下方的prometheus server是作为级联的形式或者分布式是扩展。中上方就是服务发现了,有kubernetes的也可以是consul的,所以你们现在知道为啥我前面搭建consul集群了,就是为了这一篇做铺垫的!右上边的alertmanager就是告警模块,而右下的则是作为展示功能,prometheus自己提供有自己的web界面,当然也支持第三方的图形界面比如grafana等。架构介绍到此结束,下面我们需要部署几个东西,一个是alertmanger,一个prometheus server,还有一个consul agent,这个consul agent 需要加入到前面部署好的consul 集群里面,而由于node-exporter、cadvisor以及consul的集群已经在上一篇部署了,所以我们就直接用就好了。


1.alertmanger部署

1.1拉取alertmanger的镜像

输入以下命令: docker pull prom/alertmanager,如下图:

docker容器部署prometheus

拉取alertmanager镜像


1.2新建一个alertmanager的配置目录,并新建一个配置文件用来配置告警信息,比如告警信息有谁发的,发给谁的等等信息,这里仅仅是作为一个测试,所以配置文件写的尽量简单。这里我们在配置文件输入以下信息:

docker容器部署prometheus


1.3启动alertmanager容器

将我们上面配置文件放到容器里面,输入以下命令:

docker run -d \

--restart=always \

--name alertmanager \

-p 9093:9093 \

-v /opt/alertmanager/config/:/opt/alertmanager/config/ \

docker.io/prom/alertmanager \

-config.file=/opt/alertmanager/config/alertmanager.yml \

-storage.path=/opt/alertmanager

如下图:

docker容器部署prometheus

启动alertmanager容器

这样alertmanager的服务就启动了,在浏览器里面输入192.168.1.102:9093,可以看到它的web界面,如下图:

docker容器部署prometheus

alertmanager界面


2.启动consul agent

2.1添加两个服务配置文件

由于我们前面已经启动了node-exporter和cadvisor,这里只需要写一个配置文件就好了,把他们分开写吧,比较清楚,如下图:

docker容器部署prometheus

cadvisor服务配置文件

docker容器部署prometheus

node-exporter服务配置文件

说一下目的,prometheus的配置文件里面虽然可以服务,但是这样写死的不符合实际情况的,因为我可能一个监控的集群是随时都有可能伸缩的,所以我们这样我们启动consul agent时带上config这个目录就可以把cadvisor和node-exporter通过consul agent刷到consul server上面,而prometheus可以通过consul server去获取它上面的所有服务,这样就能做到动态获取各个服务信息,并且不用手动输入,当你的集群很大的时候这种方式是非常有好处的。


2.2 拉取consul的镜像

这里在终端输入:docker pull consul,如下图:

docker容器部署prometheus

拉取consul的镜像


2.3 启动consul agent容器

输入以下命令启动consul agent容器:

docker run -d \

--restart=always \

--name consulagent \

-v /opt/consul/config:/opt/consul/config \

--net=host consul agent \

-bind=192.168.1.102 \

-client=192.168.1.102 \

-retry-join=192.168.1.101 \

-retry-join=192.168.1.104 \

-retry-join=192.168.1.105 \

-dc=yunzhongmuge \

-config-file=/opt/consul/config

如下图:

docker容器部署prometheus

consulaget容器

这样我们就把consulagent启动好了,并且也把两个服务刷到consul server上面去了,这时我们打开consul server 的界面将会看到,如下图:

docker容器部署prometheus

cadvisor &node-exporter


3.启动prometheus server

3.1配置prometheus的启动配置文件

新建一个prometheus的config目录,并添加prometheus.yml文件,在文件里面追加一下的内容,如下图:

docker容器部署prometheus

prometheus.yml

3.2配置告警规则

新建一个alert_rules目录并添加rules规则,如下,这里作为简单起见就判断一下服务是否down掉作为告警条件,如下图:

docker容器部署prometheus

rules


3.3拉取镜像和启动容器

输入以下命令启动容器(可以不用先拉取,直接启动如果本地没有就会去dockerhub上面拉取):

docker run -d \

--restart=always \

--name prometheus \

-p 9090:9090 \

-v /opt/prometheus/:/opt/prometheus/ \

docker.io/prom/prometheus:latest \

-config.file=/opt/prometheus/config/prometheus.yml \

-web.console.libraries=/etc/prometheus/console_libraries \

-web.console.templates=/etc/prometheus/consoles \

-alertmanager.url=http://192.168.1.102:9093

如下图:

docker容器部署prometheus

prometheus容器


4.验证prometheus的启动

从上面我们以及看到容器启动没有错误了,这时我们登录prometheus的界面看看,功能是否一切如我们所愿?在浏览器里面输入192.168.1.102:9090,这时我们将看到我们注册的几个服务已经上来了,如下图:

docker容器部署prometheus

targets

docker容器部署prometheus

graph

docker容器部署prometheus

alert

从上面来看我们的prometheus server启动时非常符合预期的,这样我们就将监控数据收集到prometheus上面了,但是我们从上面graph这个图也看到了prometheus的自己提供的dashboard是非常简陋的,所以我们必须使用第三方的图形展示来让我们的监控数据更加直观。而第三方的工具就是我们下一篇要说的grafana!好了,本次教程到此结束。good luck!


May you share freely, never taking more than you give.


亲,关注、评论、收藏、转发一下呗!谢谢!


分享到:


相關文章: