使用Prometheus和Grafana监视Kubernetes的CronJob

我一直在使用Prometheus + Grafana进行监控,但是无法监控Kubernetes的CronJob,因此我进行了相应的配置来解决这个问题。这里不涉及安装等步骤。

环境

    • GKE: 1.9.2-gke.1

 

    • kube-state-metrics: v1.2.0

 

    • Prometheus: v1.8系

 

    Grafana: 4.5系

Prometheus的配置

在获取Prometheus的kube-state-metrics值时,配置如下所示。由于relabel_configs较长,被省略。

    - job_name: 'kubernetes-pods'

      kubernetes_sd_configs:
      - role: pod

      relabel_configs:
        ...

      metric_relabel_configs:
      - source_labels: [exported_job]
        action: replace
        regex: ([a-z\-]+)-(\d+)
        replacement: $1
        target_label: exported_job_short

在metric_relabel_configs中,将kube-state-metrics的job metrics的job标签重命名为exported_job_short,并将其值缩写为正则表达式([a-z\-]+)-(\d+)中的短名称。

kube-state-metrics的job=的job-name会以cron-name-1520746800的形式显示出来。在Grafana中,我们希望用这个cron-name来进行归类,因此进行了重命名。
source_labels被设置为exported_job是因为在Prometheus这一侧,job已经被用作标签,并被重命名为exported_job。

Grafana的配置

在Grafana上,将以下指标绘制成图形。

    1. 失敗的CronJob数量

 

    CronJob的最大执行时间

有以下这样的结果产生。

image.png

设置失败的 CronJob 的数量

image.png

CronJob的最长执行时间。

image.png

现在可以通过以上进行监控。
也可以设置警报。

注意事项

执行kubectl get jobs命令可以查看作业历史记录,但是如果不删除失败的作业,则”失败的CronJob的数量”将不会减少。您需要以某种方式进行清理。

广告
将在 10 秒后关闭
bannerAds