<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Chronicles for On-line Diagnosis of Distributed Systems</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Xavier Le Guillou?</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Irisa - Universite ́ de Rennes 1 Campus de Beaulieu 35042 Rennes Ce ́dex</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2008</year>
      </pub-date>
      <fpage>28</fpage>
      <lpage>39</lpage>
      <abstract>
        <p>The formalism of chronicles has been proposed to monitor and diagnose dynamic physical systems. Even if efficient chronicle recognition algorithms exist, it is now well-known that distributed approaches are better suited to monitor actual systems. In this article, we adapt the chronicle-based approach to a distributed context and illustrate this work on the monitoring of software components.</p>
      </abstract>
      <kwd-group>
        <kwd>on-line diagnosis</kwd>
        <kwd>distributed systems</kwd>
        <kwd>chronicle recognition</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <sec id="sec-1-1">
        <title>Monitoring and diagnosing dynamic systems have become very active topics in research</title>
        <p>
          and development for a few years. Besides continuous models based on differential
equations, essentially used in control theory and discrete event systems based on finite state
machines (automata, Petri nets, . . . ), a formalism commonly used for on-line
monitoring, in particular by people from the artificial intelligence community, is the one of
chronicles. This formalism, proposed in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], has been widely used and extended [
          <xref ref-type="bibr" rid="ref2 ref3 ref4">2–4</xref>
          ].
A chronicle describes a situation that is worth identifying within the diagnosis
context. It is made up a set of events and temporal constraints between those events. As
a consequence, this formalism fits particularly well problems that consider a temporal
dimension. The set of interesting chronicles constitutes the base of chronicles. Then,
monitoring the system consists in analyzing flows of events, and recognizing on fly
patterns described by the base of chronicles. Efficient algorithms exist which explain that
this approach has been used for industrial applications as well as medical ones [
          <xref ref-type="bibr" rid="ref2 ref5 ref6">2, 5, 6</xref>
          ].
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>One of the key issues of model-based approaches for on-line monitoring is the size</title>
        <p>
          of the model which is generally too large when dealing with real applications.
Distributed or decentralized approaches have been proposed to cope with this problem, like
[
          <xref ref-type="bibr" rid="ref10 ref7 ref8 ref9">7–10</xref>
          ]. The idea is to consider the system as a set of interacting components instead of a
unique entity. The behavior of the system is thus described by a set of local component
models and by the synchronization constraints between the component models.
        </p>
      </sec>
      <sec id="sec-1-3">
        <title>Considering chronicle-based approaches, to our knowledge, no distributed approaches exist and the contribution of this paper consists in adapting the chronicle-based approach to distributed systems.</title>
        <p>? under the direction of M.-O. Cordier</p>
      </sec>
      <sec id="sec-1-4">
        <title>This work has been motivated by an application that aims at monitoring the behavior</title>
        <p>of software components, and more precisely of web services within the context of the</p>
      </sec>
      <sec id="sec-1-5">
        <title>WS-DIAMOND (Web Service DIAgnosability, MONitoring and Diagnosis) European</title>
        <p>project.In this context, a request is sent to a web service which collaborates with other
services to provide the adequate reply. Faults may propagate from one service to another
and diagnosing them is a crucial issue, in order to react properly. We use a simplified
example of an e-foodshop to illustrate our proposal.</p>
        <p>We first recall the principles of the chronicle recognition approach and give basic
definitions in Sect. 2. We introduce in Sect. 3 the simplified example that will be used
all along this paper. In Sect. 4, we show how to extend the chronicle-based approach to
distributed systems. We first describe the architecture of a chronicle-based distributed
system (4.1). Then we extend the chronicle formalism to deal with synchronization
constraints (4.2). We describe in 4.3 a push-pull algorithm able to compute a global
diagnosis from the local diagnoses, computed by locally distributed chronicle recognition
systems, by checking the synchronization constraints. After an illustrative example in</p>
      </sec>
      <sec id="sec-1-6">
        <title>4.4, we compare our proposal to related work in Sect. 5 and conclude in Sect. 6.</title>
        <p>2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Chronicle Recognition Approach</title>
      <sec id="sec-2-1">
        <title>The chronicle recognition approach (first introduced in [1]) relies on a set of patterns, named chronicles, which constitutes the chronicle base. Let us recall the formalism and the chronicle recognition algorithm.</title>
        <p>2.1</p>
        <sec id="sec-2-1-1">
          <title>Formalism of Chronicles</title>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>A chronicle is a set of observable events which are time-constrained and is characteristic of a situation.</title>
      </sec>
      <sec id="sec-2-3">
        <title>An event type defines what is observed within the system, e.g. the name of an activity</title>
        <p>act, the name augmented with the fact that act is starting (namely act+) or ending
(namely act¡), the name enriched with observable parameters act(?var1; : : : ; ?varn)
or a combination of those possibilities. E denotes the set of possible event types. An
event is a pair (e; ?t) where e 2 E is an event type and ?t the occurrence date of the
event.</p>
        <p>A chronicle (model) C is a pair (S; T ) where S is a set of events and T a set of
constraints between their occurrence dates. When its variables and its occurrence dates are
instantiated, a chronicle is called a chronicle instance.
2.2</p>
        <sec id="sec-2-3-1">
          <title>Chronicle Recognition</title>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>A chronicle recognition tool, called CRS (Chronicle Recognition System), has been</title>
        <p>developed by C. Dousson1. It is in charge of analyzing the input stream of events and
of identifying, on the fly, any pattern matching a situation described by a chronicle.</p>
      </sec>
      <sec id="sec-2-5">
        <title>Chronicles are compiled into temporal constraint networks which are processed by ef</title>
        <p>ficient graph algorithms. CRS is based on a complete forecast of the possible dates for</p>
      </sec>
      <sec id="sec-2-6">
        <title>1 http://crs.elibel.tm.fr/</title>
        <p>each event that has not occurred yet. This set (called temporal window) is reduced by
propagation of the dates of observed events through the temporal constraint network.</p>
      </sec>
      <sec id="sec-2-7">
        <title>When a new event arrives in the input stream, new instances of chronicles are generated in the set of hypotheses, which is managed as a tree. Instances are discarded as soon as possible, when constraints are violated or when temporal windows become empty.</title>
        <p>
          I1
(a,1)
(a,1)
b,[
          <xref ref-type="bibr" rid="ref2 ref4">2,4</xref>
          ]
I2
a
(a,3)
(a,1)
(a,3)
b
b,[
          <xref ref-type="bibr" rid="ref3 ref4">3,4</xref>
          ]
b,[
          <xref ref-type="bibr" rid="ref4 ref6">4,6</xref>
          ]
[
          <xref ref-type="bibr" rid="ref1 ref3">1,3</xref>
          ]
Chronicle model
(b,5)
time
- Discarded
(a,3)
I3 (a,3)
b,[
          <xref ref-type="bibr" rid="ref5 ref6">5,6</xref>
          ]
(b,5)
        </p>
      </sec>
      <sec id="sec-2-8">
        <title>To illustrate the ideas developed in this paper, we consider an orchestration of three</title>
        <p>web services, a shop, a supplier and a warehouse, that provide e-shopping capabilities
to users. This application keeps the essential properties of the applications we aim to
monitor. In particular, we consider closed environments, where a workflow-like
description of each web service (Fig. 2) involved in the processing of the request is supposed
to be available.</p>
      </sec>
      <sec id="sec-2-9">
        <title>A customer wants to place an order and selects items on the shop. This list of items</title>
        <p>is transferred to a supplier which sends a reservation request to a warehouse, for each
item of the list. The warehouse returns an acknowledgement to the supplier for each
item request and, at the end of the item list, the supplier sends a list of the available
items to the shop which forwards it to the customer. The customer agreement terminates
the process.</p>
      </sec>
      <sec id="sec-2-10">
        <title>Faults may happen during this process. Figure 2.a shows two of them (represented by pentagons), related with the shop. First, when placing his order, the customer may Proceedings of CAiSE-DC 2008 31</title>
        <p>make a data acquisition error, which may result in unexpected items on his
reservation list. Then, a timeout may occur when calling the supplier. We consider that only
timeouts may occur on the supplier (Fig. 2.b), when calling the warehouse. On the
warehouse (Fig. 2.c), things are more complicated. First, an item may be out of stock,
resulting in an incomplete reservation list. Then, an internal error may happen, resulting
in a denial of service.</p>
        <p>Figure 3 presents two processes that may result in the same observation on the shop,
