20次发布

0.3.0-dev.5 2024年8月23日
0.3.0-dev.32024年5月29日
0.2.0-beta-dev.72024年3月27日

#318魔法豆

Download history 398/week @ 2024-05-03 468/week @ 2024-05-10 522/week @ 2024-05-17 684/week @ 2024-05-24 718/week @ 2024-05-31 578/week @ 2024-06-07 491/week @ 2024-06-14 411/week @ 2024-06-21 420/week @ 2024-06-28 493/week @ 2024-07-05 409/week @ 2024-07-12 373/week @ 2024-07-19 540/week @ 2024-07-26 488/week @ 2024-08-02 285/week @ 2024-08-09 286/week @ 2024-08-16

1,610 每月下载量
1111 个crate(4个直接)中使用

Apache-2.0

115KB
2.5K SLoC

aitia

因果链建模的实验性库,从观察事件中推断诊断信息

需要更多的文档。

许可证:Apache-2.0


lib.rs:

aitia,一个从因果图中获得洞察的crate

("aitia"是"etiology"的词根,意为“原因”,也是一个容易输入的回文)

在复杂系统中,当某个系统出错时,如果不进行大量的取证调查和探索性日志记录,很难缩小到某个子系统。 aitia旨在帮助缩小可能问题范围的过程。

您定义一组关于您的系统的 Fact,每个Fact都指定一个或多个 [Dep](依赖)。Dep之间的因果关系简单地说就是一个图,每个Fact都连接到其他Fact。当测试您的系统时,您可以检查某个特定的Fact是否为真。如果不是真的,aitia会递归地跟随指定的因果关系,构建一个依赖关系的图,每个依赖关系都会被检查是否为真。遍历只有在以下情况下才会停止:

  1. 遇到一个真实的事实,或者
  2. 遇到一个没有自己依赖的事实(可以说是一个“公理”)
  3. 发现了一个未解决的依赖循环,在这种情况下,整个分支将被丢弃。请注意,因果关系的循环是允许的,只要循环中有一个通过的事实,导致循环被打破。

结果是所有不真实事实的定向无环图(DAG),以原始事实为根。图的边代表逻辑条件或蕴涵:即图中A -> B的边表示“如果A为真,则B必须为真”,同时也表示“如果B不为真,则A不能为真”。这意味着DAG的叶子代表问题的可能根依赖,即“最上游”的已知事实,这些事实可能导致根事实不为真,因此叶子将代表系统中的位置,这些位置可以查找原始事实不为真的原因。

aitia与您编写的事实一样有用。您可以编写非常广泛、模糊的事实,这有助于您在进一步的手动调查中专注于系统的更广部分,或者您可以编写非常具体的事实,这样您可以一眼看出可能的问题。它非常适合迭代地编写事实,最初非常广泛,然后在诊断它帮助您找到的问题时添加更多具体性。

aitia旨在体现推导问题依赖的过程。通过将您对问题的搜索编码到aitia::Dep中,理想情况下,您将永远不必再次寻找该特定问题。

依赖关系

~11–21MB
~274K SLoC