{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} ----------------------------------------------------------------------------- -- | -- Module : OpenTelemetry.Resource.Service -- Copyright : (c) Ian Duncan, 2021 -- License : BSD-3 -- Description : Resource information about a "service" -- Maintainer : Ian Duncan -- Stability : experimental -- Portability : non-portable (GHC extensions) -- ----------------------------------------------------------------------------- module OpenTelemetry.Resource.Service where import Data.Text import OpenTelemetry.Resource -- | A service instance data Service = Service { serviceName :: Text -- ^ Logical name of the service. -- -- MUST be the same for all instances of horizontally scaled services. -- If the value was not specified, SDKs MUST fallback to unknown_service: concatenated with process.executable.name, -- e.g. unknown_service:bash. If process.executable.name is not available, the value MUST be set to unknown_service. -- -- If using the built-in resource detectors, this can be specified via the -- @OTEL_SERVICE_NAME@ environment variable -- -- Example: @shoppingcart@ , serviceNamespace :: Maybe Text -- ^ A namespace for service.name. -- -- A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. service.name is expected to be unique within the same namespace. If service.namespace is not specified in the Resource then service.name is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace. -- -- Example: @Shop@ , serviceInstanceId :: Maybe Text -- ^ The string ID of the service instance. -- -- Example: @627cc493-f310-47de-96bd-71410b7dec09@ , serviceVersion :: Maybe Text -- ^ The version string of the service API or implementation. -- -- Example: @2.0.0@ } instance ToResource Service where type ResourceSchema Service = 'Nothing toResource Service{..} = mkResource [ "service.name" .= serviceName , "service.namespace" .=? serviceNamespace , "service.instance.id" .=? serviceInstanceId , "service.version" .=? serviceVersion ]