Prometheus Consul Blackbox | Export 监控实现

前言:

  • blackbox_exporter

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

  • Consul

主要提供,服务发现,健康检查,等功能,本次集成主要使用到服务发现功能。

本文主要实现,基于consul_sd_config  & consul 的 prometheus  服务发现,实现网路设备ping监控,站点可用行监控,以及证书相关信息监控。

安装环境:

  • k8s
  • consul
  • Prometheus
  • blackbox_exporter

1:  Consul 安装

1.1:使用helm 安装 consul

Bash
# 添加 consul helm 源
helm repo add hashicorp https://helm.releases.hashicorp.com
# 安装consul
helm -n consul install \
--set storageClass=alicloud-disk-efficiency \
consul hashicorp/consul \
--version=0.32.1

1.2:查看服务安装状态

Bash
[root@xxxxxxxx consul_install]# kubectl -n consul get pods
NAME READY STATUS RESTARTS AGE
consul-consul-9lxfc 1/1 Running 06d1h
consul-consul-ntqcf 1/1 Running 06d1h
consul-consul-q7c6f 1/1 Running 06d1h
consul-consul-server-01/1 Running 06d1h
consul-consul-server-11/1 Running 06d1h
consul-consul-server-21/1 Running 06d1h

1.3:nginx-ingress consul

  • consul_ingress.yml
Bash
# consul.xxxxxx.cn-----> 替换为正确域名

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: consul-ingress
namespace: consul
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target:/
spec:
rules:
- host: consul.xxxxxx.cn
http:
paths:
- path:/
pathType: Prefix
backend:
service:
name: consul-consul-ui
port:
number:80
  • 执行部署
Bash
kubectl apply -f consul_ingress.yml

1.4:访问测试

2: Blackbox_export

2.1:blackbox 安装

  • blackbox-exporter-config.yaml
Bash
apiVersion: v1
kind: ConfigMap
metadata:
name: blackbox-exporter
labels:
app: blackbox-exporter
data:
blackbox.yml:|-
modules:
## ----------- DNS 检测配置 -----------
dns_tcp:
prober: dns
dns:
transport_protocol:"tcp"
preferred_ip_protocol:"ip4"
query_name:"kubernetes.default.svc.cluster.local" # 用于检测域名可用的网址
query_type:"A"
## ----------- TCP 检测模块配置 -----------
tcp_connect:
prober: tcp
timeout:5s
## ----------- ICMP 检测配置 -----------
ping:
prober: icmp
timeout:5s
icmp:
preferred_ip_protocol:"ip4"
## ----------- HTTP GET 2xx 检测模块配置 -----------
http_get_2xx:
prober: http
timeout:10s
http:
method: GET
preferred_ip_protocol:"ip4"
valid_http_versions:["HTTP/1.1","HTTP/2"]
valid_status_codes:[200] # 验证的HTTP状态码,默认为2xx
no_follow_redirects:false # 是否不跟随重定向
## ----------- HTTP GET 3xx 检测模块配置 -----------
http_get_3xx:
prober: http
timeout:10s
http:
method: GET
preferred_ip_protocol:"ip4"
valid_http_versions:["HTTP/1.1","HTTP/2"]
valid_status_codes:[301,302,304,305,306,307] # 验证的HTTP状态码,默认为2xx
no_follow_redirects:false # 是否不跟随重定向
## ----------- HTTP POST 监测模块 -----------
http_post_2xx:
prober: http
timeout:10s
http:
method: POST
preferred_ip_protocol:"ip4"
valid_http_versions:["HTTP/1.1","HTTP/2"]
#headers: # HTTP头设置
# Content-Type: application/json
#body:'{}' # 请求体设置
  • blackbox-exporter-deploy.yaml
Bash
apiVersion: v1
kind: Service
metadata:
name: blackbox-exporter
labels:
k8s-app: blackbox-exporter
spec:
type: ClusterIP
ports:
- name: http
port:9115
targetPort:9115
selector:
k8s-app: blackbox-exporter
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: blackbox-exporter
labels:
k8s-app: blackbox-exporter
spec:
replicas:1
selector:
matchLabels:
k8s-app: blackbox-exporter
template:
metadata:
labels:
k8s-app: blackbox-exporter
spec:
containers:
- name: blackbox-exporter
image: prom/blackbox-exporter:v0.19.0
args:
---config.file=/etc/blackbox_exporter/blackbox.yml
---web.listen-address=:9115
---log.level=info
ports:
- name: http
containerPort:9115
resources:
limits:
cpu:3
memory:6000Mi
requests:
cpu:100m
memory:50Mi
livenessProbe:
tcpSocket:
port:9115
initialDelaySeconds:5
timeoutSeconds:5
periodSeconds:10
successThreshold:1
failureThreshold:3
readinessProbe:
tcpSocket:
port:9115
initialDelaySeconds:5
timeoutSeconds:5
periodSeconds:10
successThreshold:1
failureThreshold:3
volumeMounts:
- name: config
mountPath:/etc/blackbox_exporter
volumes:
- name: config
configMap:
name: blackbox-exporter
defaultMode:420
  • 执行安装
