certmetrics

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2025 License: MIT Imports: 3 Imported by: 0

README ΒΆ

certmetrics

It's Go library and exporter for storing metrics(prometheus) about your X509 certificates or JWT tokens.

# HELP certmetrics_cert_expiry_days Days until certificate expiry
# TYPE certmetrics_cert_expiry_days gauge
certmetrics_cert_expiry_days{id="my-name",subject="Russian Trusted Sub CA"} 1581
certmetrics_cert_expiry_days{id="super-name",subject="Russian Trusted Sub CA"} 715
# HELP certmetrics_cert_info Cert info
# TYPE certmetrics_cert_info gauge
certmetrics_cert_info{expired_at="2027-03-06 11:25:19",id="my-name",reporter="exporter",started_at="2022-03-02 11:25:19",subject="Russian Trusted Sub CA",type="x509"} 1
certmetrics_cert_info{expired_at="2027-03-06 11:25:19",id="super-name",reporter="exporter",started_at="2022-03-02 11:25:19",subject="Russian Trusted Sub CA",type="x509"} 1
certmetrics_cert_info{expired_at="<unknown>",id="gpt-token",reporter="exporter",started_at="2018-01-18 04:30:22",subject="1234567890",type="jwt"} 1

Usage

🐳 As exporter

Use docker image artarts36/certmetrics:v0.1.0

  1. Copy config as certmetrics.yaml
  2. Run docker run -v ./certmetrics.yaml:/app/certmetrics.yaml -p 8010:8010 artarts36/certmetrics:v0.1.0
πŸ“š As Go library

Run: go get github.com/artarts36/certmetrics

  1. Register default collectors
  2. Store certs and tokens.
package main

import (
	"github.com/artarts36/certmetrics"
	"github.com/artarts36/certmetrics/jwtm"
	"github.com/artarts36/certmetrics/x509m"
)

func main() {
	certmetrics.Register()
	
	jwtm.InspectToken("token", jwtm.WithID("super-token"))
	x509m.InspectPEMs([]byte("pems"), x509m.WithID("super-ca"))
}

Documentation ΒΆ

Index ΒΆ

Constants ΒΆ

This section is empty.

Variables ΒΆ

View Source
var (
	DefaultCollector = NewPrometheusCollector("certmetrics")
)

Functions ΒΆ

func Register ΒΆ

func Register() error

Types ΒΆ

type Cert ΒΆ

type Cert struct {
	ID string

	Type    string
	Subject string

	StartedAt time.Time
	ExpiredAt time.Time
}

type Collector ΒΆ

type Collector interface {
	StoreCert(cert *Cert)
}

type MemoryCollector ΒΆ

type MemoryCollector struct {
	// contains filtered or unexported fields
}

func NewMemoryCollector ΒΆ

func NewMemoryCollector() *MemoryCollector

func (*MemoryCollector) Certs ΒΆ

func (c *MemoryCollector) Certs() []*Cert

func (*MemoryCollector) StoreCert ΒΆ

func (c *MemoryCollector) StoreCert(cert *Cert)

type PrometheusCollector ΒΆ

type PrometheusCollector struct {
	// contains filtered or unexported fields
}

func NewPrometheusCollector ΒΆ

func NewPrometheusCollector(namespace string) *PrometheusCollector

func (*PrometheusCollector) As ΒΆ

func (c *PrometheusCollector) As(reporterName string)

func (*PrometheusCollector) Collect ΒΆ

func (c *PrometheusCollector) Collect(metric chan<- prometheus.Metric)

func (*PrometheusCollector) Describe ΒΆ

func (c *PrometheusCollector) Describe(desc chan<- *prometheus.Desc)

func (*PrometheusCollector) StoreCert ΒΆ

func (c *PrometheusCollector) StoreCert(cert *Cert)

func (*PrometheusCollector) WithExpiryDays ΒΆ

func (c *PrometheusCollector) WithExpiryDays()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL