diff --git a/pkg/serverconfigs/metric_chart.go b/pkg/serverconfigs/metric_chart.go index 12aa82f..7243224 100644 --- a/pkg/serverconfigs/metric_chart.go +++ b/pkg/serverconfigs/metric_chart.go @@ -49,7 +49,7 @@ func FindAllMetricChartTypes() []*shared.Definition { } } -func FindAllMetricChartTypeName(chartType MetricChartType) string { +func FindMetricChartTypeName(chartType MetricChartType) string { for _, def := range FindAllMetricChartTypes() { if def.Code == chartType { return def.Name diff --git a/pkg/serverconfigs/metric_item_utils.go b/pkg/serverconfigs/metric_item_utils.go index e4831f9..9bf67a2 100644 --- a/pkg/serverconfigs/metric_item_utils.go +++ b/pkg/serverconfigs/metric_item_utils.go @@ -2,6 +2,8 @@ package serverconfigs +import "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" + // MetricItemCategory 指标分类 type MetricItemCategory = string @@ -22,29 +24,94 @@ const ( MetricItemPeriodUnitMonth MetricItemPeriodUnit = "month" ) -// HTTP相关指标对象 -type metricKeyDefinition struct { - Name string `json:"name"` - Code string `json:"code"` - Description string `json:"description"` -} - -type metricValueDefinition struct { - Name string `json:"name"` - Code string `json:"code"` - Description string `json:"description"` -} - -func FindAllHTTPMetricKeyDefinitions() []*metricKeyDefinition { - // TODO - - return nil -} - -func FindAllMetricValueDefinitions(category MetricItemCategory) []*metricValueDefinition { +// FindAllMetricKeyDefinitions 指标对象定义 +func FindAllMetricKeyDefinitions(category MetricItemCategory) []*shared.Definition { switch category { case MetricItemCategoryHTTP: - return []*metricValueDefinition{ + return []*shared.Definition{ + { + Name: "客户端地址(IP)", + Code: "${remoteAddr}", + Description: "会依次根据X-Forwarded-For、X-Real-IP、RemoteAddr获取", + }, + { + Name: "直接客户端地址(IP)", + Code: "${rawRemoteAddr}", + Description: "返回直接连接服务的客户端原始IP地址", + }, + { + Name: "客户端用户名", + Code: "${remoteUser}", + Description: "通过基本认证填入的用户名", + }, + { + Name: "请求URI", + Code: "${requestURI}", + Description: "包含参数", + }, + { + Name: "请求路径", + Code: "${requestPath}", + Description: "不包含参数", + }, + { + Name: "文件扩展名", + Code: "${requestPathExtension}", + Description: "请求路径中的文件扩展名,包括点符号,比如.html、.png", + }, + { + Name: "主机名", + Code: "${host}", + Description: "通常是请求的域名", + }, + + { + Name: "请求协议", + Code: "${proto}", + Description: "http或https", + }, + { + Name: "HTTP协议", + Code: "${proto}", + Description: "包含版本的HTTP请求协议,类似于HTTP/1.0", + }, + { + Name: "URL参数值", + Code: "${arg.NAME}", + Description: "单个URL参数值", + }, + { + Name: "Header值", + Code: "${header.NAME}", + Description: "单个Header值,比如${header.User-Agent}", + }, + { + Name: "Cookie值", + Code: "${cookie.NAME}", + Description: "单个cookie值,比如${cookie.sid}", + }, + + // ========= 以下是响应 ========= + { + Name: "响应的Content-Type值", + Code: "${response.contentType}", + }, + } + case MetricItemCategoryTCP: + // TODO + return []*shared.Definition{} + case MetricItemCategoryUDP: + // TODO + return []*shared.Definition{} + } + return []*shared.Definition{} +} + +// FindAllMetricValueDefinitions 指标数值定义 +func FindAllMetricValueDefinitions(category MetricItemCategory) []*shared.Definition { + switch category { + case MetricItemCategoryHTTP: + return []*shared.Definition{ { Name: "请求数", Code: "${countRequest}", @@ -63,7 +130,7 @@ func FindAllMetricValueDefinitions(category MetricItemCategory) []*metricValueDe }, } case MetricItemCategoryTCP: - return []*metricValueDefinition{ + return []*shared.Definition{ { Name: "连接数", Code: "${countConnection}", @@ -78,7 +145,7 @@ func FindAllMetricValueDefinitions(category MetricItemCategory) []*metricValueDe }, } case MetricItemCategoryUDP: - return []*metricValueDefinition{ + return []*shared.Definition{ { Name: "连接数", Code: "${countConnection}", @@ -93,21 +160,16 @@ func FindAllMetricValueDefinitions(category MetricItemCategory) []*metricValueDe }, } } - return []*metricValueDefinition{} + return []*shared.Definition{} } -// FindAllTCPMetricKeyDefinitions TCP相关指标对象 -func FindAllTCPMetricKeyDefinitions() []*metricKeyDefinition { - // TODO - - return nil -} - -// FindAllUDPMetricKeyDefinitions UDP相关指标对象 -func FindAllUDPMetricKeyDefinitions() []*metricKeyDefinition { - // TODO - - return nil +func FindMetricValueName(category MetricItemCategory, code string) string { + for _, def := range FindAllMetricValueDefinitions(category) { + if def.Code == code { + return def.Name + } + } + return code } // HumanMetricTime 格式化时间,让时间更易读 @@ -141,3 +203,19 @@ func HumanMetricTime(periodUnit MetricItemPeriodUnit, time string) string { } return time } + +func FindMetricPeriodUnitName(unit string) string { + switch unit { + case MetricItemPeriodUnitMonth: + return "月" + case MetricItemPeriodUnitWeek: + return "周" + case MetricItemPeriodUnitDay: + return "天" + case MetricItemPeriodUnitHour: + return "小时" + case MetricItemPeriodUnitMinute: + return "分钟" + } + return "" +}