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

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主机

Prometheus监控非云原生应用Windows外部主机-1

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

Prometheus监控非云原生应用Windows外部主机-2

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监控非云原生应用Windows外部主机-1

Prometheus监控非云原生应用Windows外部主机-2

说明:Prometheus页面默认无账号密码

3.我们可以输入windows_os_info来用于收集Windows主机的操作系统相关信息的Scrape配置

Prometheus监控非云原生应用Windows外部主机-3

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】

Prometheus监控非云原生应用Windows外部主机-4

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

Prometheus监控非云原生应用Windows外部主机-5

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

Prometheus监控非云原生应用Windows外部主机-6

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

Prometheus监控非云原生应用Windows外部主机-7

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

Prometheus监控非云原生应用Windows外部主机-8