main: Use bolt based storage

This commit is contained in:
Fabian Reinartz 2016-05-02 11:08:22 +02:00
parent cc5aab6cff
commit d8efdde515
2 changed files with 26 additions and 16 deletions

20
main.go
View File

@ -15,7 +15,6 @@ package main
import (
"bytes"
"database/sql"
"flag"
"fmt"
"net"
@ -24,7 +23,6 @@ import (
"os"
"os/signal"
"path"
"path/filepath"
"strings"
"syscall"
tmpltext "text/template"
@ -36,7 +34,7 @@ import (
"github.com/prometheus/alertmanager/config"
"github.com/prometheus/alertmanager/notify"
"github.com/prometheus/alertmanager/provider/sqlite"
"github.com/prometheus/alertmanager/provider/boltmem"
"github.com/prometheus/alertmanager/template"
"github.com/prometheus/alertmanager/types"
"github.com/prometheus/alertmanager/version"
@ -82,26 +80,26 @@ func main() {
if err != nil {
log.Fatal(err)
}
db, err := sql.Open("sqlite3", filepath.Join(*dataDir, "am.db"))
if err != nil {
log.Fatal(err)
}
defer db.Close()
marker := types.NewMarker()
alerts, err := sqlite.NewAlerts(db)
alerts, err := boltmem.NewAlerts(*dataDir)
if err != nil {
log.Fatal(err)
}
notifies, err := sqlite.NewNotifies(db)
defer alerts.Close()
notifies, err := boltmem.NewNotifies(*dataDir)
if err != nil {
log.Fatal(err)
}
silences, err := sqlite.NewSilences(db, marker)
defer notifies.Close()
silences, err := boltmem.NewSilences(*dataDir, marker)
if err != nil {
log.Fatal(err)
}
defer silences.Close()
var (
inhibitor *Inhibitor

View File

@ -14,6 +14,12 @@ import (
"github.com/prometheus/common/model"
)
var (
bktNotifies = []byte("notifies")
bktSilences = []byte("silences")
bktAlerts = []byte("alerts")
)
// Alerts gives access to a set of alerts. All methods are goroutine-safe.
type Alerts struct {
db *bolt.DB
@ -39,6 +45,10 @@ func NewAlerts(path string) (*Alerts, error) {
}, err
}
func (a *Alerts) Close() error {
return a.db.Close()
}
// Subscribe returns an iterator over active alerts that have not been
// resolved and successfully notified about.
// They are not guaranteed to be in chronological order.
@ -206,6 +216,10 @@ func NewSilences(path string, mk types.Marker) (*Silences, error) {
return &Silences{db: db, mk: mk}, err
}
func (s *Silences) Close() error {
return s.db.Close()
}
// The Silences provider must implement the Muter interface
// for all its silences. The data provider may have access to an
// optimized view of the data to perform this evaluation.
@ -341,11 +355,9 @@ func NewNotifies(path string) (*Notifies, error) {
return &Notifies{db: db}, err
}
var (
bktNotifies = []byte("notifies")
bktSilences = []byte("silences")
bktAlerts = []byte("alerts")
)
func (n *Notifies) Close() error {
return n.db.Close()
}
func (n *Notifies) Get(recv string, fps ...model.Fingerprint) ([]*types.NotifyInfo, error) {
var res []*types.NotifyInfo