新钛云服已累计为您分享711篇技术干货

前言:

• 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   0          6d1h
consul-consul-ntqcf      1/1     Running   0          6d1h
consul-consul-q7c6f      1/1     Running   0          6d1h
consul-consul-server-0   1/1     Running   0          6d1h
consul-consul-server-1   1/1     Running   0          6d1h
consul-consul-server-2   1/1     Running   0          6d1h

1.3:nginx-ingress consul

• consul_ingress.yml

Bash
# consul.xxxxxx.cn  ----->  替换为正确域名apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: consul-ingressnamespace: consulannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: consul.xxxxxx.cnhttp:paths:- path: /pathType: Prefixbackend:service:name: consul-consul-uiport: 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-exporterlabels:app: blackbox-exporter
data:blackbox.yml: |-modules:## ----------- DNS 检测配置 -----------dns_tcp:  prober: dnsdns:transport_protocol: "tcp"preferred_ip_protocol: "ip4"query_name: "kubernetes.default.svc.cluster.local" # 用于检测域名可用的网址query_type: "A" ## ----------- TCP 检测模块配置 -----------tcp_connect:prober: tcptimeout: 5s## ----------- ICMP 检测配置 -----------ping:prober: icmptimeout: 5sicmp:preferred_ip_protocol: "ip4"## ----------- HTTP GET 2xx 检测模块配置 -----------http_get_2xx:  prober: httptimeout: 10shttp:method: GETpreferred_ip_protocol: "ip4"valid_http_versions: ["HTTP/1.1","HTTP/2"]valid_status_codes: [200]           # 验证的HTTP状态码,默认为2xxno_follow_redirects: false          # 是否不跟随重定向## ----------- HTTP GET 3xx 检测模块配置 -----------http_get_3xx:  prober: httptimeout: 10shttp:method: GETpreferred_ip_protocol: "ip4"valid_http_versions: ["HTTP/1.1","HTTP/2"]valid_status_codes: [301,302,304,305,306,307]  # 验证的HTTP状态码,默认为2xxno_follow_redirects: false                     # 是否不跟随重定向## ----------- HTTP POST 监测模块 -----------http_post_2xx: prober: httptimeout: 10shttp:method: POSTpreferred_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-exporterlabels:k8s-app: blackbox-exporter
spec:type: ClusterIPports:- name: httpport: 9115targetPort: 9115selector:k8s-app: blackbox-exporter
---
apiVersion: apps/v1
kind: Deployment
metadata:name: blackbox-exporterlabels:k8s-app: blackbox-exporter
spec:replicas: 1selector:matchLabels:k8s-app: blackbox-exportertemplate:metadata:labels:k8s-app: blackbox-exporterspec:containers:- name: blackbox-exporterimage: prom/blackbox-exporter:v0.19.0args:- --config.file=/etc/blackbox_exporter/blackbox.yml- --web.listen-address=:9115- --log.level=infoports:- name: httpcontainerPort: 9115resources:limits:cpu: 3memory: 6000Mirequests:cpu: 100mmemory: 50MilivenessProbe:tcpSocket:port: 9115initialDelaySeconds: 5timeoutSeconds: 5periodSeconds: 10successThreshold: 1failureThreshold: 3readinessProbe:tcpSocket:port: 9115initialDelaySeconds: 5timeoutSeconds: 5periodSeconds: 10successThreshold: 1failureThreshold: 3volumeMounts:- name: configmountPath: /etc/blackbox_exportervolumes:- name: configconfigMap:name: blackbox-exporterdefaultMode: 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-ingressnamespace: monitoringannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: xxxhttp:paths:- path: /pathType: Prefixbackend:service:name: blackbox-exporterport:number: 9115

• 执行安装

Bash
kubectl apply -f blackbox_ingress.yml

3: rometheus 添加 服务动态发现

Bash
#####  http_get_2xx 数据获取- job_name: http_get_2xxparams:module:- http_get_2xxscrape_interval: 2sscrape_timeout: 2smetrics_path: /probeconsul_sd_configs:# consul 服务地址- server: consul-consul-server.consul.svc.cluster.local:8500tag_separator: ','services:- http_get_2xxrelabel_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_icmpparams:module:- pingscrape_interval: 2sscrape_timeout: 2smetrics_path: /probeconsul_sd_configs:# consul 服务地址- server: consul-consul-server.consul.svc.cluster.local:8500tag_separator: ','services:- pingrelabel_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 baship_addr=$1if test "$ip_addr";thencurl -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
elseecho "请输入参数"
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=$1curl -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 bashservice_name=$1if test "$service_name";thencurl -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
elseecho "请输入参数"
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=$1curl -X PUT http://consul-consul-server:8500/v1/agent/service/deregister/http_get_2xx_${ip_addr}

