参考:

搭建流程

1、部署Prometheus,Grafana
2、部署exporter

  • Node_exporter/
  • kafka_exporter/
  • 云上nginx_exporter
  • SpringBoot项目集成监控

3、云平台中部署exporter的服务发现
4、部署ServiceMonitor
5、部署监控面板

部署exporter

分类部署。
云下:node_exporter
云上(容器):nginx_exporter等

node_exporter

参考文档。

另外:容器化node_exporter:

  1. docker run -d --restart=always \
  2. --name node_exporter \
  3. --net="host" \
  4. --pid="host" \
  5. -v "/:/host:ro,rslave" \
  6. node_exporter:v0.18.1 --path.rootfs=/host

云上nginx_exporter

在前端web应用的配置项中,增加

  1. location nginx_status {
  2. stub_status on;
  3. access_log on;
  4. allow all;
  5. }

部署nginx-exporter的deployment:
端口号为9113

spec.template.spec.containers.args处,
#参数处填写nginx.scrape-uri=http://对应的web服务名:服务端口/nginx_status

SpringBoot项目集成监控

https://mp.weixin.qq.com/s/0a9tVxSgoCBLyeeSv_WZog

服务发现

node_服务发现

云平台配置服务发现:部署服务发现,选择 解析到IP。
YAML文件配置服务发现:需要部署Endpoints和Service两种资源对象。如下图。

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. labels:
  5. k8s-app: node
  6. name: node
  7. namespace: monitoring
  8. spec:
  9. clusterIP: None
  10. ports:
  11. - name: http
  12. port: 9100
  13. protocol: TCP
  14. targetPort: 9100
  15. sessionAffinity: None
  16. type: ClusterIP
  17. ---
  18. apiVersion: v1
  19. kind: Endpoints
  20. metadata:
  21. labels:
  22. k8s-app: node
  23. name: node
  24. namespace: monitoring
  25. subsets:
  26. - addresses:
  27. - ip: 172.16.5.42
  28. - ip: 172.16.5.171
  29. ports:
  30. - name: http
  31. port: 9100
  32. protocol: TCP

nginx_服务发现

与nginx_exporter 的pod对应起来即可。

SpringBoot应用服务发现

与pod对应即可。

ServiceMonitor

node_服务监测

云平台配置:服务监测。选择对应的服务发现和工作负载即可。
YAML配置:与node_exporter服务发现对应。如下图。

  1. apiVersion: monitoring.coreos.com/v1
  2. kind: ServiceMonitor
  3. metadata:
  4. labels:
  5. app: node
  6. name: node
  7. namespace: monitoring
  8. spec:
  9. endpoints:
  10. - interval: 10s
  11. port: http
  12. namespaceSelector:
  13. matchNames:
  14. - monitoring
  15. selector:
  16. matchLabels:
  17. k8s-app: node

nginx_服务监测

云平台配置。