go-graphite / carbonapi

Implementation of graphite API (graphite-web) in golang
Other
309 stars 140 forks source link

[FR] Support \n and spaces in the query #747

Closed anch665 closed 1 year ago

anch665 commented 1 year ago

Some large requests look very ugly. In addition, grafana also independently changes them when you press the pencil button. For this reason, we use wrapping and formatting queries. but carbonapi can't process them when it sees the \n character in the request. Can this be fixed?

aliasSub(
  transformNull(
    exclude(
      asPercent(
            group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.404.req, 'sumSeries', 10, 12)),
            group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.*.req, 'sumSeries', 10, 12)),
          0),
    'MISSING'),
  0),
'.+asPercent\(([\w]+\.[\w]+).+', '404.\1')

error log 2022-12-14T07:33:53.302+0300 ERROR access request failed {"data": {"handler":"render","carbonapi_uuid":"8d39f5be-4958-473c-9ce3-d8c25a44803c","url":"/render","peer_ip":"10.72.4.76","host":"rtmsasanalys01:8087","format":"json","use_cache":true,"targets":["aliasSub(\n transformNull(\n exclude(\n\t asPercent(\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.404.req, 'sumSeries', 10, 12)),\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.*.req, 'sumSeries', 10, 12)),\n 0),\n 'MISSING'),\n 0),\n'.+asPercent\\(([\\w]+\\.[\\w]+).+', '404.\\1')"],"cache_timeout":60,"runtime":0.000736943,"http_code":400,"reason":"Bad Request\n\nTarget : aliasSub(\n transformNull(\n exclude(\n\t asPercent(\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.404.req, 'sumSeries', 10, 12)),\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.*.req, 'sumSeries', 10, 12)),\n 0),\n 'MISSING'),\n 0),\n'.+asPercent\\(([\\w]+\\.[\\w]+).+', '404.\\1')\nError : missing argument\nParsed so far : aliasSub(\nCould not parse : \n transformNull(\n exclude(\n\t asPercent(\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.404.req, 'sumSeries', 10, 12)),\n group(groupByNodes(collectd.PROD.rtmsasrtdm0*.NginxByPerl.host.*.port.5111.gauge.channelid.*.requesttype.*.login.*.up.*.status.*.req, 'sumSeries', 10, 12)),\n 0),\n 'MISSING'),\n 0),\n'.+asPercent\\(([\\w]+\\.[\\w]+).+', '404.\\1')\n","from":1670970832,"until":1670992434,"from_raw":"1670970832","until_raw":"1670992434","uri":"/render","from_cache":false,"used_backend_cache":false,"request_headers":{"X-Dashboard-Id":"143","X-Grafana-Org-Id":"1","X-Panel-Id":"92"}}}