515 Infrastruktur auf AWS Monitoren [2 PT]

Updated . Posted . Visible to the public.

Das Standardtool für Monitoring auf AWS ist Cloudwatch. Du hast dir in den AWS Kapiteln Cloudwatch sicherlich schon grundsätzlich angesehen. In diesem Kapitel wirst du es aber konkret kennenlernen. Du wirst Custom Metriken zu Cloudwatch pushen und Alarme erstellen.

Ziele

  • Erfülle alle Aufgaben
  • Du verstehst was ein Prometheus Label ist und warum man relabel_config braucht.
  • Du verstehst den Unterschied zwischen relabel_configs und metric_relabel_configs.

Inhalte

Extra Prometheus Wissen

Da auch adot Prometheus Metriken einsammelt, ist es wichtig zu wissen wie das labeln und relabeln von Prometheus Metriken funktioniert.

Aufgaben

Für diese Aufgabe kehren wir wieder zu deine notestar Applikation, die du mit EKS auf AWS deployed hast, zurück. Wenn nicht anders angegeben, sind die zu erstellenden Ressourcen mit Terraform zu deployen.

  1. Erstelle Cloudwatch Alarme für deine RDS Instanz. Folgende Metriken solltest du überwachen:

    • CPUUtilization
    • BurstBalance
    • CPUCreditBalance (wenn das auf deinen Instance Type zutrifft)
    • FreeableMemory (der Grenzwert sollte hier vom verfügbaren Speicher des gewählten Instance Types abhängen)
    • ReadLatency
    • WriteLatency
    • DatabaseConnections (https://aws.amazon.com/premiumsupport/knowledge-center/rds-mysql-max-connections/)
    • Disk Space

    Achte darauf, nicht zu viel code für die Alarme zu duplizieren.

  2. Aktiviere storage autoscaling Show archive.org snapshot für deine RDS Instanz. Natürlich möchtest du trotzdem den Disk Space dafür überwachen. Schließlich wird nicht beliebig viel in kurzer Zeit skaliert. Dafür benötigst du eine Metrik, die dir anzeigt wie viel % vom Disk Space verwendet wird. Dafür kannst du Enhanced Monitoring und metric filters verwenden. Nachdem die Metrik existiert, erstellst du noch einen entsprechenden Alarm dafür.

  3. Du möchtest k8s Metriken in deinem Cloudwatch haben. Dafür kannst du adot Show archive.org snapshot verwenden. Von makandra gibt es das adot Show archive.org snapshot terraform module. Dieses example Show archive.org snapshot bietet eine gute Basis Konfiguration. Außerdem solltest du dir noch kube-state-metrics installieren, damit auch weitere Prometheus Konfigurationen zur Verfügung stehen.

    resource "helm_release" "kube-state-metrics" {
      name             = "kube-state-metrics"
      repository       = "https://prometheus-community.github.io/helm-charts"
      chart            = "kube-state-metrics"
      namespace        = "kube-system"
      version          = "4.22.3"
      create_namespace = false
      atomic           = true
    
      values = [
        yamlencode({
          metricAllowlist = [
            "kube_deployment_status_replicas_available",
            "kube_deployment_spec_replicas",
            "kube_deployment_status_replicas_ready"
          ]
    
          collectors = [
            "deployments",
          ]
        })
      ]
    }
    
  4. Sprich mit deinem Mentor über die adot Konfiguration.

  5. Erstelle einen Route53 Healthcheck, um zu überprüfen, ob deine Applikation noch erreichbar ist. Es soll auch einen Alarm dafür geben.

Claus-Theodor Riegg
Last edit
Matthias Bruhse
License
Source code in this card is licensed under the MIT License.
Posted by Claus-Theodor Riegg to DevOps Curriculum (2023-02-10 11:15)