that would be great, feel free to post your questions here if needed.

Chao Zhang <[email protected]> 于 2020年11月22日周日 下午4:05写道:

> Many thanks!
>
> Chao Zhang
> https://github.com/tokers
>
> On November 22, 2020 at 3:53:28 PM, Peter Zhu ([email protected]) wrote:
>
> Hi, I think I can try to implement an admin API in Dashboard backend, as
> Chao Zhang said.
>
>
> 在 2020年11月22日 +0800 PM3:16,Zhiyuan Ju <[email protected]>,写道:
> > Anyone would like to take care of the manager-api?
> >
> > Chao Zhang <[email protected]> 于 2020年11月22日周日 下午1:58写道:
> >
> > > OK, let me focus on the APISIX side, however we still need someone to
> > > devote to the development of manager-api.
> > >
> > > Chao Zhang
> > > https://github.com/tokers
> > >
> > > On November 21, 2020 at 8:53:46 PM, Ming Wen ([email protected])
> wrote:
> > >
> > > > I will vote for the first one, which is much simpler.
> > >
> > > +1 for this.
> > >
> > > Thanks,
> > > Ming Wen, Apache APISIX PMC Chair
> > > Twitter: _WenMing
> > >
> > >
> > > Zexuan Luo <[email protected]> 于2020年11月21日周六 上午11:04写道:
> > >
> > > > > 1. APISIX writes the status data into etcd periodically;
> > > > > 2. Introduce another control plane component, let APISIX transmits
> > > > status data to it and the control plane component will write them to
> > > > etcd.
> > > >
> > > > I will vote for the first one, which is much simpler. And we can
> limit
> > > the
> > > > data under /apisix/data_panel, to make it less dangerous.
> > > >
> > > > We can write:
> > > > 1. id
> > > > 2. version
> > > > 3. start_time
> > > > 4. update_time
> > > > periodically.
> > > >
> > > > Chao Zhang <[email protected]> 于2020年11月20日周五 下午2:41写道:
> > > >
> > > > > Hi, there
> > > > >
> > > > > Currently some of our users often confuses their APISIX version,
> their
> > > > etcd
> > > > > version and etcd,
> > > > > which is adverse for solving issues and debugging.
> > > > >
> > > > > So I think a status API is required to tell users the basic
> instance
> > > > > information, just like “who am I”, which is useful when diagnosing
> > > > > problems.
> > > > >
> > > > > The status page could be formatted as a JSON string so the output
> can
> > > be
> > > > > piped with json parsers like jq, fx,
> > > > > for now, basic fields should be put inside the status is:
> > > > >
> > > > > 1) APISIX version, version string of the APISIX instance itself,
> e.g.
> > > > > “2.0”;
> > > > > 2) etcd version, etcd cluster version,
> > > > > e.g. {"etcdserver":"3.5.0-pre","etcdcluster":"3.5.0”};
> > > > > 3) id, id of the current APISIX instance;
> > > > > 4) uptime, elapsed time (in seconds) since APISIX started;
> > > > > 5) IP addresses, the IP addresses of current Pods/VM/Physical
> machine;
> > > > > 6) state, the current instance state, can be “online”, “shutting
> down”,
> > > > > “offline”, which can be used to cooperate with the layer 4 Load
> > > balancer
> > > > > (e.g. LVS + Keepalived), we can provide admin APIs to set the state
> > > > > subsequently;
> > > > >
> > > > > {
> > > > > "id": "ddea4053-4ffd-4f09-b176-b8c5e919916b",
> > > > > "hostname": "localhost.local",
> > > > > "version": "2.0",
> > > > > "state": "online",
> > > > > "etcd_version": {
> > > > > "etcdserver": "3.5.0-pre",
> > > > > "etcdcluster":"3.5.0”
> > > > > },
> > > > > "uptime": 3600,
> > > > > "ip": ["10.0.2.15", "192.168.1.2"]
> > > > > }
> > > > >
> > > > > Other fields can be appended in the future, the APISIX should add
> an
> > > API
> > > > > (like /status) to output these data.
> > > > >
> > > > > So far what we discussed is limited in a single APISIX instance,
> when
> > > we
> > > > > want to insight the whole APISIX cluster, we need to collect each
> > > status
> > > > > data of APISIX instance, show them in APISIX Dashboard.
> > > > >
> > > > > The most tricky problem here is how does an APISIX instance upload
> its
> > > > > status data, there are two options we may consider:
> > > > >
> > > > > 1. APISIX writes the status data into etcd periodically;
> > > > > 2. Introduce another control plane component, let APISIX transmits
> > > > > status data to it and the control plane component will write them
> to
> > > > > etcd.
> > > > >
> > > > > The APISX Dashboard backend should also expose an API to output
> these
> > > > > status data so the frontend can render and show these data.
> > > > >
> > > > > So in a nut shell, we have these stuffs to solve for implementing
> this
> > > > > feature:
> > > > >
> > > > > - APISIX internally uploads these data (either to etcd or another
> > > > > control plane component, we need further discuss)
> > > > > - Implement an admin API in APISIX.
> > > > > - Implement an admin API in Dashboard backend.
> > > > > - Implement the Dashboard frontend web page.
> > > > >
> > > > > Let’s discuss it and realize it together!
> > > > >
> > > > > References:
> > > > >
> > > > > - https://www.envoyproxy.io/docs/envoy/latest/operations/admin
> > > > > - https://doc.traefik.io/traefik/operations/dashboard/
> > > > > - https://docs.konghq.com/2.0.x/admin-api/#information-routes
> > > > >
> > > >
> > >
>

Reply via email to