Configure and Obtain Metrics#
Various metrics reporting modes and export methods can be set through deployment configuration, allowing you to integrate according to your needs.
Configure Metrics Export#
Monitoring is disabled by default in openYuanrong. When deploying on K8s, to enable it, you need to configure the parameter observer.metrics.enable to true, and set the corresponding exporter in observer.metrics.metricsConfig. When deploying on a host, to enable it, you need to add --enable_metrics=true --metrics_config_file={file_name}.json in the startup parameters. For the configuration file format, refer to the Configuration Example.
Export Modes#
openYuanrong supports two export modes: immediatelyExport and batchExport.
immediatelyExport: Exports data to the receiving backend immediately after collection. The advantage is good reporting timeliness, but it consumes more system resources.batchExport: Exports data to the receiving backend when data collection reaches a certain time or when metric data accumulates to a certain quantity. The advantage is less system resource consumption and reduced backend receiving pressure, but timeliness is poor.
Different export modes can configure specific exporters. Related parameters are as follows:
name: User-defined export mode name.enable: Whether the export mode is enabled.exporters: Exporters used in this export mode; multiple can be configured.
Exporters#
openYuanrong supports three exporters: fileExporter, Prometheus exporter (prometheusPushExporter), and OpenTelemetry exporter (opentelemetryExporter).
Exporters include the following configurations:
enable: Whether the exporter is enabled.enabledInstruments: Metrics allowed to be exported by the exporter. Multiple metric names can be filled in, separated by commas,. For metric names, refer to System Metrics and Alarm Metrics.failureQueueMaxSize: Maximum capacity of metric memory storage queue when export fails. When exceeding the set value, data will be written to disk. Default value is 1000 entries.failureDataDir: Metric storage file path when export fails, default is/home/sn/metrics/failure. When deploying on k8s, this path is mounted by default to the host/var/paas/sys/metrics/cff/default/failureMetrics/directory.failureDataFileMaxCapacity: Maximum capacity of metric storage file when export fails. When file size exceeds this capacity, the file will be overwritten. Default value is 20MB.batchSize: Batch export entry count. When the number of stored metrics exceeds the set value, export is triggered. Default value is 512 entries. This configuration only takes effect when export mode isbatchExport.batchIntervalSec: Batch export interval. Exports metrics once every certain time interval. Default value is 15 seconds. This configuration only takes effect when export mode isbatchExport.initConfig: Initialization parameters that need to be set for the exporter, see the following table for details.fileExporter Exporter Initialization Parameters:
Initialization Parameter
Description
Constraint
fileDir
File storage path.
Optional, uses log storage path when empty.
fileName
File name.
Optional, defaults to
{nodeID}-{componentName}-metrics.datawhen empty.rolling
File rolling configuration, includes the following items:
enable: File rolling switch, defaultfalse.maxFiles: Maximum number of files to retain, default value3.maxSize: Maximum file capacity, default value100MB.compress: Whether to enable file compression, defaultfalse, only takes effect when rolling is enabled.Optional, file rolling is disabled when empty.
contentType
Metric content format, choose one of the following two options.
STANDARD: Standard format, retains all information.LABELS: Label mode, retains only metric labels.Optional, defaults to standard mode.
prometheusPushExporter Exporter Initialization Parameters:
Initialization Parameter
Description
Constraint
ip
Prometheus push gateway address.
Required, e.g.:
127.0.0.1port
Prometheus push gateway port.
Required, e.g.:
9091heartbeatUrl
Prometheus push gateway heartbeat URL.
Required, e.g.:
/healthyheartbeatInterval
Prometheus push gateway heartbeat interval, unit (ms).
Required, e.g.:
5000opentelemetryExporter Exporter Initialization Parameters:
Initialization Parameter
Description
Constraint
endpoint
OTLP receiver URL.
Required, e.g.:
http://localhost:4318/v1/metrics
Configuration Examples#
The following are two metrics configuration file examples.
Configure both immediate reporting and batch reporting export modes, using file exporter to export metrics.
{ "backends": [ { "immediatelyExport": { "name": "your name", "enable": true, "exporters": [{ "fileExporter": { "enable": true, "enabledInstruments": ["yr_alarm"], "failureQueueMaxSize": 1000, "failureDataDir": "/home/sn/metrics/failure", "failureDataFileMaxCapacity": 20, "initConfig": { "fileDir": "/home/sn/metrics/file", "rolling": { "enable": true, "maxFiles": 3, "maxSize": 100, "compress": false }, "contentType": "STANDARD" } } }] } }, { "batchExport": { "name": "your name", "enable": true, "exporters": [ { "fileExporter": { "enable": true, "enabledInstruments": ["yr_app_instance_billing_invoke_latency"], "batchSize": 2, "batchIntervalSec": 10, "failureQueueMaxSize": 3, "failureDataDir": "/home/sn/metrics/failure", "failureDataFileMaxCapacity": 20, "initConfig": { "fileDir": "/home/sn/metrics/file", "rolling": { "enable": true, "maxFiles": 3, "maxSize": 100, "compress": false }, "contentType": "STANDARD" } } } ] } } ] }
Configure batch reporting export mode, using Prometheus exporter to export metrics.
{ "backends": [ { "batchExport": { "name": "your name", "enable": true, "exporters": [ { "prometheusPushExporter": { "enable": true, "enabledInstruments": ["yr_node_cpu_usage","yr_node_memory_usage","yr_etcd_alarm"], "batchSize": 10, "batchIntervalSec": 5, "failureQueueMaxSize": 100, "failureDataDir": "/home/sn/metrics/failure", "failureDataFileMaxCapacity": 20, "initConfig": { "ip": "your prometheus pushgateway ip", "port": 9091, "heartbeatUrl": "/healthy", "heartbeatInterval": 5000 } } } ] } } ] }
Configure batch reporting export mode, using OpenTelemetry exporter to export metrics to otel-collector.
{ "backends": [ { "batchExport": { "name": "otel-collector", "enable": true, "exporters": [ { "opentelemetryExporter": { "enable": true, "enabledInstruments": ["yr_node_cpu_usage", "yr_node_memory_usage", "yr_etcd_alarm"], "batchSize": 100, "batchIntervalSec": 5, "failureQueueMaxSize": 100, "failureDataDir": "/home/sn/metrics/failure", "failureDataFileMaxCapacity": 20, "initConfig": { "endpoint": "http://localhost:4318/v1/metrics" } } } ] } } ] }
Obtaining Exported Metrics Data#
You can obtain metrics data by configuring different types of exporters.
File Exporter#
The export directory for fileExporter can be passed through configuration, using the log directory by default. File name formats are as follows:
Application metrics file name format:
yr_metrics_xxx.data.System metrics file name format:
{nodeName}-{moduleName}-metrics.data, for example:pekphis355665-3445437-function_master-metrics.data.
Export file content has two formats: STANDARD and LABELS.
STANDARDmode: Taking collection of function instance process memory usage and the most recent call request as an example, file content is as follows:{"name":"runtime_memory_usage_vm_size","description":"","type":"Gauge","unit":"KB","value":"11000000","timestamp_ms":1691056024621,"labels":{"job_id":"job01","instance_id":"ins01"}} {"name":"runtime_memory_usage_vm_rss","description":"","type":"Gauge","unit":"KB","value":"11000000","timestamp_ms":1691056024621,"labels":{"job_id":"job01","instance_id":"ins01"}} {"name":"runtime_memory_usage_rss_anon","description":"","type":"Gauge","unit":"KB","value":"11000000","timestamp_ms":1691056024621,"labels":{"job_id":"job01","instance_id":"ins01"}}LABELSmode: Taking collection of function instance process memory usage and the most recent call request as an example, file content is as follows:{"job_id":"job01","instance_id": "ins01"}Among them, the meaning of file content fields is as follows:
Field
Description
name
Metric name
description
Metric description
type
Metric type
unit
Metric unit
value
Collected value
timestamp_ms
Collection timestamp
labels
Label attributes