Skip to content

Commit

Permalink
Bump default batch size to 300, put episode metrics behind EnableAddi…
Browse files Browse the repository at this point in the history
…tionalMetrics

Signed-off-by: Russell Troxel <russell@troxel.io>
  • Loading branch information
rtrox committed Nov 29, 2023
1 parent 2e89131 commit 84760de
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 58 deletions.
40 changes: 24 additions & 16 deletions internal/arr/collector/bazarr.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package collector

import (
"fmt"
"os"
"sync"
"time"

Expand All @@ -28,6 +27,14 @@ type stats struct {
mut sync.Mutex
}

func newStats() *stats {
return &stats{
languages: make(map[string]int),
scores: make(map[string]int),
providers: make(map[string]int),
}
}

type bazarrCollector struct {
config *config.ArrConfig // App configuration
subtitlesHistoryMetric *prometheus.Desc // Total number of subtitles history
Expand Down Expand Up @@ -300,23 +307,28 @@ func (collector *bazarrCollector) Collect(ch chan<- prometheus.Metric) {

func (collector *bazarrCollector) EpisodeMovieMetrics(ch chan<- prometheus.Metric, c *client.Client) {

episodeStats := collector.CollectEpisodeStats(ch, c)
if episodeStats == nil {
return
episodeStats := newStats()
if collector.config.EnableAdditionalMetrics {
episodeStats = collector.CollectEpisodeStats(ch, c)
if episodeStats == nil {
return
}
}

movieStats := collector.CollectMovieStats(ch, c)
if movieStats == nil {
return
}

ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesHistoryMetric, prometheus.GaugeValue, float64(episodeStats.history))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesDownloadedMetric, prometheus.GaugeValue, float64(episodeStats.downloaded))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesMonitoredMetric, prometheus.GaugeValue, float64(episodeStats.monitored))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesUnmonitoredMetric, prometheus.GaugeValue, float64(episodeStats.unmonitored))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesWantedMetric, prometheus.GaugeValue, float64(episodeStats.wanted))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesMissingMetric, prometheus.GaugeValue, float64(episodeStats.missing))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesFileSizeMetric, prometheus.GaugeValue, float64(episodeStats.fileSize))
if collector.config.EnableAdditionalMetrics {
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesHistoryMetric, prometheus.GaugeValue, float64(episodeStats.history))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesDownloadedMetric, prometheus.GaugeValue, float64(episodeStats.downloaded))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesMonitoredMetric, prometheus.GaugeValue, float64(episodeStats.monitored))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesUnmonitoredMetric, prometheus.GaugeValue, float64(episodeStats.unmonitored))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesWantedMetric, prometheus.GaugeValue, float64(episodeStats.wanted))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesMissingMetric, prometheus.GaugeValue, float64(episodeStats.missing))
ch <- prometheus.MustNewConstMetric(collector.episodeSubtitlesFileSizeMetric, prometheus.GaugeValue, float64(episodeStats.fileSize))
}

