2424#include " collection_pipeline/CollectionPipeline.h"
2525#include " collection_pipeline/plugin/PluginRegistry.h"
2626#include " common/ParamExtractor.h"
27+ #include " file_server/FileServer.h"
2728#include " file_server/StaticFileServer.h"
29+ #include " monitor/metric_constants/MetricConstants.h"
2830#include " plugin/processor/inner/ProcessorSplitLogStringNative.h"
2931#include " plugin/processor/inner/ProcessorSplitMultilineLogStringNative.h"
3032
@@ -57,6 +59,9 @@ const string InputStaticFile::sName = "input_static_file_onetime";
5759bool InputStaticFile::Init (const Json::Value& config, Json::Value& optionalGoPipeline) {
5860 string errorMsg;
5961
62+ // SetConfigPriority must be called before GlobalConfig::Init() to avoid overriding the priority set by the user
63+ mContext ->SetConfigPriority (2 );
64+
6065 if (!mFileDiscovery .Init (config, *mContext , sName )) {
6166 return false ;
6267 }
@@ -121,6 +126,19 @@ bool InputStaticFile::Init(const Json::Value& config, Json::Value& optionalGoPip
121126 return false ;
122127 }
123128
129+ // Initialize metrics
130+ mMonitorFileTotal = GetMetricsRecordRef ().CreateIntGauge (METRIC_PLUGIN_MONITOR_FILE_TOTAL);
131+ static const std::unordered_map<std::string, MetricType> inputStaticFileMetricKeys = {
132+ {METRIC_PLUGIN_OUT_EVENTS_TOTAL, MetricType::METRIC_TYPE_COUNTER},
133+ {METRIC_PLUGIN_OUT_EVENT_GROUPS_TOTAL, MetricType::METRIC_TYPE_COUNTER},
134+ {METRIC_PLUGIN_OUT_SIZE_BYTES, MetricType::METRIC_TYPE_COUNTER},
135+ {METRIC_PLUGIN_SOURCE_SIZE_BYTES, MetricType::METRIC_TYPE_INT_GAUGE},
136+ {METRIC_PLUGIN_SOURCE_READ_OFFSET_BYTES, MetricType::METRIC_TYPE_INT_GAUGE},
137+ };
138+ mPluginMetricManager = std::make_shared<PluginMetricManager>(
139+ GetMetricsRecordRef ()->GetLabels (), inputStaticFileMetricKeys, MetricCategory::METRIC_CATEGORY_PLUGIN_SOURCE);
140+ mPluginMetricManager ->RegisterSizeGauge (mMonitorFileTotal );
141+
124142 return CreateInnerProcessors ();
125143}
126144
@@ -129,6 +147,10 @@ bool InputStaticFile::Start() {
129147 // TODO: get container info
130148 // mFileDiscovery.SetContainerInfo();
131149 }
150+
151+ // Add plugin metric manager
152+ FileServer::GetInstance ()->AddPluginMetricManager (mContext ->GetConfigName (), mPluginMetricManager );
153+
132154 optional<vector<filesystem::path>> files;
133155 if (!mContext ->IsOnetimePipelineRunningBeforeStart ()) {
134156 files = GetFiles ();
@@ -140,6 +162,10 @@ bool InputStaticFile::Start() {
140162
141163bool InputStaticFile::Stop (bool isPipelineRemoving) {
142164 StaticFileServer::GetInstance ()->RemoveInput (mContext ->GetConfigName (), mIndex );
165+
166+ // Remove plugin metric manager
167+ FileServer::GetInstance ()->RemovePluginMetricManager (mContext ->GetConfigName ());
168+
143169 return true ;
144170}
145171
0 commit comments