From 2861865c09f4c15bb35ba20414f6a0c81d9d454b Mon Sep 17 00:00:00 2001 From: huanggze Date: Thu, 6 Jun 2019 19:28:52 +0800 Subject: [PATCH] doc: add monitoring and logging api doc Signed-off-by: huanggze --- pkg/apis/logging/v1alpha2/register.go | 253 +++++++------ pkg/apis/monitoring/v1alpha2/register.go | 350 +++++++++++------- pkg/models/log/types.go | 4 +- pkg/models/metrics/metrics.go | 14 +- pkg/simple/client/elasticsearch/esclient.go | 50 +-- .../client/fluentbit/fluentbitcrdclient.go | 16 +- 6 files changed, 392 insertions(+), 295 deletions(-) diff --git a/pkg/apis/logging/v1alpha2/register.go b/pkg/apis/logging/v1alpha2/register.go index 2247e7f76..c2cc8d637 100644 --- a/pkg/apis/logging/v1alpha2/register.go +++ b/pkg/apis/logging/v1alpha2/register.go @@ -24,9 +24,16 @@ import ( "kubesphere.io/kubesphere/pkg/apiserver/logging" "kubesphere.io/kubesphere/pkg/apiserver/runtime" "kubesphere.io/kubesphere/pkg/filter" + "kubesphere.io/kubesphere/pkg/models/log" + esclient "kubesphere.io/kubesphere/pkg/simple/client/elasticsearch" + fluentbitclient "kubesphere.io/kubesphere/pkg/simple/client/fluentbit" + "net/http" ) -const GroupName = "logging.kubesphere.io" +const ( + GroupName = "logging.kubesphere.io" + RespOK = "ok" +) var GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha2"} @@ -41,174 +48,196 @@ func addWebService(c *restful.Container) error { ws.Route(ws.GET("/cluster").To(logging.LoggingQueryCluster). Filter(filter.Logging). - Doc("cluster level log query"). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("workspaces", "workspaces specify").DataType("string").Required(false)). - Param(ws.QueryParameter("workspace_query", "workspace query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("namespaces", "namespaces specify").DataType("string").Required(false)). - Param(ws.QueryParameter("namespace_query", "namespace query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("workloads", "workloads specify").DataType("string").Required(false)). - Param(ws.QueryParameter("workload_query", "workload query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("pods", "pods specify").DataType("string").Required(false)). - Param(ws.QueryParameter("pod_query", "pod query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("containers", "containers specify").DataType("string").Required(false)). - Param(ws.QueryParameter("container_query", "container query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against the cluster."). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("workspaces", "List of workspaces the query will perform against, eg. wk-one,wk-two").DataType("string").Required(false)). + Param(ws.QueryParameter("workspace_query", "List of keywords for filtering workspaces. Workspaces whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("namespaces", "List of namespaces the query will perform against, eg. ns-one,ns-two").DataType("string").Required(false)). + Param(ws.QueryParameter("namespace_query", "List of keywords for filtering namespaces. Namespaces whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("workloads", "List of workloads the query will perform against, eg. wl-one,wl-two").DataType("string").Required(false)). + Param(ws.QueryParameter("workload_query", "List of keywords for filtering workloads. Workloads whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("pods", "List of pods the query will perform against, eg. pod-one,pod-two").DataType("string").Required(false)). + Param(ws.QueryParameter("pod_query", "List of keywords for filtering pods. Pods whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("containers", "List of containers the query will perform against, eg. container-one,container-two").DataType("string").Required(false)). + Param(ws.QueryParameter("container_query", "List of keywords for filtering containers. Containers whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/workspaces/{workspace}").To(logging.LoggingQueryWorkspace). Filter(filter.Logging). - Doc("workspace level log query"). - Param(ws.PathParameter("workspace", "workspace specify").DataType("string").Required(true)). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("namespaces", "namespaces specify").DataType("string").Required(false)). - Param(ws.QueryParameter("namespace_query", "namespace query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("workloads", "workloads specify").DataType("string").Required(false)). - Param(ws.QueryParameter("workload_query", "workload query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("pods", "pods specify").DataType("string").Required(false)). - Param(ws.QueryParameter("pod_query", "pod query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("containers", "containers specify").DataType("string").Required(false)). - Param(ws.QueryParameter("container_query", "container query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against a specific workspace."). + Param(ws.PathParameter("workspace", "Perform query against a specific workspace.").DataType("string").Required(true)). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("namespaces", "List of namespaces the query will perform against, eg. ns-one,ns-two").DataType("string").Required(false)). + Param(ws.QueryParameter("namespace_query", "List of keywords for filtering namespaces. Namespaces whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("workloads", "List of workloads the query will perform against, eg. wl-one,wl-two").DataType("string").Required(false)). + Param(ws.QueryParameter("workload_query", "List of keywords for filtering workloads. Workloads whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("pods", "List of pods the query will perform against, eg. pod-one,pod-two").DataType("string").Required(false)). + Param(ws.QueryParameter("pod_query", "List of keywords for filtering pods. Pods whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("containers", "List of containers the query will perform against, eg. container-one,container-two").DataType("string").Required(false)). + Param(ws.QueryParameter("container_query", "List of keywords for filtering containers. Containers whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}").To(logging.LoggingQueryNamespace). Filter(filter.Logging). - Doc("namespace level log query"). - Param(ws.PathParameter("namespace", "namespace specify").DataType("string").Required(true)). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("workloads", "workloads specify").DataType("string").Required(false)). - Param(ws.QueryParameter("workload_query", "workload query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("pods", "pods specify").DataType("string").Required(false)). - Param(ws.QueryParameter("pod_query", "pod query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("containers", "containers specify").DataType("string").Required(false)). - Param(ws.QueryParameter("container_query", "container query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against a specific namespace."). + Param(ws.PathParameter("namespace", "Perform query against a specific namespace.").DataType("string").Required(true)). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("workloads", "List of workloads the query will perform against, eg. wl-one,wl-two").DataType("string").Required(false)). + Param(ws.QueryParameter("workload_query", "List of keywords for filtering workloads. Workloads whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("pods", "List of pods the query will perform against, eg. pod-one,pod-two").DataType("string").Required(false)). + Param(ws.QueryParameter("pod_query", "List of keywords for filtering pods. Pods whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("containers", "List of containers the query will perform against, eg. container-one,container-two").DataType("string").Required(false)). + Param(ws.QueryParameter("container_query", "List of keywords for filtering containers. Containers whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/workloads/{workload}").To(logging.LoggingQueryWorkload). Filter(filter.Logging). - Doc("workload level log query"). - Param(ws.PathParameter("namespace", "namespace specify").DataType("string").Required(true)). - Param(ws.PathParameter("workload", "workload specify").DataType("string").Required(true)). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("pods", "pods specify").DataType("string").Required(false)). - Param(ws.QueryParameter("pod_query", "pod query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("containers", "containers specify").DataType("string").Required(false)). - Param(ws.QueryParameter("container_query", "container query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against a specific workload."). + Param(ws.PathParameter("namespace", "Specify the namespace of the workload.").DataType("string").Required(true)). + Param(ws.PathParameter("workload", "Perform query against a specific workload.").DataType("string").Required(true)). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("pods", "List of pods the query will perform against, eg. pod-one,pod-two").DataType("string").Required(false)). + Param(ws.QueryParameter("pod_query", "List of keywords for filtering pods. Pods whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("containers", "List of containers the query will perform against, eg. container-one,container-two").DataType("string").Required(false)). + Param(ws.QueryParameter("container_query", "List of keywords for filtering containers. Containers whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods/{pod}").To(logging.LoggingQueryPod). Filter(filter.Logging). - Doc("pod level log query"). - Param(ws.PathParameter("namespace", "namespace specify").DataType("string").Required(true)). - Param(ws.PathParameter("pod", "pod specify").DataType("string").Required(true)). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("containers", "containers specify").DataType("string").Required(false)). - Param(ws.QueryParameter("container_query", "container query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against a specific pod."). + Param(ws.PathParameter("namespace", "Specify the namespace of the pod.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Perform query against a specific pod.").DataType("string").Required(true)). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("containers", "List of containers the query will perform against, eg. container-one,container-two").DataType("string").Required(false)). + Param(ws.QueryParameter("container_query", "List of keywords for filtering containers. Containers whose name contains at least one keyword will be matched for query. Non case-sensitive matching. eg. one,two.").DataType("string").Required(false)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods/{pod}/containers/{container}").To(logging.LoggingQueryContainer). Filter(filter.Logging). - Doc("container level log query"). - Param(ws.PathParameter("namespace", "namespace specify").DataType("string").Required(true)). - Param(ws.PathParameter("pod", "pod specify").DataType("string").Required(true)). - Param(ws.PathParameter("container", "container specify").DataType("string").Required(true)). - Param(ws.QueryParameter("operation", "operation: query statistics").DataType("string").Required(true)). - Param(ws.QueryParameter("log_query", "log query keywords").DataType("string").Required(false)). - Param(ws.QueryParameter("interval", "interval of time histogram").DataType("string").Required(false)). - Param(ws.QueryParameter("start_time", "range start time").DataType("string").Required(false)). - Param(ws.QueryParameter("end_time", "range end time").DataType("string").Required(false)). - Param(ws.QueryParameter("sort", "sort method").DataType("string").Required(false)). - Param(ws.QueryParameter("from", "begin index of result returned").DataType("int").Required(true)). - Param(ws.QueryParameter("size", "size of result returned").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Log query against a specific container."). + Param(ws.PathParameter("namespace", "Specify the namespace of the pod.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the pod of the container.").DataType("string").Required(true)). + Param(ws.PathParameter("container", "Perform query against a specific container.").DataType("string").Required(true)). + Param(ws.QueryParameter("operation", "Query operation type. One of query, statistics, histogram.").DataType("string").Required(true)). + Param(ws.QueryParameter("log_query", "List of keywords for filtering logs. The query returns log containing at least one keyword. Non case-sensitive matching. eg. err,INFO.").DataType("string").Required(false)). + Param(ws.QueryParameter("interval", "Count logs at intervals. Valid only if operation is histogram. The unit can be ms(milliseconds), s(seconds), m(minutes), h(hours), d(days), w(weeks), M(months), q(quarters), y(years). eg. 30m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start_time", "Start time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("end_time", "End time of query range, eg. 1559664000000.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort", "Sort log by time. One of acs, desc.").DataType("string").DefaultValue("desc").Required(false)). + Param(ws.QueryParameter("from", "Beginning index of result to return. Use this option together with size.").DataType("int").DefaultValue("0").Required(false)). + Param(ws.QueryParameter("size", "Size of result to return.").DataType("int").DefaultValue("10").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(esclient.Response{}). + Returns(http.StatusOK, RespOK, esclient.Response{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/fluentbit/filters").To(logging.LoggingQueryFluentbitFilters). Filter(filter.Logging). - Doc("log fluent-bit filters query"). + Doc("List all Fluent bit filter plugins. This API is work-in-process."). Metadata(restfulspec.KeyOpenAPITags, tags)). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.POST("/fluentbit/filters").To(logging.LoggingUpdateFluentbitFilters). Filter(filter.Logging). - Doc("log fluent-bit filters update"). + Doc("Add a new Fluent bit filter plugin. This API is work-in-process."). Metadata(restfulspec.KeyOpenAPITags, tags)). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/fluentbit/outputs").To(logging.LoggingQueryFluentbitOutputs). Filter(filter.Logging). - Doc("log fluent-bit outputs query"). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("List all Fluent bit output plugins."). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(log.FluentbitOutputsResult{}). + Returns(http.StatusOK, RespOK, log.FluentbitOutputsResult{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.POST("/fluentbit/outputs").To(logging.LoggingInsertFluentbitOutput). Filter(filter.Logging). - Doc("log fluent-bit outputs insert"). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Add a new Fluent bit output plugin."). + Metadata(restfulspec.KeyOpenAPITags, tags). + Reads(fluentbitclient.OutputPlugin{}). + Writes(log.FluentbitOutputsResult{}). + Returns(http.StatusOK, RespOK, log.FluentbitOutputsResult{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.POST("/fluentbit/outputs/{output}").To(logging.LoggingUpdateFluentbitOutput). Filter(filter.Logging). - Doc("log fluent-bit outputs update"). - Param(ws.PathParameter("output", "output id").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Update a Fluent bit output plugin."). + Param(ws.PathParameter("output", "ID of the output to update.").DataType("string").Required(true)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Reads(fluentbitclient.OutputPlugin{}). + Writes(log.FluentbitOutputsResult{}). + Returns(http.StatusOK, RespOK, log.FluentbitOutputsResult{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.DELETE("/fluentbit/outputs/{output}").To(logging.LoggingDeleteFluentbitOutput). Filter(filter.Logging). - Doc("log fluent-bit outputs delete"). - Param(ws.PathParameter("output", "output id").DataType("int").Required(true)). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Delete a Fluent bit output plugin."). + Param(ws.PathParameter("output", "ID of the output to delete.").DataType("string").Required(true)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(log.FluentbitOutputsResult{}). + Returns(http.StatusOK, RespOK, log.FluentbitOutputsResult{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) diff --git a/pkg/apis/monitoring/v1alpha2/register.go b/pkg/apis/monitoring/v1alpha2/register.go index 9862b4f5e..fb0eb0a3b 100644 --- a/pkg/apis/monitoring/v1alpha2/register.go +++ b/pkg/apis/monitoring/v1alpha2/register.go @@ -23,9 +23,14 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "kubesphere.io/kubesphere/pkg/apiserver/monitoring" "kubesphere.io/kubesphere/pkg/apiserver/runtime" + "kubesphere.io/kubesphere/pkg/models/metrics" + "net/http" ) -const GroupName = "monitoring.kubesphere.io" +const ( + GroupName = "monitoring.kubesphere.io" + RespOK = "ok" +) var GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha2"} @@ -40,217 +45,280 @@ func addWebService(c *restful.Container) error { tags := []string{"Monitoring"} ws.Route(ws.GET("/cluster").To(monitoring.MonitorCluster). - Doc("monitor cluster level metrics"). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("cluster_cpu_utilisation")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get cluster-level metrics."). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. cluster_cpu|cluster_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/nodes").To(monitoring.MonitorNode). - Doc("monitor nodes level metrics"). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("node_cpu_utilisation")). - Param(ws.QueryParameter("resources_filter", "node re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get node-level metrics."). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. node_cpu|node_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Node filter in regexp pattern, eg. i-caojnter|i-cmu82ogj.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort nodes by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/nodes/{node}").To(monitoring.MonitorNode). - Doc("monitor specific node level metrics"). - Param(ws.PathParameter("node", "specific node").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("node_cpu_utilisation")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific node metrics."). + Param(ws.PathParameter("node", "Specify the target node.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. node_cpu|node_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces").To(monitoring.MonitorNamespace). - Doc("monitor namespaces level metrics"). - Param(ws.QueryParameter("resources_filter", "namespaces re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("namespace_memory_utilisation")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get namespace-level metrics."). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. namespace_cpu|namespace_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Namespace filter in regexp pattern, eg. namespace-1|namespace-2.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort namespaces by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}").To(monitoring.MonitorNamespace). - Doc("monitor specific namespace level metrics"). - Param(ws.PathParameter("namespace", "specific namespace").DataType("string").Required(true).DefaultValue("monitoring")). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("namespace_memory_utilisation")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific namespace metrics."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. namespace_cpu|namespace_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods").To(monitoring.MonitorPod). - Doc("monitor pods level metrics"). - Param(ws.PathParameter("namespace", "specific namespace").DataType("string").Required(true).DefaultValue("monitoring")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("pod_memory_utilisation_wo_cache")). - Param(ws.QueryParameter("resources_filter", "pod re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get pod-level metrics of a given namespace."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. pod_cpu|pod_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Pods filter in regexp pattern, eg. coredns-77b8449dc9-hd6gd|coredns-77b8449dc9-b4n74.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort pods by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods/{pod}").To(monitoring.MonitorPod). - Doc("monitor specific pod level metrics"). - Param(ws.PathParameter("namespace", "specific namespace").DataType("string").Required(true).DefaultValue("monitoring")). - Param(ws.PathParameter("pod", "specific pod").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("pod_memory_utilisation_wo_cache")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific pod metrics."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the target pod.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. pod_cpu|pod_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/nodes/{node}/pods").To(monitoring.MonitorPod). - Doc("monitor pods level metrics by nodeid"). - Param(ws.PathParameter("node", "specific node").DataType("string").Required(true).DefaultValue("i-k89a62il")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("pod_memory_utilisation_wo_cache")). - Param(ws.QueryParameter("resources_filter", "pod re2 expression filter").DataType("string").Required(false).DefaultValue("openpitrix.*")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get metrics of all pod on a specific node."). + Param(ws.PathParameter("node", "Specify the target node.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. node_cpu|node_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Pod filter in regexp pattern, eg. coredns-77b8449dc9-hd6gd|coredns-77b8449dc9-b4n74.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort pods by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/nodes/{node}/pods/{pod}").To(monitoring.MonitorPod). - Doc("monitor specific pod level metrics by nodeid"). - Param(ws.PathParameter("node", "specific node").DataType("string").Required(true).DefaultValue("i-k89a62il")). - Param(ws.PathParameter("pod", "specific pod").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("pod_memory_utilisation_wo_cache")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific pod metrics under a given namespace."). + Param(ws.PathParameter("node", "Specify the target node.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the target pod.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. pod_cpu|pod_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/nodes/{node}/pods/{pod}/containers").To(monitoring.MonitorContainer). - Doc("monitor specific pod level metrics by nodeid"). - Param(ws.PathParameter("node", "specific node").DataType("string").Required(true)). - Param(ws.PathParameter("pod", "specific pod").DataType("string").Required(true)). - Param(ws.QueryParameter("resources_filter", "container re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...").DataType("string").Required(false)). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("pod_memory_utilisation_wo_cache")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get container-level metrics under a given node and pod."). + Param(ws.PathParameter("node", "Specify the target node.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the target pod.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. container_cpu|container_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Container filter in regexp pattern.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort containers by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods/{pod}/containers").To(monitoring.MonitorContainer). - Doc("monitor containers level metrics"). - Param(ws.PathParameter("namespace", "specific namespace").DataType("string").Required(true).DefaultValue("monitoring")). - Param(ws.PathParameter("pod", "specific pod").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("resources_filter", "container re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...").DataType("string").Required(false)). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("container_memory_utilisation_wo_cache")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get container-level metrics under a given namespace and pod."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the target pod.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. container_cpu|container_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Container filter in regexp pattern.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort containers by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/pods/{pod}/containers/{container}").To(monitoring.MonitorContainer). - Doc("monitor specific container level metrics"). - Param(ws.PathParameter("namespace", "specific namespace").DataType("string").Required(true).DefaultValue("monitoring")). - Param(ws.PathParameter("pod", "specific pod").DataType("string").Required(true).DefaultValue("")). - Param(ws.PathParameter("container", "specific container").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("metrics_name", "metrics name cpu memory...").DataType("string").Required(true).DefaultValue("container_memory_utilisation_wo_cache")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific container metrics under a given node and pod."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.PathParameter("pod", "Specify the target pod.").DataType("string").Required(true)). + Param(ws.PathParameter("container", "Specify the target container.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. container_cpu|container_memory.").DataType("string").Required(false)).Metadata(restfulspec.KeyOpenAPITags, tags). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) // Only use this api to monitor status of pods under the {workload} // To monitor a specific workload, try the next two apis with "resources_filter" ws.Route(ws.GET("/namespaces/{namespace}/workloads/{workload_kind}/{workload}").To(monitoring.MonitorWorkload). - Doc("monitor specific workload level metrics"). - Param(ws.PathParameter("namespace", "namespace").DataType("string").Required(true).DefaultValue("kube-system")). - Param(ws.PathParameter("workload_kind", "workload kind").DataType("string").Required(true).DefaultValue("daemonset")). - Param(ws.PathParameter("workload", "workload name").DataType("string").Required(true).DefaultValue("")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...").DataType("string").Required(false)). - Param(ws.QueryParameter("resources_filter", "pod re2 expression filter").DataType("string").Required(false).DefaultValue("openpitrix.*")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "max metric items in a page").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific workload metrics under a given namespace."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.PathParameter("workload_kind", "Specify the target workload kind. One of deployment, daemonset, statefulset. Other values will be interpreted as any of three.").DataType("string").Required(true).DefaultValue("(.*)")). + Param(ws.PathParameter("workload", "Specify the target workload.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. workload_cpu|workload_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/workloads/{workload_kind}").To(monitoring.MonitorWorkload). - Doc("monitor specific workload kind level metrics"). - Param(ws.PathParameter("namespace", "namespace").DataType("string").Required(true).DefaultValue("kube-system")). - Param(ws.PathParameter("workload_kind", "workload kind").DataType("string").Required(true).DefaultValue("daemonset")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...").DataType("string").Required(false)). - Param(ws.QueryParameter("resources_filter", "pod re2 expression filter").DataType("string").Required(false).DefaultValue("openpitrix.*")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "max metric items in a page").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get workload-level metrics of specific workload kind."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.PathParameter("workload_kind", "Specify the target workload kind. One of deployment, daemonset, statefulset. Other values will be interpreted as any of three.").DataType("string").Required(true).DefaultValue("(.*)")). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. node_cpu|node_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Workload filter in regexp pattern.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort workloads by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/namespaces/{namespace}/workloads").To(monitoring.MonitorWorkload). - Doc("monitor all workload level metrics"). - Param(ws.PathParameter("namespace", "namespace").DataType("string").Required(true).DefaultValue("kube-system")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...").DataType("string").Required(false)). - Param(ws.QueryParameter("resources_filter", "pod re2 expression filter").DataType("string").Required(false).DefaultValue("")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get workload-level metrics under a given namespace."). + Param(ws.PathParameter("namespace", "Specify the target namespace.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. workload_cpu|workload_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Workload filter in regexp pattern.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort workloads by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) // list all namespace in this workspace by selected metrics ws.Route(ws.GET("/workspaces/{workspace}").To(monitoring.MonitorOneWorkspace). - Doc("monitor workspaces level metrics"). - Param(ws.PathParameter("workspace", "workspace name").DataType("string").Required(true)). - Param(ws.QueryParameter("resources_filter", "namespaces filter").DataType("string").Required(false).DefaultValue("k.*")). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("namespace_memory_utilisation_wo_cache")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get specific workspace metrics."). + Param(ws.PathParameter("workspace", "Specify the target workspace.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. workspace_cpu|workspace_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/workspaces").To(monitoring.MonitorAllWorkspaces). - Doc("monitor workspaces level metrics"). - Param(ws.QueryParameter("metrics_filter", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("workspace_memory_utilisation")). - Param(ws.QueryParameter("resources_filter", "workspaces re2 expression filter").DataType("string").Required(false).DefaultValue(".*")). - Param(ws.QueryParameter("sort_metric", "sort metric").DataType("string").Required(false)). - Param(ws.QueryParameter("sort_type", "ascending descending order").DataType("string").Required(false)). - Param(ws.QueryParameter("page", "page number").DataType("string").Required(false).DefaultValue("1")). - Param(ws.QueryParameter("limit", "metrics name cpu memory...in re2 regex").DataType("string").Required(false).DefaultValue("4")). - Param(ws.QueryParameter("type", "rank, statistic").DataType("string").Required(false).DefaultValue("rank")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get workspace-level metrics."). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. workspace_cpu|workspace_memory.").DataType("string").Required(false)). + Param(ws.QueryParameter("resources_filter", "Workspace filter in regexp pattern, eg. workspace_1|workspace_2.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_metric", "Sort workspaces by the specified metric. Valid only if type is rank.").DataType("string").Required(false)). + Param(ws.QueryParameter("sort_type", "Sorting order, one of asc, desc. Valid only if type is rank.").DefaultValue("desc.").DataType("string").Required(false)). + Param(ws.QueryParameter("page", "The number of paged results per metric. Default to return the whole metrics.").DataType("int").Required(false).DefaultValue("1")). + Param(ws.QueryParameter("limit", "Max count of items per page.").DataType("int").Required(false).DefaultValue("5")). + Param(ws.QueryParameter("type", "Additional operation to the result. One of rank, statistic.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) ws.Route(ws.GET("/components/{component}").To(monitoring.MonitorComponent). - Doc("monitor component level metrics"). - Param(ws.QueryParameter("metrics_filter", "metrics names in re2 regex").DataType("string").Required(false).DefaultValue("")). - Metadata(restfulspec.KeyOpenAPITags, tags)). + Doc("Get service component-level metrics."). + Param(ws.PathParameter("component", "Specify the target component. One of etcd, apiserver, scheduler, controller_manager, coredns, prometheus.").DataType("string").Required(true)). + Param(ws.QueryParameter("metrics_filter", "Metrics filter in regexp pattern, eg. etcd_server_list|coredns_proxy.").DataType("string").Required(false)). + Param(ws.QueryParameter("step", "Used to get metrics over a range of time. Query resolution step. eg. 10m.").DataType("string").Required(false)). + Param(ws.QueryParameter("start", "Used to get metrics over a range of time. Start time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("end", "Used to get metrics over a range of time. End time of query range. eg. 1559762729.").DataType("string").Required(false)). + Param(ws.QueryParameter("time", "Used to get metrics at a given time point. eg. 1559762729.").DataType("string").Required(false)). + Metadata(restfulspec.KeyOpenAPITags, tags). + Writes(metrics.FormatedLevelMetric{}). + Returns(http.StatusOK, RespOK, metrics.FormatedLevelMetric{})). Consumes(restful.MIME_JSON, restful.MIME_XML). Produces(restful.MIME_JSON) diff --git a/pkg/models/log/types.go b/pkg/models/log/types.go index c2356d986..97a4779b3 100644 --- a/pkg/models/log/types.go +++ b/pkg/models/log/types.go @@ -48,6 +48,6 @@ type FluentbitFiltersResult struct { } type FluentbitOutputsResult struct { - Status int `json:"status"` - Outputs []fb.OutputPlugin `json:"outputs,omitempty"` + Status int `json:"status" description:"response status"` + Outputs []fb.OutputPlugin `json:"outputs,omitempty" description:"array of fluent bit output plugins"` } diff --git a/pkg/models/metrics/metrics.go b/pkg/models/metrics/metrics.go index 0537e93c7..79d03d016 100644 --- a/pkg/models/metrics/metrics.go +++ b/pkg/models/metrics/metrics.go @@ -47,19 +47,19 @@ const ( ) type FormatedLevelMetric struct { - MetricsLevel string `json:"metrics_level"` - Results []FormatedMetric `json:"results"` + MetricsLevel string `json:"metrics_level" description:"metrics level, eg. cluster"` + Results []FormatedMetric `json:"results" description:"actual array of results"` } type FormatedMetric struct { - MetricName string `json:"metric_name,omitempty"` - Status string `json:"status"` - Data FormatedMetricData `json:"data,omitempty"` + MetricName string `json:"metric_name,omitempty" description:"metrics name, eg. scheduler_up_sum"` + Status string `json:"status" description:"result status, one of error, success"` + Data FormatedMetricData `json:"data,omitempty" description:"actual metrics result"` } type FormatedMetricData struct { - Result []map[string]interface{} `json:"result"` - ResultType string `json:"resultType"` + Result []map[string]interface{} `json:"result" description:"result presenting metric labels, a series of time points and their instant values"` + ResultType string `json:"resultType" description:"result type, one of matrix, vector"` } type MetricResultValues []MetricResultValue diff --git a/pkg/simple/client/elasticsearch/esclient.go b/pkg/simple/client/elasticsearch/esclient.go index 0e44fbac5..0d8c7f58c 100644 --- a/pkg/simple/client/elasticsearch/esclient.go +++ b/pkg/simple/client/elasticsearch/esclient.go @@ -286,49 +286,49 @@ func createQueryRequest(param QueryParameters) (int, []byte, error) { } type Response struct { - Status int `json:"status"` - Workspace string `json:"workspace,omitempty"` - Shards Shards `json:"_shards"` - Hits Hits `json:"hits"` - Aggregations json.RawMessage `json:"aggregations"` + Status int `json:"status" description:"query status"` + Workspace string `json:"workspace,omitempty" description:"workspace the query was performed against"` + Shards Shards `json:"_shards" description:"tells shard information"` + Hits Hits `json:"hits" description:"search results"` + Aggregations json.RawMessage `json:"aggregations" description:"aggregation results"` } type Shards struct { - Total int64 `json:"total"` - Successful int64 `json:"successful"` - Skipped int64 `json:"skipped"` - Failed int64 `json:"failed"` + Total int64 `json:"total" description:"tells how many shards were searched"` + Successful int64 `json:"successful" description:"count of the successful searched shards"` + Skipped int64 `json:"skipped" description:"count of the skipped searched shards"` + Failed int64 `json:"failed" description:"count of the failed searched shards"` } type Hits struct { - Total int64 `json:"total"` - Hits []Hit `json:"hits"` + Total int64 `json:"total" description:"total number of documents matching our search criteria"` + Hits []Hit `json:"hits" description:"actual array of search results"` } type Hit struct { - Source Source `json:"_source"` - HighLight HighLight `json:"highlight"` - Sort []int64 `json:"sort"` + Source Source `json:"_source" description:"search result item"` + HighLight HighLight `json:"highlight" description:"highlighted log fragment"` + Sort []int64 `json:"sort" description:"sort key for results"` } type Source struct { - Log string `json:"log"` - Time string `json:"time"` - Kubernetes Kubernetes `json:"kubernetes"` + Log string `json:"log" description:"the log message"` + Time string `json:"time" description:"log timestamp"` + Kubernetes Kubernetes `json:"kubernetes" description:"kubernetes addon information on the log"` } type Kubernetes struct { - Namespace string `json:"namespace_name"` - Pod string `json:"pod_name"` - Container string `json:"container_name"` - Host string `json:"host"` + Namespace string `json:"namespace_name" description:"the namespace the log is from"` + Pod string `json:"pod_name" description:"the pod the log is from"` + Container string `json:"container_name" description:"the container the log is from"` + Host string `json:"host" description:"the node the log if from"` } type HighLight struct { - LogHighLights []string `json:"log,omitempty"` - NamespaceHighLights []string `json:"kubernetes.namespace_name.keyword,omitempty"` - PodHighLights []string `json:"kubernetes.pod_name.keyword,omitempty"` - ContainerHighLights []string `json:"kubernetes.container_name.keyword,omitempty"` + LogHighLights []string `json:"log,omitempty" description:"log messages to highlight"` + NamespaceHighLights []string `json:"kubernetes.namespace_name.keyword,omitempty" description:"namespaces to highlight"` + PodHighLights []string `json:"kubernetes.pod_name.keyword,omitempty" description:"pods to highlight"` + ContainerHighLights []string `json:"kubernetes.container_name.keyword,omitempty" description:"containers to highlight"` } type LogRecord struct { diff --git a/pkg/simple/client/fluentbit/fluentbitcrdclient.go b/pkg/simple/client/fluentbit/fluentbitcrdclient.go index 86cc6aa41..e914bc757 100644 --- a/pkg/simple/client/fluentbit/fluentbitcrdclient.go +++ b/pkg/simple/client/fluentbit/fluentbitcrdclient.go @@ -64,24 +64,24 @@ type FluentBitStatus struct { // Plugin struct for fluent-bit plugins type Plugin struct { - Type string `json:"type"` - Name string `json:"name"` - Parameters []Parameter `json:"parameters"` + Type string `json:"type" description:"output plugin type, eg. fluentbit-output-es"` + Name string `json:"name" description:"output plugin name, eg. fluentbit-output-es"` + Parameters []Parameter `json:"parameters" description:"output plugin configuration parameters"` } // Fluent-bit output plugins type OutputPlugin struct { Plugin - Id string `json:"id"` - Enable bool `json:"enable"` - Updatetime time.Time `json:"updatetime,omitempty"` + Id string `json:"id,omitempty" description:"output plugin uuid"` + Enable bool `json:"enable" description:"current output plugin status, one of true, false"` + Updatetime time.Time `json:"updatetime,omitempty" description:"last updatetime of the output plugin"` } // Parameter generic parameter type to handle values from different sources type Parameter struct { - Name string `json:"name"` + Name string `json:"name" description:"configuration parameter key, eg. Name. refer to fluent bit official doc for more information."` ValueFrom *ValueFrom `json:"valueFrom,omitempty"` - Value string `json:"value"` + Value string `json:"value" description:"configuration parameter value, eg. es. refer to fluent bit official doc for more information."` } // ValueFrom generic type to determine value origin