# How to enable Metrics Support using JAVA SDK

**URL:** <https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366>\
**Category:** Community Support\
**Tags:** java-sdk, metrics\
**Created:** [August 5, 2020, 9:36am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366 "2020-08-05T09:36:19Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![techFool](https://avatars.discourse-cdn.com/v4/letter/t/dbc845/32.png) [@techFool](https://community.temporal.io/u/techFool)\
**Post date:** [August 5, 2020, 9:36am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/1 "2020-08-05T09:36:19Z")

</div>

Experts,

Can someone share the details on how can we get out of the box metric support in temporal for the java SDK.

I don’t see any documentation on how to enable those metric .

Thanks in advance

---

<div class="post-metadata">

**Author:** ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)\
**Post date:** [August 5, 2020, 4:05pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/2 "2020-08-05T16:05:15Z")

</div>

Temporal Java SDK reports metrics using [Uber Tally](https://github.com/uber-java/tally) interface. You can use [MicrometerClientStatsReporter](https://github.com/temporalio/java-sdk/blob/55ee7894aec427d7e384c3519732bdd61119961a/src/main/java/io/temporal/common/reporter/MicrometerClientStatsReporter.java#L34) implementation of the Tally StatsReporter to adapt it to Prometheus and other backends supported by [Micrometer](https://micrometer.io/). Or you can implement your own Reporter for unsupported backends.

Use [WorkflowServiceStubsOptions.Builder.setMetricsScope](https://github.com/temporalio/java-sdk/blob/c0322fcc19474648ce9e1bc6d6f5ac21fefb1ee9/src/main/java/io/temporal/serviceclient/WorkflowServiceStubsOptions.java#L333) to set the metrics scope with the SDK.

```java
      StatsReporter reporter = new MicrometerClientStatsReporter(registry);
      Scope scope = new RootScopeBuilder()
              .reporter(reporter)
              .reportEvery(com.uber.m3.util.Duration.ofSeconds(10));
      WorkflowServiceStubsOptions options = WorkflowServiceStubsOptions.newBuilder().setMetricsScope(scope).build();
      WorkflowServiceStubs stubs = WorkflowServiceStubs.newInstance(options);
      WorkflowClient client = WorkflowClient.newInstance(stubs);

```

---

<div class="post-metadata">

**Author:** ![techFool](https://avatars.discourse-cdn.com/v4/letter/t/dbc845/32.png) [@techFool](https://community.temporal.io/u/techFool)\
**Post date:** [August 11, 2020, 7:14am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/3 "2020-08-11T07:14:29Z")

</div>

Thanks @maxim,

I tried what you have suggested but i am getting error on HelloActivity.java.

Following are the steps i performed.

1. Steps as mentioned in [https://github.com/temporalio/helm-charts](https://github.com/temporalio/helm-charts)  
1.a \> TemporalImage\v28\helm-charts-0.28.0\> helm dependencies update  
1.b\> i disabled the ElasticSearch and Kafka in value.yaml file  
1.c\> made the cluster size of cassandra as 1  
1.d\> TemporalImage\v28\helm-charts-0.28.0\> helm install testhelm . --timeout 900s  
were it was successfully deployed  
1.e\> did some port forwarding:  
1.e.1\> kubectl port-forward services/testhelm-temporal-frontend-headless 7233:7233  
1.e.2\>kubectl port-forward services/testhelm-temporal-web 8088:8088  
1.e.3\>kubectl port-forward services/testhelm-prometheus-server 9292:80  
1.e.4\>kubectl port-forward services/ravihelm-grafana 9393:80

Then i tried running the HelloActivity.java with your changes

* * *

public static void main(String args) {  
// gRPC stubs wrapper that talks to the local docker instance of temporal service.

```
// client that can be used to start and signal workflows

StatsReporter reporter = new MicrometerClientStatsReporter((new SimpleMeterRegistry()));
Scope scope =
    new RootScopeBuilder()
        .reporter(reporter)
        .reportEvery(com.uber.m3.util.Duration.ofSeconds(10));
WorkflowServiceStubsOptions options =
    WorkflowServiceStubsOptions.newBuilder().setMetricsScope(scope).build();
WorkflowServiceStubs stubs = WorkflowServiceStubs.newInstance(options);
// WorkflowClient client2 = WorkflowClient.newInstance(stubs);

// WorkflowServiceStubs service = WorkflowServiceStubs.newInstance();
WorkflowClient client = WorkflowClient.newInstance(stubs);

// worker factory that can be used to create workers for specific task queues
WorkerFactory factory = WorkerFactory.newInstance(client);
// Worker that listens on a task queue and hosts both workflow and activity implementations.
Worker worker = factory.newWorker(TASK_QUEUE);
// Workflows are stateful. So you need a type to create instances.
worker.registerWorkflowImplementationTypes(GreetingWorkflowImpl.class);
// Activities are stateless and thread safe. So a shared instance is used.
worker.registerActivitiesImplementations(new GreetingActivitiesImpl());
// Start listening to the workflow and activity task queues.
factory.start();

// Start a workflow execution. Usually this is done from another program.
// Uses task queue from the GreetingWorkflow @WorkflowMethod annotation.
GreetingWorkflow workflow =
    client.newWorkflowStub(
        GreetingWorkflow.class, WorkflowOptions.newBuilder().setTaskQueue(TASK_QUEUE).build());
// Execute a workflow waiting for it to complete. See {@link
// io.temporal.samples.hello.HelloSignal}
// for an example of starting workflow without waiting synchronously for its result.
String greeting = workflow.getGreeting("World");
System.out.println(greeting);
System.out.println("Reporter->" + reporter);

System.exit(0);

```

}  
}

But i am getting the following exception  
12:32:34.816 [Workflow Poller taskQueue=“HelloActivity”, namespace=“default”: 1] ERROR io.temporal.internal.worker.Poller - Failure in thread Workflow Poller taskQueue=“HelloActivity”, namespace=“default”: 1  
io.grpc.StatusRuntimeException: NOT\_FOUND: Namespace default does not exist.  
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:244)  
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:225)  
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:142)  
at io.temporal.api.workflowservice.v1.WorkflowServiceGrpc$WorkflowServiceBlockingStub.pollWorkflowTaskQueue(WorkflowServiceGrpc.java:2658)  
at io.temporal.internal.worker.WorkflowPollTask.poll(WorkflowPollTask.java:77)  
at io.temporal.internal.worker.WorkflowPollTask.poll(WorkflowPollTask.java:37)  
at io.temporal.internal.worker.Poller$PollExecutionTask.run(Poller.java:273)  
at io.temporal.internal.worker.Poller$PollLoopTask.run(Poller.java:242)  
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)  
at java.lang.Thread.run(Thread.java:748)

and i cant view these in my temporal localhost:8088. I am able to bring up the graph of grafana.

If i run the same sample with your changes when i directly start the temporal from the docker-compose up command then this is successful.

I am not sure why .

i wanted to see the metrics on my Grafana but the graph is not reflecting anything . I tried running [https://github.com/temporalio/helm-charts#running-temporal-cli-from-the-admin-tools-container](https://github.com/temporalio/helm-charts#running-temporal-cli-from-the-admin-tools-container) to resolve the namespace issue but the command failed

PS \TemporalImage\v28\helm-charts-0.28.0\> kubectl exec -it helmtest-temporal-admintools-58fdf949fc-78dzg /bin/bash  
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] – [COMMAND] instead.  
bash-5.0# tctl namespace list  
Error: Error when list namespaces info  
Error Details: context deadline exceeded  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0# tctl namespace list  
Error: Error when list namespaces info  
Error Details: last connection error: connection error: desc = “transport: Error while dialing dial tcp: lookup helmtest-frontend on 10.96.0.10:53: no such host”  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0# tctl --namespace nonesuch namespace desc  
Error: Operation DescribeNamespace failed.  
Error Details: last connection error: connection error: desc = “transport: Error while dialing dial tcp: lookup helmtest-frontend on 10.96.0.10:53: no such host”  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0# tctl --namespace nonesuch namespace desc  
Error: Operation DescribeNamespace failed.  
Error Details: last connection error: connection error: desc = “transport: Error while dialing dial tcp: lookup helmtest-frontend on 10.96.0.10:53: no such host”  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0# tctl --namespace nonesuch namespace desc  
Error: Operation DescribeNamespace failed.  
Error Details: last connection error: connection error: desc = “transport: Error while dialing dial tcp: lookup helmtest-frontend on 10.96.0.10:53: no such host”  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)

