zoukankan      html  css  js  c++  java
  • apisix-ingress-controller rest调试帮助

    1、从配置看

    http_listen: ":8080"   # the HTTP Server listen address, default is ":8080"
    enable_profiling: true # enable profiling via web interfaces
                           # host:port/debug/pprof, default is true.

    2、ingress/controller中

    apiSrv, err := api.NewServer(cfg)
    
        c := &Controller{
            name:              podName,
            namespace:         podNamespace,
            cfg:               cfg,
            apiServer:         apiSrv,
            apisix:            client,
            metricsCollector:  metrics.NewPrometheusCollector(podName, podNamespace),
            kubeClient:        kubeClient,
            watchingNamespace: watchingNamespace,
            secretSSLMap:      new(sync.Map),
            recorder:          eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: _component}),
    
            podCache: types.NewPodCache(),
        }
    。。。。。。
    
    // Run launches the controller.
    func (c *Controller) Run(stop chan struct{}) error {
        rootCtx, rootCancel := context.WithCancel(context.Background())
        defer rootCancel()
        go func() {
            <-stop
            rootCancel()
        }()
        c.metricsCollector.ResetLeader(false)
    
        go func() {
            if err := c.apiServer.Run(rootCtx.Done()); err != nil {
                log.Errorf("failed to launch API Server: %s", err)
            }
        }()

    3、server中支持了那些项目,gin类型服务模型配置监听

    package api
    
    import (
        "net"
        "net/http"
        "net/http/pprof"
    
        "github.com/gin-gonic/gin"
    
        apirouter "github.com/apache/apisix-ingress-controller/pkg/api/router"
        "github.com/apache/apisix-ingress-controller/pkg/config"
        "github.com/apache/apisix-ingress-controller/pkg/log"
        "github.com/apache/apisix-ingress-controller/pkg/types"
    )
    
    // Server represents the API Server in ingress-apisix-controller.
    type Server struct {
        router       *gin.Engine
        httpListener net.Listener
        pprofMu      *http.ServeMux
    }
    
    // NewServer initializes the API Server.
    func NewServer(cfg *config.Config) (*Server, error) {
        httpListener, err := net.Listen("tcp", cfg.HTTPListen)
        if err != nil {
            return nil, err
        }
        gin.SetMode(gin.ReleaseMode)
        router := gin.New()
        router.Use(gin.Recovery(), gin.Logger())
        apirouter.Mount(router)
    
        srv := &Server{
            router:       router,
            httpListener: httpListener,
        }
    
        if cfg.EnableProfiling {
            srv.pprofMu = new(http.ServeMux)
            srv.pprofMu.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
            srv.pprofMu.HandleFunc("/debug/pprof/profile", pprof.Profile)
            srv.pprofMu.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
            srv.pprofMu.HandleFunc("/debug/pprof/trace", pprof.Trace)
            srv.pprofMu.HandleFunc("/debug/pprof/", pprof.Index)
            router.GET("/debug/pprof/*profile", gin.WrapF(srv.pprofMu.ServeHTTP))
        }
    
        return srv, nil
    }
    
    // Run launches the API Server.
    func (srv *Server) Run(stopCh <-chan struct{}) error {
        go func() {
            <-stopCh
            if err := srv.httpListener.Close(); err != nil {
                log.Errorf("failed to close http listener: %s", err)
            }
        }()
        if err := srv.router.RunListener(srv.httpListener); err != nil && !types.IsUseOfClosedNetConnErr(err) {
            log.Errorf("failed to start API Server: %s", err)
            return err
        }
        return nil
    }

    curl localhost:8080/debug/pprof/cmdline

  • 相关阅读:
    codeforces C. Cows and Sequence 解题报告
    codeforces A. Point on Spiral 解题报告
    codeforces C. New Year Ratings Change 解题报告
    codeforces A. Fox and Box Accumulation 解题报告
    codeforces B. Multitasking 解题报告
    git命令使用
    shell简单使用
    知识束缚
    php 调用系统命令
    数据传输方式(前端与后台 ,后台与后台)
  • 原文地址:https://www.cnblogs.com/it-worker365/p/15415791.html
Copyright © 2011-2022 走看看