6:查看prometheus 监控

总结:

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

    推荐阅读   

    推荐视频    

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

Prometheus Consul Blackbox | export 监控实现相关推荐

  1. java ini文件_java应用监控之prometheus、node export、grafana安装和配置

    为了与时俱进,介绍基于docker的安装部署,如果想用非docker化部署,可以参考官网教程 对于docker的安装,在cat安装部署已经介绍过了,这里就不再重复了,如果还有不清楚的可以点击这里 do ...

  2. prometheus+consul 服务自动发现监控

    prometheus+consul 服务自动发现监控 搭建prometheus监控平台请参考:https://blog.csdn.net/han949417140/article/details/11 ...

  3. 网易云基于Prometheus的微服务监控实践

    当监控遇上微服务 在过去数年里,微服务的落地一直都是业界重点关注的问题,其始终面临着部署.监控.配置和治理等方面的挑战.轻舟微服务平台是网易云为企业提供的一套微服务解决方案,其中微服务监控是其关注的重 ...

  4. 技术实践丨Prometheus+Grafana搭建HBase监控仪表盘

    摘要:Grafana+Prometheus是目前非常流行的监控方案,图形化展示非常强大. 本文分享自华为云社区<Prometheus+Grafana搭建HBase监控仪表盘>,原文作者:L ...

  5. Prometheus(一)——概述、监控体系、生态组件、部署

    目录 前言:zabbix与prometheus区别 一.Prometheus概述 1.1  Prometheus具有以下特性 1.2  Prometheus核心组件 二.运维监控平台设计思路 三.pr ...

  6. 如何使用 Blackbox Exporter 监控 URL?

    前言 监控域名和 URL 是可观察性的一个重要方面,主要用于诊断可用性问题.接下来会详细介绍如何使用 Blackbox Exporter 和 Prometheus 在 Kubernetes 中实现 U ...

  7. Prometheus和Grafana的监控Linux服务器和MYSQL数据库

    [使用root用户执行以下操作] 目录 一.安装Prometheus和Grafana 1.安装 Prometheus 1)下载 Prometheus 2)解压安装包 3)启动prometheus 4) ...

  8. Prometheus 动态拉取监控服务

    Prometheus 版本 2.41.0 平台统一监控的介绍和调研 直观感受PromQL及其数据类型 PromQL之选择器和运算符 PromQL之函数 Prometheus 配置身份认证 Promet ...

  9. Prometheus基于kubernetes实现监控告警---飞书告警(告警规则最全)

    Prometheus基于kubernetes实现监控告警-飞书告警 一.监控目标 1.主机性能指标数据: 监控node节点:node-exporter,使用Daemonset方式部署,通过node角色 ...

最新文章

  1. MyBatis之ResultMap标签
  2. python编程语言的缺点-常见的AI编程语言优缺点比较,程序员千万不要入错行!...
  3. [k8s]elk架构设计-k8s集群里搭建
  4. 自监督学习和对比学习
  5. 吐血大奉献,打造cnblogs最新最火辣的css3模板(IE9以下请勿入内) -- 第一版
  6. Linux各个文件夹的作用~~~非常实用!!
  7. UT890D的二极管档的使用
  8. python自动解析json_Python语言解析JSON详解
  9. 安卓开发使用ttf文字_Android中正确使用字体图标(iconfont)的方法
  10. openfire的搭建与运行(转)
  11. 刷了大量面试题后,我还是被面试官吊打了!
  12. 【Python实现】运输问题的表上作业法(二):利用位势法判断当前解的最优性
  13. 如何使用origin画韦恩图?
  14. Axure的灯箱效果说明
  15. Hessian矩阵以及在血管增强中的应用—OpenCV实现
  16. laravel集合collect中的implode
  17. 转载和积累系列 - linux 生成KEY的方法与使用
  18. Matlab提取矩阵行数与列数
  19. echarts 桑基图
  20. 加勒比海盗船(最优装载问题)

热门文章

  1. 解答:c语言中gets是什么意思
  2. linux 重启服务器脚本,linux下服务器重启shell脚本
  3. 【渝粤教育】广东开放大学 外贸B2C平台营销 形成性考核 (43)
  4. 半钧先生:《何以为家》_电影解说
  5. BUG是什么意思?只有“漏洞”这一个意思吗?
  6. 月薪五万的Leader,感觉每天做的事情没有技术含量
  7. java生成条形码-使用zxing
  8. MapReduce(wordcount实现倒排索引)附项目全程
  9. 腾讯云X惟客数据:云能力与行业产品方案融合,助力海外市场
  10. php fgets 空行,php fgets函数读取多余的空格解决