i.e. a cancellation of the order due to an incorrect reservation list: (a) a data acquisition
error, ordering “eggs and teak” instead of “eggs and tea”, for instance, and (b) a stock
error happening on the warehouse. Here, we notice that two distinct errors that happen
on two distinct services can result in the same local problem, hence the necessity of
diagnosing the system globally in order to repair in an adequate way.</p>
        <p>SHOP
{eggs,teak}</p>
        <p>SUPP</p>
        <p>WH SHOP{eggs,tea}</p>
        <p>SUPP</p>
        <p>WH
{eggs}
avail
{teak}
avail
{eggs}
avail
{tea}
notAvail
{eggs,teak}</p>
        <p>{eggs}
(a)</p>
        <p>(b)</p>
        <p>Fig. 3. Two scenarii that may result in a cancelled order</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Extension to Distributed Environments</title>
      <sec id="sec-3-1">
        <title>Diagnosing distributed systems thanks to chronicles requires to define a modular diagnosis architecture capable of merging diagnoses provided by local chronicle-based diagnosers and to enrich the chronicle formalism with synchronization constraints.</title>
        <p>4.1</p>
        <sec id="sec-3-1-1">
          <title>Architecture</title>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>As a fault occurring on a service often propagates to other services, we base our approach on the merging of local diagnoses. As a consequence, we enrich the initial formalism of chronicles with synchronization constraints that allow the broker to spot homologous chronicles and merge them.</title>
      </sec>
      <sec id="sec-3-3">
        <title>Before defining a distributed chronicle, let us firstly define what is a synchronization point.</title>
      </sec>
      <sec id="sec-3-4">
        <title>The status of a variable is a boolean that denotes if the value of a chronicle variable is</title>
        <p>normal (:err) or abnormal (err) in a given execution case. A synchronization
variable is a pair (?var; status) where ?var is a (non temporal) chronicle variable and
status the status of this variable inside a given chronicle model.</p>
        <p>A synchronization point is a tuple (e; fvarsg; servtype) where e is an event type,
fvarsg a set of synchronization variables linked with this event type and servtype a
type of remote service the local service communicates with. An instance of a
synchronization point is a synchronization point in which variables are instantiated, and
servtype is instantiated as the effective address of the remote service.
A synchronization point is incoming if it corresponds to a servremote ! servlocal
communication, outgoing for the contrary (see example chronicle below).</p>
      </sec>
      <sec id="sec-3-5">
        <title>Referring to Fig. 2.a and Sect. 3, here is one of the two synchronization points on the</title>
      </sec>
      <sec id="sec-3-6">
        <title>SHOP, which is instantiated as follows, in the execution case of an external error (see Fig. 6):</title>
        <p>(ChkN Reserve+; f(?SHOP listIn; err)g; supplier).</p>
      </sec>
      <sec id="sec-3-7">
        <title>It expresses the fact that the error is coming from the supplier, through the ?SHOPlistIn variable, which is received by the SHOP at the end of the ChkNReserve activity.</title>
      </sec>
      <sec id="sec-3-8">
        <title>A distributed chronicle is a classical chronicle enriched with a “color” and a “syn</title>
        <p>chronization” part, so that we can merge it with chronicles from adjacent services.
The color of a chronicle K represents the degree of importance of a chronicle and its
capacity to trigger a global diagnosis process. Two colors are used: red for faults that
may trigger the broker and green for normal behaviors and non critical faults.
Distributed chronicle: a distributed chronicle is a tuple CD = (S; T ; O; I; K) where
S is a set of events, T a graph of constraints between their occurrence dates, O and I
are respectively two sets of outgoing and incoming synchronization points, and K is the
color of the chronicle.</p>
      </sec>
      <sec id="sec-3-9">
        <title>Let us consider the chronicle describing the external error case. We have the distributed</title>
        <p>chronicle model CD = (S; T ; O; I; K):
