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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测监控 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搭建和管理企业级网站应用
                  相关文章
                  |
                  16天前
                  |
                  Prometheus 运维 监控
                  智能运维实战:Prometheus与Grafana的监控与告警体系
                  【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
                  90 3
                  |
                  6天前
                  |
                  Prometheus 监控 Cloud Native
                  在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
                  在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。
                  |
                  22天前
                  |
                  JSON Kubernetes 容灾
                  ACK One应用分发上线:高效管理多集群应用
                  ACK One应用分发上线,主要介绍了新能力的使用场景
                  |
                  23天前
                  |
                  Kubernetes 持续交付 开发工具
                  ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
                  ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
                  |
                  15天前
                  |
                  Prometheus 运维 监控
                  智能运维实战:Prometheus与Grafana的监控与告警体系
                  【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
                  80 0
                  |
                  1月前
                  |
                  Kubernetes Ubuntu Linux
                  Centos7 搭建 kubernetes集群
                  本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
                  138 0
                  |
                  3月前
                  |
                  Prometheus 监控 Cloud Native
                  【监控】prometheus传统环境监控告警常用配置
                  【监控】prometheus传统环境监控告警常用配置
                  【监控】prometheus传统环境监控告警常用配置
                  |
                  2月前
                  |
                  Prometheus 监控 Cloud Native
                  介绍如何使用Prometheus进行监控
                  介绍如何使用Prometheus进行监控
                  197 3
                  |
                  2月前
                  |
                  Prometheus 监控 Cloud Native
                  docker安装prometheus+Granfan并监控容器
                  【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
                  |
                  3月前
                  |
                  存储 Prometheus 监控
                  Grafana 与 Prometheus 集成:打造高效监控系统
                  【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
                  397 1