diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/InitJira.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/InitJira.java
index 3fc7702..a5c16ec 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/InitJira.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/InitJira.java
@@ -109,7 +109,10 @@
 
     ui.header("Jira issue-tracking association");
     jiraComment.string("Jira issue-Id regex", "match", "([A-Z]+-[0-9]+)");
-    jiraComment.string("What html would you like to use?", "html", String.format("<a href=\"%s/browse/$1\">$1</a>", jiraUrl));
+    jiraComment.string(
+        "What html would you like to use?",
+        "html",
+        String.format("<a href=\"%s/browse/$1\">$1</a>", jiraUrl));
 
     Section pluginConfig = sections.get("plugin", pluginName);
 
@@ -135,7 +138,7 @@
         ui.message("*ERROR* Jira returned an empty version number");
         return false;
       }
-      ui.message("[OK] - Jira Ver {}\n", serverInfo.getVersion());
+      ui.message("[OK] - Jira Ver %s\n", serverInfo.getVersion());
       return true;
     } catch (IOException e) {
       ui.message("*FAILED* (%s)\n", e.toString());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
index 3fc1c82..c67cabf 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
@@ -115,7 +115,7 @@
     return execute(() -> jiraClient.issueExists(getJiraServerInstance(), issueKey));
   }
 
-  private JiraItsServerInfo getJiraServerInstance() {
+  public JiraItsServerInfo getJiraServerInstance() {
     return itsServerInfo;
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsStartupHealthcheck.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsStartupHealthcheck.java
new file mode 100644
index 0000000..4c1b24e
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsStartupHealthcheck.java
@@ -0,0 +1,57 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.its.jira;
+
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.events.LifecycleListener;
+import com.google.gerrit.server.config.AllProjectsName;
+import com.google.inject.Inject;
+import com.googlesource.gerrit.plugins.its.base.its.ItsFacade.Check;
+import com.googlesource.gerrit.plugins.its.jira.restapi.JiraURL;
+import java.io.IOException;
+
+public class JiraItsStartupHealthcheck implements LifecycleListener {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
+  private final JiraItsServer jira;
+  private final AllProjectsName allProjectsName;
+  private final String pluginName;
+
+  @Inject
+  public JiraItsStartupHealthcheck(
+      JiraItsServer jira, AllProjectsName allProjectsName, @PluginName String pluginName) {
+    this.jira = jira;
+    this.allProjectsName = allProjectsName;
+    this.pluginName = pluginName;
+  }
+
+  @Override
+  public void start() {
+    JiraItsFacade jiraFacade = jira.getFacade(allProjectsName);
+    JiraURL jiraUrl = jiraFacade.getJiraServerInstance().getUrl();
+
+    try {
+      String sysInfo = jiraFacade.healthCheck(Check.SYSINFO);
+      logger.atInfo().log("Connection to Jira (%s) succeeded: %s", jiraUrl, sysInfo);
+    } catch (IOException e) {
+      logger.atSevere().withCause(e).log(
+          "%s plugin failed to start: unable to connect to Jira (%s)", pluginName, jiraUrl);
+    }
+  }
+
+  @Override
+  public void stop() {}
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraModule.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraModule.java
index 6fff5d7..3d59458 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraModule.java
@@ -20,9 +20,9 @@
 
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.lifecycle.LifecycleModule;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.gerrit.server.config.ProjectConfigEntry;
-import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.its.base.ItsHookModule;
 import com.googlesource.gerrit.plugins.its.base.its.ItsConfig;
@@ -33,7 +33,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class JiraModule extends AbstractModule {
+public class JiraModule extends LifecycleModule {
 
   private static final Logger LOG = LoggerFactory.getLogger(JiraModule.class);
 
@@ -66,6 +66,8 @@
         .to(MarkPropertyAsReleasedVersion.class);
     install(new ItsHookModule(pluginName, pluginCfgFactory));
     install(JiraItsServerCacheImpl.module());
+    listener().to(JiraItsStartupHealthcheck.class);
+
     LOG.info("JIRA is configured as ITS");
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraServerInfoRestApi.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraServerInfoRestApi.java
index 0a64de0..a0a2523 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraServerInfoRestApi.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraServerInfoRestApi.java
@@ -21,7 +21,7 @@
 public class JiraServerInfoRestApi extends JiraRestApi<JiraServerInfo> {
 
   public JiraServerInfoRestApi(JiraURL url, String user, String pass) {
-    super(url, user, pass, JiraServerInfo.class, "/serverInfo/");
+    super(url, user, pass, JiraServerInfo.class, "/serverInfo");
   }
 
   public JiraServerInfo get() throws IOException {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraURL.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraURL.java
index ed0cac6..0de96d8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraURL.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraURL.java
@@ -16,6 +16,7 @@
 
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.base.CharMatcher;
 import java.io.IOException;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
@@ -36,7 +37,7 @@
   private final URL url;
 
   public JiraURL(String spec) throws MalformedURLException {
-    this.url = new URL(spec);
+    this.url = new URL(CharMatcher.is('/').trimFrom(spec) + "/");
   }
 
   private JiraURL(URL url) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java
index 1fa7f6a..d3b4812 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/restapi/JiraRestApiTest.java
@@ -19,7 +19,6 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.*;
 
-import com.google.common.base.CharMatcher;
 import java.io.ByteArrayOutputStream;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
@@ -39,7 +38,7 @@
   private JiraRestApi restApi;
 
   private void setURL(String jiraUrl) throws MalformedURLException {
-    url = new JiraURL(CharMatcher.is('/').trimFrom(jiraUrl) + "/");
+    url = new JiraURL(jiraUrl);
   }
 
   @Test