S = f (ReceiveOrder; ?t1);
(ChkN Reserve¡(?SHOP listOut); ?t2);
(ChkN Reserve+(?SHOP listIn); ?t3);
(SendBill; ?t4);
(ReceiveConf irm; ?t5);
(F orwardOrder; ?t6)
g
T = f?t1 &lt;?t2; ?t2 &lt;?t3; ?t3 &lt;?t4; ?t4 &lt;?t5 &lt;?t6g
O = f(ChkN Reserve¡; f(?SHOP listOut; :err)g; supplier)g
I = f(ChkN Reserve+; f(?SHOP listIn; err)g; supplier)g
K = red</p>
      </sec>
      <sec id="sec-3-10">
        <title>This chronicle triggers the broker, hence its red color. Having defined chronicles for each behavior of each service taking part in the foodshop orchestration, we have the tables shown in Fig. 6, in which we only give the synchronization part of the chronicles. red chronicles are written in bold case.</title>
        <p>4.3</p>
        <sec id="sec-3-10-1">
          <title>Algorithms</title>
        </sec>
      </sec>
      <sec id="sec-3-11">
        <title>Our approach consists in merging local chronicles in order to compute a set of can</title>
        <p>didate global diagnoses. This set of diagnoses is represented by a diagnosis tree as
explained below. There are two steps in the global diagnosis process (Fig. 5). In a first
step, at “push” time, local diagnosers send recognized chronicles to the broker, which
triggers the global diagnosis process. In a second step, at “pull” time, i.e. when the
push</p>
        <p>pull
Chronicle filter</p>
        <p>Diagnosis tree
integration</p>
        <p>grafting
Instances of applicant</p>
        <p>chronicles (CRS)
logs
base of chronicles
(a)</p>
        <p>Global diagnoser
push</p>
        <p>pull
(b)
global diagnoser needs information, it queries local diagnosers their chronicles
recognized previously or in future. This push-pull mechanism is implemented through a filter
as explained below.</p>
      </sec>
      <sec id="sec-3-12">
        <title>The computation of the local diagnosis relies on a CRS module fed by the logs of</title>
        <p>the web service and sending its recognized chronicles to the global diagnoser (Fig. 5).</p>
        <p>In order to avoid sending useless chronicles, a filter M is set for each running
process. In f ilter mode, only red recognized chronicles are sent to the global diagnoser.
Green chronicles are stored in a chronicle buffer Cbuf . Nevertheless, at “pull” time, the
global diagnoser can change M from f ilter to open, which flushes Cbuf in order to
provide the global diagnoser with all the available information. In open mode, both
red or green newly recognized chronicles will be directly sent to the global diagnoser.</p>
      </sec>
      <sec id="sec-3-13">
        <title>Algorithm 1 illustrates this operation.</title>
        <p>init: mode M := f ilter, chronicle set Cbuf := ;;
on event chronicle c recognized do
if (M = f ilter ^ c:color = red) _ M = open then</p>
        <p>Broker:push(c);
