k8s-Prometheus-采集[tomcat|nginx]监控数据

root
233
文章
0
评论
2021年8月26日16:01:31 评论 3657字阅读12分11秒

Prometheus-采集tomcat监控数据

1.把包下载下来制作tomcat_exporte镜像

[root@master01 tomcat]# cat Dockerfile 
FROM tomcat
ADD metrics.war /usr/local/tomcat/webapps/
ADD simpleclient-0.8.0.jar  /usr/local/tomcat/lib/
ADD simpleclient_common-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_hotspot-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_servlet-0.8.0.jar /usr/local/tomcat/lib/
ADD tomcat_exporter_client-0.0.12.jar /usr/local/tomcat/lib/

构建镜像

[root@master01 tomcat]# docker build -t='hwf/tomcat_prometheus:v1' .

2.基于上面的hwf/tomcat_prometheus:v1镜像创建一个tomcat实例

[root@master01 tomcat]# cat tomcat-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  namespace: default
spec:
  selector: 
    matchLabels: 
     app: tomcat
  replicas: 1 # tells deployment to run 2 pods matching the template
  template: # create pods using pod definition in this template
    metadata:
      labels:
        app: tomcat
      annotations:
        prometheus.io/scrape: 'true'
    spec:
      containers:
      - name: tomcat
        image: hwf/tomcat_prometheus:v1
        ports:
        - containerPort: 8080
        securityContext: 
          privileged: true

在prometheus查看tomcat报警是否添加成功

创建一个service,可操作也可不操作

Prometheus-采集Nginx监控数据

 

1.下载nginx-module-vts模块

https://github.com/hnlq715/nginx-vts-exporter

[root@master01 nginx]# docker pull sophos/nginx-vts-exporter:v0.10.7

1.下载nginx-module-vts模块

nginx-vts

nginx的监控模块,能够提供json、html、prometheus格式的数据产出。

[root@master01 nginx]# docker pull gaciaga/nginx-vts:1.11.12-alpine-vts-0.1.14
注意:此镜像,默认已经开启了status

 

运行pod

[root@master01 nginx]# kubectl apply -f nginx.yaml 
deployment.apps/my-nginx created
service/nginx-web01 created

nginx.yaml文件如下:

[root@master01 nginx]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: my-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        prometheus.io/scrape: 'true'
    spec:
      containers:
      - image: gaciaga/nginx-vts:1.11.12-alpine-vts-0.1.14
        name: nginx-vts
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        ports:
        - protocol: TCP
          name: nginx
          containerPort: 80
        resources:  #资源配额
          limits:  #资源限制,最多可用的cpu和内存
            cpu: 1
            memory: 1Gi
          requests: #最少需要多少资源才可以运行Pod
            cpu: 0.5
            memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-web01
  namespace: default
spec:
  ports:
  - name: nginx
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30008 
  selector:
    app: nginx
  type: NodePort

访问status页面

http://192.168.1.183:30008/status

效果如下:

2.下载nginx-vts-exporter模块

主要用于收集nginx的监控数据,并给Prometheus提供监控接口,默认端口号9913。

 

[root@master01 nginx]# docker pull sophos/nginx-vts-exporter:v0.10.7

运行pod

[root@master01 nginx]# kubectl apply -f nginx-export.yaml

nginx.-exportyaml文件如下:

nodeport只是方便调试,正常不放开

[root@master01 nginx]# cat nginx-export.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-export
  name: nginx-export
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-export
  template:
    metadata:
      labels:
        app: nginx-export
      annotations:
        prometheus.io/scrape: 'true'
    spec:
      containers:
      - name: nginx-module
        image: gaciaga/nginx-vts:1.11.12-alpine-vts-0.1.14
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        ports:
        - protocol: TCP
          name: nginx-module
          containerPort: 80
        resources:  #资源配额
          limits:  #资源限制,最多可用的cpu和内存
            cpu: 1
            memory: 1Gi
          requests: #最少需要多少资源才可以运行Pod
            cpu: 0.5
            memory: 1Gi
      - name: nginx-vtx
        image: sophos/nginx-vts-exporter:v0.10.7
        env:
        - name: NGINX_STATUS
          value: "http://localhost/status/format/json"
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        ports:
        - protocol: TCP
          name: nginx-vtx
          containerPort: 9913
        resources:  #资源配额
          limits:  #资源限制,最多可用的cpu和内存
            cpu: 1
            memory: 1Gi
          requests: #最少需要多少资源才可以运行Pod
            cpu: 0.5
            memory: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-export
  namespace: default
spec:
  ports:
  - name: nginx-module
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30008
  - name: nginx-vtx
    port: 9913
    protocol: TCP
    targetPort: 9913
    nodePort: 30009
  selector:
    app: nginx-export
  type: NodePort
访问metrics页面
http://192.168.1.183:30009/metrics
3.在grafana界面导入nginx图标

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2021年8月26日16:01:31
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: