You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2023/07/03 03:27:48 UTC
[dubbo-admin] 02/02: update
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch refactor-with-go-components-experimental
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git
commit ad81ff8a0b0242dc6a5d3c7ed9cdf4638d9b597f
Author: chickenlj <ke...@gmail.com>
AuthorDate: Mon Jul 3 11:14:52 2023 +0800
update
---
pkg/core/runtime/component/component.go | 3 -
pkg/core/runtime/reports/reports.go | 277 --------------------------------
2 files changed, 280 deletions(-)
diff --git a/pkg/core/runtime/component/component.go b/pkg/core/runtime/component/component.go
index d3f6a21b..5e18dac4 100755
--- a/pkg/core/runtime/component/component.go
+++ b/pkg/core/runtime/component/component.go
@@ -2,9 +2,6 @@ package component
import (
"sync"
-
- "github.com/kumahq/kuma/pkg/core"
- "github.com/kumahq/kuma/pkg/util/channels"
)
var log = core.Log.WithName("bootstrap")
diff --git a/pkg/core/runtime/reports/reports.go b/pkg/core/runtime/reports/reports.go
deleted file mode 100755
index 29219a1e..00000000
--- a/pkg/core/runtime/reports/reports.go
+++ /dev/null
@@ -1,277 +0,0 @@
-package reports
-
-import (
- "context"
- "crypto/tls"
- "fmt"
- "net"
- "os"
- "strconv"
- "strings"
- "sync"
- "time"
-
- "github.com/pkg/errors"
-
- mesh_proto "github.com/kumahq/kuma/api/mesh/v1alpha1"
- kuma_cp "github.com/kumahq/kuma/pkg/config/app/kuma-cp"
- config_core "github.com/kumahq/kuma/pkg/config/core"
- "github.com/kumahq/kuma/pkg/core"
- "github.com/kumahq/kuma/pkg/core/resources/apis/mesh"
- "github.com/kumahq/kuma/pkg/core/resources/apis/system"
- "github.com/kumahq/kuma/pkg/core/resources/registry"
- core_runtime "github.com/kumahq/kuma/pkg/core/runtime"
- "github.com/kumahq/kuma/pkg/core/user"
- kuma_version "github.com/kumahq/kuma/pkg/version"
-)
-
-const (
- pingInterval = 3600
- pingHost = "kong-hf.konghq.com"
- pingPort = 61832
-)
-
-var (
- log = core.Log.WithName("core").WithName("reports")
-)
-
-/*
- - buffer initialized upon Init call
- - append adds more keys onto it
-*/
-
-type reportsBuffer struct {
- sync.Mutex
- mutable map[string]string
- immutable map[string]string
-}
-
-func fetchDataplanes(ctx context.Context, rt core_runtime.Runtime) (*mesh.DataplaneResourceList, error) {
- dataplanes := mesh.DataplaneResourceList{}
- if err := rt.ReadOnlyResourceManager().List(ctx, &dataplanes); err != nil {
- return nil, errors.Wrap(err, "could not fetch dataplanes")
- }
-
- return &dataplanes, nil
-}
-
-func fetchMeshes(ctx context.Context, rt core_runtime.Runtime) (*mesh.MeshResourceList, error) {
- meshes := mesh.MeshResourceList{}
- if err := rt.ReadOnlyResourceManager().List(ctx, &meshes); err != nil {
- return nil, errors.Wrap(err, "could not fetch meshes")
- }
-
- return &meshes, nil
-}
-
-func fetchZones(ctx context.Context, rt core_runtime.Runtime) (*system.ZoneResourceList, error) {
- zones := system.ZoneResourceList{}
- if err := rt.ReadOnlyResourceManager().List(ctx, &zones); err != nil {
- return nil, errors.Wrap(err, "could not fetch zones")
- }
- return &zones, nil
-}
-
-func fetchNumPolicies(ctx context.Context, rt core_runtime.Runtime) (map[string]string, error) {
- policyCounts := map[string]string{}
-
- for _, descr := range registry.Global().ObjectDescriptors() {
- typedList := descr.NewList()
- k := "n_" + strings.ToLower(string(descr.Name))
- if err := rt.ReadOnlyResourceManager().List(ctx, typedList); err != nil {
- return nil, errors.Wrap(err, fmt.Sprintf("could not fetch %s", k))
- }
- policyCounts[k] = strconv.Itoa(len(typedList.GetItems()))
- }
- return policyCounts, nil
-}
-
-func fetchNumOfServices(ctx context.Context, rt core_runtime.Runtime) (int, int, error) {
- insights := mesh.ServiceInsightResourceList{}
- if err := rt.ReadOnlyResourceManager().List(ctx, &insights); err != nil {
- return 0, 0, errors.Wrap(err, "could not fetch service insights")
- }
- internalServices := 0
- for _, insight := range insights.Items {
- internalServices += len(insight.Spec.Services)
- }
-
- externalServicesList := mesh.ExternalServiceResourceList{}
- if err := rt.ReadOnlyResourceManager().List(ctx, &externalServicesList); err != nil {
- return 0, 0, errors.Wrap(err, "could not fetch external services")
- }
- return internalServices, len(externalServicesList.Items), nil
-}
-
-func (b *reportsBuffer) marshall() (string, error) {
- var builder strings.Builder
-
- _, err := fmt.Fprintf(&builder, "<14>")
- if err != nil {
- return "", err
- }
-
- for k, v := range b.immutable {
- _, err := fmt.Fprintf(&builder, "%s=%s;", k, v)
- if err != nil {
- return "", err
- }
- }
-
- for k, v := range b.mutable {
- _, err := fmt.Fprintf(&builder, "%s=%s;", k, v)
- if err != nil {
- return "", err
- }
- }
-
- return builder.String(), nil
-}
-
-// XXX this function retrieves all dataplanes and all meshes;
-// ideally, the number of dataplanes and number of meshes
-// should be pushed from the outside rather than pulled
-func (b *reportsBuffer) updateEntitiesReport(rt core_runtime.Runtime) error {
- ctx := user.Ctx(context.Background(), user.ControlPlane)
- dps, err := fetchDataplanes(ctx, rt)
- if err != nil {
- return err
- }
- b.mutable["dps_total"] = strconv.Itoa(len(dps.Items))
-
- ngateways := 0
- gatewayTypes := map[string]int{}
- for _, dp := range dps.Items {
- spec := dp.GetSpec().(*mesh_proto.Dataplane)
- gateway := spec.GetNetworking().GetGateway()
- if gateway != nil {
- ngateways++
- gatewayType := strings.ToLower(gateway.GetType().String())
- gatewayTypes["gateway_dp_type_"+gatewayType] += 1
- }
- }
- b.mutable["gateway_dps"] = strconv.Itoa(ngateways)
- for gtype, n := range gatewayTypes {
- b.mutable[gtype] = strconv.Itoa(n)
- }
-
- meshes, err := fetchMeshes(ctx, rt)
- if err != nil {
- return err
- }
- b.mutable["meshes_total"] = strconv.Itoa(len(meshes.Items))
-
- switch rt.Config().Mode {
- case config_core.Standalone:
- b.mutable["zones_total"] = strconv.Itoa(1)
- case config_core.Global:
- zones, err := fetchZones(ctx, rt)
- if err != nil {
- return err
- }
- b.mutable["zones_total"] = strconv.Itoa(len(zones.Items))
- }
-
- internalServices, externalServices, err := fetchNumOfServices(ctx, rt)
- if err != nil {
- return err
- }
- b.mutable["internal_services"] = strconv.Itoa(internalServices)
- b.mutable["external_services"] = strconv.Itoa(externalServices)
- b.mutable["services_total"] = strconv.Itoa(internalServices + externalServices)
-
- policyCounts, err := fetchNumPolicies(ctx, rt)
- if err != nil {
- return err
- }
-
- for k, count := range policyCounts {
- b.mutable[k] = count
- }
- return nil
-}
-
-func (b *reportsBuffer) dispatch(rt core_runtime.Runtime, host string, port int, pingType string, extraFn core_runtime.ExtraReportsFn) error {
- if err := b.updateEntitiesReport(rt); err != nil {
- return err
- }
- b.mutable["signal"] = pingType
- b.mutable["cluster_id"] = rt.GetClusterId()
- b.mutable["uptime"] = strconv.FormatInt(int64(time.Since(rt.GetStartTime())/time.Second), 10)
- if extraFn != nil {
- if valMap, err := extraFn(rt); err != nil {
- return err
- } else {
- b.Append(valMap)
- }
- }
- pingData, err := b.marshall()
- if err != nil {
- return err
- }
-
- conf := &tls.Config{}
- conn, err := tls.Dial("tcp", net.JoinHostPort(host,
- strconv.FormatUint(uint64(port), 10)), conf)
- if err != nil {
- return err
- }
-
- _, err = fmt.Fprint(conn, pingData)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-// Append information to the mutable portion of the reports buffer
-func (b *reportsBuffer) Append(info map[string]string) {
- b.Lock()
- defer b.Unlock()
-
- for key, value := range info {
- b.mutable[key] = value
- }
-}
-
-func (b *reportsBuffer) initImmutable(rt core_runtime.Runtime) {
- b.immutable["version"] = kuma_version.Build.Version
- b.immutable["product"] = kuma_version.Product
- b.immutable["unique_id"] = rt.GetInstanceId()
- b.immutable["backend"] = rt.Config().Store.Type
- b.immutable["mode"] = rt.Config().Mode
-
- hostname, err := os.Hostname()
- if err == nil {
- b.immutable["hostname"] = hostname
- }
-}
-
-func startReportTicker(rt core_runtime.Runtime, buffer *reportsBuffer, extraFn core_runtime.ExtraReportsFn) {
- go func() {
- err := buffer.dispatch(rt, pingHost, pingPort, "start", extraFn)
- if err != nil {
- log.V(2).Info("failed sending usage info", "cause", err.Error())
- }
- for range time.Tick(time.Second * pingInterval) {
- err := buffer.dispatch(rt, pingHost, pingPort, "ping", extraFn)
- if err != nil {
- log.V(2).Info("failed sending usage info", "cause", err.Error())
- }
- }
- }()
-}
-
-// Init core reports
-func Init(rt core_runtime.Runtime, cfg kuma_cp.Config, extraFn core_runtime.ExtraReportsFn) {
- var buffer reportsBuffer
- buffer.immutable = make(map[string]string)
- buffer.mutable = make(map[string]string)
-
- buffer.initImmutable(rt)
-
- if cfg.Reports.Enabled {
- startReportTicker(rt, &buffer, extraFn)
- }
-}