Hello YuanSheng,

I also prefer the second way, as I do some analysis about the shared dict
implemtation in ngx_lua module,scanning the shared dict memory is
feasible.

But doing this straightforwardly may have some concurrent problem,when the
healthchecker in other worker processes are writing the shared dict(adding
a target for example),
how do we handle this problem? Do you have any suggestions?

On Mon, Mar 2, 2020 at 4:33 PM YuanSheng Wang <[email protected]> wrote:

> I think the second way is better.
> It's just that we need to study how it is stored in share memory.
>
> On Mon, Mar 2, 2020 at 10:47 AM liyong <[email protected]> wrote:
>
> > Hello community,
> >
> > If I want to know the health status for all probed targets when build an
> > upstream healthy dashboard, how to effectively fetch or expose the
> realtime
> > or near realtime data?
> >
> > 1.  `apisix` use the healthcheck status by calling `get_target_status` in
> > `apisix.balancer.fetch_health_nodes` function at balancer_by_lua phase.
> we
> > may add probe here but this is a passively method, when the target does
> not
> > be routed, we don't know its status.
> >
> > 2. `lua-resty-healthcheck` use `ngx.shared.DICT` entry for each probed
> > target internal health(healthy, unhealthy, mostly_healthy,
> > mostly_unhealthy), do we have some way to explore the internal for
> > `ngx.shared.DICT`
> >
> > 3.  Use log collection: when the `lua-resty-healthcheck` lib have changed
> > the internal state of the target, output a formatted log and we collected
> > it.
> >
> > One more ...
> >
>
>
> --
>
> *MembPhis*
> My github: https://github.com/membphis
> Apache APISIX: https://github.com/apache/incubator-apisix
>

Reply via email to