else
end</p>
        <p>Cbuf := Cbuf [ fcg;
end
end
on event LocalDiagnoser.pull() do
foreach c 2 Cbuf do Broker:push(c);
Cbuf := ;, M := open;</p>
      </sec>
      <sec id="sec-3-14">
        <title>Algorithm 1: Local diagnoser management</title>
        <p>The global diagnoser algorithm relies on a diagnosis tree Dt in charge of treasuring
all the candidate diagnoses under the shape of partially recognized global chronicles
(Fig. 5:(b)). Each candidate diagnosis is represented by a path leading to a constraintless
node in Dt. The global diagnoser algorithm (Algorithm 2) manages this tree and queries
local diagnosers in order to make it grow and complete the pending paths.</p>
        <p>The initial diagnosis tree only contains the emptynode which, being constraintless,
is compatible with any recognized chronicle. When a recognized chronicle c is sent by
a service s to the global diagnoser, two operations are performed. First, Dt is traversed,
trying to combine each node n with c thanks to the status of corresponding variables. In
case of a compatibility between n and c, a child node containing c and the
synchronization constraints that remain to check is grafted under n in Dt. Then, the global diagnoser
changes to open the mode of all the services mentioned in c in order to collect all the
information needed for a global diagnosis (Algorithm 2).</p>
        <p>init: diagnosis tree Dt := emptynode;
on event Broker.push(chronicle c) do
foreach node n of Dt do
if c compatible with n then</p>
        <p>n:addChild(c);
end
end
foreach service s mentioned in c do</p>
        <p>s:LocalDiagnoser:pull();
end
end</p>
      </sec>
      <sec id="sec-3-15">
        <title>Algorithm 2: Global diagnoser management</title>
        <p>When a candidate diagnosis (i.e. a constraintless node) is computed in Dt, the
broker forwards it to an external repair module and proceeds with the exhibition of other
candidate diagnoses.</p>
        <sec id="sec-3-15-1">
          <title>4.4 Illustration on the Example</title>
        </sec>
      </sec>
      <sec id="sec-3-16">
        <title>The following example was tested on a distributed chronicle-based diagnosis platform called CARDECRS [11], developed during this PhD thesis.</title>
      </sec>
      <sec id="sec-3-17">
        <title>We consider a customer placing an order on the SHOP, order which is forwarded</title>
        <p>to the SUPPlier. For each product of the item list, the SUPP calls the WareHouse so as
to book the corresponding product. Unfortunately, a product is missing which provokes
the recognition of the WH:stockErr chronicle, the color of which is green, because the</p>
      </sec>
      <sec id="sec-3-18">
        <title>WH doesn’t consider being out of stock as an error. The broker is not triggered and the</title>
        <p>execution goes on. But when the SUPP receives the negative answer of the WH, the red
chronicle SUPP:extErr is recognized and the SUPP “pushes” this chronicle towards the
broker, triggering a global diagnosis process while the service execution goes on.</p>
        <p>Dt only contains the root node, at this point. This node is compatible with the
constraints of SUPP:extErr, listed in Fig.6, and a new node containing SUPP:extErr and
its constraints is grafted under the root node. After this, the broker changes to open the
mode of WH, “pulling” the previously recognized WH:stockErr chronicle towards it.</p>
        <p>Dt now contains two nodes. WH:stockErr is compatible with the empty root node,
which results in the grafting of a child node under the root, containing WH:stockErr</p>
        <p>SHOP ?listOut ?listIn
normal :err :err
dataErr err err
extErr :err err
timeout :err undef
SUPP ?listIn ?itemOut ?itemIn ?listOut
normal :err :err :err :err
fwdErr err err err err
extErr :err :err err err
timeout :err :err undef undef</p>
        <p>WH ?itemIn ?itemOut
normal :err :err
fwdErr err err
stockErr :err err
hardErr :err undef
and its constraints. WH:stockErr is also compatible with SUPP:extErr, as the
homologous variables have the same status: ?SU P P itemOut and ?W H itemI n are :err,
?SU P P itemI n and ?W H itemOut are err. This way, a child node is grafted under</p>
      </sec>
      <sec id="sec-3-19">
        <title>SUPP:extErr, containing WH:stockErr and the remaining unchecked constraints (Fig. 7).</title>
      </sec>
      <sec id="sec-3-20">
        <title>The “pulling” process goes on, interrogating the SHOP and waiting for its recog</title>
        <p>nized chronicles. At the end of the orchestration execution, Dt exhibits a single
constraintless node, which is then the unique candidate diagnosis:
SHOP:extErr, SUPP:extErr, WH:stockErr.</p>
        <p>SUPP:extErr
?SUPP:listIn(notErr)
?SUPP:itemOut(notErr)
?SUPP:itemIn(err)
?SUPP:listOut(err)
WH:stockErr+SUPP:extErr
?SUPP:listIn(notErr)
?SUPP:listOut(err)
[]</p>
        <p>WH:stockErr
?WH:itemIn(notErr)
?WH:itemOut(err)</p>
      </sec>
      <sec id="sec-3-21">
        <title>Let us consider the complexity of such an approach. On the local side, the complexity only depends on CRS, which has already been successfully used in large scale systems. Proceedings of CAiSE-DC 2008 37</title>
      </sec>
      <sec id="sec-3-22">
        <title>Some basic rules about chronicle writing allow to optimize the use of CRS: PID filtering avoids the recognition of useless cross-process chronicles, delays in chronicle models flush chronicle instances automatically, etc.</title>
      </sec>
      <sec id="sec-3-23">
        <title>On the broker side, the size of the tree only depends on the number of chronicles</title>
        <p>recognized on each service, hence a need for discriminating and exclusive chronicles.</p>
      </sec>
      <sec id="sec-3-24">
        <title>In the worst case, considering all the chronicles are compatible, we demonstrate that</title>
        <p>the maximum number of nodes in Dt is
nmax =</p>
        <p>Y(jCsj + 1)
s2S
with S the set of implied services and Cs the set of chronicles recognized on s.
5</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Related Work and Discussion</title>
      <p>
        Within the context of the supervision of dynamic systems, many works use the
formalism of chronicles [
        <xref ref-type="bibr" rid="ref12 ref2 ref3 ref4 ref6">4, 2, 3, 12, 6</xref>
        ]. Nevertheless, few deal with using chronicles in a
distributed context. The approach presented in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] focuses on temporal aspects and
proposes a distributed checking of temporal constraints (by introducing both local and
global temporal constraints). In [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], the authors study the problem of acquiring
chronicles from the fault model of a system, described with Petri nets. They use a method
based on unfolding Petri nets. The formalism of chronicles is enriched with pre- and
post-conditions on the current system state, and the recognition algorithm modified
consequently. However, to our knowledge, nobody directly worked on the use of distributed
chronicles, in particular on the integration of synchronization constraints between
components inside the formalism and on the adaptation of the corresponding algorithm, as
we propose in this article.
      </p>
      <p>
        The way we approach the problem of monitoring dynamic systems from a
