## Description
This PR adds a number of metrics and logging. See last comment for more
detailed information (after several updates).
## Test plan
Mostly manual, firing up a service and a Grafana dashboard to test out
the prometheus metrics.
### Metrics
<img width="1720" alt="image"
src="https://github.com/MystenLabs/sui/assets/135084671/b825f365-ce41-4d2e-a77f-a46ebac561b8">
### Logging
**Query**
```graphql
{
transactionBlocks(first:400) {
nodes {
digest
}
}
}
```
**Log**
<img width="1720" alt="image"
src="https://github.com/MystenLabs/sui/assets/135084671/f7d394be-1883-4d8f-9e78-929462f6d409">
**Query**
```graphql
{
epoch(id: -1) {
epochId
}
}
```
**Log** - note that for those errors that we do not add an `error_code`
we are returning a `warn` log.
<img width="1720" alt="image"
src="https://github.com/MystenLabs/sui/assets/135084671/0e0d129c-9b99-4be0-83ca-9635c8cfd475">
---
If your changes are not user-facing and do not break anything, you can
skip the following section. Otherwise, please briefly describe what has
changed under the Release Notes section.
### Type of Change (Check all that apply)
- [ ] protocol change
- [ ] user-visible impact
- [ ] breaking change for a client SDKs
- [ ] breaking change for FNs (FN binary must upgrade)
- [ ] breaking change for validators or node operators (must upgrade
binaries)
- [ ] breaking change for on-chain data layout
- [ ] necessitate either a data wipe or data migration
### Release notes