This repository has been archived by the owner on Sep 7, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
target_server.js
85 lines (72 loc) · 2.82 KB
/
target_server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Copyright 2018 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
var zetta = require('zetta');
var StatsClient = require('stats-client');
var MemoryPeerRegistry = require('./memory_peer_registry');
var MemoryRegistry = require('./memory_registry');
var DeviceDataSqs = require('zetta-device-data-sqs');
var DeviceDataInflux = require('./influx_collector');
var UsageApp = require('zetta-usage-addon');
var UsageCollector = require('./sqs_collector');
var port = process.env.MAPPED_PORT || 3001;
var version = process.env.VERSION || '0';
var RestartResource = require('./restart_resource');
var ServiceRegistryClient = require('./service_registry_client');
var MetaUsageCollector = require('./meta_usage_collector');
var instance = zetta({
registry: new MemoryRegistry(), // no device registry is needed
peerRegistry: new MemoryPeerRegistry()
});
instance.name('cloud-' + port);
instance.use(function(server) {
server.httpServer.cloud.add(RestartResource);
});
if (process.env.DEVICE_DATA_QUEUE) {
var sqs = new DeviceDataSqs({
queueUrl: process.env.DEVICE_DATA_QUEUE,
accessKeyId: process.env.AWS_ACCESSKEY,
secretAccessKey: process.env.AWS_SECRET
});
instance.use(sqs.collect());
}
if (process.env.USAGE_QUEUE) {
var app = new UsageApp()
instance.use(app.collect());
var opts = {
queueUrl: process.env.USAGE_QUEUE,
accessKeyId: process.env.AWS_ACCESSKEY,
secretAccessKey: process.env.AWS_SECRET,
emitter: app
}
UsageCollector(opts);
}
if(process.env.INFLUX_DATABASE) {
instance.use(DeviceDataInflux);
}
if (process.env.INFLUXDB_HOST) {
console.log('Starting Meta Usage Collector');
var opts = {
host: process.env.COREOS_PRIVATE_IPV4
};
// allow a list of peers to be passed, overides COREOS_PRIVATE_IPV4
if (process.env.ETCD_PEER_HOSTS) {
opts.host = process.env.ETCD_PEER_HOSTS.split(',');
}
var serviceRegistryClient = new ServiceRegistryClient(opts);
var statsdHost = process.env.COREOS_PRIVATE_IPV4 || 'localhost';
var statsClient = new StatsClient(statsdHost + ':8125', { }, { telegraf: true });
var serverUrl = ((process.env.COREOS_PRIVATE_IPV4) ? process.env.COREOS_PRIVATE_IPV4 : 'localhost') + ':' + port;
instance.use(MetaUsageCollector({ client: statsClient, serviceRegistryClient: serviceRegistryClient, serverUrl: serverUrl }));
}
instance.listen(port);