Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sematext/sematext-agent-express
Express.js Monitoring and Logging Agent by Sematext
https://github.com/sematext/sematext-agent-express
agent express express-js express-middleware javascript logger logger-middleware logging logging-and-metrics metrics monitoring morgan morgan-middleware nodejs sematext sematext-agent-express winston winston-logsene
Last synced: 3 days ago
JSON representation
Express.js Monitoring and Logging Agent by Sematext
- Host: GitHub
- URL: https://github.com/sematext/sematext-agent-express
- Owner: sematext
- License: apache-2.0
- Created: 2019-12-08T17:43:59.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-10-19T08:44:04.000Z (about 1 year ago)
- Last Synced: 2024-10-14T00:50:01.747Z (about 1 month ago)
- Topics: agent, express, express-js, express-middleware, javascript, logger, logger-middleware, logging, logging-and-metrics, metrics, monitoring, morgan, morgan-middleware, nodejs, sematext, sematext-agent-express, winston, winston-logsene
- Language: JavaScript
- Homepage: https://sematext.com/docs/integration/express.js/
- Size: 915 KB
- Stars: 16
- Watchers: 12
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Sematext Agent Express
[![Build Status](https://travis-ci.org/sematext/sematext-agent-express.svg?branch=master)](https://travis-ci.org/sematext/sematext-agent-express)
[![NPM](https://nodei.co/npm/sematext-agent-express.png)](https://nodei.co/npm/sematext-agent-express/)
This is the Express.js monitoring and logging agent for [Sematext](https://sematext.com/). The following data is collected and shipped to Sematext [Cloud](https://sematext.com/cloud/) / [Enterprise](https://sematext.com/enterprise/):
- OS Metrics (CPU / Mem)
- Process Memory
- Process Metrics
- EventLoop Metrics
- Garbage Collector Metrics
- Web Server Metrics:
- request rate
- error rate
- response times
- content size
- HTTP Logs per API endpoint:
- response times
- content size
- URL
- status
- method
- Custom Logs:
- Instead of using `console.log` ship all logs directly to Sematext Logs with `stLogger`## Quickstart
1. Sign up to [Sematext for free](https://apps.sematext.com/ui/registration)
2. [Create a Node.js Monitoring App](https://apps.sematext.com/ui/integrations) and copy the Monitoring App Token
3. [Create a Logs App](https://apps.sematext.com/ui/integrations) and copy the Logs App Token
4. Install the `sematext-agent-express` npm module
4. Configure environment variables
5. Run the agent using the App tokens provided for your Monitoring and Logs Apps## Create Apps in Sematext
After you sign up to Sematext [here](https://apps.sematext.com/ui/registration), you need to create Apps to store metrics and logs data.
1. Create a [Logs App](https://sematext.com/docs/logs/quick-start/)
2. Create a [Monitoring App](https://sematext.com/docs/monitoring/quick-start/)## Installation
Install the package from the NPM registry.
```bash
npm i sematext-agent-express
```## Configure Environment
Make sure to configure your ENVIRONMENT variables before adding `sematext-agent-express`. You can do this either by exporting the variables to your environment or by using `dotenv`. We suggest you use `dotenv`.
### Export env vars
If you are using the US region of Sematext Cloud:
```bash
export MONITORING_TOKEN=
export LOGS_TOKEN=
export INFRA_TOKEN=
```If you are using the EU region of Sematext Cloud:
```bash
export REGION=EU
export MONITORING_TOKEN=
export LOGS_TOKEN=
export INFRA_TOKEN=
```### Use dotenv
```bash
npm i dotenv
```Create a `.env` file in the root of your project.
Add this code if you are using the US region of Sematext Cloud:
```
MONITORING_TOKEN=
LOGS_TOKEN=
INFRA_TOKEN=
```Add this code if you are using the EU region of Sematext Cloud:
```
REGION=EU
MONITORING_TOKEN=
LOGS_TOKEN=
INFRA_TOKEN=
```## Configure Agent
Make sure to load the environment variables at the top of your JavaScript entry point file. Then require `sematext-agent-express`.
The Agent has 3 parts:
- `stMonitor` - Monitors metrics and sends to Sematext Monitoring
- `stLogger` - A logger based on `winston`, that will send logs directly to Sematext Logs
- `stHttpLoggerMiddleware` - Express.js middleware function that will send all HTTP endpoint logs to Sematext Logs### Usage
```javascript
// Load env vars
require('dotenv').config()// require all agents
const { stMonitor, stLogger, stHttpLoggerMiddleware } = require('sematext-agent-express')// Start monitoring metrics
stMonitor.start()// ...
// At the top of your routes add the stHttpLoggerMiddleware to send HTTP logs to Sematext
const express = require('express')
const app = express()
app.use(stHttpLoggerMiddleware)// ...
// Use the stLogger to send all types of logs directly to Sematext
app.get('/api', (req, res, next) => {
stLogger.info('Hello World.')
stLogger.error('Some error.')
res.status(200).send('Hello World.')
})
```You can use all parts of the Agent of use them separately. It's all up to you.
## Result
The Agents will capture both metrics, logs, and HTTP logs per API endpoint.### Metrics
![](https://cdn.sematext.com/images/sample-nodejs-metrics.png)
### Logs
![](https://cdn.sematext.com/images/sample-nodejs-logs.png)
## Troubleshooting
Check out our [documentation](https://sematext.com/docs/integration/express.js/) for more information.## Built with
- [spm-agent-nodejs](https://github.com/sematext/spm-agent-nodejs)
- [winston](https://github.com/winstonjs/winston)
- [winston-logsene](https://github.com/sematext/winston-logsene)
- [morgan](https://github.com/expressjs/morgan)
- [morgan-json](https://github.com/indexzero/morgan-json)## LICENSE
Apache 2 - see the [LICENSE](./LICENSE) file.