distributed chronicle-based modeling of the system may be compared with works dealing
with distributed approaches of monitoring discrete-event systems, such as [
        <xref ref-type="bibr" rid="ref10 ref15 ref16 ref17 ref7 ref8 ref9">7–9, 15, 10,
16, 17</xref>
        ]. In each of those works, local diagnoses computed by the different components
of the system are synchronized in order to compute a diagnosis taking into account the
constraints between components. For instance, the approach of [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is not so far away
from ours, as they fit parts together to build the system diagnosis, like in a puzzle. Those
parts, called tiles, are labelled by alarms and represent pieces of trajectories. The main
difference between the two approaches, apart from the Petri-net-based formalism they
use, is that theirs is fully distributed and uses communications between local
components to do the computations, without any supervisor. In our decentralized case, a
supervisor is in charge of fitting local chronicles together after having synchronized them,
so that a global chronicle could be built. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] is also interested in software components
monitoring. The components of the system are described by Petri nets and each
component is associated with a local controller that monitors the evolution of this component,
observing the messages exchanged between the component and its neighbors.
      </p>
      <sec id="sec-4-1">
        <title>Concerning web services monitoring, we can cite [19], the objective of which is</title>
        <p>to acquire a model as automata that will permit to monitor components thanks to the</p>
      </sec>
      <sec id="sec-4-2">
        <title>BPEL description of their process. Closer to us, [20] proposes to use planning tools to</title>
        <p>
          allow the user to express his requests thanks to a high-level language and to control the
execution of his plans by interlacing execution and plan update. The authors of [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]
are interested in checking on line the consistency between what a web service should
do, called a contract, and its effective execution. Contracts are expressed as constraints
in a constraint-oriented language, and integrated in the BPEL files under the shape of
annotations. Then, monitors, implemented as web services, observe the behavior of the
web services and are capable of detecting timeout problems or functional errors. In [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ],
a quite similar approach relies on a monitoring of plans to monitor requests and uses the
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>KPLTL temporal logic in order to express the specifications that have to be respected.</title>
        <p>
          In [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], the decentralized architecture is close to ours. Each web service is equipped
