使用 Prometheus Operator 监控 ubuntu 个服务器
Monitor ubuntu servers with Prometheus Operator
我需要使用 Prometheus Operator 监控多个 ubuntu 服务器。这些服务器在我的 prometheus operator 运行 所在的 kubernetes 集群之外。下面的清单用于监视其中一台具有 IP aaa.bbb.ccc.ddd
的服务器。如何添加多个 IP 作为要监控的端点?还是我需要为每个服务器创建一个 endpoint/service?
apiVersion: v1
kind: Service
metadata:
name: external-server
namespace: monitoring
labels:
k8s-app: external-server
spec:
type: ExternalName
externalName: aaa.bbb.ccc.ddd
clusterIP: ""
ports:
- name: metrics
port: 9100
protocol: TCP
targetPort: 9100
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: external-server
labels:
k8s-app: external-server
spec:
endpoints:
- port: metrics
interval: 30s
honorLabels: true
path: /metrics
selector:
matchLabels:
k8s-app: external-server
namespaceSelector:
matchNames:
- monitoring
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
labels:
k8s-app: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
ports:
- name: metrics
port: 9100
protocol: TCP
只需使用
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
- ip: aaa.bbb.ccc.eee
- ip: aaa.bbb.ccc.fff
ports:
- name: metrics
port: 9100
protocol: TCP
一个具有多个端点的新目标将添加到 Prometheus /targets
。
这是对我有用的完整解决方案。
请注意,我必须将 Service type
更改为 ClusterIP
。
apiVersion: v1
kind: Service
metadata:
name: external-server
namespace: monitoring
labels:
k8s-app: external-server
spec:
type: ClusterIP
clusterIP: None
ports:
- name: metrics
port: 9100
protocol: TCP
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: external-server
labels:
k8s-app: external-server
spec:
endpoints:
- port: metrics
interval: 30s
scheme: http
selector:
matchLabels:
k8s-app: external-server
namespaceSelector:
matchNames:
- monitoring
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
labels:
k8s-app: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
- ip: aaa.bbb.ccc.eee
ports:
- name: metrics
port: 9100
protocol: TCP
部署后,这两个 IP 将显示为 external-server
下 Targets
下的端点。
我需要使用 Prometheus Operator 监控多个 ubuntu 服务器。这些服务器在我的 prometheus operator 运行 所在的 kubernetes 集群之外。下面的清单用于监视其中一台具有 IP aaa.bbb.ccc.ddd
的服务器。如何添加多个 IP 作为要监控的端点?还是我需要为每个服务器创建一个 endpoint/service?
apiVersion: v1
kind: Service
metadata:
name: external-server
namespace: monitoring
labels:
k8s-app: external-server
spec:
type: ExternalName
externalName: aaa.bbb.ccc.ddd
clusterIP: ""
ports:
- name: metrics
port: 9100
protocol: TCP
targetPort: 9100
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: external-server
labels:
k8s-app: external-server
spec:
endpoints:
- port: metrics
interval: 30s
honorLabels: true
path: /metrics
selector:
matchLabels:
k8s-app: external-server
namespaceSelector:
matchNames:
- monitoring
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
labels:
k8s-app: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
ports:
- name: metrics
port: 9100
protocol: TCP
只需使用
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
- ip: aaa.bbb.ccc.eee
- ip: aaa.bbb.ccc.fff
ports:
- name: metrics
port: 9100
protocol: TCP
一个具有多个端点的新目标将添加到 Prometheus /targets
。
这是对我有用的完整解决方案。
请注意,我必须将 Service type
更改为 ClusterIP
。
apiVersion: v1
kind: Service
metadata:
name: external-server
namespace: monitoring
labels:
k8s-app: external-server
spec:
type: ClusterIP
clusterIP: None
ports:
- name: metrics
port: 9100
protocol: TCP
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: external-server
labels:
k8s-app: external-server
spec:
endpoints:
- port: metrics
interval: 30s
scheme: http
selector:
matchLabels:
k8s-app: external-server
namespaceSelector:
matchNames:
- monitoring
apiVersion: v1
kind: Endpoints
metadata:
name: external-server
labels:
k8s-app: external-server
subsets:
- addresses:
- ip: aaa.bbb.ccc.ddd
- ip: aaa.bbb.ccc.eee
ports:
- name: metrics
port: 9100
protocol: TCP
部署后,这两个 IP 将显示为 external-server
下 Targets
下的端点。