在Prometheus/Grafana中查看Liberty的指标

确认如何在Prometheus/Grafana中显示Liberty的指标。使用下面文章中提到的步骤,在已部署Prometheus/Grafana的Minikube环境中进行操作。

    MinikubeにPrometheusとGrafanaをHelmチャートでデプロイする

应用程序的准备

使用这里放置的一个非常简单的Java应用程序作为示例。在Liberty服务器上,启用mpMetrics-1.1特性和monitor-1.0。

...
  <featureManager>
...
    <feature>mpMetrics-1.1</feature>
    <feature>monitor-1.0</feature>
  </featureManager>
...
  <mpMetrics authentication="false" />
...

启用mpMetrics-1.1功能后,将在/metrics路径下公开度量信息。启用monitor-1.0功能后,可以获取基本的度量信息以及供应商范围的度量信息。有关可获得的度量信息的详细内容,请参考以下文章。

    Libertyの性能情報をPythonのSidecarで取得する(mpMetrics)

将此应用程序的Liberty容器映像命名为sotoiwa540/sample:1.0,并推送至DockerHub,在下方使用此映像。

FROM websphere-liberty:18.0.0.4-webProfile8
COPY --chown=1001:0 server.xml /config/
RUN installUtility install --acceptLicense defaultServer
COPY --chown=1001:0 mysql-connector-java-8.0.13.jar /config/resources/mysql/
COPY --chown=1001:0 sample.war /config/apps/
docker build -t sotoiwa540/sample:1.0 .
docker push sotoiwa540/sample:1.0

应用程序的部署

创建用于部署的Namespace。

kubectl create ns liberty

创建并部署清单。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: liberty
spec:
  selector:
    matchLabels:
      app: liberty
  replicas: 2
  template:
    metadata:
      labels:
        app: liberty
    spec:
      containers:
      - name: liberty
        image: sotoiwa540/sample:1.0
        imagePullPolicy: Always
        ports:
        - containerPort: 9080
kubectl apply -f liberty-deployment.yaml -n liberty

创建服务

为了让Prometheus获取Liberty的性能信息,需要向Service定义中添加注解。

apiVersion: v1
kind: Service
metadata:
  name: liberty
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9080"
spec:
  type: ClusterIP
  selector:
    app: liberty
  ports:
  - protocol: TCP
    port: 9080
kubectl apply -f liberty-service.yaml -n liberty

确认指标

在Prometheus的菜单中,查看状态 > 目标。

image.png

确认在Kubernetes服务端点中添加了Liberty的端点。

image.png

尝试输入”base”和”vendor”,检查是否可以获取到mpMetrics功能的指标。

image.png
image.png

输入base:memory_used_heap_bytes并执行Execute来检查值。由于Liberty的副本数为2,会显示每个副本的最近数据。

image.png

在Grafana上的展示

增加一个面板,并输入base:memory_used_heap_bytes(堆内存使用量)和base:memory_committed_heap_bytes(堆内存大小)的查询。或许还可以显示base:memory_max_heap_bytes(最大堆内存大小)。图例显示的是实例的标签,但这是服务的端点,而不是Pod名称,可能有点不方便。

image.png

以下是可以显示如下仪表盘的内容。

image.png

显示Pod名称

要显示Pod名称而不是Service的Endpoint,请自定义Prometheus的scrape_configs并将其附加到Pod名称的标签上。您可以通过在“Status> Configuration”中查看当前配置来了解。

image.png

配置信息存储在名为prometheus-server的ConfigMap中。可以在释放图表时自定义。如果已经发布了图表,可以通过修改图表参数并使用helm upgrade来应用更改,也可以直接修改ConfigMap。

如果要修改图表的参数,似乎需要同时写入默认选项和其他选项。这次我们简单地修改ConfigMap。

kubectl edit cm prometheus-server -n monitoring

请添加以下内容。

...
    - job_name: kubernetes-service-endpoints
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
...
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_name
        target_label: kubernetes_pod
...

确认标签已添加。

image.png

在Grafana中,将此标签指定为图例。

image.png
广告
将在 10 秒后关闭
bannerAds