with a local diagnoser generating hypotheses that are consistent with the local model
and the observations. A supervisor merges local diagnoses to compute a global one,
by propagating hypotheses from a local diagnoser to its neighbors. The main
difference is that they rely on a static diagnosis approach: using dependencies between state
variables, their approach consists in explaining the alarms that have arisen at a given
time. In our case, we monitor the behavior of the components as it evolves. This allows,
on the one hand, to identify problems related to alarm firing and,on the other hand, to
forestall a potential problem and avoid its occurrence.
6
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>Our contribution in this paper is to propose a distributed chronicle-based monitoring
and diagnosis approach. Even if it is now recognized that distributed approaches are the
only realistic way to monitor large-scale systems, no work exist, to our knowledge, as
far as chronicle-based approaches are concerned. We propose a distributed architecture
in which a broker service is in charge of synchronizing the local diagnoses computed
from chronicles at the component level. We extend the formalism of chronicles and
introduce synchronization points that express the synchronization constraints which are
checked by the broker according to a push-pull mechanism. We describe the main
algorithms and illustrate them on a simplified e-shopping example. A platform has been
developed and allows us to make experiments in the framework of the WS-DIAMOND</p>
      <sec id="sec-5-1">
        <title>European project, dedicated to the monitoring of software components.</title>
      </sec>
      <sec id="sec-5-2">
        <title>The main perspectives are twofold. The first one is to couple the diagnosis service</title>
        <p>with a repair service (developed by a partner of ours), the goal being to ensure a good</p>
      </sec>
      <sec id="sec-5-3">
        <title>QoS, even in case of fault occurrences. The second one is to build acquisition tools to help building the set of local chronicles, starting from workflow descriptions. A first step in this direction can be found in [19].</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Dousson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gaborit</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghallab</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Situation recognition: representation and algorithms</article-title>
          .
          <source>In: Proc. of the Int. Joint Conf. on Artificial Intelligence (IJCAI'93)</source>
          . (
          <year>1993</year>
          )
          <fpage>166</fpage>
          -
          <lpage>172</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cordier</surname>
            ,
            <given-names>M.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krivine</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laborie</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , Thie´baux, S.:
          <article-title>Alarm processing and reconfiguration in power distribution systems</article-title>
          .
          <source>In: Proc. of IEA-AIE'98</source>
          . (
          <year>1998</year>
          )
          <fpage>230</fpage>
          -
          <lpage>240</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Dojat</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ramaux</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fontaine</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Scenario recognition for temporal reasoning in medical domains</article-title>
          .
          <source>Artificial Intelligence in Medicine</source>
          <volume>14</volume>
          (
          <issue>1-2</issue>
          ) (
          <year>1998</year>
          )
          <fpage>139</fpage>
          -
          <lpage>155</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Cordier</surname>
            ,
            <given-names>M.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dousson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Alarm driven monitoring based on chronicles</article-title>
          .
          <source>In: Proc. of Safeprocess</source>
          '
          <year>2000</year>
          . (
          <year>2000</year>
          )
          <fpage>286</fpage>
          -
          <lpage>291</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5. Pencole´,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Cordier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.O.</given-names>
            ,
            <surname>Roze</surname>
          </string-name>
          <string-name>
            <surname>´</surname>
          </string-name>
          ,
          <string-name>
            <surname>L.</surname>
          </string-name>
          :
          <article-title>Incremental decentralized diagnosis approach for the supervision of a telecommunication network</article-title>
          .
          <source>In: IEEE Conf. on Decision and Control (CDC'02)</source>
          . (
          <year>2002</year>
          )
          <fpage>435</fpage>
          -
          <lpage>440</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Aguilar</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bousson</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dousson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghallab</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guasch</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Milne</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nicol</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quevedo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trave</surname>
          </string-name>
          ´-Massuye`s, L.:
          <article-title>Tiger: real-time situation assessment of dynamic systems</article-title>
          .
          <source>Technical report</source>
          (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Baroni</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lamperti</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pogliano</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zanella</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Diagnosis of a class of distributed discrete-event systems</article-title>
          .
          <source>IEEE Transactions on systems, man, and cybernetics</source>
          (
          <year>2000</year>
          )
          <fpage>731</fpage>
          -
          <lpage>752</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Debouk</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lafortune</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Teneketzis</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Coordinated decentralized protocols for failure diagnosis of discrete event systems</article-title>
          .
          <source>Discrete Event Dynamic Systems</source>
          <volume>10</volume>
          (
          <issue>1-2</issue>
          ) (
          <year>2000</year>
          )
          <fpage>33</fpage>
          -
          <lpage>86</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Aghasaryan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fabre</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Benveniste</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boubour</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jard</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Fault detection and diagnosis in distributed systems : an approach by partially stochastic petri nets</article-title>
          .
          <source>Discrete Event Dynamic Systems</source>
          <volume>8</volume>
          (
          <issue>2</issue>
          ) (
          <year>1998</year>
          )
          <fpage>203</fpage>
          -
          <lpage>231</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. Pencole´,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Cordier</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.O.:</surname>
          </string-name>
          <article-title>A formal framework for the decentralised diagnosis of large scale discrete event systems and its application to telecommunication networks</article-title>
          .
          <source>Artificial Intelligence Journal</source>
          <volume>164</volume>
          (
          <issue>1-2</issue>
          ) (
          <year>2005</year>
          )
          <fpage>121</fpage>
          -
          <lpage>170</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Le Guillou</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cordier</surname>
            ,
            <given-names>M.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Robin</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roze</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Chronicles for on-line diagnosis of distributed systems</article-title>
          .
          <source>Internal IRISA report #1890</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Quiniou</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cordier</surname>
            ,
            <given-names>M.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carrault</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Application of ilp to cardiac arrhythmia characterization for chronicle recognition</article-title>
          . In: ILP'
          <year>2001</year>
          . (
          <year>2001</year>
          )
          <fpage>220</fpage>
          -
          <lpage>227</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Boufaied</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Subias</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Combaceau</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Distributed fault detection with delays consideration</article-title>
          .
          <source>In: Proc. of the 15th Int. Workshop on Principles of Diagnosis (DX'04)</source>
          . (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Guerraz</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dousson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Chronicles construction starting from the fault model of the system to diagnose</article-title>
          .
          <source>In: Proc. of the 15th Int. Workshop on Principles of Diagnosis (DX'04)</source>
          . (
          <year>2004</year>
          )
          <fpage>51</fpage>
          -
          <lpage>56</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Jiroveanu</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , Boe¨l, R.:
          <article-title>Petri net model-based distributed diagnosis for large interacting systems</article-title>
          .
          <source>In: Proc. of the 16th Int. Workshop on Principles of Diagnosis (DX'05)</source>
          . (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Roos</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Teije</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bos</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Witteveen</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>An analysis of multi-agent diagnosis</article-title>
          .
          <source>In: Proc. of the 1st Int. Joint Conf. on Autonomous Agents and MultiAgent Systems (AAMAS'02)</source>
          . (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Provan</surname>
          </string-name>
          , G.:
          <article-title>A model-based diagnosis framework for distributed systems</article-title>
          .
          <source>In: Proc. of the 13th Int. Workshop on Principles of Diagnosis (DX'02)</source>
          . (
          <year>2002</year>
          )
          <fpage>16</fpage>
          -
          <lpage>25</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Grosclaude</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Model-based monitoring of component-based software systems</article-title>
          .
          <source>In: Proc. of the 15th Int. Workshop on Principles of Diagnosis (DX'04)</source>
          . (
          <year>2004</year>
          )
          <fpage>51</fpage>
          -
          <lpage>56</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Yan</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          , Pencole´,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Cordier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.O.</given-names>
            ,
            <surname>Grastien</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          :
          <article-title>Monitoring web service networks in a model-based approach</article-title>
          .
          <source>In: 3rd European Conf. on Web Services (ECOWS)</source>
          .
          <article-title>(</article-title>
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Lazovik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aiello</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Papazoglou</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Planning and monitoring the execution of web service requests</article-title>
          .
          <source>In: Proc. of the 1st Int. Conf. on Service-Oriented Computing (ICSOC'03)</source>
          . Volume
          <volume>2910</volume>
          of Lecture Notes in Computer Science. (
          <year>2003</year>
          )
          <fpage>335</fpage>
          -
          <lpage>350</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Baresi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghezzi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guinea</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Smart monitors for composed services</article-title>
          .
          <source>In: Proc. of the 2nd Int. Conf. on Service-Oriented Computing (ICSOC'04)</source>
          . (
          <year>2004</year>
          )
          <fpage>193</fpage>
          -
          <lpage>202</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Barbon</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Traverso</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pistore</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trainotti</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Run-time monitoring of instances and classes of web service compositions</article-title>
          .
          <source>In: Proc. of the IEEE Int. Conf. on Web Services (ICWS'06)</source>
          . (
          <year>2006</year>
          )
          <fpage>63</fpage>
          -
          <lpage>71</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Ardissono</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Console</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goy</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petrone</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Picardi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Segnan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Theseider Dupre´,
          <string-name>
            <surname>D.</surname>
          </string-name>
          :
          <article-title>Cooperative model-based diagnosis of web services</article-title>
          .
          <source>In: Proceedings of DX'05, International Workshop on the Principles of Diagnosis</source>
          , Pacific Grove, California (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>