这里大概说下它的架构,中间的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,如下图:
1.2新建一个alertmanager的配置目录,并新建一个配置文件用来配置告警信息,比如告警信息有谁发的,发给谁的等等信息,这里仅仅是作为一个测试,所以配置文件写的尽量简单。这里我们在配置文件输入以下信息:
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
如下图:
这样alertmanager的服务就启动了,在浏览器里面输入192.168.1.102:9093,可以看到它的web界面,如下图:
2.启动consul agent
2.1添加两个服务配置文件
由于我们前面已经启动了node-exporter和cadvisor,这里只需要写一个配置文件就好了,把他们分开写吧,比较清楚,如下图:
说一下目的,prometheus的配置文件里面虽然可以服务,但是这样写死的不符合实际情况的,因为我可能一个监控的集群是随时都有可能伸缩的,所以我们这样我们启动consul agent时带上config这个目录就可以把cadvisor和node-exporter通过consul agent刷到consul server上面,而prometheus可以通过consul server去获取它上面的所有服务,这样就能做到动态获取各个服务信息,并且不用手动输入,当你的集群很大的时候这种方式是非常有好处的。
2.2 拉取consul的镜像
这里在终端输入:docker pull 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
如下图:
这样我们就把consulagent启动好了,并且也把两个服务刷到consul server上面去了,这时我们打开consul server 的界面将会看到,如下图:
3.启动prometheus server
3.1配置prometheus的启动配置文件
新建一个prometheus的config目录,并添加prometheus.yml文件,在文件里面追加一下的内容,如下图:
3.2配置告警规则
新建一个alert_rules目录并添加rules规则,如下,这里作为简单起见就判断一下服务是否down掉作为告警条件,如下图:
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
如下图:
4.验证prometheus的启动
从上面我们以及看到容器启动没有错误了,这时我们登录prometheus的界面看看,功能是否一切如我们所愿?在浏览器里面输入192.168.1.102:9090,这时我们将看到我们注册的几个服务已经上来了,如下图:
从上面来看我们的prometheus server启动时非常符合预期的,这样我们就将监控数据收集到prometheus上面了,但是我们从上面graph这个图也看到了prometheus的自己提供的dashboard是非常简陋的,所以我们必须使用第三方的图形展示来让我们的监控数据更加直观。而第三方的工具就是我们下一篇要说的grafana!好了,本次教程到此结束。good luck!
May you share freely, never taking more than you give.
亲,关注、评论、收藏、转发一下呗!谢谢!
閱讀更多 雲中牧歌 的文章