---
title: "Sledovanie expirácie — Certificates for Laravel | Roundly"
description: "Expirácia certifikátov cez alerts-for-laravel — pásma warning a critical, monitory jednotlivých certifikátov, certificates:check a upozornenia pri zlyhaní."
url: https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel/sledovanie-expiracie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Certificates for Laravel](https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel.md)

# Sledovanie expirácie

Expirácia certifikátu je plnohodnotný zdravotný signál vedený cez alerts-for-laravel, takže dedí deduplikáciu a throttling upozornení, eskaláciu, tiché okná, históriu behov aj rozhranie /health. CertificateExpiryCheck (kľúč certificate\_expiry, tag certificates) zaradí certifikát do pásma podľa dvoch časových okien:

- Failed — v kritickom okne (alerts.thresholds.critical\_days, predvolene 7) alebo nefunkčný: po expirácii, v stave Expired, Revoked či Failed (posledné vystavenie alebo obnova zlyhali).
- Warning — vo varovnom okne (alerts.thresholds.warning\_days, predvolene 30).
- OK — expirácia je ďalej. Certifikát bez expirácie sa preskočí.

## Monitory jednotlivých certifikátov

Certificates::monitorExpiry() vracia builder PendingScheduledCheck z alerts, označený tagom certificates a naviazaný na certifikát, takže pred uložením nastavíte frekvenciu, tlmenie výkyvov, kanály a eskaláciu:

```php
use RoundlyConsulting\Certificates\Facades\Certificates;

Certificates::monitorExpiry($certificate, $opsTeam)
    ->daily()                                   // or hourly(), cron('0 6 * * *'), …
    ->failAfter(1)                              // open the alert on the first bad run
    ->notifyVia(['mail'])                       // channels for every level without its own list
    ->escalate([1 => 'owner', 3 => 'oncall'])   // consecutive bad runs => alert group
    ->notifyVia(['mail', 'slack'], level: 3)    // channels once the oncall level is reached
    ->save();

// Own bands for this monitor — meta() replaces the preset, so keep certificate_id
Certificates::monitorExpiry($certificate, $opsTeam)
    ->meta(['certificate_id' => $certificate->id, 'warning_days' => 45, 'critical_days' => 14])
    ->daily()
    ->save();
```

Príjemca sa určí v poradí explicitný argument → alerts.notifiable → vlastník certifikátu cez certifiable; ak sa nenájde žiadny, monitorExpiry() vyhodí CertificateException. Model príjemcu používa trait UsesHealthChecks a rozhranie HasNotifiablesForAlerts z alerts:

```php
use App\Models\User;
use Closure;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use RoundlyConsulting\Alerts\Interfaces\HasNotifiablesForAlerts;
use RoundlyConsulting\Alerts\Traits\UsesHealthChecks;

final class OpsTeam extends Model implements HasNotifiablesForAlerts
{
    use Notifiable;
    use UsesHealthChecks;

    // The default group — notified on every bad run when no escalation policy is set.
    public function forEachNotifiableForAlerts(Closure $callback): void
    {
        $callback($this);
    }

    // Optional: map escalation groups. The trait's default returns the default group for any name.
    public function notifiablesForAlertGroup(string $group): iterable
    {
        return match ($group) {
            'oncall' => User::query()->where('on_call', true)->get(),
            default => [$this],
        };
    }
}
```

Rozhranie je povinné: monitor, ktorého príjemca neimplementuje HasNotifiablesForAlerts, vyhodí InvalidNotifiableForHealthCheck vo chvíli, keď má prvýkrát upozorniť. UsesHealthChecks pridá relácie healthChecks() a alerts() a predvolenú notifiablesForAlertGroup().

- escalate() priradí počtu zlých behov za sebou — warning aj failed — skupinu príjemcov. Keď je politika nastavená, nahradí predvolené upozornenie: upozornia sa len skupiny, ktorých prah sa dosiahol, každá raz. Úroveň preto dajte aj prvému behu, ako 1 => 'owner' vyššie — samotné escalate(\[3 => 'oncall'\]) pri dennom monitore dva dni mlčí.
- Bez escalate() každý zlý beh upozorní predvolenú skupinu (forEachNotifiableForAlerts), s throttlingom z alerts; monitor bez vlastnej politiky preberie alerts.escalation.
- notifyVia() bez úrovne nastaví kanály pre všetky úrovne; s level: prepíše jeden prah.
- monitorExpiry() vopred nastaví meta(\['certificate\_id' => …, 'connection' => …\]) — databázové pripojenie záznamu, takže certifikát tenanta sa kontroluje v jeho vlastnom registri. Vlastné volanie meta() ho nahradí, preto certificate\_id odovzdajte znova (a pri certifikáte na inom pripojení aj connection) — a k tomu warning\_days a critical\_days pre vlastné pásma. Bez certificate\_id monitor kontroluje celý register.
- Uložené monitory bežia vo vlastnej frekvencii cez alerts:perform-health-checks, ktorý alerts zaregistruje v plánovači (alerts.schedule.enabled), takže im stačí bežný cron so schedule:run.

## Kontrola a upozornenie jedným príkazom

certificates:check prehľadá register pre expirujúce certifikáty (renewal.threshold\_days alebo --threshold) — vrátane už expirovaných — pre každý spustí CertificateExpiring a vypíše tabuľku. S --alert — alebo pri alerts.enabled — navyše spustí kontrolu expirácie cez engine alerts pre každý certifikát na jeho vlastnom pripojení a otvorí jeden throttlovaný, automaticky sa zotavujúci Alert pre určeného príjemcu. Nikdy neobnovuje:

```php
use Illuminate\Support\Facades\Schedule;

Schedule::command('certificates:check --alert')->daily();
```

Okno prehľadávania je prah obnovy, nie varovné okno — celé predvolené varovné pásmo pokryjete cez --threshold=30.

## Zlyhania životného cyklu a signál za celý register

Pri alerts.enabled spustia kontrolu pre daný certifikát automaticky aj CertificateFailed, CertificateRevoked a CertificateExpired, na jeho vlastnom pripojení — a keďže CertificateFailed spúšťa aj certificates:sync, upozorní aj zlyhanie, ktoré cert-manager nahlási asynchrónne. Nastavením alerts.register\_check sa pri štarte zaregistruje jeden globálny CertificateExpiryCheck — zlyhá, keď je ktorýkoľvek spravovaný certifikát v kritickom okne, už po expirácii (vrátane certifikátu, ktorý je stále v stave pending, requested či renewing), v stave Expired alebo Failed, a upozorňuje cez alerts.channels. Odvolané certifikáty sú vedomé rozhodnutie (upozorní na ne raz CertificateRevoked) a nezapočítavajú sa:

```php
// config/certificates.php
'alerts' => [
    'enabled' => true,
    'notifiable' => App\Models\OpsTeam::class, // resolved from the container
    'thresholds' => ['warning_days' => 30, 'critical_days' => 7],
    'channels' => ['mail', 'slack'],
    'register_check' => true,
],
```

Upozornenia na expiráciu počas plánovanej migrácie stlmíte cez prístupový bod silences() fasády Health z alerts:

```php
use RoundlyConsulting\Alerts\Facades\Health;

Health::silences()->mute('certificate_expiry', until: now()->addDays(2));
```

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel.md)
