RAS plugin - fix for too many open files handlers (#8306)
This commit is contained in:
parent
9b23a04b69
commit
69230017b0
|
|
@ -20,6 +20,9 @@ import (
|
||||||
type Ras struct {
|
type Ras struct {
|
||||||
DBPath string `toml:"db_path"`
|
DBPath string `toml:"db_path"`
|
||||||
|
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
db *sql.DB `toml:"-"`
|
||||||
|
|
||||||
latestTimestamp time.Time `toml:"-"`
|
latestTimestamp time.Time `toml:"-"`
|
||||||
cpuSocketCounters map[int]metricCounters `toml:"-"`
|
cpuSocketCounters map[int]metricCounters `toml:"-"`
|
||||||
serverCounters metricCounters `toml:"-"`
|
serverCounters metricCounters `toml:"-"`
|
||||||
|
|
@ -77,20 +80,34 @@ func (r *Ras) Description() string {
|
||||||
return "RAS plugin exposes counter metrics for Machine Check Errors provided by RASDaemon (sqlite3 output is required)."
|
return "RAS plugin exposes counter metrics for Machine Check Errors provided by RASDaemon (sqlite3 output is required)."
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gather reads the stats provided by RASDaemon and writes it to the Accumulator.
|
// Start initializes connection to DB, metrics are gathered in Gather
|
||||||
func (r *Ras) Gather(acc telegraf.Accumulator) error {
|
func (r *Ras) Start(telegraf.Accumulator) error {
|
||||||
err := validateDbPath(r.DBPath)
|
err := validateDbPath(r.DBPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
db, err := connectToDB(r.DBPath)
|
r.db, err = connectToDB(r.DBPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer db.Close()
|
|
||||||
|
|
||||||
rows, err := db.Query(mceQuery, r.latestTimestamp)
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop closes any existing DB connection
|
||||||
|
func (r *Ras) Stop() {
|
||||||
|
if r.db != nil {
|
||||||
|
err := r.db.Close()
|
||||||
|
if err != nil {
|
||||||
|
r.Log.Errorf("Error appeared during closing DB (%s): %v", r.DBPath, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gather reads the stats provided by RASDaemon and writes it to the Accumulator.
|
||||||
|
func (r *Ras) Gather(acc telegraf.Accumulator) error {
|
||||||
|
rows, err := r.db.Query(mceQuery, r.latestTimestamp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ func TestMissingDatabase(t *testing.T) {
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
ras := newRas()
|
ras := newRas()
|
||||||
ras.DBPath = "/tmp/test.db"
|
ras.DBPath = "/tmp/test.db"
|
||||||
err := ras.Gather(&acc)
|
err := ras.Start(&acc)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue