zoukankan      html  css  js  c++  java
  • prometheus-operator 监控 Rabbitmq集群

      首先我们监控服务需要知道prometheus-operator是如何去工作的,才好去写相关的yaml配置,这里我划分成了5个部分,如果容器服务本身就以k8s来编排的,那就只需要三步,这里因为我的rabbitmq是部署在外面所以需要5步,它们分别是:

     1.创建 Endpoints  # 将外部服务映射进来
     2.创建 Service   # 创建servicName,嫌麻烦也可以不写,这里1,2步只是为了隐藏真实的地址
     3.创建采集工具使用deploy部署
     4.创建采集工具Service ##clusterIP: None
     5.创建ServiceMonitor

    我的MQ管理地址为 192.168.100.192 : 15672

    vim prometheus-rabbitmq.yaml

    apiVersion: v1
    kind: Endpoints
    metadata:
      name: rabbitmq-management
      labels:
        k8s-app: rabbitmq-management
    subsets:
    - addresses:
      - ip: 192.168.100.192
      ports:
      - name: api
        port: 15672
        protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq-management
      labels:
        k8s-app: rabbitmq-management
    spec:
      type: ClusterIP
      ports:
      - name: api
        port: 15672
        protocol: TCP
    ---
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: rabbitmq-exporter
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            k8s-app: rabbitmq-exporter
        spec:
          containers:
          - name: rabbitmq-exporter
            image: kbudde/rabbitmq-exporter
            env:
             - name: PUBLISH_PORT
               value: "9099"
             - name: RABBIT_CAPABILITIES
               value: "bert,no_sort"
             - name: RABBIT_USER
               value: "you user"
             - name: RABBIT_PASSWORD
               value: "you password"
             - name: RABBIT_URL
               value: http://rabbitmq-management:15672
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 9099
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq-exporter
      labels:
        k8s-app: rabbitmq-exporter
    spec:
      type: ClusterIP
      clusterIP: None
      selector:
        k8s-app: rabbitmq-exporter
      ports:
      - name: api
        port: 9099
        protocol: TCP
    

     kuctl apply -f prometheus-rabbitmq.yaml -n 指定命名空间 PS:我的是以项目+环境来区分的

    上述可以进行测试

    访问 curl http://10.244.6.145:9099/metrics

    创建ServiceMonitor 让其能够自动发现并注册

    vim prometheus-rabbitmq-k8s-monitoring.yaml

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: rabbitmq-exporter
      namespace: monitoring
      labels:
        k8s-app: rabbitmq-exporter
        namespace: monitoring
    spec:
      jobLabel: k8s-app
      endpoints:
      - port: api
        interval: 30s
        scheme: http
      selector:
        matchLabels:
          k8s-app: rabbitmq-exporter
      namespaceSelector:
        matchNames:
        - default    #你采集的数据在哪里,就写它的namespaces

    最后 kubectl apply -f prometheus-rabbitmq-k8s-monitoring.yaml

    模版是获取的官网新增了namespaces变量,这样就方便多了。

    至于规则告警,可以根据自己想要监测的数据来进行报警就不多说了。

  • 相关阅读:
    音视频-x624和H.264
    状态机解决复杂逻辑及使用
    任意程序上的蒙版画笔实现
    WPF-3D圆柱体透视
    WPF-3D-Z-buffering 导致的遮盖物体不渲染问题
    WPF3D立方体图形展开动画思路
    解决Prism 8.0 I添加InvokeCommandAction xaml报错问题
    Spark编程基础(Python版)
    前端开发工具fscapture
    修改element ui select选择器 样式
  • 原文地址:https://www.cnblogs.com/heweiblog/p/9849746.html
Copyright © 2011-2022 走看看