Skip to main content

checkmk

image.png

Checkmk es una plataforma de monitorización de infraestructura IT, que permite supervisar servidores, redes, aplicaciones, bases de datos, servicios en la nube, contenedores, etc. Es usada por administradores de sistemas y equipos DevOps para mantener el control y la salud de entornos críticos.


🎯 ¿Para qué sirve Checkmk?

  • Monitoriza el estado de sistemas, servicios y aplicaciones.

  • Detecta fallos o anomalías (caídas de servicios, uso excesivo de CPU, errores de disco, etc.).

  • Genera alertas (email, Slack, webhook, etc.).

  • Recoge métricas históricas (RRD/Graphite/InfluxDB).

  • Visualiza gráficas y dashboards.

  • Automatiza el descubrimiento de dispositivos y servicios.


🧩 ¿Qué puede monitorizar Checkmk?

  • Servidores (Linux, Windows, etc.).

  • Switches, routers, firewalls (por SNMP).

  • Máquinas virtuales (VMware, Proxmox, Hyper-V).

  • Bases de datos (MySQL, PostgreSQL, Oracle...).

  • Contenedores (Docker, Kubernetes).

  • Servidores web, aplicaciones, colas de mensajes, etc.

Manifiesto

Namespace "checkmk" + PVC en StorageClass "ceph-rbd" + Deployment + Servicio + TLS Ingress con Certificado

# Namespace
apiVersion: v1
kind: Namespace
metadata:
  name: checkmk
---
# PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: checkmk-data
  namespace: checkmk
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 5Gi
---
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: checkmk
  namespace: checkmk
spec:
  replicas: 1
  selector:
    matchLabels:
      app: checkmk
  template:
    metadata:
      labels:
        app: checkmk
    spec:
      containers:
        - name: checkmk
          image: checkmk/check-mk-raw
          ports:
            - containerPort: 5000
          env:
            - name: CMK_SITE_ID
              value: checkmk
          volumeMounts:
            - name: checkmk-storage
              mountPath: /omd/sites
            - name: checkmk-tmp
              mountPath: /opt/omd/sites/checkmk/tmp
      volumes:
        - name: checkmk-storage
          persistentVolumeClaim:
            claimName: checkmk-data
        - name: checkmk-tmp
          emptyDir:
            medium: Memory
---
# Servicio
apiVersion: v1
kind: Service
metadata:
  name: checkmk
  namespace: checkmk
spec:
  selector:
    app: checkmk
  ports:
    - name: http
      port: 80
      targetPort: 5000
  type: ClusterIP
---
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: checkmk
  namespace: checkmk
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "http"
    cert-manager.io/cluster-issuer: "letsencrypt-staging"  # Cambiar a letsencrypt-prod en producción
spec:
  tls:
    - hosts:
        - checkmk.k8s.dominio.com  # Ajusta el dominio real
      secretName: checkmk-tls
  rules:
    - host: checkmk.k8s.dominio.com  # Ajusta el dominio real
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: checkmk
                port:
                  number: 80