Here’s a typical example of a “Health Check” script that is pinging systems based on their URL and updating the status in the corresponding node in the graph.
<!DOCTYPE etl SYSTEM "
https://scriptella.org/dtd/etl.dtd
">
<
etl
>
<
description
>Healt Check Systems</
description
>
<
connection
id
=
"logInfo"
driver
=
"log"
>
level=INFO
</
connection
>
<
connection
id
=
"neo4j"
driver
=
"graphConnection"
>
project_id=123
query_empty_value=
</
connection
>
<
connection
id
=
"java"
driver
=
"janino"
></
connection
>
<
query
connection-id
=
"neo4j"
>
MATCH (node) WHERE node.type = 'service'
RETURN node.url as url, ID(node) as nodeId
<
query
connection-id
=
"java"
>
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
//ping url
URL result = new URL(String.valueOf(get("url")));
HttpURLConnection http = (HttpURLConnection)result.openConnection();
int statusCode = http.getResponseCode();
http.disconnect();
// set result to the job context to make it available for other steps in the job
set("status_result", statusCode);
// execute embedded queries (the logInfo and neo4j steps below)
next();
<
script
connection-id
=
"logInfo"
>
Node ID: $nodeId | Returned status: $status_result
</
script
>
<
query
connection-id
=
"neo4j"
>
MATCH (n) WHERE ID(n)=$nodeId SET n.status='$status_result'
</
query
>
</
query
>
</
query
>
</
etl
>