xref: /aosp_15_r20/external/grpc-grpc/examples/python/debug/get_stats.py (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker# Copyright 2019 The gRPC Authors
2*cc02d7e2SAndroid Build Coastguard Worker#
3*cc02d7e2SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker#
7*cc02d7e2SAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker#
9*cc02d7e2SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker# limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker"""Poll statistics from the server."""
15*cc02d7e2SAndroid Build Coastguard Worker
16*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import absolute_import
17*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import division
18*cc02d7e2SAndroid Build Coastguard Workerfrom __future__ import print_function
19*cc02d7e2SAndroid Build Coastguard Worker
20*cc02d7e2SAndroid Build Coastguard Workerimport argparse
21*cc02d7e2SAndroid Build Coastguard Workerimport logging
22*cc02d7e2SAndroid Build Coastguard Worker
23*cc02d7e2SAndroid Build Coastguard Workerimport grpc
24*cc02d7e2SAndroid Build Coastguard Workerfrom grpc_channelz.v1 import channelz_pb2
25*cc02d7e2SAndroid Build Coastguard Workerfrom grpc_channelz.v1 import channelz_pb2_grpc
26*cc02d7e2SAndroid Build Coastguard Worker
27*cc02d7e2SAndroid Build Coastguard Worker
28*cc02d7e2SAndroid Build Coastguard Workerdef run(addr):
29*cc02d7e2SAndroid Build Coastguard Worker    with grpc.insecure_channel(addr) as channel:
30*cc02d7e2SAndroid Build Coastguard Worker        channelz_stub = channelz_pb2_grpc.ChannelzStub(channel)
31*cc02d7e2SAndroid Build Coastguard Worker        # This RPC pulls server-level metrics, like sent/received messages,
32*cc02d7e2SAndroid Build Coastguard Worker        # succeeded/failed RPCs. For more info see:
33*cc02d7e2SAndroid Build Coastguard Worker        # https://github.com/grpc/grpc/blob/master/src/proto/grpc/channelz/channelz.proto
34*cc02d7e2SAndroid Build Coastguard Worker        response = channelz_stub.GetServers(channelz_pb2.GetServersRequest())
35*cc02d7e2SAndroid Build Coastguard Worker        print(f"Info for all servers: {response}")
36*cc02d7e2SAndroid Build Coastguard Worker
37*cc02d7e2SAndroid Build Coastguard Worker
38*cc02d7e2SAndroid Build Coastguard Workerdef main():
39*cc02d7e2SAndroid Build Coastguard Worker    parser = argparse.ArgumentParser()
40*cc02d7e2SAndroid Build Coastguard Worker    parser.add_argument(
41*cc02d7e2SAndroid Build Coastguard Worker        "--addr",
42*cc02d7e2SAndroid Build Coastguard Worker        nargs=1,
43*cc02d7e2SAndroid Build Coastguard Worker        type=str,
44*cc02d7e2SAndroid Build Coastguard Worker        default="[::]:50051",
45*cc02d7e2SAndroid Build Coastguard Worker        help="the address to request",
46*cc02d7e2SAndroid Build Coastguard Worker    )
47*cc02d7e2SAndroid Build Coastguard Worker    args = parser.parse_args()
48*cc02d7e2SAndroid Build Coastguard Worker    run(addr=args.addr)
49*cc02d7e2SAndroid Build Coastguard Worker
50*cc02d7e2SAndroid Build Coastguard Worker
51*cc02d7e2SAndroid Build Coastguard Workerif __name__ == "__main__":
52*cc02d7e2SAndroid Build Coastguard Worker    logging.basicConfig()
53*cc02d7e2SAndroid Build Coastguard Worker    main()
54