Kubernetes集群监控,kube-prometheus安装教程,一键部署

Kube-prometheus介绍

Kube-prometheus 是一个用于监控 Kubernetes 集群的完整解决方案。它基于 Prometheus 生态系统,提供了一整套预配置的组件和配置文件,以便轻松地在 Kubernetes 上部署和运行 Prometheus 监控系统。

Kube-prometheus 主要包括以下组件:

Prometheus Operator:简化了 Prometheus 的部署和管理。它通过 Kubernetes CRD(自定义资源定义)来管理 Prometheus 实例和 Alertmanager 实例。

Prometheus:一个开源的系统监控和报警工具。它通过拉取方式收集时序数据,并提供一个灵活的查询语言(PromQL)来分析数据。

Alertmanager:处理来自 Prometheus 的警报,可以对警报进行分组、路由和通知。

Grafana:一个开源的分析平台,用于可视化数据,支持多种数据源。它可以用来创建和分享仪表板(Dashboards)。

Node Exporter:一个收集主机硬件和操作系统指标的工具。

Kube-state-metrics:从 Kubernetes API 服务器收集集群状态数据的工具。

Prometheus Adapter:将 Prometheus 的自定义指标暴露给 Kubernetes 的 Horizontal Pod Autoscaler (HPA) 使用。

Kube-prometheus 的主要特点和优势包括:

  • 预配置:提供了一整套预先配置好的 Prometheus、Alertmanager 和 Grafana 的配置文件,开箱即用。
  • 集成性强:所有组件都紧密集成,可以方便地一起使用。
  • 可扩展性:基于 Kubernetes 的部署方式,使得监控系统能够方便地扩展和升级。
  • 社区支持:作为一个被广泛使用的项目,有着良好的社区支持和文档。

要使用 Kube-prometheus,通常通过 Helm Chart 或者直接使用项目中的 Kubernetes 清单文件来部署。部署完成后,你可以访问 Grafana 来查看集群的监控指标和预定义的仪表板,同时通过 Prometheus 和 Alertmanager 来管理和处理监控数据和警报。

Kube-prometheus安装部署

拉取镜像

git clone https://mirror.ghproxy.com/https://github.com/prometheus-operator/kube-prometheus.git

将目录更改为清单 manifests

cd kube-prometheus/manifests

修改Grafana服务YAML

修改为NodePort类型,集群外可以访问

sed -i "/ports:/i \ \ type: NodePort" grafana-service.yaml
#下面这个也可以不执行,自动生成随机的端口
sed -i "/targetPort: http/i \ \ \ \ nodePort: 31100" grafana-service.yaml

修改Prometheus服务YAML

修改为NodePort类型,集群外可以访问

sed -i "/ports:/i \ \ type: NodePort" prometheus-service.yaml
#下面这个也可以不执行,自动生成随机的端口
sed -i "/targetPort: web/i \ \ \ \ nodePort: 31101" prometheus-service.yaml

安装CRD

kubectl create -f setup/

安装prometheus, alertmanager, grafana, kube-state-metrics, node-exporter等资源

kubectl apply -f .

安装成功,查看pod,svc

kubectl get pod,svc -n monitoring -o wide
NAME                                      READY   STATUS    RESTARTS       AGE     IP              NODE     NOMINATED NODE   READINESS GATES
pod/alertmanager-main-0                   2/2     Running   6 (18m ago)    4d16h   10.244.1.183    slave1   <none>           <none>
pod/alertmanager-main-1                   2/2     Running   6 (18m ago)    4d16h   10.244.1.176    slave1   <none>           <none>
pod/alertmanager-main-2                   2/2     Running   6 (18m ago)    4d16h   10.244.1.173    slave1   <none>           <none>
pod/blackbox-exporter-6fc96d64db-687gh    3/3     Running   9 (18m ago)    4d17h   10.244.1.165    slave1   <none>           <none>
pod/grafana-85c87f8769-xqlq5              1/1     Running   3 (18m ago)    4d17h   10.244.1.166    slave1   <none>           <none>
pod/kube-state-metrics-6d79c8794-tpbtr    3/3     Running   9 (18m ago)    4d17h   10.244.1.164    slave1   <none>           <none>
pod/node-exporter-2dz4d                   2/2     Running   14 (18m ago)   7d19h   192.168.10.22   slave1   <none>           <none>
pod/node-exporter-rqplj                   2/2     Running   10 (18m ago)   7d19h   192.168.10.21   main     <none>           <none>
pod/prometheus-adapter-9f76d56cc-47qgh    1/1     Running   5 (18m ago)    4d17h   10.244.1.170    slave1   <none>           <none>
pod/prometheus-adapter-9f76d56cc-zt64q    1/1     Running   5 (18m ago)    4d17h   10.244.1.179    slave1   <none>           <none>
pod/prometheus-k8s-0                      2/2     Running   7 (18m ago)    4d16h   10.244.1.175    slave1   <none>           <none>
pod/prometheus-k8s-1                      2/2     Running   7 (18m ago)    4d16h   10.244.1.181    slave1   <none>           <none>
pod/prometheus-operator-84978f59d-jf5cn   2/2     Running   6 (18m ago)    4d17h   10.244.1.169    slave1   <none>           <none>

NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                         AGE     SELECTOR
service/alertmanager-main       ClusterIP   10.100.61.145   <none>        9093/TCP,8080/TCP               7d19h   app.kubernetes.io/component=alert-router,app.kubernetes.io/instance=main,app.kubernetes.io/name=alertmanager,app.kubernetes.io/part-of=kube-prometheus
service/alertmanager-operated   ClusterIP   None            <none>        9093/TCP,9094/TCP,9094/UDP      7d19h   app.kubernetes.io/name=alertmanager
service/blackbox-exporter       ClusterIP   10.107.213.75   <none>        9115/TCP,19115/TCP              7d19h   app.kubernetes.io/component=exporter,app.kubernetes.io/name=blackbox-exporter,app.kubernetes.io/part-of=kube-prometheus
service/grafana                 NodePort    10.102.185.87   <none>        3000:31100/TCP                  7d19h   app.kubernetes.io/component=grafana,app.kubernetes.io/name=grafana,app.kubernetes.io/part-of=kube-prometheus
service/kube-state-metrics      ClusterIP   None            <none>        8443/TCP,9443/TCP               7d19h   app.kubernetes.io/component=exporter,app.kubernetes.io/name=kube-state-metrics,app.kubernetes.io/part-of=kube-prometheus
service/node-exporter           ClusterIP   None            <none>        9100/TCP                        7d19h   app.kubernetes.io/component=exporter,app.kubernetes.io/name=node-exporter,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-adapter      ClusterIP   10.101.25.109   <none>        443/TCP                         7d19h   app.kubernetes.io/component=metrics-adapter,app.kubernetes.io/name=prometheus-adapter,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-k8s          NodePort    10.107.214.35   <none>        9090:31101/TCP,8080:30323/TCP   7d19h   app.kubernetes.io/component=prometheus,app.kubernetes.io/instance=k8s,app.kubernetes.io/name=prometheus,app.kubernetes.io/part-of=kube-prometheus
service/prometheus-operated     ClusterIP   None            <none>        9090/TCP                        4d18h   app.kubernetes.io/name=prometheus
service/prometheus-operator     ClusterIP   None            <none>        8443/TCP                        7d19h   app.kubernetes.io/component=controller,app.kubernetes.io/name=prometheus-operator,app.kubernetes.io/part-of=kube-prometheus

访问

prometheus-k8s在slave1上面,用slave1的ip加prometheus-k8s的端口http://192.168.10.21:31101/访问

grafana也在slave1上面,用slave1的ip加grafana的端口http://192.168.10.21:31100/访问 ,默认账户密码:admin:admin

一键部署shell脚本

#!/bin/bash

# Clone the repository
git clone https://mirror.ghproxy.com/https://github.com/prometheus-operator/kube-prometheus.git

# Change directory to manifests
cd kube-prometheus/manifests

# Prompt the user to enter Grafana NodePort
echo "Enter the Grafana NodePort (default is 31100):"
read grafana_nodeport
grafana_nodeport=${grafana_nodeport:-31100}  # Default to 31100 if user doesn't provide any input

# Modify Grafana service YAML
sed -i "/ports:/i \ \ type: NodePort" grafana-service.yaml
sed -i "/targetPort: http/i \ \ \ \ nodePort: $grafana_nodeport" grafana-service.yaml

# Prompt the user to enter Prometheus NodePort
echo "Enter the Prometheus NodePort (default is 31101):"
read prometheus_nodeport
prometheus_nodeport=${prometheus_nodeport:-31101}  # Default to 31101 if user doesn't provide any input

# Modify Prometheus service YAML
sed -i "/ports:/i \ \ type: NodePort" prometheus-service.yaml
sed -i "/targetPort: web/i \ \ \ \ nodePort: $prometheus_nodeport" prometheus-service.yaml

kubectl create -f setup/

kubectl wait \
	--for condition=Established \
	--all CustomResourceDefinition \
	--namespace=monitoring

# Apply the Kubernetes manifests
kubectl apply -f .

相关推荐

  1. kubernetes 之 一安装prometheus

    2024-06-12 13:12:06       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 13:12:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 13:12:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 13:12:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 13:12:06       20 阅读

热门阅读

  1. Oracle 最终会淘汰 MySQL 吗?

    2024-06-12 13:12:06       10 阅读
  2. AES加密、解密工具类

    2024-06-12 13:12:06       11 阅读
  3. Linux网络设置

    2024-06-12 13:12:06       10 阅读
  4. Android面试题汇总-Jetpack组件

    2024-06-12 13:12:06       12 阅读
  5. 前端的强缓存和协商缓存

    2024-06-12 13:12:06       8 阅读
  6. ffmpeg的部署踩坑及简单使用方式

    2024-06-12 13:12:06       9 阅读
  7. win10下 mysql8.0.37.0 msi版本安装时出现的问题

    2024-06-12 13:12:06       7 阅读
  8. windows下安装IntelliJIDEA

    2024-06-12 13:12:06       9 阅读