Назад | Перейти на главную страницу

Аналитика трафика Google App Engine по UserAgent / операционной системе

У меня есть приложение, работающее в Google App Engine. Их экосистема, кажется, предоставляет некоторые возможности для анализа журналов в StackDriver.

На всю жизнь я не могу понять, как получить простую диаграмму HTTP-запросов с разбивкой по пользовательскому агенту или операционной системе.

Как настроить такой график?

На данный момент это невозможно, как описано в таблице под «Виды метрик» раздел документации, где говорится, что вы не можете создать настраиваемую метрику с типом значения STRING.

Я подтвердил это, используя функцию create_metric_descriptor в соответствующий файл репо и редактируем его тело с помощью:

descriptor.value_type = (monitoring_v3.enums.MetricDescriptor.ValueType.STRING)  

и получил эту ошибку:

InvalidArgument: 400 Field metricDescriptor.valueType had an invalid value of "STRING": When creating metric custom.googleapis.com/my_metric_6365: the value type is not supported for custom metrics.

В любом случае, вы все равно можете получить ценную информацию из Stackdriver Logging, чтобы передать ее любому методу анализа данных и визуализации по вашему выбору. По возможности вы извлекаете информацию об операционной системе из поля protoPayload.userAgent.

Просто поэкспериментируйте с Cloud SDK, например, следующим образом:

$ project_id= #FILL
$ module_id=default #EDIT
$ version_id= #FILL
$ gcloud logging read "resource.type=gae_app AND resource.labels.module_id=$module_id AND resource.labels.version_id=$version_id AND logName=(projects/$project_id/logs/stderr OR projects/$project_id/logs/appengine.googleapis.com%2Frequest_log)" --format "json(receiveTimestamp, protoPayload.userAgent, protoPayload.ip, protoPayload.resource)"

Вы получите такие записи:

[
   {
            "protoPayload": {
                    "ip": "....",
                    "resource": "/",
                    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
            },
            "receiveTimestamp": "2019-09-19T15:39:42.236439758Z"
   },
   {
            "protoPayload": {
                    "ip": "...",
                    "resource": "/",
                    "userAgent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G930F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36"
            },
            "receiveTimestamp": "2019-09-19T15:39:41.153786772Z"
    },
    {
            "protoPayload": {
                    "ip": "...",
                    "resource": "/",
                    "userAgent": "Mozilla/5.0 (Windows NT 5.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"
            },
            "receiveTimestamp": "2019-09-19T15:39:33.286861169Z"
   },
   {
            "protoPayload": {
                    "ip": "...",
                    "resource": "/",
                    "userAgent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20130331 Firefox/21.0"
            },
            "receiveTimestamp": "2019-09-19T15:39:31.259811179Z"
    },
    {
            "protoPayload": {
                    "ip": "...",
                    "resource": "/",
                    "userAgent": "curl/7.66.0"
            },
            "receiveTimestamp": "2019-09-19T15:39:01.134762065Z"
    },
    {
            "protoPayload": {
                    "ip": "...",
                    "resource": "/",
                    "userAgent": "Wget/1.17 (linux-gnu)"
            },
            "receiveTimestamp": "2019-09-19T15:38:54.488718412Z"
    }
]