1- function async_metrics_example
1+ function async_metrics_example( iterations )
22% This example creates 3 asynchronous metric instruments including an
33% observable counter, an observable updowncounter, and an observable gauge.
44
55% Copyright 2024 The MathWorks, Inc.
66
7+ if nargin < 1
8+ iterations = 20 ; % default to 20 iterations
9+ end
10+
711% initialize meter provider
812initMetrics ;
913
1014% create meter and instruments
1115m = opentelemetry .metrics .getMeter(" async_metrics_example" );
12- c = createObservableCounter( m , @ counter_callback , " observable_counter " ); % #ok<*NASGU>
13- u = createObservableUpDownCounter (m , @updowncounter_callback , " observable_updowncounter " );
14- g = createObservableGauge (m , @gauge_callback , " observable_gauge " );
15- iterations = 20 ; % number of iterations
16+ callbacks = async_metrics_example_callbacks ;
17+ c = createObservableCounter (m , @()counterCallback( callbacks ) , " observable_counter " ); % #ok<*NASGU>
18+ u = createObservableUpDownCounter (m , @()updowncounterCallback( callbacks ) , " observable_updowncounter " );
19+ g = createObservableGauge( m , @()gaugeCallback( callbacks ), " observable_gauge " );
1620pause(iterations * 5 );
1721
1822% clean up
3135end
3236
3337function cleanupMetrics
38+ % clean up meter provider
3439mp = opentelemetry .metrics .Provider .getMeterProvider();
3540opentelemetry .sdk .common .Cleanup .shutdown(mp ); % shutdown
36- end
37-
38- function result = counter_callback()
39- persistent value
40- if isempty(value )
41- value = 0 ;
42- else
43- value = value + randi(10 ); % increment between 1 to 10
44- end
45- result = opentelemetry .metrics .ObservableResult ;
46- result = result .observe(value );
47- end
48-
49- function result = updowncounter_callback()
50- persistent value
51- if isempty(value )
52- value = 0 ;
53- else
54- value = value + randi([-5 5 ]); % increment between -5 to 5
55- end
56- result = opentelemetry .metrics .ObservableResult ;
57- result = result .observe(value );
58- end
59-
60- function result = gauge_callback()
61- s = second(datetime(" now" )); % get the current second of the minute
62- result = opentelemetry .metrics .ObservableResult ;
63- result = result .observe(s );
6441end
0 commit comments