9点面试…9点05面试结果就出来… 面试官问我什么是Prometheus…
Prometheus是一个开源的系统监控和警报工具,它在云原生环境中非常流行。它使用Go语言编写,具有高度的可扩展性和可靠性。本文将详细介绍如何使用Prometheus来监控主机资源以及如何配置node节点监控。
1. 安装Prometheus
在开始之前,确保你已经在你的主机上安装了Prometheus。你可以从Prometheus官方网站下载对应平台的二进制文件,或使用包管理器安装。
2. 使用Node Exporter监控主机
Node Exporter是Prometheus的一个官方工具,用于从主机操作系统收集指标。它能够提供有关CPU、内存、磁盘、网络和其他硬件资源的统计信息。
安装Node Exporter
在Linux上,可以使用以下命令安装Node Exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
在Windows上,可以从GitHub releases页面下载对应的二进制文件。
启动Node Exporter
启动Node Exporter非常简单,只需运行一个命令:
./node_exporter
默认情况下,Node Exporter会在端口9100上暴露指标。
配置Prometheus监控Node Exporter
接下来,你需要配置Prometheus来抓取Node Exporter提供的指标。在Prometheus的配置文件中添加以下内容:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['<node_exporter_ip>:9100']
替换<node_exporter_ip>
为你的Node Exporter所在主机的IP地址。
3. 配置Node节点监控
如果你正在使用Kubernetes,并且想要监控集群中的节点,你需要部署并配置Prometheus以监控每个节点。这通常涉及两个步骤:部署Prometheus和部署节点级别的监控组件。
部署Prometheus
你可以使用Helm chart、Operator或者手动方式部署Prometheus。这里我们展示一个简单的手动部署方法。
首先,创建一个名为prometheus-config.yaml
的配置文件:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/resource
然后,启动Prometheus容器:
docker run
--name prometheus
-p 9090:9090
-v $PWD/prometheus-config.yaml:/etc/prometheus/prometheus.yml
-v $PWD/prometheus-data:/prometheus
-d prom/prometheus
这将启动一个Prometheus实例,它会开始抓取Kubernetes节点的指标。
部署节点级别监控组件
为了获取更详细的节点级别指标,你可能需要部署额外的监控组件,如cAdvisor或node_exporter。这些组件可以直接在每个节点上运行,或者通过DaemonSet在集群范围内部署。
例如,使用以下命令部署cAdvisor:
kubectl apply -f https://raw.githubusercontent.com/google/cadvisor/master/deploy/kubernetes/cadvisor.yaml
然后,更新Prometheus的配置文件以包含cAdvisor的指标:
scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cAdvisor
4. 查看监控数据
一旦你的监控组件开始收集数据,你就可以使用Prometheus的内置Web界面查看这些数据。访问http://<prometheus_ip>:9090
,其中<prometheus_ip>
是你的Prometheus服务器的IP地址。
在Prometheus的Web界面中,你可以执行PromQL查询来获取特定指标的数据。例如,要查看所有节点的CPU使用率,可以执行以下查询:
sum by (instance) (rate(container_cpu_usage_seconds_total{container!="", container!~"POD|pause", container!~"^kubelet|kubeproxy|kube-proxy|kube-state-metrics|kube-router|weave|flanneld$", pod=~"^(?!kube-state-metrics).*", namespace!="kube-system", instance!="<node_exporter_ip>:9100"}[5m])) * 100
此外,你还可以将Grafana等可视化工具与Prometheus集成,以便更直观地查看和分析指标数据。
总结
通过使用Prometheus和Node Exporter,你可以有效地监控你的主机资源。同时,通过配置节点级别的监控组件,你可以更深入地了解Kubernetes集群的性能和健康状况。希望本文能帮助你了解如何配置和使用Prometheus进行主机和节点监控。