一、Prometheus监控非云原生应用流程¶

上面流程图说明:
针对非云原生应用一般本身不存在一个/metrics接口,我们需要配置Exporter来指向非云原生应用Service(集群外部的应用也需要指定具体IP)。同时,Exporter会起一个Exporter Service以此暴露/metrics接口方便提供监控数据。最后,ServiceMonitor通过标签选择器自动发现符合条件的Exporter Service,并开始监控它们。最后告诉Prometheus 如何监控服务(Service)。
二、Prometheus监控非云原生应用Windows外部主机¶
2.1 部署windows-exporter¶
1.打开windows_exporter官网,点击【windows_exporter-0.23.1-adm64.msi】进行下载,下载完成后上传到windows主机

2.在windows主机上双击windows_exporter-0.23.1-adm64.msi,找到任务管理器,查看是否启动,观察到已成功启动。此时,windows-exporter会暴露一个9182端口,用于访问windows主机的监控数据。

2.2 Prometheus静态配置¶
1.创建一个空文件,然后通过该文件创建一个 Secret,那么这个 Secret 即可作为 Prometheus 的静态配置
[root@k8s-master01 ~]# touch prometheus-windows-exporter.yaml
[root@k8s-master01 ~]# kubectl create secret generic windows-configs --from-file=prometheus-windows-exporter.yaml -n monitoring
查看 Secret是否创建完成
[root@k8s-master01 ~]# kubectl describe secret windows-configs -n monitoring
Name: windows-configs
Namespace: monitoring
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
prometheus-windows-exporter.yaml: 0 bytes
2.创建完 Secret 后,需要编辑下 Prometheus 配置
[root@k8s-master01 ~]# kubectl edit prometheus -n monitoring k8s
...
...
additionalScrapeConfigs:
key: prometheus-windows-exporter.yaml
name: windows-configs
optional: true
...
...
3.打开prometheus-windows-exporter.yaml文件输入以下内容,添加job
[root@k8s-master01 ~]# vim prometheus-windows-exporter.yaml
- job_name: 'blackbox'
static_configs:
- targets:
- "192.168.1.107:9182"
labels:
server_type: 'windows'
relabel_configs:
- source_labels: [__address__]
target_label: instance
通过该文件更新该Secret
[root@k8s-master01 ~]# kubectl create secret generic windows-configs --from-file=prometheus-windows-exporter.yaml --dry-run=client -oyaml | kubectl replace -f - -n monitoring
查看Secret是否更新完成
[root@k8s-master01 ~]# kubectl get secret -n monitoring windows-configs -oyaml
apiVersion: v1
data:
prometheus-windows-exporter.yaml: LSBqb2JfbmFtZTogJ2JsYWNrYm94JwogIHN0YXRpY19jb25maWdzOgogICAgLSB0YXJnZXRzOgogICAgICAtICIxOTIuMTY4LjEuMTA3OjkxODIiCiAgICAgIGxhYmVsczoKICAgICAgICBzZXJ2ZXJfdHlwZTogJ3dpbmRvd3MnCiAgcmVsYWJlbF9jb25maWdzOgogICAgLSBzb3VyY2VfbGFiZWxzOiBbX19hZGRyZXNzX19dCiAgICAgIHRhcmdldF9sYWJlbDogaW5zdGFuY2UK
kind: Secret
metadata:
creationTimestamp: "2023-07-24T07:07:00Z"
name: windows-configs
namespace: monitoring
resourceVersion: "4939546"
uid: 661dec83-bb36-46dc-a632-cd53d3c9edfa
type: Opaque
对其进行解密验证
[root@k8s-master01 ~]# echo """
> LSBqb2JfbmFtZTogJ2JsYWNrYm94JwogIHN0YXRpY19jb25maWdzOgogICAgLSB0YXJnZXRzOgogICAgICAtICIxOTIuMTY4LjEuMTA3OjkxODIiCiAgICAgIGxhYmVsczoKICAgICAgICBzZXJ2ZXJfdHlwZTogJ3dpbmRvd3MnCiAgcmVsYWJlbF9jb25maWdzOgogICAgLSBzb3VyY2VfbGFiZWxzOiBbX19hZGRyZXNzX19dCiAgICAgIHRhcmdldF9sYWJlbDogaW5zdGFuY2UK"""|base64 -d
- job_name: 'blackbox'
static_configs:
- targets:
- "192.168.1.107:9182"
labels:
server_type: 'windows'
relabel_configs:
- source_labels: [__address__]
target_label: instance
2.3 Prometheus页面验证¶
1.获取Prometheus服务NodePort端口
[root@k8s-master01 ~]# kubectl get svc -n monitoring | grep prometheus-k8s
prometheus-k8s NodePort 10.0.110.215 <none> 9090:30186/TCP,8080:31400/TCP 2d2h
2.打开浏览器输入节点IP:30186后,依次点击【Status】-【Targets】后,观察到windows主机已被监控,且状态为UP


说明:Prometheus页面默认无账号密码
3.我们可以输入windows_os_info来用于收集Windows主机的操作系统相关信息的Scrape配置

2.4 Grafana页面验证¶
1.获取Grafana服务NodePort端口
[root@k8s-master01 ~]# kubectl get svc -n monitoring | grep grafana
grafana NodePort 10.0.14.56 <none> 3000:30428/TCP 2d3h
2.打开浏览器输入节点IP:30428后,依次点击【+】-【import dashboard】

你可以登录grafana官网下载自己心仪的模板,选择好后复制【Dashboard ID】,这里选择的是10467

回到grafana界面,填写刚刚复制的【Dashboard ID】后,点击【Load】

填写【Name】并选择监控来源(prometheus)后,点击【Import】

这样就可以观察到 Windows 主机监控情况了
