Skip to content

Commit 219fbb2

Browse files
authored
add request logging for gRPC mode and bump python image and curl binary (#1879)
1 parent a8f21f5 commit 219fbb2

File tree

7 files changed

+46
-23
lines changed

7 files changed

+46
-23
lines changed

quickstarts/whereami/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
FROM python:3.13.5-slim
1+
FROM python:3.13.11-slim
22

33
#MAINTAINER Alex Mattson "[email protected]"
44

55
RUN apt-get update && apt-get install -y --no-install-recommends \
66
wget && \
77
apt-get clean && \
88
rm -rf /var/lib/apt/lists/* && \
9-
wget -O /bin/curl https://github.com/moparisthebest/static-curl/releases/download/v8.11.0/curl-amd64 && \
9+
wget -O /bin/curl https://github.com/moparisthebest/static-curl/releases/download/v8.17.0/curl-amd64 && \
1010
chmod +x /bin/curl
1111
COPY ./requirements.txt /app/requirements.txt
1212

quickstarts/whereami/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Prometheus metrics are exposed from `whereami` at `x.x.x.x/metrics` in both Flas
1919
`whereami` is a single-container app, designed and packaged to run on Kubernetes. In its simplest form it can be deployed in a single line with only a few parameters.
2020

2121
```bash
22-
$ kubectl run --image=us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25 --expose --port 8080 whereami
22+
$ kubectl run --image=us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26 --expose --port 8080 whereami
2323
```
2424

2525
The `whereami` pod listens on port `8080` and returns a very simple JSON response that indicates who is responding and where they live. This example assumes you're executing the `curl` command from a pod in the same K8s cluster & namespace (although the following examples show how to access from external clients):
@@ -99,7 +99,7 @@ spec:
9999
serviceAccountName: whereami
100100
containers:
101101
- name: whereami
102-
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25
102+
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26
103103
resources:
104104
requests:
105105
memory: "512Mi"
@@ -564,7 +564,7 @@ If you'd like to deploy `whereami` via its Helm chart, you could leverage the fo
564564
Deploy the default setup of `whereami` (HTTP frontend):
565565
```sh
566566
helm install whereami oci://us-docker.pkg.dev/google-samples/charts/whereami \
567-
--version 1.2.25
567+
--version 1.2.26
568568
```
569569

570570
Deploy `whereami` as HTTP backend by running the previous `helm install` command with the following parameters:

quickstarts/whereami/app.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,29 @@ def GetPayload(self, request, context):
129129
payload = whereami_payload.build_payload(None)
130130
return whereami_pb2.WhereamiReply(**payload)
131131

132+
# Custom gRPC server interceptor for request logging
133+
class RequestLoggingInterceptor(grpc.ServerInterceptor):
134+
def __init__(self):
135+
self._logger = logging.getLogger(__name__)
136+
137+
def intercept_service(self, continuation, handler_call_details):
138+
handler = continuation(handler_call_details)
139+
140+
# This interceptor only supports unary-unary RPCs
141+
if not handler or not handler.unary_unary:
142+
return handler
143+
144+
def logging_wrapper(request, context):
145+
if handler_call_details.method != f'/{health.SERVICE_NAME}/Check':
146+
self._logger.info(
147+
f"gRPC request received: Method='{handler_call_details.method}', Peer='{context.peer()}'")
148+
return handler.unary_unary(request, context)
149+
150+
return grpc.unary_unary_rpc_method_handler(
151+
logging_wrapper,
152+
request_deserializer=handler.request_deserializer,
153+
response_serializer=handler.response_serializer)
154+
132155

133156
# if selected will serve gRPC endpoint on port 9090
134157
# see https://github.com/grpc/grpc/blob/master/examples/python/xds/server.py
@@ -138,7 +161,7 @@ def grpc_serve():
138161
# working on a proper workaround
139162
server = grpc.server(
140163
futures.ThreadPoolExecutor(max_workers=multiprocessing.cpu_count()+5),
141-
interceptors=(PromServerInterceptor(),)) # interceptor for metrics
164+
interceptors=(PromServerInterceptor(), RequestLoggingInterceptor(),)) # interceptor for metrics and logging
142165

143166
# Add the application servicer to the server.
144167
whereami_pb2_grpc.add_WhereamiServicer_to_server(WhereamigRPC(), server)

quickstarts/whereami/cloudbuild.yaml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,21 @@ steps:
2323
- '-t'
2424
- 'gcr.io/google-samples/whereami:v1'
2525
- '-t'
26-
- 'gcr.io/google-samples/whereami:v1.2.25'
26+
- 'gcr.io/google-samples/whereami:v1.2.26'
2727
- '-t'
28-
- 'gcr.io/google-samples/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
28+
- 'gcr.io/google-samples/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'
2929
- '-t'
3030
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1'
3131
- '-t'
32-
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25'
32+
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26'
3333
- '-t'
34-
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
34+
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'
3535
- '-t'
3636
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1'
3737
- '-t'
38-
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25'
38+
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26'
3939
- '-t'
40-
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
40+
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'
4141
- '.'
4242
dir: 'quickstarts/whereami'
4343
- name: ubuntu
@@ -47,15 +47,15 @@ steps:
4747
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
4848
cd quickstarts/whereami/helm-chart
4949
helm package . # This creates a file similar to whereami-X.Y.Z.tgz
50-
helm push whereami-1.2.25.tgz oci://us-docker.pkg.dev/google-samples/charts
50+
helm push whereami-1.2.26.tgz oci://us-docker.pkg.dev/google-samples/charts
5151
5252
images:
5353
- 'gcr.io/google-samples/whereami:v1'
54-
- 'gcr.io/google-samples/whereami:v1.2.25'
55-
- 'gcr.io/google-samples/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
54+
- 'gcr.io/google-samples/whereami:v1.2.26'
55+
- 'gcr.io/google-samples/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'
5656
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1'
57-
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25'
58-
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
57+
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26'
58+
- 'us-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'
5959
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1'
60-
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25'
61-
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.25-${SHORT_SHA}'
60+
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26'
61+
- 'europe-docker.pkg.dev/google-samples/containers/gke/whereami:sample-public-image-v1.2.26-${SHORT_SHA}'

quickstarts/whereami/helm-chart/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: 1.2.25
18+
version: 1.2.26
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
24-
appVersion: "v1.2.25"
24+
appVersion: "v1.2.26"

quickstarts/whereami/k8s-grpc/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ spec:
5353
- all
5454
privileged: false
5555
readOnlyRootFilesystem: true
56-
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25
56+
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26
5757
resources:
5858
requests:
5959
memory: "512Mi"

quickstarts/whereami/k8s/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ spec:
5353
- all
5454
privileged: false
5555
readOnlyRootFilesystem: true
56-
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.25
56+
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.26
5757
resources:
5858
requests:
5959
memory: "512Mi"

0 commit comments

Comments
 (0)