> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Minutely probes

Minutely probes zijn een mechanisme om periodiek [aangepaste metrics](/metrics/custom) naar AppSignal te sturen. Dit is een systeem dat standaard is opgenomen in het AppSignal Elixir-pakket. Aan het begin van elke minuut worden de minutely probes geactiveerd om metrics te verzamelen en vervolgens tot de volgende minuut gepauzeerd.

Standaard schakelt het AppSignal Elixir-pakket een probe in voor de ErlangVM.

<Tip>
  **Opmerking**: We raden aan om AppSignal Elixir-pakket `1.10.1` en hoger te
  gebruiken bij het gebruik van deze functie.
</Tip>

## Gebruik

De minutely probes stellen het AppSignal Elixir-pakket in staat om standaard [aangepaste metrics](/metrics/custom) te verzamelen voor de ErlangVM en app-specifieke metrics door [uw eigen probe te creëren](#creating-probes).

### Meerdere instances

Eenmaal geactiveerd, draait het minutely-probesysteem op elke instance van een app. Dit betekent dat als een probe metrics rapporteert zonder een onderscheidende tag, globale metrics overschreven kunnen worden door metrics op instance-niveau.

Om dit te verhelpen, raden we aan uw metrics te [taggen](/metrics/custom#metric-tags) met de hostname of iets anders dat uniek is voor elke instance. Bijvoorbeeld, de ErlangVM Probe tagt metrics standaard met de hostname.

Alternatief kunt u [minutely probes uitschakelen](/elixir/configuration/options#option-enable_minutely_probes) voor alle instances behalve één, waarop het minutely-probeproces draait. We raden aan om de omgevingsvariabele [`APPSIGNAL_ENABLE_MINUTELY_PROBES`](/elixir/configuration/options#option-enable_minutely_probes) te gebruiken om deze alleen in te schakelen op de instance van uw keuze.

## Configuratie

De minutely probes worden geconfigureerd met de configuratieoptie [`enable_minutely_probes`](/elixir/configuration/options#option-enable_minutely_probes). De standaardwaarde is `true`.

## Probes creëren

Als u meer [aangepaste metrics](/metrics/custom) van uw app wilt traceren dan onze standaard probes doen, kunt u uw eigen probe(s) toevoegen.

Een AppSignal minutely probe kan een [Anonieme functie](#anonymous-function) of een [Op een module gebaseerde functie](#module-based-function) zijn.

### Anonieme functie

Het eenvoudigste probetype om te registreren. Als u geen afhankelijkheden voor uw probe heeft, is dit de voorkeursmethode.

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Probes.register(:my_probe, fn ->
    Appsignal.set_gauge("database_size", 10)
  end)
  ```
</CodeGroup>

### Op een module gebaseerde functie

Een op een module gebaseerde functie kan nuttig zijn als u een complexere probe heeft, of een probe die afhankelijkheden heeft.

<CodeGroup>
  ```elixir Elixir theme={null}
  # lib/my_app/probes/my_probe.ex
  defmodule MyApp.MyProbe do
    def call do
      Appsignal.set_gauge("database_size", 10)
    end
  end
  ```
</CodeGroup>

Nu kunt u deze probe registreren in de startfunctie van uw OTP-app.

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Probes.register(:my_probe, &MyApp.MyProbe.call/0)
  ```
</CodeGroup>

### Stateful probes

Vanaf versie `2.2.8` van het AppSignal Elixir-pakket kunnen probes status tussen runs doorgeven. Als uw probe een argument neemt, wordt de retourwaarde van de laatste run als waarde voor dat argument doorgegeven in de volgende run.

Een initiële status voor de eerste run van de probe kan worden meegegeven als derde argument aan `Appsignal.Probes.register`. Als deze niet wordt meegegeven, is de initiële status `nil`.

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Probes.register(:stateful_probe, fn minutes ->
    Appsignal.set_gauge("uptime_minutes", minutes)
    minutes + 1
  end, 0)
  ```
</CodeGroup>

Of als een op een module gebaseerde functie:

<CodeGroup>
  ```elixir Elixir theme={null}
  # lib/my_app/probes/my_probe.ex
  defmodule MyApp.MyProbe do
    def call(minutes) do
      Appsignal.set_gauge("uptime_minutes", minutes)
      minutes + 1
    end
  end
  ```
</CodeGroup>

Die u vervolgens als volgt kunt registreren:

<CodeGroup>
  ```elixir Elixir theme={null}
  Appsignal.Probes.register(:stateful_probe, &MyApp.MyProbe.call/1, 0)
  ```
</CodeGroup>

## Probes registreren

Probes kunnen worden geregistreerd met de `register`-methode op de module `Appsignal.Probes`.
Deze methode accepteert drie argumenten.

* `key` - Dit is de key/naam van de probe. Deze wordt gebruikt om de probe te identificeren in het geval dat er een fout optreedt tijdens het uitvoeren van de probe (die naar het [appsignal.log-bestand](/support/debugging#logs) wordt gelogd) en om een [bestaande probe te overschrijven](#overriding-default-probes).
* `probe` - Dit is een van de [ondersteunde probetypes](#creating-probes) die elke minuut moet worden aangeroepen om metrics te verzamelen.
* `state` - Dit is de initiële status die aan uw probe wordt doorgegeven. Als uw probe geen status als argument neemt, heeft dit argument geen effect. Het is een optioneel argument en de standaardwaarde is `nil`.

Om een probe toe te voegen, registreert u deze in de `start/2`-functie van uw applicatie, vlak voordat de supervisor wordt gestart.

In een Phoenix-app ziet dit er zo uit:

<CodeGroup>
  ```elixir Elixir theme={null}
  # lib/my_app/application.ex
  def start(_type, _args) do
    children = [
      MyApp.Repo,
      MyAppWeb.Endpoint,
    ]

    Appsignal.Probes.register(:my_probe, &MyProbe.call/0)

    opts = [strategy: :one_for_one, name: Weekmenu.Supervisor]
    Supervisor.start_link(children, opts)
  end
  ```
</CodeGroup>

## Standaardprobes overschrijven

AppSignal wordt geleverd met standaardprobes voor bepaalde [integraties](/elixir/integrations/). Als deze probe om welke reden dan ook niet correct functioneert of extra configuratie voor uw use case vereist, kunt u de standaardprobe overschrijven door een nieuwe probe te registreren met dezelfde key.

<CodeGroup>
  ```elixir Elixir theme={null}
  # lib/my_app/application.ex

  Appsignal.Probes.register(:erlang, fn() ->
    # Do things
  end)
  ```
</CodeGroup>

Het overschrijven van probes logt een debugbericht in het [appsignal.log-bestand](/support/debugging#logs), wat kan helpen om te detecteren of een probe correct is overschreven.
