У меня есть приложение, работающее в 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"
}
]