You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Color-hashing generates unique colors for each server connection
56
-
- Improved navigation bar and buttons
57
-
- Increased overall speed and responsiveness
58
-
- Updated Features
59
-
- Added React Testing Library
60
-
- Removed Spectron and Enzyme
61
-
- Added testing suites for unit, integration, and end-to-end testing
62
-
- Refactored components for dependency injection
63
-
- Bug Fixes
64
-
- Authentication now functioning properly
50
+
51
+
- Metric query tool so you can filter out specific metrics — now you only have to see what you want on the dashboard.
52
+
- Additional metrics added, bringing Chronos up from only 12 to 100+ metrics that are currently available
53
+
- Option to filter by category and individual metric, and flip between services and categories with ease
54
+
- Apache Kafka monitoring capability, all you need to do is run Prometheus JMX exporter on the system your Chronos application is running on. A sample JMX config.yaml file is provided in the Chronos repository for a quick and easy setup, however you are free to configure however you like.
55
+
- Bug fixes and UI tweaks — Chronos is now a more seamless experience than ever.
56
+
65
57
## Features
66
58
67
59
- Distributed tracing enabled across microservices applications
68
60
- Compatible with <imgsrc="./app/assets/graphql-logo-color.png"alt="GraphQL"title="GraphQL"align="center"height="20" /></a>
69
61
- Supports <ahref="#"><imgsrc="./app/assets/postgres-logo-color.png"alt="PostgreSQL"title="PostgreSQL"align="center"height="20" /></a> and <imgsrc="./app/assets/mongo-logo-color.png"alt="MongoDB"title="MongoDB"align="center"height="20" /></a> databases
70
62
- Displays real-time temperature, speed, latency, and memory statistics
71
63
- Display and compare multiple microservice metrics in a single graph
64
+
- Monitor an <ahref="#"><imgsrc="./app/assets/pngwing.com.png"alt="Apache Kafka"title="Apache Kafka"align="center"height="20" /></a> cluster via the JMX Prometheus Exporter
@@ -84,8 +88,8 @@ Chronos is a comprehensive developer tool that monitors the health and web traff
84
88
## Installation
85
89
This is for the latest Chronos version **5.2 release and later**.
86
90
87
-
- Stable release: 6.1.0
88
-
- LTS release: 6.1.0
91
+
- Stable release: 7.0.0
92
+
- LTS release: 7.0.0
89
93
90
94
### Pre-Installation
91
95
Make sure you're running version 14.16.1 of <ahref="#"><imgsrc="./app/assets/node-logo-color.png"alt="Node"title="Node"align="center"height="20" /></a></a>, which is the most recent LTS (long-term support) version.
To use Chronos in your existing application, download and install the following in the **root directory** of _each of your microservice applications_:
121
125
```
122
-
npm install chronos-tracker
126
+
npm install chronos-tracker-7
123
127
```
124
128
125
-
### Configure Chronos Tracker
129
+
### Configuring Chronos Tracker
126
130
127
131
Similarly, in the **root directory** of _each of your microservice applications_, create a `chronos-config.js` file with properties listed below:
128
132
129
133
```js
130
134
// A sample `chronos-config.js` file
131
135
132
-
constchronos=require('chronos-tracker');
136
+
constchronos=require('chronos-tracker-7');
133
137
134
138
chronos.use({
135
139
microservice:'payments',
136
140
interval:5000,
137
-
dockerized:true,
141
+
dockerized:true,// <-- The 'dockerized' property is optional
138
142
database: {
139
143
connection:'REST',
140
144
type:'MongoDB',
@@ -153,45 +157,31 @@ The `dockerized` property is optional and should be specified as `true` if the s
153
157
The `database` property is required and takes in the following:
154
158
-`connection` should be a string and only supports 'REST' and 'gRPC'
155
159
-`type` should be a string and only supports 'MongoDB' and 'PostgreSQL'.
156
-
-`URI` should be a connection string to the database where you intend Chronos to write and record data regarding health, HTTP route tracing, and container infomation.
157
-
158
-
_NOTE: A `.env` is recommended._
160
+
-`URI` should be a connection string to the database where you intend Chronos to write and record data regarding health, HTTP route tracing, and container infomation.
161
+
We reccommend using dotenv
159
162
160
-
<!-- - `isDockerized`: Is this microservice running in a Docker container? Enter `yes` or `no`. The current default setting is `no`.
161
-
- <img src="./app/assets/important.png" alt="Important" title="Important" align="center" height="20" /></a> When starting up the container, give it the same name that you used for the microservice, because the middleware finds the correct container ID of your container by matching the container name to the microservice name you input as 1st argument.
162
-
- <img src="./app/assets/important.png" alt="Important" title="Important" align="center" height="20" /></a> Don't forget to bind mount to Docker socket. -->
163
-
164
-
The `notifications` property is optional. Jump to the section below, [Notifications](#notifications) to configure <ahref="#"><imgsrc="./app/assets/slack-logo-color.png"alt="Slack"title="Slack"align="center"height="20" /></a> or email <ahref="#"><imgsrc="./app/assets/email-icon-black.png"alt="Slack"title="Slack"align="center"height="20" /></a> notifications.
165
-
<br>
166
-
<br>
167
-
168
-
### Initialize Chronos Tracker
169
-
#### Initialize Chronos Tracker for REST
170
-
171
-
Wherever you create an instance of your server (see example below),
163
+
You will also need to add the following two lines of code to your express server:,
172
164
173
165
```js
174
166
// Example for REST
175
167
constexpress=require('express');
176
-
constapp=express());
168
+
constapp=express();
177
169
178
170
```
179
171
180
-
you will also need to require in `chronos-tracker` and initialize Chronos, as well as the `./chronos-config` file. You will then need to invoke `chronos.propagate()` to initiate the route tracing, in addition to implementing `chronos.track()` for all endpoints.
172
+
you will also need to require in `chronos-tracker-7` and initialize Chronos, as well as the `./chronos-config` file in addition to implementing `chronos.track()` for all endpoints.
181
173
182
174
```js
183
-
constchronos=require('chronos-tracker');
175
+
constchronos=require('chronos-tracker-7');
184
176
require('./chronos-config'); // Bring in config file
185
177
186
178
// ...
187
179
188
-
chronos.propagate();
189
180
app.use('/', chronos.track());
190
181
```
191
182
192
-
You should be good to go! The last step, **Docker Configuration**, is**only applicable** if you need to configure <ahref="#"><imgsrc="./app/assets/docker-logo-color.png"alt="Docker"title="Docker"align="center"height="20" /></a> for your application.
183
+
You should be good to go! The steps below for **Docker Configuration** and **Kafka Configuration**, are**only applicable** if you need to configure <ahref="#"><imgsrc="./app/assets/docker-logo-color.png"alt="Docker"title="Docker"align="center"height="20" /></a> or Kafka for your application. See the **Notifications** section below for information on how to uses the notifications propery in `chronos-config.js`.
193
184
194
-
<br>
195
185
196
186
197
187
#### Initialize Chronos Tracker for gRPC
@@ -214,7 +204,7 @@ you will also need to require Chronos-tracker, Chronos-config, and dotenv.config
214
204
215
205
```js
216
206
//track health data
217
-
constchronos=require('chronos-tracker');
207
+
constchronos=require('chronos-tracker-7');
218
208
require('./chronos-config');
219
209
require('dotenv').config(); // set up environment variables in .env
220
210
constBookModel=require('./BookModel');
@@ -317,6 +307,49 @@ volumes:
317
307
- "/var/run/docker.sock:/var/run/docker.sock"
318
308
```
319
309
310
+
311
+
312
+
### Apache Kafka Monitoring (Via JMX to Prometheus Exporter)
313
+
314
+
Chronos now offers the ability to monitor an Apache Kafka cluster via JMX to Prometheus Exporter. In order for this feature to work you must be running [JMX to Prometheus
315
+
Exporter](https://github.com/prometheus/jmx_exporter) either as a Java Agent with your cluster or as a standalone HTTP server. Then, use `chronos-config.js` to specifiy the port exposed for metrics scraping.
316
+
317
+
To start, add the property `jmxuri` to the object in `chronos-config.js`. Your file should look similar to below. Add this property to `chronos-config.js` in ***ONE AND ONLY ONE** of your microservices:
318
+
319
+
```js
320
+
constchronos=require('chronos-tracker-7');
321
+
322
+
chronos.use({
323
+
microservice:'payments',
324
+
interval:5000,
325
+
dockerized:true,
326
+
jmxuri:// your URI here
327
+
database: {
328
+
connection:'REST',
329
+
type:'MongoDB',
330
+
URI:process.env.URI,
331
+
},
332
+
notifications: [],
333
+
});
334
+
```
335
+
The `jmxuri` property should be a string whose value is the port specified for scraping when starting the exporter.
336
+
337
+
Then, in ***ONE AND ONLY ONE** of your microservices, call
338
+
339
+
```js
340
+
341
+
chronos.kafka()
342
+
343
+
```
344
+
345
+
in your express server. When viewing your information in the Chronos Electron application the data will be available in the service "kafkametrics"
346
+
347
+
**NOTE:** We provide a config.yaml file in the Chronos root folder for use with JMX prometheus that provides some useful baseline metrics to monitor.
348
+
349
+
#
350
+
###### Return to [Top](#chronos)
351
+
<br>
352
+
320
353
### Start Chronos
321
354
322
355
Once you have configured and intialized Chronos Tracker, it will automatically record monitoring data when your servers are running. Finally, start the Chronos desktop app to view that data! After cloning our [GitHub repo](https://github.com/open-source-labs/Chronos), run `npm install` and `npm run both` to start Chronos.
@@ -417,9 +450,6 @@ Refer to the [README](link) in the `docker` folder for more details.
417
450
418
451
<br>
419
452
420
-
### gRPC Branch
421
-
The **'gRPC'** branch is the current codebase for the <ahref="#"><imgsrc="./app/assets/npm-logo-color.png"alt="NPM"title="NPM"align="center"height="20" /></a> package, which is what you will install in your own application in order to use Chronos. Download the <ahref="#"><imgsrc="./app/assets/npm-logo-color.png"alt="NPM"title="NPM"align="center"height="20" /></a> package [here](https://www.npmjs.com/package/chronos-tracker).
422
-
423
453
## chronosWebsite
424
454
This is the branch that holds the code base for the splash page. Edit the website by first running `git clone -b chronosWebsite https://github.com/open-source-labs/Chronos.git .` and then updating the aws S3 bucket with the changes.
425
455
@@ -449,7 +479,8 @@ This is the branch that holds the code base for the splash page. Edit the websit
{"setupRequired":false,"services":[["myPostgres","SQL","postgres://zwezmnqm:[email protected]:5432/zwezmnqm","Online bookstore with that keeps track of orders and customers","Jun 28, 2020 4:58 PM"],["ToddDB","MongoDB","mongodb+srv://tdwolf6:[email protected]/Chronos?retryWrites=true&w=majority","Web app deployed on AWS","Jul 3, 2020 7:12AM"]],"mode":"dark mode","splash":true,"landingPage":"dashBoard"}
0 commit comments