前言:

servicemonitor监控存在两种情况:

1、有metrics ,创建service+servicemonitor配置

2、无metrics  配置exporter,exporter进行采集

一、监控自带metrics接口

①、部署ServiceMonitor

$ vi prometheus-serviceMonitorEtcd.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: etcd-k8s
namespace: monitoring
labels:
k8s-app: etcd-k8s
spec:
jobLabel: k8s-app
endpoints:
- port: port #匹配service端口
interval: 15s
selector:
matchLabels:
k8s-app: etcd
namespaceSelector:
matchNames:
- kube-system

上面我们在 monitoring 命名空间下面创建了名为 etcd-k8s 的 ServiceMonitor 对象,基本属性和前面介绍的一致,匹配 kube-system 这个命名空间下面的具有 k8s-app=etcd 这个 label 标签的 Service,jobLabel 表示用于检索 job 任务名称的标签,由于 etcd 的 metrics 接口在 2381 端口下面,不需要 https 安全认证,所以用默认的配置即可。然后我们直接创建这个 ServiceMonitor 对象即可

②、创建 Service & Endpoints

因为 ETCD 是独立于集群之外的,所以我们需要创建一个 Endpoints 将其代理到 Kubernetes 集群,然后创建一个 Service 绑定 Endpoints,然后 Kubernetes 集群的应用就可以访问 ETCD 集群了

$ vi prometheus-etcdService.yaml
apiVersion: v1
kind: Service
metadata:
name: etcd-k8s
namespace: kube-system
labels:
k8s-app: etcd
spec:
type: ClusterIP
clusterIP: None #设置为None,不分配Service IP
ports:
- name: port #匹配service端口
port: 2381
---
apiVersion: v1
kind: Endpoints
metadata:
name: etcd-k8s
namespace: kube-system
labels:
k8s-app: etcd
subsets:
- addresses:
- ip: 172.16.1.11 # 指定etcd节点地址,如果是集群则继续向下添加
nodeName: etc-master
ports:
- name: port
port: 2381 # Etcd 端口号

二、监控无metrics接口

监控kafka-exporter为例

apiVersion: v1
kind: Service
metadata:
name: kafka-exporter
namespace: monitoring
labels:
k8s-app: kafka-exporter
spec:
selector:
k8s-app: kafka-exporter
ports:
- name: kafka-exporter
port: 9308
protocol: TCP
type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-exporter
namespace: monitoring
labels:
k8s-app: kafka-exporter
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kafka-exporter
template:
metadata:
labels:
k8s-app: kafka-exporter
spec:
containers:
- name: kafka-exporter
image: danielqsj/kafka-exporter:latest
imagePullPolicy: IfNotPresent
args: ["--kafka.server=kafka-0.kafka-headless.public-service:9092"]
resources:
requests:
memory: 100M
volumeMounts:
- name: tz-config
mountPath: /etc/localtime
readOnly: true
nodeSelector:
monitor: "true"
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
  • 创建了kafka_exporter的service和deployment,service用于和Prometheus servicemonitor进行匹配,采集数据
  • args:Kafka_exporter启动参数,为k8s集群中kafka的地址

最新文章

  1. 设计模式 — 简单工厂模式(Simple Factory)
  2. VB6史无前例的子类化之透明按钮
  3. hdu1282回文数猜想
  4. android: 使用 AsyncTask
  5. 用PHP实现定时器功能
  6. JQ实现accordion(可折叠)效果
  7. CentOS 7 安装virtualBox
  8. CocoaPods详解之----进阶篇
  9. 2015.9.11模拟赛 codevs 4159【hzwer的迷の数列】
  10. Sublime-text 自己定义快捷键攻略
  11. Apache服务无法启动的解决方法
  12. 成都IT公司面经及公司评价
  13. Linux下栈溢出导致的core dump
  14. Reverse Words in a String III
  15. Zookeeper介绍 Zookeeper搭建 Zookeeper集群搭建
  16. Cmake用法
  17. Oarcle之用户管理 与 DCL
  18. 微信小程序wx.chooseImage和wx.previewImage的综合使用(图片上传可以限制个数)
  19. TCP socket和web socket的区别
  20. ZJOI 2018 一试记

热门文章

  1. [UnityShader]说厌了的遮挡显示
  2. iOS开发 性能优化
  3. Kubernetes 设置master相关
  4. <input>输入框,限制输入的为正整数
  5. oracle的dblink创建连接查询及使用
  6. js 加密和解密
  7. ECDSA签名验证
  8. 网站提示:You Don’t Have Permission To Access
  9. 与IE浏览器相关的问题(一)
  10. pj_0004_time_swap