# Alertas personalizadas

Los **checks** son una funcionalidad avanzada para monitoreo y alertas, que permiten evaluar condiciones sobre tus datos de series temporales y asignar un estado (por ejemplo, OK, WARN, CRIT) a cada punto de datos según criterios definidos. Los checks pueden crearse tanto desde la interfaz gráfica (UI) como directamente mediante tareas (tasks) escritas en Flux, lo que ofrece máxima flexibilidad y personalización.

### Componentes de un check <a href="#componentes-de-un-check" id="componentes-de-un-check"></a>

1. **Consulta de datos:** Define qué bucket, measurement y campo se va a monitorear.
2. **Condiciones de alerta:** Define los criterios para asignar los estados (OK, WARN, CRIT).
3. **Configuración del check:** Incluye nombre, tipo, frecuencia, mensaje y tags.
4. **Monitorización:** El resultado se almacena y puede ser usado por reglas de notificación.

### Sintaxis básica para un check personalizado en una Task Flux

```flux
import "influxdata/influxdb/monitor"
option task = { 
  name: "check_temperatura_sensor_001",
  every: 1m,
}

data = from(bucket: "mediciones_sensores")
  |> range(start: -1m)
  |> filter(fn: (r) => r._measurement == "ambiente" and r._field == "temperatura")
  |> group(columns: ["_measurement", "sensor_id"])
  |> mean()

check = {
  _check_id: "check_temperatura_sensor_001",
  _check_name: "Verificación media temperatura por sensor",
  _type: "threshold",
  tags: {origen: "task", tipo: "temperatura"},
  crit: (r) => r._value > 20,
  ok:   (r) => r._value <= 20,
  messageFn: (r) => "Temperatura alta en ${r.sensor_id}: ${string(v: r._value)}°C"
}

data
  |> monitor.check(
    data: check,
    messageFn: (r) => check.messageFn(r),
    ok: check.ok,
    crit: check.crit
  )
```

Internamente ***check\_id**:* 0000000000000001

### **Explicación de la sintaxis:**

* `import "influxdata/influxdb/monitor"`: Importa el paquete necesario para checks.
* `option task`: Define la programación de la tarea.
* `data = ...`: Consulta los datos, agregando la media cada 5 minutos.
* `check = { ... }`: Define el objeto check, con ID, nombre, tipo y las funciones para los estados.
* `monitor.check(...)`: Aplica el check sobre los datos, generando los estados y mensajes.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://darioaplicano.gitbook.io/influxdb2.x/sesion-5/guion-de-la-sesion/documentacion/troubleshooting/configuracion-de-alertas/configuracion-de-alertas-en-ui-influxdb-2.x/alertas-personalizadas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
