Pular para o conteúdo principal
As integrações do AppSignal para Ruby, Elixir, Node.js e Python oferecem métodos e funções auxiliares que permitem enviar facilmente eventos de monitor de processo para o AppSignal.
Os helpers de integração ainda usam CheckIn, checkIn e check_in no código para compatibilidade com aplicações existentes.

Eventos de monitor de processo cron

Para notificar o AppSignal que um cron job terminou com sucesso, use a função auxiliar cron, passando o nome do monitor de processo cron como argumento.
def send_invoices
  # ... your code here ...
  Appsignal::CheckIn.cron("send_invoices")
end
def send_invoices do
  # ... your code here ...
  Appsignal.CheckIn.cron("send_invoices")
end
import { checkIn } from "@appsignal/nodejs";

function sendInvoices() {
  // ... your code here ...
  checkIn.cron("send_invoices");
}
from appsignal.check_in import cron

def send_invoices():
  # ... your code here ...
  cron("send_invoices")
É seguro chamar a função auxiliar cron várias vezes em um curto período, pois o helper enviará no máximo um evento de finalização ao AppSignal a cada dez segundos.

Monitorando a duração do job

Para monitorar a duração de um cron job, você pode usar a função auxiliar cron com um bloco ou função que contém o código que deseja monitorar. Isso enviará eventos ao AppSignal tanto quando o job começa quanto quando termina.
def send_invoices()
  Appsignal::CheckIn.cron("send_invoices") do
    # ... your code here ...
  end
end
def send_invoices do
  Appsignal.CheckIn.cron("send_invoices", fn ->
    # ... your code here ...
  end)
end
import { checkIn } from "@appsignal/nodejs";

function sendInvoices() {
  checkIn.cron("send_invoices", () => {
    // ... your code here ...
  });
}

// If the function passed to `cron` returns a promise, the finish event
// will be reported to AppSignal if the promise resolves, allowing you
// to track the duration of async functions:
async function sendInvoices() {
  await checkIn.cron("send_invoices", async () => {
    // ... your async code here ...
  });
}

// If the promise is rejected, or if it never resolves, the finish event
// will not be reported to AppSignal.
from appsignal.check_in import Cron

def send_invoices():
  with Cron("send_invoices"):
    # ... your code here ...
Se uma exceção for levantada dentro da função ou método sendo monitorado, o evento de finalização não será reportado ao AppSignal, acionando uma notificação de monitor de processo ausente. A exceção será re-levantada. Se o contexto em que a exceção é levantada for um contexto monitorado pelo AppSignal, então a exceção será reportada ao AppSignal. Caso contrário, se você quiser reportar a exceção ao AppSignal, pode usar nossos helpers de tratamento de exceções para Ruby, Elixir, Node.js ou Python.

Eventos de monitor de processo heartbeat

Para enviar um evento de monitor de processo heartbeat para o AppSignal, use a função auxiliar heartbeat, passando o nome do monitor de processo heartbeat como argumento. É seguro chamar heartbeat várias vezes, pois o helper enviará no máximo um evento de heartbeat ao AppSignal a cada dez segundos.
loop do
  Appsignal::CheckIn.heartbeat("job_processor")
  # ... your code here ...
end
def job_processing_loop do
  Appsignal.CheckIn.heartbeat("job_processor")
  # ... your code here ...
  job_processing_loop()
end
import { checkIn } from "@appsignal/nodejs";

while (true) {
  checkIn.heartbeat("job_processor");
  // ... your code here ...
}
from appsignal.check_in import heartbeat

while True:
  heartbeat("job_processor")
  # ... your code here ...

Enviando heartbeats continuamente

Para enviar monitores de processo heartbeat continuamente, você pode passar a opção { continuous: true } para a função auxiliar heartbeat. Isso é útil para monitorar o tempo de vida do próprio processo. O helper enviará um evento de heartbeat ao AppSignal a cada trinta segundos.
Appsignal::CheckIn.heartbeat("job_processor", continuous: true)
# This call spawns a new Elixir process, linked to the current process.
# If the current process exits, the heartbeat process will also exit.
Appsignal.CheckIn.heartbeat("job_processor", continuous: true)

# It is also possible to add a continuous heartbeat sending process
# to a supervision tree. This will ensure that the process is restarted
# alongside the rest of the supervised children.
Supervisor.start_link([
  {Appsignal.CheckIn.Heartbeat, "job_processor"},
  # ... other children processes ...
], strategy: :one_for_one)
import { checkIn } from "@appsignal/nodejs";

checkIn.heartbeat("job_processor", { continuous: true });
from appsignal.check_in import heartbeat

heartbeat("my_app", continuous=True)

Revisando ocorrências de monitor de processo no AppSignal

Uma vez configurado, o AppSignal começará a exibir informações sobre ocorrências dos seus monitores de processo. Você pode ler mais sobre ocorrências em nossa documentação de ocorrências de monitor de processo.