The Middleware For Web-Server To Record Hits In ElasticSearch.
npm install logarithm
logarithm Is A Koa Middleware That Records Logs In _ElasticSearch_. The CLI binary also allows to execute commands on the _ElasticSearch_ instance via the API, such as:
- creating snapshots,
- installing templates,
- _etc_
``sh`
yarn add logarithm
- Table Of Contents
- API
- logarithm(options: !Config): !_goa.Middleware
* Config
* Hit
- async ping(url: string, timeout: number): void
- CLI
* List Templates, -T
* Statistics, -s
- Copyright & License
The package is available by importing its default function and a named function:
`js`
import logarithm, { ping } from 'logarithm'
logarithm(
): !_goa.Middleware - options* !Config: Options for the middleware.
__Config__: Options for the program.
| Name | Type & Description | Default |
|---|---|---|
| app* | string | - |
The name of the website application. | ||
| url* | string | - |
ElasticSearch endpoint URL, e.g., http://192.168.0.1:9200. | ||
| timeout | number | 5000 |
Timeout for the connection after which an error is shown. | ||
| pipeline | string | info |
The pipeline in ElasticSearch, for example to parse GeoIP info and User-Agent. | ||
| index | string | - |
The name of the index. Defaults to the app name if not specified. | ||
| strategy | (index: string, date: !Date) => string | |
How to construct the index name. By default, monthly strategy is used: ${index}-${yyyy}.${mm}.index* string: The general name of the index.date* !Date: The date of the request. | ||
`js
/ yarn example/ /
import core from '@idio/idio'
import logarithm, { ping } from 'logarithm'
(async () => {
await ping(process.env.ELASTIC)
// setup for idio web-server
const { url, app } = await core()
app.use(logarithm({
app: 'idio.cc',
url: process.env.ELASTIC,
index: 'clients',
}))
app.use(async (ctx) => {
ctx.body = 'hello world'
})
console.log(url)
})()
`
The following data structure is sent to the server:
__Hit__: A record sent to ElasticSearch.
| Name | Type | Description |
| ------------ | ---------------- | ------------------------------------------------- |
| __app*__ | string | The application name from the config. |
| __ip*__ | string | Client IP address. |
| __path*__ | string | The decoded request path. |
| __headers*__ | !Object | The request headers. |
| __status*__ | number | The status code. |
| __date*__ | !Date | The date of the request. |
| __method*__ | string | The method of the request, e.g., GET or POST. |
| query | !Object | Possible query from the request. |
async ping(
timeout: number,
): void - url* string: The ElasticSearch URL.
- timeout* number: The timeout for the request in ms.
_Logarithm_ also provides a CLI tool to be able to install index patterns and a pipeline for the use by the middleware API.
`js`
logarithm -h
`Dockerfile
ElasticSearch utility for creating a pipeline and index templates
for logging request using logarithm middleware.
logarithm
url The ElasticSearch URL.
If protocol is not given, http is assumed.User-Agent
--stats, -s Display statistics by indices.
--templates, -T List all index templates.
--delete, -d Delete an index, snapshot or pipeline.
Used with the relevant flag.
--index, -i Select an index for operations.
--pipeline, -p Create a pipeline with GeoIp
and plugins.
--pipelines, -P Display installed pipelines.
--snapshots, -S List registered snapshot repositories.
--help, -h Print the help information and exit.
--version, -v Show the version's number and exit.
Snapshots: used to print info, create and restore snapshots.
logarithm
--repository-s3, -s3 Create a new s3 snapshot repo with this name.s3
--bucket The bucket name for the snapshot repository.
--repo, -r The name of the repo.
--snapshot, -s The name of the snapshot.
--restore Restore this snapshot.
--status Fetch the status.
Templates: creates a template for an app.
logarithm
--template, -t Create an index template for storing
log data in the {template}-* index.
--shards, -s The number of shards for index template.
Default: 1.
--replicas, -r The number of replicas for index template.
Methods: send data from JSON files.
logarithm
--post Send POST request with data from the file.
--path, -p The path to send a request to.
`
📙 Read Wiki For More Documentation
To see what templates are installed.
`sh`
logarithm 192.168.0.1:9200 -T
`fs`
Name Patterns Shards Replicas
kibana_index_template:.kibana .kibana 1
hits-logarithm.page logarithm.page-* 1 0
hits-clients clients-* 1 0
hits-client2 client2-* 1 0
The stats can be used to monitor created indices.
`sh`
logarithm 192.168.0.1:9200 -s
`sh``
Name Memory Docs Size
logarithm.page 11.6 KB 1 21.6 KB
logarithm.page-2018.12 60.4 KB 8859 3.3 MB
logarithm.page-2018.11 64.4 KB 116 179.5 KB
logarithm.page-2019.2 151.4 KB 63 279.1 KB
logarithm.page-2019.1 120.7 KB 5747 2.2 MB
GNU Affero General Public License v3.0
alt="Art Deco"> | © Art Deco™ 2020 |
|---|