监控
监控 Ingress-Nginx
...
annotations:
prometheus.io/port: "10254"
prometheus.io/scrape: "true"
...
使用 ingress-nginx/deploy 安装的 Ingress-Nginx 已经内置了 /metrics
接口,并已启用,因此只需要在 Prometheus 的配置文件内添加 job 即可。
# 先将 Ingress-Nginx:10254 作为 Service
apiVersion: v1
kind: Service
metadata:
# name 自己设定
name: ingress-prome-svc
namespace: ingress-nginx
spec:
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: export-port
port: 10254
targetPort: 10254
---
# 在 Prometheus 的 ConfigMap 中添加 Job
...
- job_name: 'ingress-nginx'
static_configs:
# 使用 FQDN
# <svc-name>.<namespace>.svc.cluster.local
- targets: ['ingress-prome-svc.ingress-nginx.svc.cluster.local:10254']
重载配置,使配置生效
curl -X POST http://NodeIP:Port/-/reload
浏览器访问 http://NodeIP:Port
,查看。
使用 Exporter 监控应用
官方文档已分类总结 Exporter(包括第三方):EXPORTERS AND INTEGRATIONS
# 试用 redis-exposter
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-prome
namespace: kube-prome
spec:
selector:
matchLabels:
app: redis-prome
template:
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9121"
labels:
app: redis-prome
spec:
containers:
- name: redis-prome
image: redis
resources:
limits:
memory: "100Mi"
cpu: "50m"
requests:
memory: "100Mi"
cpu: "10m"
ports:
- containerPort: 6379
name: redis-port
- name: redis-export
image: oliver006/redis_exporter
resources:
limits:
memory: "100Mi"
cpu: "50m"
requests:
memory: "50Mi"
cpu: "10m"
ports:
- name: export-port
containerPort: 9121
---
apiVersion: v1
kind: Service
metadata:
name: redis-prome-svc
namespace: kube-prome
spec:
selector:
app: redis-prome
ports:
- port: 6379
targetPort: redis-port
name: redis-svc
- port: 9121
targetPort: export-port
name: export-svc
# 修改 ConfigMap,注意修改文件名和 Namespace
# kubectl edit cm prometheus-config -n kube-prometheus
# 添加 Job
- job_name: 'redis-export'
static_configs:
- targets: ['redis-prome-svc:9121']
重载配置,使配置生效
curl -X POST http://NodeIP:Port/-/reload
浏览器访问 http://NodeIP:Port
,查看。
监控集群节点
kube-state-metrics 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等
metrics-server 主要关注的是资源度量 API 的实现,比如 CPU、文件描述符、内存、请求延时等指标。
以上两种只是显示数据,并不提供数据存储服务。
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: node-exporter
namespace: kube-prometheus
labels:
name: node-exporter
spec:
template:
metadata:
labels:
name: node-exporter
spec:
hostPID: true
hostIPC: true
hostNetwork: true
containers:
- name: node-exporter
image: prom/node-exporter
ports:
- containerPort: 9100
resources:
requests:
memory: "100Mi"
cpu: "0.15"
securityContext:
privileged: true
args:
- --path.procfs
- /host/proc
- --path.sysfs
- /host/sys
- --collector.filesystem.ignored-mount-points
- '"^/(sys|proc|dev|host|etc)($|/)"'
volumeMounts:
- name: dev
mountPath: /host/dev
- name: proc
mountPath: /host/proc
- name: sys
mountPath: /host/sys
- name: rootfs
mountPath: /rootfs
tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
volumes:
- name: proc
hostPath:
path: /proc
- name: dev
hostPath:
path: /dev
- name: sys
hostPath:
path: /sys
- name: rootfs
hostPath:
path: /
服务发现
在 Kubernetes 下,Promethues 通过与 Kubernetes API 集成,目前主要支持5中服务发现模式,分别是:Node、Service、Pod、Endpoints、Ingress。
配置 ConfigMap
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- source_labels: [__address__]
regex: '(.*):10250'
replacement: '${1}:9100'
target_label: __address__
action: replace
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
重载配置,使配置生效
curl -X POST http://NodeIP:Port/-/reload
浏览器访问 http://NodeIP:Port
,查看。
[kubernetes_sd_config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#%3Ckubernetes_sd_config%3E)
Last updated
Was this helpful?