Search code examples
stackdrivergoogle-cloud-stackdriver

alert in stackdriver for not receiving msg after 24 hours in google cloud


I want to monitor that a pod in kubernetes is running correctly as cronjob twice a day using stackdriver.

In order to do it I want to send start msg and end msg logs in the pod and I want to create an alert metric in stack driver that if not receiving these msgs after 24 hours, send Email.

Is it possible to do this alerting in stack driver ?


Solution

  • There are several ways of accomplishing this.

    In order to generate the event, I think the easiest way is to check on a log-based metric based on the CRON itself. If you are running a kind:CronJob, you can either use the Metrics Explorer to find Resource type:GKE Container Metric: Log entries, and then filter by container_name (which will be your CronJob spec.containers.name)

    You could also create a log based metric on something like

    logName="projects/[PROJECT-ID]/logs/[CONTAINER-NAME]"

    ...and maybe add a string to the spec.containers.args section to make filtering easier.

    You could also publish to a pub/sub topic and do your alerting on publish message operations.

    Once you decide on the metric, you just need to alert if Any time series is absent[1] for 13 hours. Add a notification channel type=email[2], and you will receive an alert whenever the cron does not run at least once a day.

    [1] https://cloud.google.com/monitoring/alerts/concepts-indepth#condition-types

    [2] https://cloud.google.com/monitoring/support/notification-options#email