feat(exporter): add prometheus exporter for cache, database & webserver stats
This commit is contained in:
parent
95a3a16fdc
commit
4bbda96dc7
8 changed files with 405 additions and 18 deletions
|
@ -2,7 +2,10 @@ package database
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"git.ar21.de/yolokube/country-geo-locations/internal/cmd"
|
||||
"git.ar21.de/yolokube/country-geo-locations/pkg/geoloc"
|
||||
"github.com/hashicorp/go-memdb"
|
||||
)
|
||||
|
@ -13,10 +16,13 @@ var (
|
|||
)
|
||||
|
||||
type Database struct {
|
||||
db *memdb.MemDB
|
||||
ready bool
|
||||
|
||||
config *cmd.AppSettings
|
||||
db *memdb.MemDB
|
||||
}
|
||||
|
||||
func NewDatabase() (*Database, error) {
|
||||
func NewDatabase(config *cmd.AppSettings) (*Database, error) {
|
||||
database, err := memdb.NewMemDB(
|
||||
&memdb.DBSchema{
|
||||
Tables: map[string]*memdb.TableSchema{
|
||||
|
@ -38,7 +44,9 @@ func NewDatabase() (*Database, error) {
|
|||
}
|
||||
|
||||
return &Database{
|
||||
db: database,
|
||||
ready: false,
|
||||
config: config,
|
||||
db: database,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -53,9 +61,14 @@ func (d *Database) Load(ipinfos []geoloc.IPInfo) error {
|
|||
}
|
||||
|
||||
txn.Commit()
|
||||
d.ready = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Database) IsReady() bool {
|
||||
return d.ready
|
||||
}
|
||||
|
||||
func (d *Database) SearchIPNet(ipnetnum uint) (*geoloc.IPInfo, error) {
|
||||
txn := d.db.Txn(false)
|
||||
defer txn.Abort()
|
||||
|
@ -87,3 +100,17 @@ func (d *Database) SearchIPNet(ipnetnum uint) (*geoloc.IPInfo, error) {
|
|||
|
||||
return &ipinfo, nil
|
||||
}
|
||||
|
||||
func (d *Database) Timestamp() (time.Time, error) {
|
||||
file, err := os.Open(d.config.DataFile)
|
||||
if err != nil {
|
||||
return time.Time{}, err
|
||||
}
|
||||
|
||||
stats, err := file.Stat()
|
||||
if err != nil {
|
||||
return time.Time{}, err
|
||||
}
|
||||
|
||||
return stats.ModTime(), nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue