prometheus operator监控k8s集群之外的haproxy组件

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: prometheus operator监控k8s集群之外的haproxy组件

安装haproxy

在k8s的master1节点安装haproxy,k8s的master1节点的机器ip是192.168.0.6,haproxy1.8.6版本压缩包所在的百度网盘地址如下:

链接:https://pan.baidu.com/s/1glUeOwnvZrdnETr4KayNjg
提取码:i3rn

把压缩包上传到自己的k8s master1节点,手动解压,然后编译安装:


tar zxvf haproxy-1.8.6.tar.gz

cd haproxy-1.8.6

make TARGET=linux31

make install PREFIX=/usr/local/haproxy

mkdir /usr/local/haproxy/conf

cp  examples/option-http_proxy.cfg  /usr/local/haproxy/conf/haproxy.cfg


修改/usr/local/haproxy/conf/haproxy.cfg文件里的监听端口,把bind后面的值改成*:5000,这个是haproxy的监听端口,大家可以随意改,符合自己的环境即可:

cat /usr/local/haproxy/conf/haproxy.cfg


修改haproxy启动脚本文件:

在/etc/init.d/新建一个haproxy文件,haproxy文件所在百度网盘地址如下,

链接:https://pan.baidu.com/s/1zFxHftdAHob-Rtyizk10Xg
提取码:u2lz

可从百度网盘下载,然后拷贝到自己haproxy机器的/etc/init.d/目录下:

 

具体内容也可以参考如下,建议直接从百度王盼盼下载,这样不会出现乱码问题:

cat  /etc/init.d/haproxy
#!/bin/sh
# chkconfig 2345 on
# description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.
if [ -f /etc/init.d/functions ]; then
 . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
 . /etc/rc.d/init.d/functions
else
 exit 0
fi
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
config="/usr/local/haproxy/conf/haproxy.cfg"
exec="/usr/local/haproxy/sbin/haproxy"
PID="/var/run/haproxy.pid"
[ -f $config ] || exit 1
RETVAL=0
start() {
  daemon $exec -c -q -f $config
    if [ $? -ne 0 ]; then
        echo "Errors found in configuration file."
        return 1
    fi
  echo -n "Starting HAproxy: "
  $exec -D -f $config -p $PID
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy
  return $RETVAL
}
stop() {
 echo -n "Shutting down HAproxy: "
 killproc haproxy -USR1
 RETVAL=$?
 echo
 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy
 [ $RETVAL -eq 0 ] && rm -f $PID
 return $RETVAL
}
restart() {
 $exec -c -q -f $config
   if [ $? -ne 0 ]; then
       echo "Errors found in configuration file, check it with 'haproxy check'."
       return 1
   fi
 stop
 start
}
rhstatus() {
 status haproxy
}
# See how we were called.
case "$1" in
 start)
        start
        ;;
 stop)
        stop
        ;;
 restart)
        restart
        ;;
 status)
        rhstatus
        ;;
 *)
        echo $"Usage: haproxy {start|stop|restart|status}"
        RETVAL=1
        esac
        exit $RETVAL


启动haproxy:

    chmod  +x  /etc/init.d/haproxy
    service  haproxy start

    查看haproxy是否启动成功:

      ss -antulp | grep :5000

      显示如下,说明启动成功:

        tcp    LISTEN     0      128       *:5000                  *:*                   u

        安装haproxy_exporter

        haproxy_exporter需要的压缩包是:


          haproxy_exporter-0.9.0.linux-386.tar.gz

          压缩包所在的百度网盘地址如下:

            链接:https://pan.baidu.com/s/1zFxHftdAHob-Rtyizk10Xg
            提取码:u2lz

            可从百度网盘把压缩包下载到电脑,然后上传到k8s的master1节点进行解压安装:

            tar  zxvf  haproxy_exporter-0.9.0.linux-386.tar.gz

            cd   haproxy_exporter-0.9.0.linux-386

            cp haproxy_exporter  /usr/bin

             

            启动haproxy_exporter:

            haproxy_exporter --haproxy.scrape-uri="http://192.168.0.6:5000/baz?stats;csv" --web.listen-address="192.168.0.6:9100" &

             

            注意:

            192.168.0.6是部署haproxy和haproxy_exporter所在机器的ip,5000端口是haproxy组件端口,9100是haproxy_exporter端口

             

            验证haproxy_exporter是否启动成功:

            ss -antulp | grep :9100


            显示如下,说明启动成功:

              tcp    LISTEN     0     128    192.168.0.6:9100                  *:*                   users:(("haproxy_exporte",pid=51714,fd=3))


              通过haproxy_exporter采集haproxy组件监控指标:

              curl  192.168.0.6:9100/metrics

              可看到如下监控指标数据:

              # HELP go_gc_duration_seconds A summary of the GC invocationdurations.
              # TYPE go_gc_duration_seconds summary
              go_gc_duration_seconds{quantile="0"} 0.00011131
              go_gc_duration_seconds{quantile="0.25"} 0.000411065
              go_gc_duration_seconds{quantile="0.5"} 0.000803894
              go_gc_duration_seconds{quantile="0.75"} 0.002416707
              go_gc_duration_seconds{quantile="1"} 0.031029562
              go_gc_duration_seconds_sum 0.104676686
              go_gc_duration_seconds_count 19
              # HELP go_goroutines Number of goroutines that currently exist.
              # TYPE go_goroutines gauge
              go_goroutines 9
              # HELP go_memstats_alloc_bytes Number of bytes allocated and stillin use.
              # TYPE go_memstats_alloc_bytes gauge
              go_memstats_alloc_bytes 3.384024e+06
              # HELP go_memstats_alloc_bytes_total Total number of bytesallocated, even if freed.
              # TYPE go_memstats_alloc_bytes_total counter
              go_memstats_alloc_bytes_total 5.452464e+07
              # HELP go_memstats_buck_hash_sys_bytes Number of bytes used by theprofiling bucket hash table.
              # TYPE go_memstats_buck_hash_sys_bytes gauge
              go_memstats_buck_hash_sys_bytes 725494
              # HELP go_memstats_frees_total Total number of frees.
              # TYPE go_memstats_frees_total counter
              go_memstats_frees_total 81339
              # HELP go_memstats_gc_sys_bytes Number of bytes used for garbagecollection system metadata.
              # TYPE go_memstats_gc_sys_bytes gauge
              go_memstats_gc_sys_bytes 2.8383232e+07
              # HELP go_memstats_heap_alloc_bytes Number of heap bytes allocatedand still in use.
              # TYPE go_memstats_heap_alloc_bytes gauge
              go_memstats_heap_alloc_bytes 3.384024e+06
              # HELP go_memstats_heap_idle_bytes Number of heap bytes waiting tobe used.
              # TYPE go_memstats_heap_idle_bytes gauge
              go_memstats_heap_idle_bytes 1.39264e+06
              ---
              ---
              ---
              ---
              ---
              ---

              配置prometheus operator的servicemonitor实现对haproxy的监控

              在k8s的master1节点编写servicemonitor,所需要的yaml文件在百度网盘地址如下:

                链接:https://pan.baidu.com/s/1zFxHftdAHob-Rtyizk10Xg
                提取码:u2lz

                建议直接从百度网盘下载资源清单文件prometheus-servicemonitor-haproxy.yaml,然后传到k8s的master1节点,这样不会出现乱码问题,

                也可参考下面内容:

                cat prometheus-servicemonitor-haproxy.yaml

                kind: Service
                apiVersion: v1
                metadata:
                 name: haproxy
                 labels:
                   app: haproxy
                spec:
                 type: ClusterIP
                 ports:
                 - name: haproxy
                   port: 9100
                   targetPort: 9100
                ---
                kind: Endpoints
                apiVersion: v1
                metadata:
                 name: haproxy
                 labels:
                   app: haproxy
                subsets:
                 - addresses:
                     - ip: 192.168.0.6
                   ports:
                     - name: haproxy
                       port: 9100
                ---
                apiVersion: monitoring.coreos.com/v1
                kind: ServiceMonitor
                metadata:
                  name: haproxy
                  namespace: monitoring
                  labels:
                    team: frontend
                spec:
                  namespaceSelector:
                    any: true
                    matchNames:
                    - default
                  selector:
                    matchLabels:
                      app: haproxy
                  endpoints:
                  - port: haproxy
                targetPort: 9100

                通过kubectl apply更新yaml:

                  kubectl apply  -f prometheus-servicemonitor-haproxy.yaml

                   

                  在prometheus的web界面查看是否监控到了haproxy数据,显示如下,说明配置正常:



                  相关实践学习
                  通过Ingress进行灰度发布
                  本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
                  容器应用与集群管理
                  欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
                  相关文章
                  |
                  11天前
                  |
                  存储 Kubernetes 关系型数据库
                  阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
                  本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
                  |
                  1月前
                  |
                  Kubernetes 监控 Cloud Native
                  Kubernetes集群的高可用性与伸缩性实践
                  Kubernetes集群的高可用性与伸缩性实践
                  71 1
                  |
                  2月前
                  |
                  JSON Kubernetes 容灾
                  ACK One应用分发上线:高效管理多集群应用
                  ACK One应用分发上线,主要介绍了新能力的使用场景
                  |
                  2月前
                  |
                  Kubernetes 持续交付 开发工具
                  ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
                  ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
                  |
                  2月前
                  |
                  Kubernetes Ubuntu Linux
                  Centos7 搭建 kubernetes集群
                  本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
                  203 4
                  |
                  2月前
                  |
                  Kubernetes Cloud Native 云计算
                  云原生之旅:Kubernetes 集群的搭建与实践
                  【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
                  138 17
                  |
                  2月前
                  |
                  Kubernetes 应用服务中间件 nginx
                  搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
                  在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
                  927 1
                  |
                  2月前
                  |
                  Kubernetes Cloud Native 流计算
                  Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
                  Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
                  92 3
                  |
                  2月前
                  |
                  Kubernetes Cloud Native 微服务
                  微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
                  微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
                  131 1
                  |
                  2月前
                  |
                  负载均衡 应用服务中间件 nginx
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
                  基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
                  71 1
                  下一篇
                  DataWorks