《Kubernetes监控篇:Kubernetes集群blackbox-exporter监控实战(方案一)》



一、简介

blackbox_exporter是Prometheus官方提供的exporter 之一,可以提供 http、dns、tcp、icmp的监控数据采集。

1、HTTP测试
    定义Request Header信息
    判断Http status/Http Respones Header/Http Body内容
2、TCP测试
    业务组件端口状态监听
    应用层协议定义与监听
3、ICMP测试
    主机探活机制
4、POST测试
     接口联通性
5、SSL证书过期时间

二、部署方案

1、针对小型K8S环境集群环境,监控的目标范围比较小,可以使用 static_configs静态配置的方式来获取数据。
2、针对大型K8S环境集群环境,监控的目标范围比较大,建议使用 file_sd_configs文件自动发现或者 kubernetes_sd_configs以service的方式自动采集数据。
3、file_sd_configs方式可以监控非K8S集群环境的服务。

部署前请参考如下链接,这里的部署文档是基于上述环境。
请参考:《Kubernetes监控篇:Prometheus+Grafana+Alertmanager监控K8S集群实战》

这里主要介绍 kubernetes_sd_configs的方式来采集监控指标数据。


三、部署blackbox-exporter

3.1、资源下载

K8S监控blackbox-exporter镜像及资源清单文件

亲自整理手动编写,资源列表如下所示:
在这里插入图片描述
configmap文件部分类容如下所示:
在这里插入图片描述
说明:资源里的yaml文件里花了大量时间整理并做了详细的注释,这里由于文件内容过多,无法一一展示,仅部分内容展示,如果需要全部资料,请通过上述链接下载。


3.2、资源说明

说明:部署前请仔细查看yaml文件,并根据自己环境实际情况对一些参数进行修改。

1、修改service.yaml文件中的nodePort: 31003字段,可以根据自己K8S集群环境定义的service端口范围设置。
2、针对不同环境,建议对deploymeng.yaml文件中定义的resource.limits和resource.requests的cpu和内存进行合理化配置。


3.3、部署blackbox-exporter

#1、将镜像导入到所有K8S集群主机上,master节点和worker节点
[root@k8s-master-227 blackbox-exporter]# docker load -i blackbox-exporter.tar.gz

#2、在master节点上执行yaml文件部署
[root@k8s-master-227 blackbox-exporter]# kubectl apply -f .

如下图所示:
在这里插入图片描述
说明:通过上述截图可以看到blackbox-exporter调度到k8s-worker-135主机上,映射宿主机端口为31003。可以在浏览器上输入http://192.168.1.135:31003/查看,如下图所示:
在这里插入图片描述


四、部署prometheus

4.1、资源下载

K8S主机Prometheus监控blackbox-exporter(kubernetes_sd_files)资源清单及镜像文件

亲自整理手动编写,资源列表如下所示:
在这里插入图片描述
configmap文件部分类容如下所示:
在这里插入图片描述
说明:资源里的yaml文件里花了大量时间整理并做了详细的注释,这里由于文件内容过多,无法一一展示,仅部分内容展示,如果需要全部资料,请通过上述链接下载。


4.2、资源说明

说明:部署前请仔细查看yaml文件,并根据自己环境实际情况对一些参数进行修改。

1、修改claim.yaml文件中的storage: 20Gi,建议根据实际情况填写存储大小空间,nfs不支持pvc在线扩容,生成环境一定要谨慎评估,条件允许情况下建议使用分布式存储ceph,支持在线扩容pvc。
2、修改configmap.yaml文件,[“192.168.1.227:9001”,“192.168.1.227:9002”,“192.168.1.227:9003”],这里配置的是alertmanager服务的ip和监听端口,当前环境因为是服务器有限,部署为同一台主机,建议生成环境分三台主机部署alertmanager,并根据实际情况填写。
3、默认nodePort: 32004,根据实际情况修改,这里采用NodePort方式暴露端口让prometheus服务可以被集群外部访问
4、yaml文件定义的namespace是kube-monitor,如果你不太会修改yaml文件,建议不要修改,因为涉及到的不仅仅是prometheus-ssl-exporter,其它所有的服务我这里都是统一放到kube-monitor名称空间下的,方便查看及统一标准。
5、告警规则文件参考https://awesome-prometheus-alerts.grep.to/rules,可直接搜索node-exporter会出现关于node-exporter指标的监控规则内容。


