本文介绍了使用Prometheus对k8s集群外的elasticsearch进行监控,这里Prometheus是使用operator部署于k8s集群中,相较于进程部署或docker部署的Prometheus,部署过程更为复杂,不能通过直接修改配置文件的方式增加job,而需要采用k8s的方式进行配置。
配置步骤为:
1,增加endpoint和service,使k8s集群连接至集群外的服务(这里使集群外的elasticsearch服务)
2,创建deployment,配置elasticsearch_exporter连接第1步的Service用于获取监控数据,并配置elasticsearch_exporter容器的启动参数
3,创建elasticsearch_exporter的Service用于被Prometheus发现并注册
4,创建ServiceMonitor将被监控资源注册至Prometheus的Job
5,配置PrometheusRule,增加告警规则
创建ep和svc连接集群外服务
通过yaml文件创建ep和svc,创建好后,访问svc集群ip的9200端口,看通过svc是否能正常访问elasticsearch
[root@VM-12-8-centos elk]# cat 1-es-endpoint-svr.yml
kind: Endpoints
apiVersion: v1
metadata:
name: external-es
labels:
app: external-es
subsets:
- addresses:
- ip: 10.0.20.10
ports:
- port: 9200
name: es
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: external-es
labels:
app: external-es
spec:
type: ClusterIP
ports:
- port: 9200
protocol: TCP
targetPort: 9200
name: es
[root@VM-12-8-centos elk]# kubectl apply -f 1-es-endpoint-svr.yml
endpoints/external-es created
service/external-es created
[root@VM-12-8-centos elk]# kubectl get svc external-es
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
external-es ClusterIP 10.1.250.204 <none> 9200/TCP 77s
[root@VM-12-8-centos elk]# kubectl get ep external-es
NAME ENDPOINTS AGE
external-es 10.0.20.10:9200 91s
[root@VM-12-8-centos elk]# curl 10.1.250.204:9200
{
"name" : "bVkU9LX",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "D-rkPesCRMalPQSi8nx8Hg",
"version" : {
"number" : "6.8.23",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "4f67856",
"build_date" : "2022-01-06T21:30:50.087716Z",
"build_snapshot" : false,
"