Thanks in advance  
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

 ![Temporal_NotWorking](https://us1.discourse-cdn.com/flex016/uploads/temporal/original/1X/5822e2737abd4318534b86bb658b485a167ad9c7.png) ![WorkingTemporal](https://us1.discourse-cdn.com/flex016/uploads/temporal/original/1X/22a8ac8f8fc4ba8d659e2b0861c31b7172c1a92c.png) ![HelloActivity](https://us1.discourse-cdn.com/flex016/uploads/temporal/original/1X/c52fe6c3ee438abc2a72db2738a1fa398637fc4e.png) ![Error](https://us1.discourse-cdn.com/flex016/uploads/temporal/original/1X/1114230595996eb2921fc81dfff16895d6f3cf56.png) ![Grafana](https://us1.discourse-cdn.com/flex016/uploads/temporal/original/1X/ed7fd379985bd2a2974e94126e34d0f1ecb7adab.png)

---

<div class="post-metadata">

**Author:** ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)\
**Post date:** [August 11, 2020, 3:11pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/4 "2020-08-11T15:11:13Z")

</div>

I believe there was a known problem of helm chart not registering the default namespace. @markmark was it already fixed?

In the meantime register it using temporal [CLI](https://docs.temporal.io/docs/learn-cli):

`tctl -ns default namespace register`

---

<div class="post-metadata">

**Author:** ![techFool](https://avatars.discourse-cdn.com/v4/letter/t/dbc845/32.png) [@techFool](https://community.temporal.io/u/techFool)\
**Post date:** [August 12, 2020, 9:57am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/5 "2020-08-12T09:57:48Z")

</div>

Hi @maxim,

I tried this command after repeating all the above steps but it also has failed

PS C:\Ravi\Software\TemporalImage\v28\helm-charts-0.28.0\> kubectl exec -it ravihelm-temporal-admintools-58fdf949fc-67kqk /bin/bash  
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] – [COMMAND] instead.  
bash-5.0# **tctl -ns default namespace register**  
Error: Register namespace operation failed.  
Error Details: context deadline exceeded  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0# **tctl --namespace default namespace re**  
Error: Register namespace operation failed.  
Error Details: context deadline exceeded  
(‘export TEMPORAL\_CLI\_SHOW\_STACKS=1’ to see stack traces)  
bash-5.0#

When i try to list i can view the namespace  
PS C:\Ravi\Software\TemporalImage\v28\helm-charts-0.28.0\> helm list  
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION  
ravihelm default 1 2020-08-12 15:15:33.5666403 +0530 IST deployed temporal-0.2.0 0.28.0

---

<div class="post-metadata">

**Author:** ![maxim](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/maxim/32/8_2.png) [@maxim](https://community.temporal.io/u/maxim)\
**Post date:** [August 12, 2020, 2:50pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/6 "2020-08-12T14:50:54Z")

</div>

Try adding --address frontendaddress:port parameter.

```auto
./tctl --address 127.0.0.1:7233 -ns MyNamespace namespace register

```

In your case change the address to the frontend DNS/IP address.

---

<div class="post-metadata">

**Author:** ![madhu](https://avatars.discourse-cdn.com/v4/letter/m/a8b319/32.png) [@madhu](https://community.temporal.io/u/madhu)\
**Post date:** [August 13, 2020, 5:22am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/7 "2020-08-13T05:22:10Z")

</div>

> [@maxim](#):
>
> `--address `

if you are running it from your pod you could also try

./tctl --address **yourfrontendpod-headless** :7233 -ns …

---

<div class="post-metadata">

**Author:** ![techFool](https://avatars.discourse-cdn.com/v4/letter/t/dbc845/32.png) [@techFool](https://community.temporal.io/u/techFool)\
**Post date:** [August 13, 2020, 6:42am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/8 "2020-08-13T06:42:04Z")

</div>

Thanks now the program got executed successfully after the default namespace registration. Unfortunately these stuff are not mentioned in the documentation which will be of great help for new beginner .

Thanks all

---

<div class="post-metadata">

**Author:** ![markmark](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/markmark/32/88_2.png) [@markmark](https://community.temporal.io/u/markmark)\
**Post date:** [August 13, 2020, 5:50pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/9 "2020-08-13T17:50:43Z")

</div>

Hi @techFool, apologies for the not-so great initial experience, and thank you so much for bringing this to our attention!

We are treating this issue as a bug and will address this in the near-ish future.

> <https://github.com/temporalio/helm-charts/issues/56>
>
> When running the system via docker-compose (e. g. https://github.com/temporalio/temporal/blob/master/docker/docker-compose.yml), the system starts up with default namespace already existing. However, this is...

Thank you!  
Mark.

---

<div class="post-metadata">

**Author:** ![markmark](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/markmark/32/88_2.png) [@markmark](https://community.temporal.io/u/markmark)\
**Post date:** [August 13, 2020, 5:59pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/10 "2020-08-13T17:59:16Z")

</div>

PS @techFool, just to double-check, running the sequence described here

> **[temporalio/helm-charts](https://github.com/temporalio/helm-charts#running-temporal-cli-from-the-admin-tools-container)**
>
> Helm Chart for deploying Temporal. Contribute to temporalio/helm-charts development by creating an account on GitHub.

works in our test pipelines, so I am curious why it didn’t seem to work in your test. I see that you installed with a different helm installation name (although I am not sure if it’s `helmtest` or `testhelm`, I see references to both). So I will play with this a bit, to see if we have a bug in our helm charts around deployment names. Thank you for bringing this to my attention!

---

<div class="post-metadata">

**Author:** ![techFool](https://avatars.discourse-cdn.com/v4/letter/t/dbc845/32.png) [@techFool](https://community.temporal.io/u/techFool)\
**Post date:** [August 14, 2020, 9:44am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/11 "2020-08-14T09:44:59Z")

</div>

Hi @markmark,

i was running HelloActivity example to view the Metrics. After all the configuration the HelloActivity was failing as default namespace was not present. The command mentioned in the doc was also not working. The afetr suggestion from @maxim and @madhu the command was able to create the default namespace. After which the HelloActivity was getting deployed successfully.

---

<div class="post-metadata">

**Author:** ![rfwagner](https://avatars.discourse-cdn.com/v4/letter/r/a87d85/32.png) [@rfwagner](https://community.temporal.io/u/rfwagner)\
**Post date:** [October 20, 2020, 3:51pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/12 "2020-10-20T15:51:41Z")

</div>

@maxim I am trying to get Prometheus metrics working for our JavaSDK workers using your snippet:

```auto
      StatsReporter reporter = new MicrometerClientStatsReporter(registry);
      Scope scope = new RootScopeBuilder()
              .reporter(reporter)
              .reportEvery(com.uber.m3.util.Duration.ofSeconds(10));
      WorkflowServiceStubsOptions options = WorkflowServiceStubsOptions.newBuilder().setMetricsScope(scope).build();
      WorkflowServiceStubs stubs = WorkflowServiceStubs.newInstance(options);
      WorkflowClient client = WorkflowClient.newInstance(stubs);

```

And I am using a registry created with:

```auto
    registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);

```

This is resulting in the following stack trace every time we try to run a workflow. Any pointers would be greatly appreciated:

```auto
Oct 20, 2020 8:48:56 AM io.grpc.internal.SerializingExecutor run
SEVERE: Exception while executing runnable io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed@7f1b896b
java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter named 'temporal_request_latency_seconds' containing tag keys [Operation]. The meter you are attempting to register has keys [Namespace, Operation, TaskQueue, WorkflowType].
	at io.micrometer.prometheus.PrometheusMeterRegistry.lambda$applyToCollector$16(PrometheusMeterRegistry.java:420)
	at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1932)
	at io.micrometer.prometheus.PrometheusMeterRegistry.applyToCollector(PrometheusMeterRegistry.java:404)
	at io.micrometer.prometheus.PrometheusMeterRegistry.newTimer(PrometheusMeterRegistry.java:198)
	at io.micrometer.core.instrument.MeterRegistry.lambda$timer$2(MeterRegistry.java:308)
	at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:612)
	at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:566)
	at io.micrometer.core.instrument.MeterRegistry.timer(MeterRegistry.java:306)
	at io.micrometer.core.instrument.Timer$Builder.register(Timer.java:539)
	at io.micrometer.core.instrument.MeterRegistry.timer(MeterRegistry.java:433)
	at io.temporal.common.reporter.MicrometerClientStatsReporter.reportTimer(MicrometerClientStatsReporter.java:69)
	at com.uber.m3.tally.TimerImpl.record(TimerImpl.java:55)
	at com.uber.m3.tally.TimerImpl.recordStopwatch(TimerImpl.java:69)
	at com.uber.m3.tally.Stopwatch.stop(Stopwatch.java:48)
	at io.temporal.serviceclient.GrpcMetricsInterceptor$MetricsClientCall$1.onClose(GrpcMetricsInterceptor.java:124)
	at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:413)
	at io.grpc.internal.ClientCallImpl.access$500(ClientCallImpl.java:66)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
	at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:721)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
	at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:740)
	at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:149)
	at io.temporal.api.workflowservice.v1.WorkflowServiceGrpc$WorkflowServiceBlockingStub.respondWorkflowTaskCompleted(WorkflowServiceGrpc.java:2673)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.lambda$sendReply$0(WorkflowWorker.java:369)
	at io.temporal.internal.common.GrpcRetryer.lambda$retry$0(GrpcRetryer.java:109)
	at io.temporal.internal.common.GrpcRetryer.retryWithResult(GrpcRetryer.java:127)
	at io.temporal.internal.common.GrpcRetryer.retry(GrpcRetryer.java:106)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.sendReply(WorkflowWorker.java:362)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:313)
	at io.temporal.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:275)
	at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:73)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

```

---

<div class="post-metadata">

**Author:** ![Vitaly](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/vitaly/32/261_2.png) [@Vitaly](https://community.temporal.io/u/Vitaly)\
**Post date:** [October 21, 2020, 3:41am UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/13 "2020-10-21T03:41:00Z")

</div>

While we are working on a fix on the SDK side, you could use a work-around suggested in [https://github.com/temporalio/sdk-java/issues/200](https://github.com/temporalio/sdk-java/issues/200)

---

<div class="post-metadata">

**Author:** ![tihomir](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/tihomir/32/6580_2.png) [@tihomir](https://community.temporal.io/u/tihomir)\
**Post date:** [January 17, 2022, 5:45pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/14 "2022-01-17T17:45:18Z")

</div>

We have a Java SDK metrics sample: [samples-java/src/main/java/io/temporal/samples/metrics at main · temporalio/samples-java · GitHub](https://github.com/temporalio/samples-java/tree/main/src/main/java/io/temporal/samples/metrics)

---

<div class="post-metadata">

**Author:** ![spikhalskiy](https://sea2.discourse-cdn.com/flex016/user_avatar/community.temporal.io/spikhalskiy/32/1250_2.png) [@spikhalskiy](https://community.temporal.io/u/spikhalskiy)\
**Post date:** [August 12, 2022, 9:14pm UTC](https://community.temporal.io/t/how-to-enable-metrics-support-using-java-sdk/366/15 "2022-08-12T21:14:47Z")

</div>

Also covered in the new Application development guide: [Application development - Observability | Temporal Documentation](https://docs.temporal.io/application-development/observability#metrics)
