Use the runtime logs to help diagnose problems with the apigee-runtime pods. Each
  runtime pod contains a message processor, which is responsible for processing API proxy traffic,
  executing policies, routing requests, and more.
Using runtime logs
Logs are a good way to troubleshoot problems with your installation. See Logging for details.
Use the logs command
  You can view runtime system logs using the kubectl logs command. For example:
kubectl logs -f -n hybrid apigee-runtime-apigee-gcp-prod1-test-blue-hd77q
Viewing logs on the filesystem
You can find the message processor log files on the apigee-runtime pod's
  filesystem. To view the files, open a shell in an apigee-runtime pod:
kubectl exec -it -n namespace apigee-runtime-pod-name bash
For example:
kubectl exec -it -n hybrid apigee-runtime-apigee-gcp-prod1-test-blue-cnj5x bash
Once you have the pod shell open, you can find hybrid message processor logs under
/opt/apigee/var/log/apigee-runtime/config.log.
Contract version information
The following table briefly describes log entries related to loading the contract from the management plane:
| Log Entry | Meaning | 
| hybrid-runtime  Apigee-Timer-9 INFO  RUNTIME-SYNC-SERVICE -
     RuntimeSyncServiceImpl.updateToVersion() : Switched to newer version
     750 from version null | The MP changed to a newer version of the configuration contract. | 
| hybrid-runtime  Apigee-Timer-6 INFO  RUNTIME-SYNC-SERVICE -
     RuntimeSyncServiceImpl.loadLatestVersionIfAvailable() : Found a newer
     version 750 | The MP loaded the latest contract configuration version from version.properties. | 
| hybrid-runtime  Apigee-Timer-6 INFO  RUNTIME-SYNC-SERVICE -
     RuntimeSyncServiceImpl.updateToVersion() : Attempting to update to a newer version 750 | The MP is updating to a newer version of the configuration contract. | 
| hybrid-runtime  Apigee-Timer-6 INFO  RUNTIME-SYNC-SERVICE -
     RuntimeSyncServiceImpl.updateToVersion() : Switched to newer version 751 from version 750 | The MP loaded the latest contract configuration version from version.properties. | 
Deployment errors
The following runtime errors relate to proxy deployments:
| Log Entry | Meaning | 
| hybrid-runtime org:hybrid env:prod  Apigee-Main-6 ERROR i.a.h.e.i.HermesEngineImpl
     - HermesEngineImpl.handleHermesException() : Keyspace cache_hybrid_hybrid does not exist | Keyspace cache_orgname_hybridis not provisioned in Cassandra. | 
| hybrid-runtime org:hybrid  Apigee-Timer-9 ERROR c.a.s.e.k.HybridEncryptionKeyServiceImpl
     - HybridEncryptionKeyServiceImpl.getEncryptionKey() : Encryption key does not exist for
     organization hybrid and type KmsKey | Keyspace kms_orgname_hybridis not provisioned in Cassandra. | 
Message processor deployment error logs
Look for the following deployment error entries in the message processor logs:
| Log entry | Description | 
|---|---|
| hybrid-runtime org:hybrid env:prod  Apigee-Main-6 ERROR i.a.h.e.i.HermesEngineImpl - HermesEngineImpl.handleHermesException() : Keyspace cache_hybrid_hybrid does not exist | Keyspace cache_orgname_hybrid is not provisioned in Cassandra. | 
| hybrid-runtime org:hybrid  Apigee-Timer-9 ERROR c.a.s.e.k.HybridEncryptionKeyServiceImpl - HybridEncryptionKeyS        erviceImpl.getEncryptionKey() : Encryption key does not exist for organization hybrid and type KmsKey | Keyspace kms_orgname_hybridis not provisioned in Cassandra. | 
Message processor error codes
Error codes for the message processor start with runtime.sync.error-name.
  For example:
| Log Entry | Meaning | 
| runtime.sync.ContractLoadFailedMessage: Error loading spec file | Reason: The error could be caused by an invalid schema, corrupted contract
     specification file, or
     invalid contract. Any of these issues could prevent the message processor from loading the spec
     file. Remedy: Make sure either the contract specification file is available, the file system is not corrupted, or the schema/contract is valid. |