@toolisticon/ssl-hostinfo-prometheus-exporter
Advanced tools
Comparing version 1.0.2 to 1.1.0-greenkeeper-jasmine-3.4.0-1
const CronJob = require('cron').CronJob; | ||
const pkg = require('./package.json'); | ||
const log = require('./lib/logger'); | ||
@@ -7,2 +8,4 @@ const config = require('./lib/config'); | ||
log.info('ssl-hostinfo-prometheus-exporter info', { version: pkg.version }); | ||
async function triggerUpdate () { | ||
@@ -9,0 +12,0 @@ log.info('Start reading route information.'); |
@@ -0,1 +1,11 @@ | ||
# [1.1.0](https://github.com/toolisticon/ssl-hostinfo-prometheus-exporter/compare/v1.0.2...v1.1.0) (2019-04-02) | ||
### Features | ||
* **End2End-Testing:** Using promtool for syntax checking ([5870924](https://github.com/toolisticon/ssl-hostinfo-prometheus-exporter/commit/5870924)) | ||
* **Logging:** Use logging framework which is ELK-compatible ([a1d51a0](https://github.com/toolisticon/ssl-hostinfo-prometheus-exporter/commit/a1d51a0)) | ||
## [1.0.2](https://github.com/toolisticon/ssl-hostinfo-prometheus-exporter/compare/v1.0.1...v1.0.2) (2019-03-04) | ||
@@ -2,0 +12,0 @@ |
@@ -12,3 +12,2 @@ let config = {}; | ||
cron: process.env.CRON || '0 0 * * * *', | ||
logLevel: process.env.LOG_LEVEL || 'ERROR', | ||
urlsToCheck: urls | ||
@@ -15,0 +14,0 @@ }; |
@@ -1,11 +0,20 @@ | ||
const config = require('./config'); | ||
const Logger = require('log4bro'); | ||
function logInfo (message) { | ||
if (config.logLevel === 'INFO') { | ||
console.log(`${new Date().toISOString()} INFO ${message}`); | ||
} | ||
const options = { | ||
productionMode: process.env.LOG_LEVEL !== 'INFO', // switches loglevel between DEBUG and WARN | ||
logDir: 'logs', // relative directory to write log file to | ||
silence: false, // silences logger | ||
loggerName: 'dev', // ignore | ||
dockerMode: process.env.CONSOLE_LOG || false, // disables output to logfile | ||
varKey: 'LOG' // name of global variable | ||
}; | ||
const LOG = new Logger(options); | ||
function logInfo (message, additionalFields = {}) { | ||
LOG.info(message, additionalFields); | ||
} | ||
function logError (message) { | ||
console.error(`${new Date().toISOString()} ERROR ${message}`); | ||
function logError (message, additionalFields = {}) { | ||
LOG.error(message, additionalFields); | ||
} | ||
@@ -12,0 +21,0 @@ |
@@ -29,6 +29,7 @@ const moment = require('moment'); | ||
const date = moment(value); | ||
const labelKey = key.toLowerCase().split('-').join('_').split('.').join('_'); | ||
if (date.isValid()) { | ||
return `${key.toLowerCase()}="${date.valueOf()}",`; | ||
return `${labelKey}="${date.valueOf()}",`; | ||
} else { | ||
return `${key.toLowerCase()}="${value}",`; | ||
return `${labelKey}="${value}",`; | ||
} | ||
@@ -190,5 +191,12 @@ } | ||
let response = ''; | ||
response += `# HELP ${mozillaMetricName} Mozilla Observatory SSL stats\n`; | ||
Object.keys(resultStore).map((host) => { | ||
response += `${normalizePrometheusDate(resultStore[host].moz)}`; | ||
}); | ||
response += `# HELP ${sslDetailsMetricName} Generic SSL Details\n`; | ||
Object.keys(resultStore).map((host) => { | ||
response += `${normalizePrometheusDate(resultStore[host].details)}`; | ||
}); | ||
response += `# HELP ${sslExpireMetricName} Remaining Days before certificate expiry\n`; | ||
Object.keys(resultStore).map((host) => { | ||
response += `${normalizePrometheusDate(resultStore[host].expire)}`; | ||
@@ -195,0 +203,0 @@ }); |
{ | ||
"name": "@toolisticon/ssl-hostinfo-prometheus-exporter", | ||
"version": "1.0.2", | ||
"version": "1.1.0-greenkeeper-jasmine-3.4.0-1", | ||
"description": "", | ||
@@ -21,3 +21,3 @@ "main": "index.js", | ||
"preend2end-test": "docker build -t toolisticon/ssl-hostinfo-prometheus-exporter . && cd test/setup && docker-compose up -d --force-recreate && sleep 60", | ||
"end2end-test": "pytest test/end2end/test_*.py --junitxml=target/reports/junit.xml", | ||
"end2end-test": "pytest test/end2end/test_*.py --junitxml=target/reports/junit.xml && curl -s localhost:9000 | docker exec -i prometheus promtool check metrics", | ||
"postend2end-test": "cd test/setup && docker-compose stop && docker-compose rm -f -s -v && docker volume prune -f", | ||
@@ -60,2 +60,3 @@ "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", | ||
"cron": "^1.6.0", | ||
"log4bro": "^3.8.0", | ||
"moment": "^2.24.0", | ||
@@ -77,5 +78,5 @@ "request": "^2.88.0", | ||
"eslint-plugin-standard": "^4.0.0", | ||
"jasmine": "^3.3.1", | ||
"jasmine": "^3.4.0", | ||
"nodemon": "^1.18.10" | ||
} | ||
} |
@@ -45,5 +45,43 @@ # Monitor SSL certificates in Prometheus | ||
CRON: // set cron pattern, default is '0 0 * * * *', | ||
LOG_LEVEL: // set log level, default is 'ERROR' ('INFO' outputs details info) | ||
LOG_LEVEL: // set log level, default is 'ERROR' ('INFO' outputs details info), | ||
CONSOLE_LOG: // set to true to omit logging to file, otherwise logs will be written to `logs` dir | ||
``` | ||
Sample: | ||
``` | ||
URLS_TO_CHECK=url1.sample.com,url2.sample.com LOG_LEVEL=INFO CONSOLE_LOG=true node app.js | ||
``` | ||
Will produce the following output: | ||
``` | ||
{"pid":65072,"msg":"[log4bro] Logger is: in-prod=false, in-docker:true, level=DEBUG, skipDebug=false","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.443Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Start reading route information.","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.563Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Triggering scan for url1.sample.com,url2.sample.com","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.563Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Triggering scan for url1.sample.com","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.563Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Triggering scan for url2.sample.com","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.566Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"prometheus-exporter listening at 9000","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.569Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Reading scan results for url1.sample.com","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.769Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Reading scan results for url2.sample.com","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:20.770Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Skipping invalid response for mozilla scoring","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:21.206Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
{"pid":65072,"msg":"Skipping invalid response for mozilla scoring","loglevel":"INFO","loglevel_value":30,"@timestamp":"2019-04-02T13:56:21.208Z","host":"MPB-M1.local","log_type":"application","application_type":"service"} | ||
``` | ||
And | ||
``` | ||
URLS_TO_CHECK=url1.sample.com,url2.sample.com LOG_LEVEL=INFO node app.js | ||
``` | ||
creates this output: | ||
``` | ||
INFO @ 2019-04-02T13:57:42.181Z : [log4bro] Logger is: in-prod=false, in-docker:false, level=DEBUG, skipDebug=false | ||
INFO @ 2019-04-02T13:57:42.301Z : Start reading route information. | ||
INFO @ 2019-04-02T13:57:42.301Z : Triggering scan for url1.sample.com,url2.sample.com | ||
INFO @ 2019-04-02T13:57:42.301Z : Triggering scan for url1.sample.com | ||
INFO @ 2019-04-02T13:57:42.304Z : Triggering scan for url2.sample.com | ||
INFO @ 2019-04-02T13:57:42.307Z : prometheus-exporter listening at 9000 | ||
INFO @ 2019-04-02T13:57:42.507Z : Reading scan results for url1.sample.com | ||
INFO @ 2019-04-02T13:57:42.508Z : Reading scan results for url2.sample.com | ||
INFO @ 2019-04-02T13:57:43.001Z : Skipping invalid response for mozilla scoring | ||
INFO @ 2019-04-02T13:57:43.024Z : Skipping invalid response for mozilla scoring | ||
``` | ||
and the logs in JSON format within the directy `logs` | ||
## Troubleshooting | ||
@@ -50,0 +88,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
39095
378
127
6
1
2
+ Addedlog4bro@^3.8.0
+ Added@google-cloud/common@3.10.0(transitive)
+ Added@google-cloud/logging@9.9.0(transitive)
+ Added@google-cloud/logging-bunyan@3.3.1(transitive)
+ Added@google-cloud/paginator@3.0.7(transitive)
+ Added@google-cloud/projectify@2.1.1(transitive)
+ Added@google-cloud/promisify@2.0.4(transitive)
+ Added@grpc/grpc-js@1.6.12(transitive)
+ Added@grpc/proto-loader@0.6.130.7.13(transitive)
+ Added@protobufjs/aspromise@1.1.2(transitive)
+ Added@protobufjs/base64@1.1.2(transitive)
+ Added@protobufjs/codegen@2.0.4(transitive)
+ Added@protobufjs/eventemitter@1.1.0(transitive)
+ Added@protobufjs/fetch@1.1.0(transitive)
+ Added@protobufjs/float@1.0.2(transitive)
+ Added@protobufjs/inquire@1.1.0(transitive)
+ Added@protobufjs/path@1.1.2(transitive)
+ Added@protobufjs/pool@1.1.0(transitive)
+ Added@protobufjs/utf8@1.1.0(transitive)
+ Added@tootallnate/once@2.0.0(transitive)
+ Added@types/long@4.0.2(transitive)
+ Added@types/node@22.13.5(transitive)
+ Addedabort-controller@3.0.0(transitive)
+ Addedagent-base@6.0.2(transitive)
+ Addedansi-regex@5.0.1(transitive)
+ Addedansi-styles@4.3.0(transitive)
+ Addedarrify@2.0.1(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbase64-js@1.5.1(transitive)
+ Addedbasic-auth@2.0.1(transitive)
+ Addedbignumber.js@9.1.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbuffer-equal-constant-time@1.0.1(transitive)
+ Addedbunyan@1.8.15(transitive)
+ Addedcall-bind-apply-helpers@1.0.2(transitive)
+ Addedcall-bound@1.0.3(transitive)
+ Addedchalk@4.1.2(transitive)
+ Addedcliui@7.0.48.0.1(transitive)
+ Addedcolor-convert@2.0.1(transitive)
+ Addedcolor-name@1.1.4(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addeddebug@2.6.94.4.0(transitive)
+ Addeddepd@2.0.0(transitive)
+ Addeddot-prop@6.0.1(transitive)
+ Addeddtrace-provider@0.8.8(transitive)
+ Addeddunder-proto@1.0.1(transitive)
+ Addedduplexify@4.1.3(transitive)
+ Addedecdsa-sig-formatter@1.0.11(transitive)
+ Addedee-first@1.1.1(transitive)
+ Addedemoji-regex@8.0.0(transitive)
+ Addedend-of-stream@1.4.4(transitive)
+ Addedent@2.2.2(transitive)
+ Addedes-define-property@1.0.1(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.1.1(transitive)
+ Addedescalade@3.2.0(transitive)
+ Addedevent-target-shim@5.0.1(transitive)
+ Addedeventid@2.0.1(transitive)
+ Addedfast-text-encoding@1.0.6(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedgaxios@4.3.3(transitive)
+ Addedgcp-metadata@4.3.1(transitive)
+ Addedget-caller-file@2.0.5(transitive)
+ Addedget-intrinsic@1.3.0(transitive)
+ Addedget-proto@1.0.1(transitive)
+ Addedglob@6.0.4(transitive)
+ Addedgoogle-auth-library@7.14.1(transitive)
+ Addedgoogle-gax@2.30.5(transitive)
+ Addedgoogle-p12-pem@3.1.4(transitive)
+ Addedgopd@1.2.0(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedgtoken@5.3.2(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedhas-symbols@1.1.0(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhttp-proxy-agent@5.0.0(transitive)
+ Addedhttps-proxy-agent@5.0.1(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-fullwidth-code-point@3.0.0(transitive)
+ Addedis-obj@2.0.0(transitive)
+ Addedis-regex@1.2.1(transitive)
+ Addedis-stream@2.0.1(transitive)
+ Addedis-stream-ended@0.1.4(transitive)
+ Addedjson-bigint@1.0.0(transitive)
+ Addedjwa@2.0.0(transitive)
+ Addedjws@4.0.0(transitive)
+ Addedlodash.camelcase@4.3.0(transitive)
+ Addedlog4bro@3.18.0(transitive)
+ Addedlong@4.0.05.3.1(transitive)
+ Addedlru-cache@6.0.0(transitive)
+ Addedmath-intrinsics@1.1.0(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedmkdirp@0.5.6(transitive)
+ Addedmorgan@1.10.0(transitive)
+ Addedms@2.0.02.1.3(transitive)
+ Addedmv@2.1.1(transitive)
+ Addednan@2.22.1(transitive)
+ Addedncp@2.0.0(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addednode-forge@1.3.1(transitive)
+ Addedobject-hash@3.0.0(transitive)
+ Addedon-finished@2.3.02.4.1(transitive)
+ Addedon-headers@1.0.2(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedproto3-json-serializer@0.1.9(transitive)
+ Addedprotobufjs@6.11.37.4.0(transitive)
+ Addedpump@3.0.2(transitive)
+ Addedpumpify@2.0.1(transitive)
+ Addedpunycode@1.4.1(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedrequire-directory@2.1.1(transitive)
+ Addedretry-request@4.2.2(transitive)
+ Addedrimraf@2.4.5(transitive)
+ Addedsafe-buffer@5.1.2(transitive)
+ Addedsafe-json-stringify@1.2.0(transitive)
+ Addedsafe-regex-test@1.1.0(transitive)
+ Addedstream-events@1.0.5(transitive)
+ Addedstream-shift@1.0.3(transitive)
+ Addedstring-width@4.2.3(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedstrip-ansi@6.0.1(transitive)
+ Addedstubs@3.0.0(transitive)
+ Addedsupports-color@7.2.0(transitive)
+ Addedteeny-request@7.2.0(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedundici-types@6.20.0(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
+ Addeduuid@8.3.2(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
+ Addedwrap-ansi@7.0.0(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedy18n@5.0.8(transitive)
+ Addedyallist@4.0.0(transitive)
+ Addedyargs@16.2.017.7.2(transitive)
+ Addedyargs-parser@20.2.921.1.1(transitive)