diff --git a/VERSION b/VERSION
index e650c01..15a2799 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.2.9
+3.3.0
diff --git a/xos/coreapi/protos/utility.proto b/xos/coreapi/protos/utility.proto
index 2f81055..c351f1f 100644
--- a/xos/coreapi/protos/utility.proto
+++ b/xos/coreapi/protos/utility.proto
@@ -43,6 +43,18 @@
     string arch = 6;
 };
 
+message DatabaseInfo {
+    enum DatabaseStatus {
+        UNKNOWN=0;
+        OPERATIONAL=1;
+        ERROR=2;
+    }
+    string name = 1;
+    string connection = 2;
+    string version = 3;
+    DatabaseStatus status = 4;
+}
+
 message PopulatedServiceInstance {
     option (contentTypeId) = "core.serviceinstance";
     oneof id_present {
@@ -124,5 +136,11 @@
         };
   }
 
+  rpc GetDatabaseInfo(google.protobuf.Empty) returns (DatabaseInfo) {
+        option (googleapi.http) = {
+            get: "/xosapi/v1/dbinfo"
+        };
+  }
+
 
 };
diff --git a/xos/coreapi/xos_utility_api.py b/xos/coreapi/xos_utility_api.py
index 9ab9220..46514a7 100644
--- a/xos/coreapi/xos_utility_api.py
+++ b/xos/coreapi/xos_utility_api.py
@@ -21,6 +21,7 @@
 from xos.exceptions import XOSNotAuthenticated
 from core.models import ServiceInstance
 from django.db.models import F, Q
+from django.db import connection
 import django.apps
 from django.contrib.auth import authenticate as django_authenticate
 import fnmatch
@@ -273,8 +274,8 @@
         ).inc()
         return response
 
-    @translate_exceptions("Utilities", "GetXproto")
-    @track_request_time("Utilities", "GetXproto")
+    @translate_exceptions("Utilities", "GetVersion")
+    @track_request_time("Utilities", "GetVersion")
     def GetVersion(self, request, context):
         res = utility_pb2.VersionInfo()
 
@@ -297,10 +298,47 @@
         res.os = os.uname()[0].lower()
         res.arch = os.uname()[4].lower()
 
-        # TODO(smbaker): res.builTime
-        # TODO(smbaker): res.gitCommit
-
         REQUEST_COUNT.labels(
             "xos-core", "Utilities", "GetVersion", grpc.StatusCode.OK
         ).inc()
         return res
+
+    @translate_exceptions("Utilities", "GetDatabaseInfo")
+    @track_request_time("Utilities", "GetDatabaseInfo")
+    def GetDatabaseInfo(self, request, context):
+        res = utility_pb2.DatabaseInfo()
+
+        res.name = settings.DB["NAME"]
+        res.connection = "%s:%s" % (settings.DB["HOST"], settings.DB["PORT"])
+
+        # Start by assuming the db is operational, then we'll perform some tests
+        # to make sure it's working as we expect.
+        res.status = res.OPERATIONAL
+
+        # TODO(smbaker): Think about whether these are postgres-specific checks and what might happen
+        # if another db is configured.
+
+        try:
+            server_version = connection.cursor().connection.server_version
+            # example: '100003' for postgres 10.3
+            res.version = "%d.%d" % (server_version/10000, server_version % 10000)
+        except Exception:
+            res.version = "Unknown"
+            res.status = res.ERROR
+
+        if res.status == res.OPERATIONAL:
+            # Try performing a simple query that evaluates a constant. This will prove we are talking
+            # to the database.
+            try:
+                cursor = connection.cursor()
+                cursor.execute("select 1")
+                result = cursor.fetchone()
+                assert(len(result) == 1)
+                assert(result[0] == 1)
+            except Exception:
+                res.status = res.ERROR
+
+        REQUEST_COUNT.labels(
+            "xos-core", "Utilities", "GetDatabaseInfo", grpc.StatusCode.OK
+        ).inc()
+        return res
diff --git a/xos/xos/settings.py b/xos/xos/settings.py
index c9ec5f7..dd8e5aa 100644
--- a/xos/xos/settings.py
+++ b/xos/xos/settings.py
@@ -14,10 +14,8 @@
 
 
 from django import VERSION as DJANGO_VERSION
-import socket
 import os
 import warnings
-from urlparse import urlparse
 
 # Initializing xosconfig module
 from xosconfig import Config