ch <- prometheus.MustNewConstMetric(collector.movieSubtitlesHistoryMetric, prometheus.GaugeValue, float64(movieStats.history))
ch <- prometheus.MustNewConstMetric(collector.movieSubtitlesDownloadedMetric, prometheus.GaugeValue, float64(movieStats.downloaded))
Expand Down Expand Up @@ -382,15 +394,11 @@ func (collector *bazarrCollector) EpisodeMovieMetrics(ch chan<- prometheus.Metri

func (collector *bazarrCollector) CollectEpisodeStats(ch chan<- prometheus.Metric, c *client.Client) *stats {
log := zap.S().With("collector", "bazarr")
episodeStats := new(stats)
episodeStats.languages = make(map[string]int)
episodeStats.scores = make(map[string]int)
episodeStats.providers = make(map[string]int)
episodeStats := newStats()

mseries := time.Now()

series := model.BazarrSeries{}
fmt.Fprintln(os.Stderr, series)
if err := c.DoRequest("series", &series); err != nil {
log.Errorw("Error getting series",
"error", err)
Expand Down
9 changes: 5 additions & 4 deletions internal/arr/collector/bazarr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import (
"net/http"
"net/http/httptest"
"os"
"slices"
"strings"
"testing"

"github.com/onedr0p/exportarr/internal/arr/config"
"github.com/onedr0p/exportarr/internal/test_util"
"github.com/prometheus/client_golang/prometheus/testutil"
"github.com/stretchr/testify/require"
"golang.org/x/exp/slices"
)

const bazarr_test_fixtures_path = "../test_fixtures/bazarr/"
Expand Down Expand Up @@ -135,9 +135,10 @@ func TestBazarrCollect_Concurrency(t *testing.T) {
defer ts.Close()

config := &config.ArrConfig{
URL: ts.URL,
App: "bazarr",
ApiKey: test_util.API_KEY,
URL: ts.URL,
App: "bazarr",
ApiKey: test_util.API_KEY,
EnableAdditionalMetrics: true,
Bazarr: config.BazarrConfig{
SeriesBatchSize: 2,
SeriesBatchConcurrency: 2,
Expand Down
4 changes: 2 additions & 2 deletions internal/arr/config/bazarr.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type BazarrConfig struct {
}

func RegisterBazarrFlags(flags *flag.FlagSet) {
flags.Int("series-batch-size", 50, "Number of Series to retrieve from Bazarr in each API Call")
flags.Int("series-batch-size", 300, "Number of Series to retrieve from Bazarr in each API Call")
flags.Int("series-batch-concurrency", 10, "Calls to make to Bazarrr Concurrently")
}

Expand Down Expand Up @@ -50,7 +50,7 @@ func (c *ArrConfig) LoadBazarrConfig(flags *flag.FlagSet) error {
}

c.Bazarr = BazarrConfig{
SeriesBatchSize: 50,
SeriesBatchSize: 300,
SeriesBatchConcurrency: 10,
}
err = c.k.Unmarshal("bazarr", &c.Bazarr)
Expand Down
44 changes: 8 additions & 36 deletions internal/arr/test_fixtures/bazarr/expected_metrics.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,3 @@
# HELP bazarr_episode_subtitles_downloaded_total Total number of downloaded episode subtitles
# TYPE bazarr_episode_subtitles_downloaded_total gauge
bazarr_episode_subtitles_downloaded_total{url="SOMEURL"} 100
# HELP bazarr_episode_subtitles_filesize_total Total filesize of all episode subtitles
# TYPE bazarr_episode_subtitles_filesize_total gauge
bazarr_episode_subtitles_filesize_total{url="SOMEURL"} 4.133798e+06
# HELP bazarr_episode_subtitles_history_total Total number of history episode subtitles
# TYPE bazarr_episode_subtitles_history_total gauge
bazarr_episode_subtitles_history_total{url="SOMEURL"} 71633
# HELP bazarr_episode_subtitles_missing_total Total number of missing episode subtitles
# TYPE bazarr_episode_subtitles_missing_total gauge
bazarr_episode_subtitles_missing_total{url="SOMEURL"} 0
# HELP bazarr_episode_subtitles_monitored_total Total number of monitored episode subtitles
# TYPE bazarr_episode_subtitles_monitored_total gauge
bazarr_episode_subtitles_monitored_total{url="SOMEURL"} 16
# HELP bazarr_episode_subtitles_unmonitored_total Total number of unmonitored episode subtitles
# TYPE bazarr_episode_subtitles_unmonitored_total gauge
bazarr_episode_subtitles_unmonitored_total{url="SOMEURL"} 84
# HELP bazarr_episode_subtitles_wanted_total Total number of wanted episode subtitles
# TYPE bazarr_episode_subtitles_wanted_total gauge
bazarr_episode_subtitles_wanted_total{url="SOMEURL"} 0
# HELP bazarr_movie_subtitles_downloaded_total Total number of downloaded movie subtitles
# TYPE bazarr_movie_subtitles_downloaded_total gauge
bazarr_movie_subtitles_downloaded_total{url="SOMEURL"} 10
Expand All @@ -42,47 +21,40 @@ bazarr_movie_subtitles_unmonitored_total{url="SOMEURL"} 0
bazarr_movie_subtitles_wanted_total{url="SOMEURL"} 0
# HELP bazarr_subtitles_downloaded_total Total number of downloaded subtitles
# TYPE bazarr_subtitles_downloaded_total gauge
bazarr_subtitles_downloaded_total{url="SOMEURL"} 110
bazarr_subtitles_downloaded_total{url="SOMEURL"} 10
# HELP bazarr_subtitles_filesize_total Total filesize of all subtitles
# TYPE bazarr_subtitles_filesize_total gauge
bazarr_subtitles_filesize_total{url="SOMEURL"} 4.919425e+06
bazarr_subtitles_filesize_total{url="SOMEURL"} 785627
# HELP bazarr_subtitles_history_total Total number of history subtitles
# TYPE bazarr_subtitles_history_total gauge
bazarr_subtitles_history_total{url="SOMEURL"} 75144
bazarr_subtitles_history_total{url="SOMEURL"} 3511
# HELP bazarr_subtitles_language_total Total number of downloaded subtitles by language
# TYPE bazarr_subtitles_language_total gauge
bazarr_subtitles_language_total{language="English",url="SOMEURL"} 110
bazarr_subtitles_language_total{language="English",url="SOMEURL"} 10
# HELP bazarr_subtitles_missing_total Total number of missing subtitles
# TYPE bazarr_subtitles_missing_total gauge
bazarr_subtitles_missing_total{url="SOMEURL"} 0
# HELP bazarr_subtitles_monitored_total Total number of monitored subtitles
# TYPE bazarr_subtitles_monitored_total gauge
bazarr_subtitles_monitored_total{url="SOMEURL"} 26
bazarr_subtitles_monitored_total{url="SOMEURL"} 10
# HELP bazarr_subtitles_provider_total Total number of downloaded subtitles by provider
# TYPE bazarr_subtitles_provider_total gauge
bazarr_subtitles_provider_total{provider="opensubtitlescom",url="SOMEURL"} 12
bazarr_subtitles_provider_total{provider="podnapisi",url="SOMEURL"} 2
bazarr_subtitles_provider_total{provider="opensubtitlescom",url="SOMEURL"} 3
bazarr_subtitles_provider_total{provider="podnapisi",url="SOMEURL"} 1
bazarr_subtitles_provider_total{provider="yifysubtitles",url="SOMEURL"} 6
# HELP bazarr_subtitles_score_total Total number of downloaded subtitles by score
# TYPE bazarr_subtitles_score_total gauge
bazarr_subtitles_score_total{score="100.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="75.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="77.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="81.67%",url="SOMEURL"} 2
bazarr_subtitles_score_total{score="83.33%",url="SOMEURL"} 2
bazarr_subtitles_score_total{score="85.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="86.67%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="87.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="91.67%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="91.94%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="93.89%",url="SOMEURL"} 3
bazarr_subtitles_score_total{score="94.17%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="94.44%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="97.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="99.17%",url="SOMEURL"} 2
# HELP bazarr_subtitles_unmonitored_total Total number of unmonitored subtitles
# TYPE bazarr_subtitles_unmonitored_total gauge
bazarr_subtitles_unmonitored_total{url="SOMEURL"} 84
bazarr_subtitles_unmonitored_total{url="SOMEURL"} 0
# HELP bazarr_subtitles_wanted_total Total number of wanted subtitles
# TYPE bazarr_subtitles_wanted_total gauge
bazarr_subtitles_wanted_total{url="SOMEURL"} 0
Expand Down
94 changes: 94 additions & 0 deletions internal/arr/test_fixtures/bazarr/expected_metrics_additional.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# HELP bazarr_episode_subtitles_downloaded_total Total number of downloaded episode subtitles
# TYPE bazarr_episode_subtitles_downloaded_total gauge
bazarr_episode_subtitles_downloaded_total{url="SOMEURL"} 100
# HELP bazarr_episode_subtitles_filesize_total Total filesize of all episode subtitles
# TYPE bazarr_episode_subtitles_filesize_total gauge
bazarr_episode_subtitles_filesize_total{url="SOMEURL"} 4.133798e+06
# HELP bazarr_episode_subtitles_history_total Total number of history episode subtitles
# TYPE bazarr_episode_subtitles_history_total gauge
bazarr_episode_subtitles_history_total{url="SOMEURL"} 71633
# HELP bazarr_episode_subtitles_missing_total Total number of missing episode subtitles
# TYPE bazarr_episode_subtitles_missing_total gauge
bazarr_episode_subtitles_missing_total{url="SOMEURL"} 0
# HELP bazarr_episode_subtitles_monitored_total Total number of monitored episode subtitles
# TYPE bazarr_episode_subtitles_monitored_total gauge
bazarr_episode_subtitles_monitored_total{url="SOMEURL"} 16
# HELP bazarr_episode_subtitles_unmonitored_total Total number of unmonitored episode subtitles
# TYPE bazarr_episode_subtitles_unmonitored_total gauge
bazarr_episode_subtitles_unmonitored_total{url="SOMEURL"} 84
# HELP bazarr_episode_subtitles_wanted_total Total number of wanted episode subtitles
# TYPE bazarr_episode_subtitles_wanted_total gauge
bazarr_episode_subtitles_wanted_total{url="SOMEURL"} 0
# HELP bazarr_movie_subtitles_downloaded_total Total number of downloaded movie subtitles
# TYPE bazarr_movie_subtitles_downloaded_total gauge
bazarr_movie_subtitles_downloaded_total{url="SOMEURL"} 10
# HELP bazarr_movie_subtitles_filesize_total Total filesize of all movie subtitles
# TYPE bazarr_movie_subtitles_filesize_total gauge
bazarr_movie_subtitles_filesize_total{url="SOMEURL"} 785627
# HELP bazarr_movie_subtitles_history_total Total number of history movie subtitles
# TYPE bazarr_movie_subtitles_history_total gauge
bazarr_movie_subtitles_history_total{url="SOMEURL"} 3511
# HELP bazarr_movie_subtitles_missing_total Total number of missing movie subtitles
# TYPE bazarr_movie_subtitles_missing_total gauge
bazarr_movie_subtitles_missing_total{url="SOMEURL"} 0
# HELP bazarr_movie_subtitles_monitored_total Total number of monitored movie subtitles
# TYPE bazarr_movie_subtitles_monitored_total gauge
bazarr_movie_subtitles_monitored_total{url="SOMEURL"} 10
# HELP bazarr_movie_subtitles_unmonitored_total Total number of unmonitored movie subtitles
# TYPE bazarr_movie_subtitles_unmonitored_total gauge
bazarr_movie_subtitles_unmonitored_total{url="SOMEURL"} 0
# HELP bazarr_movie_subtitles_wanted_total Total number of wanted movie subtitles
# TYPE bazarr_movie_subtitles_wanted_total gauge
bazarr_movie_subtitles_wanted_total{url="SOMEURL"} 0
# HELP bazarr_subtitles_downloaded_total Total number of downloaded subtitles
# TYPE bazarr_subtitles_downloaded_total gauge
bazarr_subtitles_downloaded_total{url="SOMEURL"} 110
# HELP bazarr_subtitles_filesize_total Total filesize of all subtitles
# TYPE bazarr_subtitles_filesize_total gauge
bazarr_subtitles_filesize_total{url="SOMEURL"} 4.919425e+06
# HELP bazarr_subtitles_history_total Total number of history subtitles
# TYPE bazarr_subtitles_history_total gauge
bazarr_subtitles_history_total{url="SOMEURL"} 75144
# HELP bazarr_subtitles_language_total Total number of downloaded subtitles by language
# TYPE bazarr_subtitles_language_total gauge
bazarr_subtitles_language_total{language="English",url="SOMEURL"} 110
# HELP bazarr_subtitles_missing_total Total number of missing subtitles
# TYPE bazarr_subtitles_missing_total gauge
bazarr_subtitles_missing_total{url="SOMEURL"} 0
# HELP bazarr_subtitles_monitored_total Total number of monitored subtitles
# TYPE bazarr_subtitles_monitored_total gauge
bazarr_subtitles_monitored_total{url="SOMEURL"} 26
# HELP bazarr_subtitles_provider_total Total number of downloaded subtitles by provider
# TYPE bazarr_subtitles_provider_total gauge
bazarr_subtitles_provider_total{provider="opensubtitlescom",url="SOMEURL"} 12
bazarr_subtitles_provider_total{provider="podnapisi",url="SOMEURL"} 2
bazarr_subtitles_provider_total{provider="yifysubtitles",url="SOMEURL"} 6
# HELP bazarr_subtitles_score_total Total number of downloaded subtitles by score
# TYPE bazarr_subtitles_score_total gauge
bazarr_subtitles_score_total{score="100.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="75.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="77.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="81.67%",url="SOMEURL"} 2
bazarr_subtitles_score_total{score="83.33%",url="SOMEURL"} 2
bazarr_subtitles_score_total{score="85.0%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="86.67%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="87.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="91.67%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="91.94%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="93.89%",url="SOMEURL"} 3
bazarr_subtitles_score_total{score="94.17%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="94.44%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="97.5%",url="SOMEURL"} 1
bazarr_subtitles_score_total{score="99.17%",url="SOMEURL"} 2
# HELP bazarr_subtitles_unmonitored_total Total number of unmonitored subtitles
# TYPE bazarr_subtitles_unmonitored_total gauge
bazarr_subtitles_unmonitored_total{url="SOMEURL"} 84
# HELP bazarr_subtitles_wanted_total Total number of wanted subtitles
# TYPE bazarr_subtitles_wanted_total gauge
bazarr_subtitles_wanted_total{url="SOMEURL"} 0
# HELP bazarr_system_health_issues Total number of health issues by object and issue
# TYPE bazarr_system_health_issues gauge
bazarr_system_health_issues{issue="some/path",object="incorrectly configured!!!",url="SOMEURL"} 1
# HELP bazarr_system_status System Status
# TYPE bazarr_system_status gauge
bazarr_system_status{url="SOMEURL"} 1

0 comments on commit 84760de

Please sign in to comment.