diff --git a/packages/util/src/events.ts b/packages/util/src/events.ts index 8e445593..c4b23a71 100644 --- a/packages/util/src/events.ts +++ b/packages/util/src/events.ts @@ -102,7 +102,7 @@ export class EventWatcher { await this._jobQueue.waitForEmptyQueue(QUEUE_EVENT_PROCESSING); // Get latest block in chain and sync status from DB - // Also get historical-processing queu size + // Also get historical-processing queue size const [{ block: latestBlock }, syncStatus, historicalProcessingQueueSize] = await Promise.all([ this._ethClient.getBlockByHash(), this._indexer.getSyncStatus(), diff --git a/packages/util/src/metrics.ts b/packages/util/src/metrics.ts index 8f688a77..a481aded 100644 --- a/packages/util/src/metrics.ts +++ b/packages/util/src/metrics.ts @@ -118,6 +118,8 @@ export const startMetricsServer = async (config: Config, indexer: IndexerInterfa } }); + await registerWatcherConfigMetrics(config); + await registerDBSizeMetrics(config); await registerUpstreamChainHeadMetrics(config); @@ -184,3 +186,31 @@ const registerUpstreamChainHeadMetrics = async ({ upstream }: Config): Promise => { + const watcherConfigMetric = new client.Gauge({ + name: 'watcher_config', + help: 'Watcher configuration info (static)', + labelNames: ['category', 'field'] + }); + + watcherConfigMetric.set({ category: 'server', field: 'is_active' }, Number(server.kind === 'active')); + watcherConfigMetric.set({ category: 'server', field: 'is_subgraph_watcher' }, Number(server.subgraphPath?.length > 0)); + watcherConfigMetric.set({ category: 'server', field: 'max_events_block_range' }, Number(server.maxEventsBlockRange)); + watcherConfigMetric.set({ category: 'server', field: 'clear_entities_cache_interval' }, Number(server.clearEntitiesCacheInterval)); + watcherConfigMetric.set({ category: 'server', field: 'max_simultaneous_requests' }, Number(server.maxSimultaneousRequests)); + watcherConfigMetric.set({ category: 'server', field: 'max_request_queue_limit' }, Number(server.maxRequestQueueLimit)); + watcherConfigMetric.set({ category: 'server', field: 'rpc_supports_block_hash_param' }, Number(server.rpcSupportsBlockHashParam)); + + watcherConfigMetric.set({ category: 'upstream', field: 'cache_enabled' }, Number(upstream.cache.enabled)); + watcherConfigMetric.set({ category: 'upstream', field: 'eth_server_rpc_client' }, Number(upstream.ethServer.rpcClient)); + watcherConfigMetric.set({ category: 'upstream', field: 'eth_server_is_fevm' }, Number(upstream.ethServer.isFEVM)); + watcherConfigMetric.set({ category: 'upstream', field: 'eth_server_filter_logs_by_addresses' }, Number(upstream.ethServer.filterLogsByAddresses)); + watcherConfigMetric.set({ category: 'upstream', field: 'eth_server_filter_logs_by_topics' }, Number(upstream.ethServer.filterLogsByTopics)); + + watcherConfigMetric.set({ category: 'jobqueue', field: 'eventsInBatch' }, Number(jobQueue.eventsInBatch)); + watcherConfigMetric.set({ category: 'jobqueue', field: 'block_delay_in_milli_secs' }, Number(jobQueue.blockDelayInMilliSecs)); + watcherConfigMetric.set({ category: 'jobqueue', field: 'use_block_ranges' }, Number(jobQueue.useBlockRanges)); + watcherConfigMetric.set({ category: 'jobqueue', field: 'historical_logs_block_range' }, Number(jobQueue.historicalLogsBlockRange)); + watcherConfigMetric.set({ category: 'jobqueue', field: 'historical_max_fetch_ahead' }, Number(jobQueue.historicalMaxFetchAhead)); +};