Bash
kubectl apply -f blackbox-exporter-deploy.yaml
kubectl apply -f blackbox-exporter-config.yaml

2.2:nginx ingress blackbox-exporter • blackbox_ingress.yml

Bash
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: blackbox-ingress
namespace: monitoring
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target:/
spec:
rules:
- host: blackbox-devops.lululemon.cn
http:
paths:
- path:/
pathType: Prefix
backend:
service:
name: blackbox-exporter
port:
number:9115
  • 执行安装
Bash
kubectl apply -f blackbox_ingress.yml

3: rometheus 添加 服务动态发现

Bash
##### http_get_2xx 数据获取
- job_name: http_get_2xx
params:
module:
- http_get_2xx
scrape_interval:2s
scrape_timeout:2s
metrics_path:/probe
consul_sd_configs:
# consul 服务地址
- server: consul-consul-server.consul.svc.cluster.local:8500
tag_separator:','
services:
- http_get_2xx
relabel_configs:
- source_labels:['__meta_consul_service_address']
target_label: __param_target
- source_labels:['__meta_consul_service_address']
target_label: instance
- target_label: __address__
## blackbox-export 地址
replacement: blackbox-exporter.monitoring.svc.cluster.local:9115
####### icmp 配置
- job_name: blackbox_icmp
params:
module:
- ping
scrape_interval:2s
scrape_timeout:2s
metrics_path:/probe
consul_sd_configs:
# consul 服务地址
- server: consul-consul-server.consul.svc.cluster.local:8500
tag_separator:','
services:
- ping
relabel_configs:
- source_labels:['__meta_consul_service_address']
target_label: __param_target
- source_labels:['__meta_consul_service_address']
target_label: instance
- target_label: __address__
## blackbox-export 地址
replacement: blackbox-exporter.monitoring.svc.cluster.local:9115

4:添加 icmp 监控

4.1:添加监控地址到consul

  • icmp_list
Bash
192.168.1.1
192.168.1.2
  • add_consul_service_icmp.sh
Bash
#!/usr/bin/env bash

ip_addr=$1


if test "$ip_addr";then
curl -X PUT -d '{
"id": "icmp_'${ip_addr}'",
"name": "ping",
"address": "'${ip_addr}'",
"port": 443,
"Meta": {
"env": "prod",
"team": "network",
"project": "network",
"owner": "Mike"
},
"tags": ["node"],
"checks": [{"http": "http://blackbox-exporter.monitoring.svc.cluster.local:9115/","interval": "15s"}]}' \
http://consul-consul-server:8500/v1/agent/service/register
else
echo "请输入参数"
fi
  • 添加service ping
Bash
for i in `cat icmp_list`;do bash add_consul_service_icmp.sh $i;done

4.2:查看consul 服务

4.3:删除ping 监控地址脚本

Bash
#!/usr/bin/env bash
ip_addr=$1

curl -X PUT http://consul-consul-server:8500/v1/agent/service/deregister/icmp_${ip_addr}

5: 添加http_get_2xx

5.1:添加监控域名

  • domain_name_list
Bash
wwww.baidu.com
wwww.1111.com
wwww.2222.com
  • add_consul_service_http_get_2xx.sh
Bash
#!/usr/bin/env bash

service_name=$1


if test "$service_name";then
curl -X PUT -d '{
"id": "http_get_2xx_'${service_name}'",
"name": "http_get_2xx",
"address": "https://'${service_name}'",
"port": 443,
"Meta": {
"env": "prod",
"team": "web",
"project": "web",
"owner": "Devops"
},
"tags": ["node"],
"checks": [{"http": "http://blackbox-exporter.monitoring.svc.cluster.local:9115/","interval": "15s"}]}' \
http://consul-consul-server:8500/v1/agent/service/register
else
echo "请输入参数"
fi
  • 添加 service  http_get_2xx
Bash
for i in `cat domain_name_list`;do bash add_consul_service_http_get_2xx.sh $i;done

5.2:查看consul 服务

5.3:删除域名监控脚本

  • del_consul_service_http_get_2xx.sh
Bash
#!/usr/bin/env bash
ip_addr=$1

curl -X PUT http://consul-consul-server:8500/v1/agent/service/deregister/http_get_2xx_${ip_addr}

6:查看prometheus 监控

总结:

使用上述方案,黑盒监控与自建cmdb 平台很容易进行集成,使其监控自动化,不需要过多的人工干预,可以省去大量的人工成本,grafana 的配置这里就不进行过多介绍,自行通过谷歌完成。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/143738.html<

(0)
管理的头像管理
上一篇2025-03-09 20:24
下一篇 2025-03-09 20:25

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注