This is a collection of scripts and configuration that enables you to get up and running with Soluble in just a couple of minutes.
The expectation in this quickstart is that you are running this on your local machine using Docker. You can run all of the Soluble components on a linux server or in kubernetes, but doing that is beyond the scope of this quick-start guide.
Clone Quickstart Repository
Clone this repository onto your local machine so that you can run the scripts.
git clone https://github.com/soluble-ai/quickstart.git
Start Neo4j Database
All of the examples require that you have a functioning neo4j databse instance. To start neo4j, just run the folllowing:
./start-neo4j Starting neo4j graph database... edc9b67422f67bb00c76d4189424d8f1502d7de5d2f5f882589966fab9051e03 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES edc9b67422f6 neo4j:3.5 "/sbin/tini -g -- /d…" 2 seconds ago Up 1 second 0.0.0.0:7473-7474->7473-7474/tcp, 0.0.0.0:7687->7687/tcp neo4j After a few seconds point your browser to: http://localhost:7474 Log in with the following credentials: username: neo4j password: graph
After your container has started you should be able to follow the instructions and log in to the Neo4j web console.
The Soluble Dashboard and API server provides a UI for interacting with the data collected by the soluble containters.
To run it:
$ ./start-dashboard RUNNING AS : soluble JAVA_VERSION : 11.0.3 SOLUBLE_HOME : /app SOLUBLE_CONF_DIR : /app/conf MAIN_JAR : /app/bin/app.jar 2019-04-30 19:37:46,195 [main] [INFO] s.d.DynamicConfigurationListener - keystore (/app/conf/secrets/server-keystore.p12) not found...reverting to embedded keystore _ _ _ _ _ _ _ ___ ___ | | _ _ | |__ | | ___ __| | __ _ ___ | |__ | |__ ___ __ _ _ __ __| | / __| / _ \ | || | | || '_ \ | | / _ \ / _` | / _` |/ __|| '_ \ | '_ \ / _ \ / _` || '__|/ _` | \__ \| (_) || || |_| || |_) || || __/ | (_| || (_| |\__ \| | | || |_) || (_) || (_| || | | (_| | |___/ \___/ |_| \__,_||_.__/ |_| \___| \__,_| \__,_||___/|_| |_||_.__/ \___/ \__,_||_| \__,_| ...
The dashboard will bind and listen on port 8443.
Point your browser to https://localhost.soluble.ai:8443
You can log in with the following credentials:
username: admin password: admin
Note: The default installation will use a certificate issued by Let's Encrypt for
is a DNS A record for
127.0.0.1. This allows us to use HTTPS exclusively with valid certs. If you don't like this you can use https://localhost:8443 if you like, although you will get a cert warning, which is really
no worse than a self-signed cert that is typical of initial installations.
Start Some Collectors
If you want to run the AWS collector, just run the following:
./start-aws-collector RUNNING AS : soluble JAVA_VERSION : 11.0.2 SOLUBLE_HOME : /app SOLUBLE_CONF_DIR : /app/conf MAIN_JAR : /app/bin/app.jar _ _ _ ___ ___ | | _ _ | |__ | | ___ / __| / _ \ | || | | || '_ \ | | / _ \ \__ \| (_) || || |_| || |_) || || __/ |___/ \___/ |_| \__,_||_.__/ |_| \___| ...
It will begin scanning your AWS infrastruction and persisting a projection of that infrastructure in your Neo4j instance.
NOTE: For this to work, you need to have read-only credentials to your AWS account. This script will attempt to validate this.
Once the collector has scanned your AWS account, you can go to the Neo4j browser and look at the data that is there.
The following query will select the account(s) and all of the items directly connected to that account:
match (a:AwsAccount)--(b)--(c) return a,b,c;
If you want to see your EC2 instances and all the items directly connected to them:
match (a:AwsEc2Instance)--(b) return a,b
You will want to poke around with your data to explore the entities and relationships that are present.
To scan a kubernetes cluster, make sure that you have read-only credentials to that cluster.
kubectl get nodes should verify this.
Then run the following:
$ ./start-kubernetes-collector RUNNING AS : soluble JAVA_VERSION : 11.0.2 SOLUBLE_HOME : /app SOLUBLE_CONF_DIR : /app/conf MAIN_JAR : /app/bin/app.jar _ _ _ ___ ___ | | _ _ | |__ | | ___ / __| / _ \ | || | | || '_ \ | | / _ \ \__ \| (_) || || |_| || |_) || || __/ |___/ \___/ |_| \__,_||_.__/ |_| \___| ...
The collector will run and begin scanning the kubernetes entities in your cluster.
Once that has been scanned you can go the Neo4j browswer and begin looking at the data. For instance, the following will show you all the the entities connected to your cluster, 2 levels deep.
match (a:KubeCluster)--(b)--(c) return a,b,c