diff --git a/docker/prometheus/Dockerfile b/docker/prometheus/Dockerfile index 6695fde..3219711 100644 --- a/docker/prometheus/Dockerfile +++ b/docker/prometheus/Dockerfile @@ -2,6 +2,7 @@ FROM openeuler/openeuler:24.03 RUN dnf update -y && \ dnf clean all && \ + dnf install -y supervisor &&\ rm -rf /var/cache/dnf/* RUN curl -fsSL https://github.com/prometheus/prometheus/releases/download/v2.54.0/prometheus-2.54.0.linux-amd64.tar.gz | tar -xz -C /usr/local/bin && \ @@ -9,9 +10,13 @@ RUN curl -fsSL https://github.com/prometheus/prometheus/releases/download/v2.54. rm /usr/local/bin/prometheus-* -rf && \ chmod +x /usr/local/bin/prometheus +RUN curl -fsSL https://github.com/abtreece/confd/releases/download/v0.20.0/confd-v0.20.0-linux-amd64.tar.gz | tar -xz -C /usr/local/bin && \ + chmod +x /usr/local/bin/confd + RUN mkdir /etc/prometheus/ COPY prometheus.yml /etc/prometheus/prometheus.yml -CMD ["prometheus", "--config.file=/etc/prometheus/prometheus.yml"] +COPY COPY ./supervisord/ /etc/supervisord/ +CMD [ "supervisord", "-c", "/etc/supervisord/supervisord.conf" ] diff --git a/docker/prometheus/confd/conf.d/prometheus.toml b/docker/prometheus/confd/conf.d/prometheus.toml new file mode 100644 index 0000000..2d55055 --- /dev/null +++ b/docker/prometheus/confd/conf.d/prometheus.toml @@ -0,0 +1,8 @@ +[template] +src = "prometheus.tmpl" +dest = "/prometheus.yml" +keys = [ + "/time/", +]a + + diff --git a/docker/prometheus/confd/confd.toml b/docker/prometheus/confd/confd.toml new file mode 100644 index 0000000..2fc4b41 --- /dev/null +++ b/docker/prometheus/confd/confd.toml @@ -0,0 +1,6 @@ +backend = "etcd" +nodes = [ + "http://etcd:2379", +] +watch = true + diff --git a/docker/prometheus/confd/templates/prometheus.tmpl b/docker/prometheus/confd/templates/prometheus.tmpl new file mode 100644 index 0000000..cf0b547 --- /dev/null +++ b/docker/prometheus/confd/templates/prometheus.tmpl @@ -0,0 +1,13 @@ +global: + scrape_interval: {{ getv "/time/global_scrape_interval" }} + +scrape_configs: + - job_name: 'node_exporter' + scrape_interval: {{ getv "/time/node_exporter_scrape_interval" }} + static_configs: + - targets: [ 'node-exporter:9100' ] + + - job_name: 'opcua_exporter' + scrape_interval: {{ getv "/time/opcua_scrape_interval" }} + static_configs: + - targets: [ 'opcua-exporter:8191' ] \ No newline at end of file diff --git a/docker/prometheus/supervisord/supervisord.conf b/docker/prometheus/supervisord/supervisord.conf new file mode 100644 index 0000000..53a5851 --- /dev/null +++ b/docker/prometheus/supervisord/supervisord.conf @@ -0,0 +1,20 @@ +[supervisord] +nodaemon=true ; 让 supervisor 运行在前台,保持容器不退出 +logfile=/var/log/supervisor/supervisord.log +pidfile=/var/run/supervisord.pid + +[program:confd] +command=/usr/local/bin/confd -config-file /etc/confd/confd.toml +autostart=true +autorestart=true +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 +autostart=true +autorestart=true +stderr_logfile=/var/log/prometheus.err.log +stdout_logfile=/var/log/prometheus.out.log + + diff --git a/management-panel/app/Filament/Pages/ManageTime.php b/management-panel/app/Filament/Pages/ManageTime.php index c84b980..b354047 100644 --- a/management-panel/app/Filament/Pages/ManageTime.php +++ b/management-panel/app/Filament/Pages/ManageTime.php @@ -23,19 +23,19 @@ class ManageTime extends SettingsPage { return $form ->schema([ - TextInput::make('global_time') + TextInput::make('global_scrape_interval') ->label('默认拉取时间') ->required() ->suffix("s"), - TextInput::make('node_exporter_time') + TextInput::make('node_exporter_scrape_interval') ->label('系统监控时间间隔') ->required() ->suffix("s"), - TextInput::make('opcua_time') - ->label('配置读取时间') + TextInput::make('opcua_scrape_interval') + ->label('opcua_exporter抓取间隔') ->required() ->suffix("s"), - TextInput::make('prometheus_time') + TextInput::make('storage_interval') ->label('数据存储时间') ->required() ->suffix("h"), diff --git a/management-panel/app/Settings/TimeSettings.php b/management-panel/app/Settings/TimeSettings.php index ec9e659..192db0a 100644 --- a/management-panel/app/Settings/TimeSettings.php +++ b/management-panel/app/Settings/TimeSettings.php @@ -6,14 +6,14 @@ use Spatie\LaravelSettings\Settings; class TimeSettings extends Settings { - // 默认拉取时间 - public ?string $global_time; - // 系统扫描时间 - public ?string $node_exporter_time; - // 系统配置时间 - public ?string $opcua_time; + # 全局抓取间隔 + public ?string $global_scrape_interval; + // node_exporter抓取间隔 + public ?string $node_exporter_scrape_interval; + // opcua_exporter抓取间隔 + public ?string $opcua_scrape_interval; // 数据存储时间 - public ?string $prometheus_time; + public ?string $storage_interval; public static function group(): string { 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 b232ebf..f11354a 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,9 @@ return new class extends SettingsMigration { public function up(): void { - $this->migrator->add('time.global_time', ''); - $this->migrator->add('time.node_exporter_time', ''); - $this->migrator->add('time.opcua_time', ''); - $this->migrator->add('time.prometheus_time', ''); + $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', ''); } };