4.3、部署prometheus

1、执行yaml文件
在这里插入图片描述
2、查看prometheus服务
在这里插入图片描述
3、浏览器输入http://192.168.1.174:32004/targets,查看target
在这里插入图片描述
4、查看Alerts
在这里插入图片描述
5、alert指标参数详解

BlackboxProbeFailed 探测是否成功
BlackboxSlowProbe 探测返回时间
probe_http_status_code 探测返回状态码

6、查看监控数据
在这里插入图片描述
说明:如上所示则表明Prometheus已经采集到了blackbox-exporter相关数据。


五、测试用例说明

如果你希望能自动发现自定义服务的监控目标,应用侧的service的annotation段需要进行配置,如下图所示:
在这里插入图片描述
如果需要监控http和tcp,则只需添加如下内容

prometheus.io/scrape: "true"
prometheus.io/http-probe: "true"
prometheus.io/http-probe-port: "80" #监控服务的端口,根据实际情况填写
prometheus.io/http-probe-path: "/index.html" #监控服务接口的地址,如果域名上下文不是为/的话,则写为/index.html
prometheus.io/tcp-probe: "true"  
prometheus.io/tcp-probe-port: "80" #监控服务的探测端口,根据实际情况填写,这里监控的是nginx,定义的service port为80

如果只需要监控http,则只需添加如下内容

prometheus.io/scrape: "true"
prometheus.io/http-probe: "true"
prometheus.io/http-probe-port: "80" #监控服务的端口,根据实际情况填写
prometheus.io/http-probe-path: "/index.html" #监控服务接口的地址,如果域名上下文不是为/的话,则写为/index.html

如果只需要监控tcp,则只需添加如下内容

prometheus.io/scrape: "true"
prometheus.io/tcp-probe: "true"  
prometheus.io/tcp-probe-port: "80" #监控服务的探测端口,根据实际情况填写,这里监控的是nginx,定义的service port为

六、部署blackbox-exporter数据源

说明:在Grafana中添加 DataSource,域名使用service name prometheus-blackbox-exporter即可,这样可以通过内网去访问,即使prometheus-blackbox-exporter调度到另外一台主机也不影响数据的接入。

service name如下图红色箭头所示:
在这里插入图片描述
http url如下图所示:
在这里插入图片描述


六、导入Grafana模板

K8S集群服务接口监控模板

效果如下图所示:
在这里插入图片描述


七、钉钉告警通知

在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个问题是关于Kubernetes中的 "k8s get" 命令产生的错误信息:"http blackbox-exporter-6798fb5bb4-hk7n8/blackbox-exporter": net/htt。根据错误信息,我们可以推断问题可能出现在网络模块 net/http 中。 "blackbox-exporter" 是一个监控工具,用于对 HTTP、TCP、ICMP 和 DNS 等网络服务进行探测和监控。它可以在 Kubernetes 集群中部署,以便定期检查各个服务的可用性和性能。 根据提供的错误信息,我们可以初步推断问题可能有以下几个原因: 1. blackbox-exporter 容器未成功启动或处于错误状态。需要使用 kubectl 命令检查 blackbox-exporter 容器的状态,以确定其是否正在运行,并且没有出现任何错误。 2. 网络连接问题。可能是由于网络配置不正确,导致 blackbox-exporter 无法连接到所需的服务。需要确保所在的网络环境正常,并且 blackbox-exporter 能够正确地访问目标服务。 3. blackbox-exporter 配置错误。需要检查 blackbox-exporter 的配置文件,确保它们正确地指定了要监控的服务。 为了解决这个问题,可以采取以下步骤: 1. 使用 kubectl 命令检查 blackbox-exporter 容器的状态,以确定其是否处于正常运行状态。例如,可以运行 "kubectl get pods" 命令来获取相关的信息。 2. 检查网络连接,确保网络配置正确,blackbox-exporter 能够正常连接到所需的服务。可以尝试使用其他网络工具,如 telnet 或 curl,来测试服务的连通性。 3. 检查 blackbox-exporter 的配置文件,确保配置正确并指定了正确的目标服务。可以编辑相关的配置文件并重启 blackbox-exporter 容器。 需要注意的是,我们只根据提供的错误信息做出了初步的推断,并给出了一些常见的解决方法。根据具体情况,可能需要进一步的调查和分析才能找到确切的原因和解决方案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城绝神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值