diff --git a/docker/prometheus/confd/templates/prometheus.tmpl b/docker/prometheus/confd/templates/prometheus.tmpl index cf0b547..e96e0bc 100644 --- a/docker/prometheus/confd/templates/prometheus.tmpl +++ b/docker/prometheus/confd/templates/prometheus.tmpl @@ -1,13 +1,13 @@ global: - scrape_interval: {{ getv "/time/global_scrape_interval" }} + scrape_interval: {{ getv '/time/global_scrape_interval' ~ getv '/time/global_scrape_interval_unit' }} scrape_configs: - job_name: 'node_exporter' - scrape_interval: {{ getv "/time/node_exporter_scrape_interval" }} + scrape_interval: {{ getv "/time/node_exporter_scrape_interval" ~ getv "/time/node_exporter_scrape_interval_unit" }} static_configs: - targets: [ 'node-exporter:9100' ] - job_name: 'opcua_exporter' - scrape_interval: {{ getv "/time/opcua_scrape_interval" }} + scrape_interval: {{ getv "/time/opcua_scrape_interval" ~ getv "/time/opcua_scrape_interval_unit" }} static_configs: - targets: [ 'opcua-exporter:8191' ] \ No newline at end of file diff --git a/docker/prometheus/confd/templates/supervisord.tmpl b/docker/prometheus/confd/templates/supervisord.tmpl index 6e8ace0..a27b884 100644 --- a/docker/prometheus/confd/templates/supervisord.tmpl +++ b/docker/prometheus/confd/templates/supervisord.tmpl @@ -11,7 +11,7 @@ stderr_logfile=/var/log/confd.err.log stdout_logfile=/var/log/confd.out.log [program:prometheus] -command=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.retention.time={{ getv "/time/storage_interval" }} +command=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.retention.time={{ getv "/time/storage_interval" ~ getv "/time/storage_interval_unit" }} autostart=true autorestart=true stderr_logfile=/var/log/prometheus.err.log diff --git a/management-panel/app/Filament/Pages/ManageTime.php b/management-panel/app/Filament/Pages/ManageTime.php index b354047..c995a24 100644 --- a/management-panel/app/Filament/Pages/ManageTime.php +++ b/management-panel/app/Filament/Pages/ManageTime.php @@ -8,6 +8,7 @@ use Filament\Forms\Components\Repeater; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Pages\SettingsPage; +use Marvinosswald\FilamentInputSelectAffix\TextInputSelectAffix; class ManageTime extends SettingsPage { @@ -23,22 +24,72 @@ class ManageTime extends SettingsPage { return $form ->schema([ - TextInput::make('global_scrape_interval') + TextInputSelectAffix::make('global_scrape_interval') ->label('默认拉取时间') + ->numeric() ->required() - ->suffix("s"), - TextInput::make('node_exporter_scrape_interval') + ->select(fn() => Forms\Components\Select::make('global_scrape_interval_unit') + ->extraAttributes([ + 'class' => 'w-[72px]' // if you want to constrain the selects size, depending on your usecase + ]) + ->options([ + 'd' => '天', + 'h' => '小时', + 'm' => '分钟', + 's' => '秒' + ]) + ->required() + + ), + TextInputSelectAffix::make('node_exporter_scrape_interval') ->label('系统监控时间间隔') ->required() - ->suffix("s"), - TextInput::make('opcua_scrape_interval') + ->numeric() + ->select(fn() => Forms\Components\Select::make('node_exporter_scrape_interval_unit') + ->extraAttributes([ + 'class' => 'w-[72px]' // if you want to constrain the selects size, depending on your usecase + ]) + ->options([ + 'd' => '天', + 'h' => '小时', + 'm' => '分钟', + 's' => '秒' + ]) + ->required() + + ), + TextInputSelectAffix::make('opcua_scrape_interval') ->label('opcua_exporter抓取间隔') ->required() - ->suffix("s"), - TextInput::make('storage_interval') + ->numeric() + ->select(fn() => Forms\Components\Select::make('opcua_scrape_interval_unit') + ->extraAttributes([ + 'class' => 'w-[72px]' // if you want to constrain the selects size, depending on your usecase + ]) + ->options([ + 'd' => '天', + 'h' => '小时', + 'm' => '分钟', + 's' => '秒' + ]) + ->required() + ), + TextInputSelectAffix::make('storage_interval') ->label('数据存储时间') ->required() - ->suffix("h"), + ->numeric() + ->select(fn() => Forms\Components\Select::make('storage_interval_unit') + ->extraAttributes([ + 'class' => 'w-[72px]' // if you want to constrain the selects size, depending on your usecase + ]) + ->options([ + 'd' => '天', + 'h' => '小时', + 'm' => '分钟', + 's' => '秒' + ]) + ->required() + ), ]); } } diff --git a/management-panel/app/Settings/TimeSettings.php b/management-panel/app/Settings/TimeSettings.php index 192db0a..c2b2493 100644 --- a/management-panel/app/Settings/TimeSettings.php +++ b/management-panel/app/Settings/TimeSettings.php @@ -15,6 +15,13 @@ class TimeSettings extends Settings // 数据存储时间 public ?string $storage_interval; + public ?string $global_scrape_interval_unit; + public ?string $node_exporter_scrape_interval_unit; + public ?string $opcua_scrape_interval_unit; + public ?string $storage_interval_unit; + + + public static function group(): string { return 'time'; diff --git a/management-panel/database/settings/2024_09_03_014745_time_settings.php b/management-panel/database/settings/2024_09_03_014745_time_settings.php index f11354a..32b7333 100644 --- a/management-panel/database/settings/2024_09_03_014745_time_settings.php +++ b/management-panel/database/settings/2024_09_03_014745_time_settings.php @@ -7,9 +7,14 @@ return new class extends SettingsMigration { public function up(): void { - $this->migrator->add('time.global_scrape_interval', ''); - $this->migrator->add('time.node_exporter_scrape_interval', ''); - $this->migrator->add('time.opcua_scrape_interval', ''); - $this->migrator->add('time.storage_interval', ''); + $this->migrator->add('time.global_scrape_interval', '15'); + $this->migrator->add('time.node_exporter_scrape_interval', '10'); + $this->migrator->add('time.opcua_scrape_interval', '10'); + $this->migrator->add('time.storage_interval', '1'); + + $this->migrator->add('time.global_scrape_interval_unit', 's'); + $this->migrator->add('time.node_exporter_scrape_interval_unit', 's'); + $this->migrator->add('time.opcua_scrape_interval_unit', 's'); + $this->migrator->add('time.storage_interval_unit', 'd'); } };