| // DevOps CMDB + Incident Knowledge Graph — Deterministic Sample Dataset |
| // Assumptions: |
| // - Executed against a Gremlin Server–compliant system with traversal source bound as 'g' |
| // - Uses natural keys for lookups (serviceId, appId, hostId, depId, teamId, deployId, incidentId, alertId) |
| // - All timestamps are epochMillis (UTC) for portability |
| // - One line per vertex/edge; each line terminates with iterate() |
| |
| // === Teams (3) === |
| g.addV('team').property('teamId','team:platform').property('name','Platform Engineering').property('onCall',true).property('pager','pagerduty:plat').property('slack','#team-platform').property('createdAt',1700000000000).property('updatedAt',1700000000000).iterate() |
| g.addV('team').property('teamId','team:payments').property('name','Payments').property('onCall',true).property('pager','pagerduty:pay').property('slack','#team-payments').property('createdAt',1700000000000).property('updatedAt',1700000000000).iterate() |
| g.addV('team').property('teamId','team:orders').property('name','Orders').property('onCall',false).property('pager','pagerduty:ord').property('slack','#team-orders').property('createdAt',1700000000000).property('updatedAt',1700000000000).iterate() |
| |
| // === Services (6) === |
| g.addV('service').property('serviceId','svc:api-gateway').property('name','API Gateway').property('tier','critical').property('ownerTeamId','team:platform').property('sla','99.95%/30d').property('env','prod').property('tags',['edge','ingress']).property('criticality',5).property('createdAt',1700001000000).property('updatedAt',1700001000000).iterate() |
| g.addV('service').property('serviceId','svc:payments').property('name','Payments Service').property('tier','critical').property('ownerTeamId','team:payments').property('sla','99.9%/30d').property('env','prod').property('tags',['finance','pci']).property('criticality',5).property('createdAt',1700001001000).property('updatedAt',1700001001000).iterate() |
| g.addV('service').property('serviceId','svc:orders').property('name','Orders Service').property('tier','high').property('ownerTeamId','team:orders').property('sla','99.9%/30d').property('env','prod').property('tags',['commerce']).property('criticality',4).property('createdAt',1700001002000).property('updatedAt',1700001002000).iterate() |
| g.addV('service').property('serviceId','svc:inventory').property('name','Inventory Service').property('tier','high').property('ownerTeamId','team:orders').property('sla','99.9%/30d').property('env','prod').property('tags',['stock']).property('criticality',4).property('createdAt',1700001003000).property('updatedAt',1700001003000).iterate() |
| g.addV('service').property('serviceId','svc:notifications').property('name','Notifications Service').property('tier','medium').property('ownerTeamId','team:platform').property('sla','99.5%/30d').property('env','prod').property('tags',['email','sms']).property('criticality',3).property('createdAt',1700001004000).property('updatedAt',1700001004000).iterate() |
| g.addV('service').property('serviceId','svc:fraud').property('name','Fraud Detection Service').property('tier','high').property('ownerTeamId','team:payments').property('sla','99.5%/30d').property('env','prod').property('tags',['ml']).property('criticality',4).property('createdAt',1700001005000).property('updatedAt',1700001005000).iterate() |
| |
| // === Applications (6) === |
| g.addV('application').property('appId','app:api-gateway').property('name','api-gateway').property('language','java').property('repo','https://git.example.com/api-gateway').property('version','1.3.0').property('runtime','jvm').property('env','prod').property('createdAt',1700002000000).property('updatedAt',1700002000000).iterate() |
| g.addV('application').property('appId','app:payments-api').property('name','payments-api').property('language','java').property('repo','https://git.example.com/payments').property('version','2.1.0').property('runtime','jvm').property('env','prod').property('createdAt',1700002001000).property('updatedAt',1700002001000).iterate() |
| g.addV('application').property('appId','app:orders-api').property('name','orders-api').property('language','kotlin').property('repo','https://git.example.com/orders').property('version','1.8.2').property('runtime','jvm').property('env','prod').property('createdAt',1700002002000).property('updatedAt',1700002002000).iterate() |
| g.addV('application').property('appId','app:inventory-api').property('name','inventory-api').property('language','go').property('repo','https://git.example.com/inventory').property('version','0.9.5').property('runtime','go').property('env','prod').property('createdAt',1700002003000).property('updatedAt',1700002003000).iterate() |
| g.addV('application').property('appId','app:notifications-api').property('name','notifications-api').property('language','nodejs').property('repo','https://git.example.com/notifications').property('version','3.2.1').property('runtime','nodejs').property('env','prod').property('createdAt',1700002004000).property('updatedAt',1700002004000).iterate() |
| g.addV('application').property('appId','app:fraud-api').property('name','fraud-api').property('language','python').property('repo','https://git.example.com/fraud').property('version','1.4.0').property('runtime','python').property('env','prod').property('createdAt',1700002005000).property('updatedAt',1700002005000).iterate() |
| |
| // === Hosts (8) === |
| g.addV('host').property('hostId','host:prod-use1a-01').property('hostname','ip-10-0-0-1').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1a').property('env','prod').property('os','linux').property('instanceType','m5.large').property('createdAt',1700003000000).property('updatedAt',1700003000000).iterate() |
| g.addV('host').property('hostId','host:prod-use1a-02').property('hostname','ip-10-0-0-2').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1a').property('env','prod').property('os','linux').property('instanceType','m5.large').property('createdAt',1700003001000).property('updatedAt',1700003001000).iterate() |
| g.addV('host').property('hostId','host:prod-use1b-01').property('hostname','ip-10-0-1-1').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1b').property('env','prod').property('os','linux').property('instanceType','m5.xlarge').property('createdAt',1700003002000).property('updatedAt',1700003002000).iterate() |
| g.addV('host').property('hostId','host:prod-use1b-02').property('hostname','ip-10-0-1-2').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1b').property('env','prod').property('os','linux').property('instanceType','m5.xlarge').property('createdAt',1700003003000).property('updatedAt',1700003003000).iterate() |
| g.addV('host').property('hostId','host:prod-use1c-01').property('hostname','ip-10-0-2-1').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1c').property('env','prod').property('os','linux').property('instanceType','c5.large').property('createdAt',1700003004000).property('updatedAt',1700003004000).iterate() |
| g.addV('host').property('hostId','host:prod-use1c-02').property('hostname','ip-10-0-2-2').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1c').property('env','prod').property('os','linux').property('instanceType','c5.large').property('createdAt',1700003005000).property('updatedAt',1700003005000).iterate() |
| g.addV('host').property('hostId','host:prod-use1d-01').property('hostname','ip-10-0-3-1').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1d').property('env','prod').property('os','linux').property('instanceType','c5.xlarge').property('createdAt',1700003006000).property('updatedAt',1700003006000).iterate() |
| g.addV('host').property('hostId','host:prod-use1d-02').property('hostname','ip-10-0-3-2').property('provider','aws').property('region','us-east-1').property('availabilityZone','us-east-1d').property('env','prod').property('os','linux').property('instanceType','c5.xlarge').property('createdAt',1700003007000).property('updatedAt',1700003007000).iterate() |
| |
| // === Dependencies (6) === |
| g.addV('dependency').property('depId','dep:payments-db').property('type','db').property('name','payments-db').property('vendor','aurora-postgres').property('criticality',5).property('endpoint','postgres://payments-db.prod:5432/pay').property('env','prod').property('createdAt',1700004000000).property('updatedAt',1700004000000).iterate() |
| g.addV('dependency').property('depId','dep:orders-db').property('type','db').property('name','orders-db').property('vendor','aurora-postgres').property('criticality',5).property('endpoint','postgres://orders-db.prod:5432/orders').property('env','prod').property('createdAt',1700004001000).property('updatedAt',1700004001000).iterate() |
| g.addV('dependency').property('depId','dep:inventory-cache').property('type','cache').property('name','inventory-cache').property('vendor','redis').property('criticality',4).property('endpoint','redis://inventory-cache.prod:6379').property('env','prod').property('createdAt',1700004002000).property('updatedAt',1700004002000).iterate() |
| g.addV('dependency').property('depId','dep:payments-queue').property('type','queue').property('name','payments-queue').property('vendor','sqs').property('criticality',3).property('endpoint','arn:aws:sqs:us-east-1:acct:payments').property('env','prod').property('createdAt',1700004003000).property('updatedAt',1700004003000).iterate() |
| g.addV('dependency').property('depId','dep:notifications-svc').property('type','api').property('name','notifications').property('vendor','internal').property('criticality',3).property('endpoint','https://notifications.prod/api').property('env','prod').property('createdAt',1700004004000).property('updatedAt',1700004004000).iterate() |
| g.addV('dependency').property('depId','dep:fraud-model').property('type','storage').property('name','fraud-model-store').property('vendor','s3').property('criticality',4).property('endpoint','s3://fraud-models/prod').property('env','prod').property('createdAt',1700004005000).property('updatedAt',1700004005000).iterate() |
| |
| // === Deployments (10) === |
| g.addV('deployment').property('deployId','depoy:api-gateway-20231113.1').property('version','1.3.0').property('initiatedBy','cd-bot').property('deployedAt',1700005000000).property('status','success').property('changeSet',['a1','a2']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:payments-20231113.2').property('version','2.1.0').property('initiatedBy','cd-bot').property('deployedAt',1700005005000).property('status','partial').property('changeSet',['b1','b2','b3']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:orders-20231113.1').property('version','1.8.2').property('initiatedBy','cd-bot').property('deployedAt',1700005010000).property('status','success').property('changeSet',['c1']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:inventory-20231113.1').property('version','0.9.5').property('initiatedBy','cd-bot').property('deployedAt',1700005015000).property('status','success').property('changeSet',['d1','d2']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:notifications-20231113.3').property('version','3.2.1').property('initiatedBy','cd-bot').property('deployedAt',1700005020000).property('status','success').property('changeSet',['e1']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:fraud-20231113.1').property('version','1.4.0').property('initiatedBy','cd-bot').property('deployedAt',1700005025000).property('status','failed').property('changeSet',['f1','f2']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:payments-20231114.1').property('version','2.1.1').property('initiatedBy','cd-bot').property('deployedAt',1700091400000).property('status','success').property('changeSet',['b4']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:orders-20231114.1').property('version','1.8.3').property('initiatedBy','cd-bot').property('deployedAt',1700092400000).property('status','success').property('changeSet',['c2']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:api-gateway-20231114.1').property('version','1.3.1').property('initiatedBy','cd-bot').property('deployedAt',1700093400000).property('status','success').property('changeSet',['a3']).property('env','prod').iterate() |
| g.addV('deployment').property('deployId','depoy:fraud-20231114.1').property('version','1.4.1').property('initiatedBy','cd-bot').property('deployedAt',1700095400000).property('status','success').property('changeSet',['f3']).property('env','prod').iterate() |
| |
| // === Incidents (5) === |
| g.addV('incident').property('incidentId','inc:sev1-payments-001').property('severity','sev1').property('state','closed').property('openedAt',1700006000000).property('closedAt',1700007000000).property('summary','Spike in payment failures').property('description','Error rate spiked after deployment').property('env','prod').property('createdBy','sre').property('updatedAt',1700007000000).iterate() |
| g.addV('incident').property('incidentId','inc:sev2-orders-001').property('severity','sev2').property('state','mitigated').property('openedAt',1700092000000).property('closedAt',1700095000000).property('summary','Order delays').property('description','Increased latency due to downstream cache').property('env','prod').property('createdBy','noc').property('updatedAt',1700095000000).iterate() |
| g.addV('incident').property('incidentId','inc:sev3-inventory-001').property('severity','sev3').property('state','closed').property('openedAt',1700006200000).property('closedAt',1700007200000).property('summary','Inventory cache miss rate up').property('description','Redis node slow').property('env','prod').property('createdBy','sre').property('updatedAt',1700007200000).iterate() |
| g.addV('incident').property('incidentId','inc:sev2-fraud-001').property('severity','sev2').property('state','closed').property('openedAt',1700006300000).property('closedAt',1700009300000).property('summary','Fraud model load failures').property('description','S3 throttling').property('env','prod').property('createdBy','sre').property('updatedAt',1700009300000).iterate() |
| g.addV('incident').property('incidentId','inc:sev1-api-001').property('severity','sev1').property('state','closed').property('openedAt',1700093600000).property('closedAt',1700095600000).property('summary','Gateway 5xx surge').property('description','Upstream instability').property('env','prod').property('createdBy','sre').property('updatedAt',1700095600000).iterate() |
| |
| // === Alerts (15) === |
| g.addV('alert').property('alertId','alt:pay-err-001').property('source','prometheus').property('metric','errorRate').property('firedAt',1700006050000).property('clearedAt',1700007050000).property('severity','sev1').property('env','prod').property('fingerprint','pay-err').property('createdAt',1700006050000).property('updatedAt',1700007050000).iterate() |
| g.addV('alert').property('alertId','alt:pay-lat-001').property('source','prometheus').property('metric','latency').property('firedAt',1700006060000).property('clearedAt',1700007060000).property('severity','sev2').property('env','prod').property('fingerprint','pay-lat').property('createdAt',1700006060000).property('updatedAt',1700007060000).iterate() |
| g.addV('alert').property('alertId','alt:orders-lat-001').property('source','prometheus').property('metric','latency').property('firedAt',1700092100000).property('clearedAt',1700095100000).property('severity','sev2').property('env','prod').property('fingerprint','ord-lat').property('createdAt',1700092100000).property('updatedAt',1700095100000).iterate() |
| g.addV('alert').property('alertId','alt:inv-cache-001').property('source','redis').property('metric','cacheMiss').property('firedAt',1700006210000).property('clearedAt',1700007210000).property('severity','sev3').property('env','prod').property('fingerprint','inv-cache').property('createdAt',1700006210000).property('updatedAt',1700007210000).iterate() |
| g.addV('alert').property('alertId','alt:fraud-model-001').property('source','app').property('metric','modelLoadFail').property('firedAt',1700006310000).property('clearedAt',1700009310000).property('severity','sev2').property('env','prod').property('fingerprint','fraud-model').property('createdAt',1700006310000).property('updatedAt',1700009310000).iterate() |
| g.addV('alert').property('alertId','alt:gateway-5xx-001').property('source','nginx').property('metric','5xx').property('firedAt',1700093610000).property('clearedAt',1700095610000).property('severity','sev1').property('env','prod').property('fingerprint','gw-5xx').property('createdAt',1700093610000).property('updatedAt',1700095610000).iterate() |
| g.addV('alert').property('alertId','alt:payments-db-conn').property('source','rds').property('metric','connections').property('firedAt',1700006040000).property('clearedAt',1700007040000).property('severity','sev2').property('env','prod').property('fingerprint','rds-conns').property('createdAt',1700006040000).property('updatedAt',1700007040000).iterate() |
| g.addV('alert').property('alertId','alt:orders-db-lag').property('source','rds').property('metric','replicaLag').property('firedAt',1700092200000).property('clearedAt',1700095200000).property('severity','sev3').property('env','prod').property('fingerprint','rds-lag').property('createdAt',1700092200000).property('updatedAt',1700095200000).iterate() |
| g.addV('alert').property('alertId','alt:inv-redis-cpu').property('source','redis').property('metric','cpu').property('firedAt',1700006220000).property('clearedAt',1700007220000).property('severity','sev3').property('env','prod').property('fingerprint','redis-cpu').property('createdAt',1700006220000).property('updatedAt',1700007220000).iterate() |
| g.addV('alert').property('alertId','alt:fraud-s3-429').property('source','s3').property('metric','throttle').property('firedAt',1700006320000).property('clearedAt',1700009320000).property('severity','sev2').property('env','prod').property('fingerprint','s3-429').property('createdAt',1700006320000).property('updatedAt',1700009320000).iterate() |
| g.addV('alert').property('alertId','alt:pay-queue-depth').property('source','sqs').property('metric','queueDepth').property('firedAt',1700006070000).property('clearedAt',1700007070000).property('severity','sev2').property('env','prod').property('fingerprint','sqs-depth').property('createdAt',1700006070000).property('updatedAt',1700007070000).iterate() |
| g.addV('alert').property('alertId','alt:api-rt-90p').property('source','prometheus').property('metric','latency').property('firedAt',1700093620000).property('clearedAt',1700095620000).property('severity','sev2').property('env','prod').property('fingerprint','api-rt').property('createdAt',1700093620000).property('updatedAt',1700095620000).iterate() |
| g.addV('alert').property('alertId','alt:notify-bounce').property('source','app').property('metric','bounceRate').property('firedAt',1700006400000).property('clearedAt',1700007400000).property('severity','sev3').property('env','prod').property('fingerprint','notif-bounce').property('createdAt',1700006400000).property('updatedAt',1700007400000).iterate() |
| g.addV('alert').property('alertId','alt:gateway-conn').property('source','nginx').property('metric','connections').property('firedAt',1700093630000).property('clearedAt',1700095630000).property('severity','sev3').property('env','prod').property('fingerprint','gw-conns').property('createdAt',1700093630000).property('updatedAt',1700095630000).iterate() |
| g.addV('alert').property('alertId','alt:orders-backlog').property('source','app').property('metric','backlog').property('firedAt',1700092300000).property('clearedAt',1700095300000).property('severity','sev2').property('env','prod').property('fingerprint','ord-backlog').property('createdAt',1700092300000).property('updatedAt',1700095300000).iterate() |
| |
| // === Ownership (ownedBy) === |
| g.V().has('service','serviceId','svc:api-gateway').as('s').V().has('team','teamId','team:platform').addE('ownedBy').from('s').property('since',1699999000000).property('role','primary').property('escalationPolicy','24x7').iterate() |
| g.V().has('service','serviceId','svc:payments').as('s').V().has('team','teamId','team:payments').addE('ownedBy').from('s').property('since',1699999001000).property('role','primary').property('escalationPolicy','24x7').iterate() |
| g.V().has('service','serviceId','svc:orders').as('s').V().has('team','teamId','team:orders').addE('ownedBy').from('s').property('since',1699999002000).property('role','primary').property('escalationPolicy','business-hours').iterate() |
| g.V().has('service','serviceId','svc:inventory').as('s').V().has('team','teamId','team:orders').addE('ownedBy').from('s').property('since',1699999003000).property('role','secondary').property('escalationPolicy','business-hours').iterate() |
| g.V().has('service','serviceId','svc:notifications').as('s').V().has('team','teamId','team:platform').addE('ownedBy').from('s').property('since',1699999004000).property('role','primary').property('escalationPolicy','best-effort').iterate() |
| g.V().has('service','serviceId','svc:fraud').as('s').V().has('team','teamId','team:payments').addE('ownedBy').from('s').property('since',1699999005000).property('role','primary').property('escalationPolicy','24x7').iterate() |
| |
| // === Service ↔ Application (deployedAs) === |
| g.V().has('service','serviceId','svc:api-gateway').as('s').V().has('application','appId','app:api-gateway').addE('deployedAs').from('s').property('since',1699999900000).property('strategy','rolling').property('trafficPct',100.0).property('status','active').property('notes','prod stable').iterate() |
| g.V().has('service','serviceId','svc:payments').as('s').V().has('application','appId','app:payments-api').addE('deployedAs').from('s').property('since',1699999901000).property('strategy','canary').property('trafficPct',90.0).property('status','active').property('notes','10% older').iterate() |
| g.V().has('service','serviceId','svc:orders').as('s').V().has('application','appId','app:orders-api').addE('deployedAs').from('s').property('since',1699999902000).property('strategy','rolling').property('trafficPct',100.0).property('status','active').property('notes','').iterate() |
| g.V().has('service','serviceId','svc:inventory').as('s').V().has('application','appId','app:inventory-api').addE('deployedAs').from('s').property('since',1699999903000).property('strategy','rolling').property('trafficPct',100.0).property('status','active').property('notes','').iterate() |
| g.V().has('service','serviceId','svc:notifications').as('s').V().has('application','appId','app:notifications-api').addE('deployedAs').from('s').property('since',1699999904000).property('strategy','blueGreen').property('trafficPct',100.0).property('status','active').property('notes','').iterate() |
| g.V().has('service','serviceId','svc:fraud').as('s').V().has('application','appId','app:fraud-api').addE('deployedAs').from('s').property('since',1699999905000).property('strategy','recreate').property('trafficPct',100.0).property('status','active').property('notes','').iterate() |
| |
| // === Application ↔ Host (runsOn) === |
| g.V().has('application','appId','app:api-gateway').as('a').V().has('host','hostId','host:prod-use1a-01').addE('runsOn').from('a').property('since',1700002100000).property('status','active').property('instanceId','gw-1').property('lastSeen',1700005600000).property('cpuPct',35.2).property('memPct',62.1).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:api-gateway').as('a').V().has('host','hostId','host:prod-use1b-01').addE('runsOn').from('a').property('since',1700002105000).property('status','active').property('instanceId','gw-2').property('lastSeen',1700005600000).property('cpuPct',28.5).property('memPct',54.3).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:payments-api').as('a').V().has('host','hostId','host:prod-use1a-02').addE('runsOn').from('a').property('since',1700002110000).property('status','active').property('instanceId','pay-1').property('lastSeen',1700005600000).property('cpuPct',41.0).property('memPct',70.0).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:payments-api').as('a').V().has('host','hostId','host:prod-use1c-01').addE('runsOn').from('a').property('since',1700002115000).property('status','active').property('instanceId','pay-2').property('lastSeen',1700005600000).property('cpuPct',39.0).property('memPct',68.0).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:orders-api').as('a').V().has('host','hostId','host:prod-use1b-02').addE('runsOn').from('a').property('since',1700002120000).property('status','active').property('instanceId','ord-1').property('lastSeen',1700005600000).property('cpuPct',22.0).property('memPct',49.0).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:inventory-api').as('a').V().has('host','hostId','host:prod-use1c-02').addE('runsOn').from('a').property('since',1700002125000).property('status','active').property('instanceId','inv-1').property('lastSeen',1700005600000).property('cpuPct',19.0).property('memPct',45.0).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:notifications-api').as('a').V().has('host','hostId','host:prod-use1d-01').addE('runsOn').from('a').property('since',1700002130000).property('status','active').property('instanceId','ntf-1').property('lastSeen',1700005600000).property('cpuPct',12.0).property('memPct',35.0).property('confidence',1.0).iterate() |
| g.V().has('application','appId','app:fraud-api').as('a').V().has('host','hostId','host:prod-use1d-02').addE('runsOn').from('a').property('since',1700002135000).property('status','active').property('instanceId','frd-1').property('lastSeen',1700005600000).property('cpuPct',55.0).property('memPct',75.0).property('confidence',0.9).iterate() |
| |
| // === Service ↔ Dependency (dependsOn) === |
| g.V().has('service','serviceId','svc:payments').as('s').V().has('dependency','depId','dep:payments-db').addE('dependsOn').from('s').property('since',1699999800000).property('required',true).property('direction','read-write').property('latencyP50Ms',12).property('errorRatePct',1.5).property('weight',1.0).property('lastVerifiedAt',1700005500000).iterate() |
| g.V().has('service','serviceId','svc:orders').as('s').V().has('dependency','depId','dep:orders-db').addE('dependsOn').from('s').property('since',1699999801000).property('required',true).property('direction','read-write').property('latencyP50Ms',15).property('errorRatePct',0.9).property('weight',1.0).property('lastVerifiedAt',1700005500000).iterate() |
| g.V().has('service','serviceId','svc:inventory').as('s').V().has('dependency','depId','dep:inventory-cache').addE('dependsOn').from('s').property('since',1699999802000).property('required',false).property('direction','read').property('latencyP50Ms',3).property('errorRatePct',2.5).property('weight',0.7).property('lastVerifiedAt',1700005500000).iterate() |
| g.V().has('service','serviceId','svc:payments').as('s').V().has('dependency','depId','dep:payments-queue').addE('dependsOn').from('s').property('since',1699999803000).property('required',true).property('direction','write').property('latencyP50Ms',8).property('errorRatePct',0.5).property('weight',0.6).property('lastVerifiedAt',1700005500000).iterate() |
| g.V().has('service','serviceId','svc:notifications').as('s').V().has('dependency','depId','dep:notifications-svc').addE('dependsOn').from('s').property('since',1699999804000).property('required',true).property('direction','http').property('latencyP50Ms',45).property('errorRatePct',0.2).property('weight',0.5).property('lastVerifiedAt',1700005500000).iterate() |
| g.V().has('service','serviceId','svc:fraud').as('s').V().has('dependency','depId','dep:fraud-model').addE('dependsOn').from('s').property('since',1699999805000).property('required',true).property('direction','read').property('latencyP50Ms',30).property('errorRatePct',4.0).property('weight',0.9).property('lastVerifiedAt',1700005500000).iterate() |
| |
| // === Deployment ↔ Application (deploymentOf) === |
| g.V().has('deployment','deployId','depoy:api-gateway-20231113.1').as('d').V().has('application','appId','app:api-gateway').addE('deploymentOf').from('d').property('relationCreatedAt',1700005001000).property('targetVersion','1.3.0').property('result','success').property('durationMs',600000).property('changeTicket','CHG-1001').iterate() |
| g.V().has('deployment','deployId','depoy:payments-20231113.2').as('d').V().has('application','appId','app:payments-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700005006000).property('targetVersion','2.1.0').property('result','partial').property('durationMs',900000).property('changeTicket','CHG-1002').iterate() |
| g.V().has('deployment','deployId','depoy:orders-20231113.1').as('d').V().has('application','appId','app:orders-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700005011000).property('targetVersion','1.8.2').property('result','success').property('durationMs',420000).property('changeTicket','CHG-1003').iterate() |
| g.V().has('deployment','deployId','depoy:inventory-20231113.1').as('d').V().has('application','appId','app:inventory-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700005016000).property('targetVersion','0.9.5').property('result','success').property('durationMs',300000).property('changeTicket','CHG-1004').iterate() |
| g.V().has('deployment','deployId','depoy:notifications-20231113.3').as('d').V().has('application','appId','app:notifications-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700005021000).property('targetVersion','3.2.1').property('result','success').property('durationMs',300000).property('changeTicket','CHG-1005').iterate() |
| g.V().has('deployment','deployId','depoy:fraud-20231113.1').as('d').V().has('application','appId','app:fraud-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700005026000).property('targetVersion','1.4.0').property('result','failed').property('durationMs',780000).property('changeTicket','CHG-1006').iterate() |
| g.V().has('deployment','deployId','depoy:payments-20231114.1').as('d').V().has('application','appId','app:payments-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700091401000).property('targetVersion','2.1.1').property('result','success').property('durationMs',480000).property('changeTicket','CHG-1007').iterate() |
| g.V().has('deployment','deployId','depoy:orders-20231114.1').as('d').V().has('application','appId','app:orders-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700092401000).property('targetVersion','1.8.3').property('result','success').property('durationMs',450000).property('changeTicket','CHG-1008').iterate() |
| g.V().has('deployment','deployId','depoy:api-gateway-20231114.1').as('d').V().has('application','appId','app:api-gateway').addE('deploymentOf').from('d').property('relationCreatedAt',1700093401000).property('targetVersion','1.3.1').property('result','success').property('durationMs',420000).property('changeTicket','CHG-1009').iterate() |
| g.V().has('deployment','deployId','depoy:fraud-20231114.1').as('d').V().has('application','appId','app:fraud-api').addE('deploymentOf').from('d').property('relationCreatedAt',1700095401000).property('targetVersion','1.4.1').property('result','success').property('durationMs',600000).property('changeTicket','CHG-1010').iterate() |
| |
| // === Deployment ↔ Host (deployedTo) === |
| g.V().has('deployment','deployId','depoy:api-gateway-20231113.1').as('d').V().has('host','hostId','host:prod-use1a-01').addE('deployedTo').from('d').property('at',1700005002000).property('result','success').property('attempts',1).property('durationMs',120000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:api-gateway-20231113.1').as('d').V().has('host','hostId','host:prod-use1b-01').addE('deployedTo').from('d').property('at',1700005003000).property('result','success').property('attempts',1).property('durationMs',120000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:payments-20231113.2').as('d').V().has('host','hostId','host:prod-use1a-02').addE('deployedTo').from('d').property('at',1700005007000).property('result','failed').property('attempts',2).property('durationMs',300000).property('rollback',true).iterate() |
| g.V().has('deployment','deployId','depoy:payments-20231114.1').as('d').V().has('host','hostId','host:prod-use1c-01').addE('deployedTo').from('d').property('at',1700091402000).property('result','success').property('attempts',1).property('durationMs',150000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:orders-20231113.1').as('d').V().has('host','hostId','host:prod-use1b-02').addE('deployedTo').from('d').property('at',1700005012000).property('result','success').property('attempts',1).property('durationMs',90000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:inventory-20231113.1').as('d').V().has('host','hostId','host:prod-use1c-02').addE('deployedTo').from('d').property('at',1700005017000).property('result','success').property('attempts',1).property('durationMs',80000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:notifications-20231113.3').as('d').V().has('host','hostId','host:prod-use1d-01').addE('deployedTo').from('d').property('at',1700005022000).property('result','success').property('attempts',1).property('durationMs',85000).property('rollback',false).iterate() |
| g.V().has('deployment','deployId','depoy:fraud-20231114.1').as('d').V().has('host','hostId','host:prod-use1d-02').addE('deployedTo').from('d').property('at',1700095402000).property('result','success').property('attempts',1).property('durationMs',140000).property('rollback',false).iterate() |
| |
| // === Application ↔ Application (calls) === |
| g.V().has('application','appId','app:api-gateway').as('a').V().has('application','appId','app:orders-api').addE('calls').from('a').property('since',1699999950000).property('protocol','http').property('method','GET /orders').property('avgLatencyMs',120).property('errorRatePct',1.1).property('sampleRatePct',50.0).property('lastSeen',1700005600000).iterate() |
| g.V().has('application','appId','app:api-gateway').as('a').V().has('application','appId','app:payments-api').addE('calls').from('a').property('since',1699999951000).property('protocol','http').property('method','POST /payments').property('avgLatencyMs',180).property('errorRatePct',2.2).property('sampleRatePct',60.0).property('lastSeen',1700005600000).iterate() |
| g.V().has('application','appId','app:orders-api').as('a').V().has('application','appId','app:inventory-api').addE('calls').from('a').property('since',1699999952000).property('protocol','grpc').property('method','GetStock').property('avgLatencyMs',45).property('errorRatePct',0.5).property('sampleRatePct',40.0).property('lastSeen',1700005600000).iterate() |
| g.V().has('application','appId','app:payments-api').as('a').V().has('application','appId','app:fraud-api').addE('calls').from('a').property('since',1699999953000).property('protocol','http').property('method','POST /score').property('avgLatencyMs',95).property('errorRatePct',3.8).property('sampleRatePct',70.0).property('lastSeen',1700005600000).iterate() |
| g.V().has('application','appId','app:fraud-api').as('a').V().has('application','appId','app:notifications-api').addE('calls').from('a').property('since',1699999954000).property('protocol','mq').property('method','publish:fraud-alert').property('avgLatencyMs',15).property('errorRatePct',0.2).property('sampleRatePct',20.0).property('lastSeen',1700005600000).iterate() |
| |
| // === Incidents ↔ Services (affects) === |
| g.V().has('incident','incidentId','inc:sev1-payments-001').as('i').V().has('service','serviceId','svc:payments').addE('affects').from('i').property('at',1700006055000).property('impactType','degradation').property('scope','25% traffic').property('slaImpactPct',10.0).property('confidence',0.9).iterate() |
| g.V().has('incident','incidentId','inc:sev2-orders-001').as('i').V().has('service','serviceId','svc:orders').addE('affects').from('i').property('at',1700092105000).property('impactType','degradation').property('scope','region us-east-1').property('slaImpactPct',5.0).property('confidence',0.8).iterate() |
| g.V().has('incident','incidentId','inc:sev3-inventory-001').as('i').V().has('service','serviceId','svc:inventory').addE('affects').from('i').property('at',1700006215000).property('impactType','degradation').property('scope','cache tier').property('slaImpactPct',2.0).property('confidence',0.7).iterate() |
| g.V().has('incident','incidentId','inc:sev2-fraud-001').as('i').V().has('service','serviceId','svc:fraud').addE('affects').from('i').property('at',1700006315000).property('impactType','degradation').property('scope','model fetch').property('slaImpactPct',6.0).property('confidence',0.85).iterate() |
| g.V().has('incident','incidentId','inc:sev1-api-001').as('i').V().has('service','serviceId','svc:api-gateway').addE('affects').from('i').property('at',1700093615000).property('impactType','outage').property('scope','global').property('slaImpactPct',20.0).property('confidence',0.95).iterate() |
| |
| // === Alerts ↔ Incidents (triggered) === |
| g.V().has('alert','alertId','alt:pay-err-001').as('a').V().has('incident','incidentId','inc:sev1-payments-001').addE('triggered').from('a').property('at',1700006065000).property('correlationScore',0.9).property('reason','rule:pay-err>2%').property('evidenceId','evt:123').iterate() |
| g.V().has('alert','alertId','alt:payments-db-conn').as('a').V().has('incident','incidentId','inc:sev1-payments-001').addE('triggered').from('a').property('at',1700006068000).property('correlationScore',0.7).property('reason','db connections high').property('evidenceId','evt:124').iterate() |
| g.V().has('alert','alertId','alt:orders-lat-001').as('a').V().has('incident','incidentId','inc:sev2-orders-001').addE('triggered').from('a').property('at',1700092110000).property('correlationScore',0.8).property('reason','p90 latency').property('evidenceId','evt:220').iterate() |
| g.V().has('alert','alertId','alt:orders-db-lag').as('a').V().has('incident','incidentId','inc:sev2-orders-001').addE('triggered').from('a').property('at',1700092210000).property('correlationScore',0.6).property('reason','replica lag').property('evidenceId','evt:221').iterate() |
| g.V().has('alert','alertId','alt:inv-cache-001').as('a').V().has('incident','incidentId','inc:sev3-inventory-001').addE('triggered').from('a').property('at',1700006225000).property('correlationScore',0.75).property('reason','cache miss').property('evidenceId','evt:320').iterate() |
| g.V().has('alert','alertId','alt:inv-redis-cpu').as('a').V().has('incident','incidentId','inc:sev3-inventory-001').addE('triggered').from('a').property('at',1700006228000).property('correlationScore',0.65).property('reason','cpu').property('evidenceId','evt:321').iterate() |
| g.V().has('alert','alertId','alt:fraud-model-001').as('a').V().has('incident','incidentId','inc:sev2-fraud-001').addE('triggered').from('a').property('at',1700006325000).property('correlationScore',0.85).property('reason','model load fail').property('evidenceId','evt:420').iterate() |
| g.V().has('alert','alertId','alt:fraud-s3-429').as('a').V().has('incident','incidentId','inc:sev2-fraud-001').addE('triggered').from('a').property('at',1700006328000).property('correlationScore',0.7).property('reason','s3 throttle').property('evidenceId','evt:421').iterate() |
| g.V().has('alert','alertId','alt:gateway-5xx-001').as('a').V().has('incident','incidentId','inc:sev1-api-001').addE('triggered').from('a').property('at',1700093625000).property('correlationScore',0.9).property('reason','5xx surge').property('evidenceId','evt:520').iterate() |
| g.V().has('alert','alertId','alt:api-rt-90p').as('a').V().has('incident','incidentId','inc:sev1-api-001').addE('triggered').from('a').property('at',1700093628000).property('correlationScore',0.6).property('reason','latency p90').property('evidenceId','evt:521').iterate() |
| |
| // === Incidents ↔ Incidents (relatedTo) === |
| g.V().has('incident','incidentId','inc:sev1-payments-001').as('a').V().has('incident','incidentId','inc:sev3-inventory-001').addE('relatedTo').from('a').property('correlationScore',0.5).property('windowStart',1700006000000).property('windowEnd',1700007300000).property('relationType','sharedDependency').iterate() |
| g.V().has('incident','incidentId','inc:sev2-orders-001').as('a').V().has('incident','incidentId','inc:sev1-api-001').addE('relatedTo').from('a').property('correlationScore',0.6).property('windowStart',1700092000000).property('windowEnd',1700095700000).property('relationType','coOccurrence').iterate() |