Die AppSignal-Integrationen für Ruby, Elixir, Node.js und Python bieten Hilfsmethoden und -funktionen, mit denen Sie einfach Prozessmonitor-Events an AppSignal senden können.
Die Integrations-Hilfsfunktionen verwenden weiterhin CheckIn, checkIn und check_in im Code
für Kompatibilität mit bestehenden Anwendungen.
Cron-Prozessmonitor-Events
Um AppSignal zu benachrichtigen, dass ein Cronjob erfolgreich beendet wurde, verwenden Sie die Hilfsfunktion cron und übergeben Sie den Namen des Cron-Prozessmonitors als Argument.
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")
Es ist sicher, die Hilfsfunktion cron in kurzer Zeit mehrfach aufzurufen, da die Hilfsfunktion höchstens alle zehn Sekunden ein Finish-Event an AppSignal sendet.
Überwachung der Job-Dauer
Um die Dauer eines Cronjobs zu überwachen, können Sie die Hilfsfunktion cron mit einem Block oder einer Funktion verwenden, der/die den zu überwachenden Code enthält. Dadurch werden Events sowohl beim Start als auch beim Ende des Jobs an AppSignal gesendet.
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 ...
Wenn innerhalb der überwachten Funktion oder Methode eine Exception ausgelöst wird, wird das Finish-Event nicht an AppSignal gemeldet, was eine Benachrichtigung über einen fehlenden Prozessmonitor auslöst. Die Exception wird erneut ausgelöst.
Wenn der Kontext, in dem die Exception ausgelöst wird, ein AppSignal-überwachter Kontext ist, wird die Exception an AppSignal gemeldet. Andernfalls können Sie, wenn Sie die Exception an AppSignal melden möchten, unsere Hilfsfunktionen für die Exception-Behandlung für Ruby, Elixir, Node.js oder Python verwenden.
Heartbeat-Prozessmonitor-Events
Um ein Heartbeat-Prozessmonitor-Event an AppSignal zu senden, verwenden Sie die Hilfsfunktion heartbeat und übergeben Sie den Namen des Heartbeat-Prozessmonitors als Argument.
Es ist sicher, heartbeat mehrfach aufzurufen, da die Hilfsfunktion höchstens alle zehn Sekunden ein Heartbeat-Event an AppSignal sendet.
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 ...
Heartbeats kontinuierlich senden
Um Heartbeat-Prozessmonitore kontinuierlich zu senden, können Sie die Option { continuous: true } an die Hilfsfunktion heartbeat übergeben. Dies ist nützlich, um die Lebensdauer des Prozesses selbst zu überwachen. Die Hilfsfunktion sendet alle dreißig Sekunden ein Heartbeat-Event an AppSignal.
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)
Prozessmonitor-Vorkommen in AppSignal überprüfen
Nach der Konfiguration beginnt AppSignal, Informationen über Vorkommen für Ihre Prozessmonitore anzuzeigen.
Sie können mehr über Vorkommen in unserer Dokumentation zu Prozessmonitor-Vorkommen lesen.