背景

这几天在做关于容器化部署的工作,这里做一个简单的分享,给容器内的rabbitmq集群+一个普若米修斯监控服务

先决条件:

拥有一个k8s集群(一主2从)

k8s集群上已经搭建了rabbitmq集群,且mq版本>=3.8.0

如果上述先决条件ok,那么就可以看后面的步骤

 

实现步骤

疑问:刚开始搭建普若米修斯监控的时候,我是不知道怎么做的,以前没接触过,然后市面上就会有几个搭建方案给你,比如“prometheus-operator”, "kube-prometheus", "rabbitmq-prometheus" ... 等等一些开源项目,我这里采用的是"kube-prometheus"来部署prometheus监控。其他没试过,感觉也没必要尝试。

第一步:下载“kube-prometheus”

git clone https://github.com/prometheus-operator/kube-prometheus.git

这里下载下来就有一个压缩包,然后tar -zxvf 解压得到kube-prometheus

第二步:修改service,将服务以nodeport方式暴露出去(这里方便搭建成功后可以访问监控页面,查看效果)

这里我们要修改三个文件:(红色框框里面的是新增的)

修改这三个文件,暴露端口以nodeport方式,如果长期稳定的端口,用igress

第三步:部署

首先部署setup里面的内容

然后部署manifests内的资源,顺序不要错,不然会报错,如果按这个顺序还是报错了,就多试几次。

到这里普若米修斯监控应该是部署成功了,用地址访问看看 http://{ip}:30200

看这个开源的监控页面,第一次登录密码和用户名admin/admin,登录之后会让你重新设置密码

到这里我们还不能监控我们的mq,因为还有一个配置需要,之前我提到的mq版本要>=3.8.0的原因是这个版本之后集成了普若米许思的插件,不需要我们单独去配置,现在我们要去打开监控的开关,去把pod的注释配置上,这样监控会自动找到这个。

第四步:新增两个配置,这个配置是官网提供的,理解k8s工作机制的应该看看就明白是干嘛的了

[root@k8s-master next]# cat prometheus-roles.yaml 
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources:
  - nodes
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources:
  - configmaps
  verbs: ["get"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus-k8s
  namespace: monitoring

还有一个。

[root@k8s-master next]# cat prometheus-roles.yaml 
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: prometheus
rules:
- apiGroups: [""]
  resources:
  - nodes
  - services
  - endpoints
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources:
  - configmaps
  verbs: ["get"]
- nonResourceURLs: ["/metrics"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: prometheus
subjects:
- kind: ServiceAccount
  name: prometheus-k8s
  namespace: monitoring
[root@k8s-master next]# ls
prometheus-roles.yaml  rabbitmq-podmonitor.yaml
[root@k8s-master next]# cat rabbitmq-podmonitor.yaml 
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  name: rabbitmq
spec:
  podMetricsEndpoints:
  - interval: 15s
    port: prometheus
  selector:
    matchLabels:
      app.kubernetes.io/component: rabbitmq
  namespaceSelector:
    any: true

然后部署这两个资源 k apply -f ....(你懂的)

到这里我们的容器的配置就已经结束了,后面就是普若米修斯的页面配置,这里采用的也是开源的页面配置,下载地址:

https://grafana.com/grafana/dashboards/10991

下载这个json,保存起来

第五步:grafana面板导入

把你刚刚下载的json文件导入,然后你就会看到这个界面,改个名字,再选个监控,最后点import就ok了

第六步:最后我们来看看效果

最后的效果和rabbitmq自带的UI效果应该要好,这个是可组装的。今天的内容就分享到这里,有不懂的可以私信我。记得点赞+关注,爱你们

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