{"_id":"@dynatrace/metric-utils","_rev":"19-e142387c936c7444b492e6bd3dc3a513","name":"@dynatrace/metric-utils","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@dynatrace/metric-utils","version":"0.1.0","author":"","license":"Apache-2.0","_id":"@dynatrace/metric-utils@0.1.0","maintainers":[{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"beeme1mr","email":"beeme1mr@gmail.com"},{"name":"dkhan","email":"daniel@khan.io"},{"name":"ddprrt","email":"sbaumg@gmail.com"},{"name":"dyladan","email":"dyladan@gmail.com"},{"name":"dpunz","email":"dominik.punz@dynatrace.com"},{"name":"kamtschatka","email":"simon.schatka@dynatrace.com"},{"name":"lukasholzer","email":"lukas.holzer@typeflow.cc"}],"homepage":"https://github.com/dynatrace-oss/opentelemetry-metrics-js#readme","bugs":{"url":"https://github.com/dynatrace-oss/opentelemetry-metrics-js/issues"},"dist":{"shasum":"ac90ead27801bad647db1422804bfea374ffcb80","tarball":"https://registry.npmjs.org/@dynatrace/metric-utils/-/metric-utils-0.1.0.tgz","fileCount":87,"integrity":"sha512-MoSyzXDVgMcRJIeIFWc8qcXCMvnPrSRmLy0+Io66fwi1Rxumh5p6tweHZW05xwy6O44Q8qQkHg7fpIl6oFveCA==","signatures":[{"sig":"MEQCIDK1zwesAugoX9v2aHYyK1oz4NTijAIIUGl1+ZEArNX9AiBKhY8GMFOIGNjJk/UZv9uwesgyOL3wAPl8Z1jV4UF/Ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2E3ECRA9TVsSAnZWagAAMyQP/0WFfTz9UGEm/Z9eUdEn\nEH2TQ0DZqroT3JT/nPRRn+3OIemPn62G8K8MSYZGgjZK9Ou2dIiXEw/Rg/mi\nggqtQwdZaJJNZ1KqHO5E11EEOIynD2n1LIm6mqdHToT0Dv+J7VM8MmiZ68cy\nFqOKnXl1s5PCy3RM0TvLqdZTf66LqOiGZnXlvBtboTEPqRNRVdrIXp2YPKWM\neUxb8CJHgZBof1WR8KCxuwuLzNkSmIuFHzyXv6DDTt6IVjVP2fGMy9J6U7ek\n8cBDxTBrA/wH02KwAsjPjvc0+KpIJN0MvTqvVOcr3aXtsH+tu+wszGoPJwCT\nXBwtXpAZWKbBssVD3CW55O4k6vatzExUO8ucXYsHPt9/NbbxJQjMvdif/R/p\nnGb4Ehj82FhBlLIs9sIttSW/SKZl9GhIsz6PlVJLGx2qX3Cn35pmkruPOO5e\noIXTKsIKI5ckAnI69mbda+41eE6Lf6cUox17MEZDp7/8sr6kVK44e2rhy6Eb\nvDf/F6upNGE57L1xzoGnzsEoMNvhbJwcls5gPjXYSGAm4WsB6Rj9/A+v3d1e\nZslYpbgVxsegdIUOJuWrnfkd/EVdtPnx9VXZBhhZLp5hiv/wxpw+xZF/ea7+\nHg2WlaYAmVu0BKla14nm99XcS32DBfXqIRGxrqzduScg0n/9uQBPk4iY9Hrv\nXEZi\r\n=Tb9r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","types":"build/src/index.d.ts","gitHead":"3f4d8682111e3ed71baf4784a94e7e7156894067","scripts":{"lint":"eslint --ext ts src test example","test":"nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'","check":"npm run prepare && npm run lint && npm run lint:md && npm t","clean":"tsc --build --clean","compile":"tsc","lint:md":"markdownlint -i node_modules '**/*.md'","prepare":"npm run clean && npm run compile"},"_npmUser":{"name":"dyladan","email":"dyladan@gmail.com"},"repository":{"url":"git+https://github.com/dynatrace-oss/opentelemetry-metrics-js.git","type":"git"},"_npmVersion":"7.20.3","description":"Utility library for interacting with the Dynatrace metrics API v2","directories":{},"_nodeVersion":"14.8.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^7.2.0","assert":"^2.0.0","eslint":"^7.28.0","mock-fs":"^4.14.0","ts-mocha":"^8.0.0","typescript":"^4.3.4","@types/node":"^15.12.2","@types/mocha":"^8.2.2","@types/mock-fs":"^4.13.0","markdownlint-cli":"^0.27.1","eslint-plugin-header":"^3.1.1","@typescript-eslint/parser":"^4.27.0","eslint-plugin-deprecation":"^1.2.1","@typescript-eslint/eslint-plugin":"^4.27.0"},"_npmOperationalInternal":{"tmp":"tmp/metric-utils_0.1.0_1632485458100_0.751194560444379","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@dynatrace/metric-utils","version":"0.1.1","author":"","license":"Apache-2.0","_id":"@dynatrace/metric-utils@0.1.1","maintainers":[{"name":"thschue","email":"thomas.schuetz@t-sc.eu"},{"name":"heckelmann","email":"christian.heckelmann@dynatrace.com"},{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"beeme1mr","email":"beeme1mr@gmail.com"},{"name":"ddprrt","email":"sbaumg@gmail.com"},{"name":"dyladan","email":"dyladan@gmail.com"},{"name":"dpunz","email":"dominik.punz@dynatrace.com"},{"name":"kamtschatka","email":"simon.schatka@dynatrace.com"},{"name":"lukasholzer","email":"lukas.holzer@typeflow.cc"}],"homepage":"https://github.com/dynatrace-oss/opentelemetry-metrics-js#readme","bugs":{"url":"https://github.com/dynatrace-oss/opentelemetry-metrics-js/issues"},"dist":{"shasum":"1c82e54f9a8ad6e59a74f8339dd022b8ae4942f2","tarball":"https://registry.npmjs.org/@dynatrace/metric-utils/-/metric-utils-0.1.1.tgz","fileCount":92,"integrity":"sha512-tRcgTx1l5f/ORGNAE8oj0j13IUFopV5zJ6r9pnaZA6BhxZBsULV8hEfSiKky+urG/aCiWaXO9gB5MP4XPvl4bw==","signatures":[{"sig":"MEQCIB39ylZRNqAs8STbcsiNSba3+N/7QM6WJiLmCGWAbqIpAiAw0+tKxQHbWNAgKO5ffxPSN4PLVapTz6fn+VBdYuwZJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":303706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTKMoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIGBAAltrV4MCA1C/CeEhrOdZdrLxp6GsOJ/k+hk0nxightEbWNWMc\r\nVO5lRKoj22a4dt8bpneBwBTtI7W3+n48AD9J+UoQ9ru5dvyCtqiJs3foDBrC\r\nHP+XBfbDHtDTpcpE8cm3bk2Zj6Lox3ZlD9nhKFAotCZPF29k3HJURxUKIgp1\r\n/ef3zVIIsMOVCkbX2eKkGTiEOhaqy4zNiwzTAZ0TL2f27khAPuGdUSOeEweU\r\nMRbhd6bElPbhO+6OkrDfpvMOXhp1posFLV2bMiWLGWreMzeLDttbEndZAV44\r\nIlZ53+03XUkcaYaMfNzvK5fW+eyMEqtHuVW9272IPA6jUZHx2za3LuNAhrVq\r\nGILZSd3BJusA5CBK2YrAm5gvzaKNM/TnGbJdM8kEAe26RON3ougiN0nTf4UR\r\nzOnyGu0/+O/1ql40OSCJ5KESPMPZanj+QXcBv5esWCFCIz4XZk8gnh9PGaDR\r\n4PxbTdTpDpXaQFlWuyMxlxVWSdY4zLaZv6j4YNASgUT2ApTWmGER16SqkEz2\r\nZ7TdJUEzlp5SgPPLlo4xV4qk1H/IMmEsaEtENZ8gMvQdQufn2K6XAZ1iCGUx\r\njuM5a4ygW/KXQ5gDjS8hQVDJV97ThJkYDeiwIBKeWOPvsoZcQoDrNv4TsmoO\r\nGwCc/tt7fSSx+I1wIGBuU2dbf1m4WQvPqp8=\r\n=JjZz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","types":"build/src/index.d.ts","gitHead":"135b3efbb3b6f0f577801bfde57ec8a29d848da1","scripts":{"lint":"eslint --ext ts src test example","test":"nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'","check":"npm run prepare && npm run lint && npm run lint:md && npm t","clean":"tsc --build --clean","compile":"tsc","lint:md":"markdownlint -i node_modules '**/*.md'","prepare":"npm run clean && npm run compile"},"_npmUser":{"name":"dyladan","email":"dyladan@gmail.com"},"repository":{"url":"git+https://github.com/dynatrace-oss/opentelemetry-metrics-js.git","type":"git"},"_npmVersion":"8.1.2","description":"Utility library for interacting with the Dynatrace metrics API v2","directories":{},"_nodeVersion":"14.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^7.2.0","assert":"^2.0.0","eslint":"^7.28.0","mock-fs":"^4.14.0","ts-mocha":"^8.0.0","typescript":"^4.3.4","@types/node":"^15.12.2","@types/mocha":"^8.2.2","@types/mock-fs":"^4.13.0","markdownlint-cli":"^0.27.1","eslint-plugin-header":"^3.1.1","@typescript-eslint/parser":"^4.27.0","eslint-plugin-deprecation":"^1.2.1","@typescript-eslint/eslint-plugin":"^4.27.0"},"_npmOperationalInternal":{"tmp":"tmp/metric-utils_0.1.1_1649189672041_0.8826592647745493","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@dynatrace/metric-utils","version":"0.2.0","author":"","license":"Apache-2.0","_id":"@dynatrace/metric-utils@0.2.0","maintainers":[{"name":"thschue","email":"thomas.schuetz@t-sc.eu"},{"name":"heckelmann","email":"christian.heckelmann@dynatrace.com"},{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"beeme1mr","email":"beeme1mr@gmail.com"},{"name":"ddprrt","email":"sbaumg@gmail.com"},{"name":"dyladan","email":"dyladan@gmail.com"},{"name":"dpunz","email":"dominik.punz@dynatrace.com"},{"name":"kamtschatka","email":"simon.schatka@dynatrace.com"},{"name":"lukasholzer","email":"lukas.holzer@typeflow.cc"}],"homepage":"https://github.com/dynatrace-oss/opentelemetry-metrics-js#readme","bugs":{"url":"https://github.com/dynatrace-oss/opentelemetry-metrics-js/issues"},"dist":{"shasum":"6a19d0bbcc41bdeadeac5d2b45a0ca45c434f88c","tarball":"https://registry.npmjs.org/@dynatrace/metric-utils/-/metric-utils-0.2.0.tgz","fileCount":87,"integrity":"sha512-/RzveHsjHunFzoF4EMn8d3G2iNd4VP1a8XYa12+d271jjZNB2iS6Ae/sp2YCKlwcI/h7EvQQ/LJqD7bfVytvIw==","signatures":[{"sig":"MEQCIEpEMtxxWLnpY0m/Xo3tFRy5+ClCY7nQ0ekr5FwFVACNAiBzBNoLLCcE0t1iSu2TRp7G0oNrWIBq4RkmIr25WFLY/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJip0oYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfDA//Run0tkjw7j8ZJg7mkdRS0v8cPWeJ4Qgz6QCzdWUdExN00GtE\r\nN99sVD4Vjsr9kFyjM6dkwZID1NUoAT3rI7Xz+8I/ayc9nYS9Pb/QBSZydkH7\r\n4VcHNjlYr0UVnAPviUGloadxTZc1uukuGeUBR3KoCQHtwD8uo8xBHtoNgxcT\r\n8WqDyZNqKvmL2F8mClHFZZrd+lCfiAa1w9qI1Upl7XccX+P6VTmxfdqrFXEa\r\nO283DSBVsUmpE/d2/Bj3E8icBiqQdaw5DWdAipgHvj5SBwidrmgcVyH0LEe+\r\nYUM3vzJQMCQsJWs3BuDp/1ogzddoJ8q8shIOzX5J8Y5UOvGUECz2s0J09EuI\r\naTMjEzu+yVbcsJ6+TeddmtcKRQLPlIeTitrSORvgl5nJN52wXRzRUPJgL1kj\r\nd2ZxvPdPLZsjdyGt0uWKkn/Io84qGmnFJkOrhJf1C2HAol7/lZ1D7MPXbvV3\r\nEkb70mf/tyLvzDBSraXX42ICvPIxSAwpffR3i2f5kGgVQJ3FMqtfDEVi1BMU\r\n3ePFMoBp8eAWczAgMHiVIDZHejh+2ATzEfi1N8bCojKcWbKSn474tErj9y2w\r\nNZz3A0uQiCtw2vHSZ7dCd6mwEjb9rZTsqp71x4U2m41yoObF7FuEnMa2/pHK\r\n7m/1VlcmXaUtJ2VCFk+KLH+TkzoDtU21wJc=\r\n=f4Oo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/src/index.js","types":"build/src/index.d.ts","gitHead":"5a21342104e3e5a97301a2bb69266b697a649fe4","scripts":{"lint":"eslint --ext ts src test example","test":"nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'","check":"npm run prepare && npm run lint && npm run lint:md && npm t","clean":"tsc --build --clean","compile":"tsc","lint:md":"markdownlint -i node_modules '**/*.md'","prepare":"npm run clean && npm run compile"},"_npmUser":{"name":"dyladan","email":"dyladan@gmail.com"},"repository":{"url":"git+https://github.com/dynatrace-oss/opentelemetry-metrics-js.git","type":"git"},"_npmVersion":"8.1.2","description":"Utility library for interacting with the Dynatrace metrics API v2","directories":{},"_nodeVersion":"14.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^7.2.0","assert":"^2.0.0","eslint":"^7.28.0","mock-fs":"^4.14.0","ts-mocha":"^8.0.0","typescript":"^4.3.4","@types/node":"^15.12.2","@types/mocha":"^8.2.2","@types/mock-fs":"^4.13.0","markdownlint-cli":"^0.27.1","eslint-plugin-header":"^3.1.1","@typescript-eslint/parser":"^4.27.0","eslint-plugin-deprecation":"^1.2.1","@typescript-eslint/eslint-plugin":"^4.27.0"},"_npmOperationalInternal":{"tmp":"tmp/metric-utils_0.2.0_1655130647985_0.36775545364601414","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-09-24T12:10:58.057Z","modified":"2026-04-15T21:55:38.005Z","0.1.0":"2021-09-24T12:10:58.340Z","0.1.1":"2022-04-05T20:14:32.190Z","0.2.0":"2022-06-13T14:30:48.183Z"},"bugs":{"url":"https://github.com/dynatrace-oss/opentelemetry-metrics-js/issues"},"license":"Apache-2.0","homepage":"https://github.com/dynatrace-oss/opentelemetry-metrics-js#readme","repository":{"url":"git+https://github.com/dynatrace-oss/opentelemetry-metrics-js.git","type":"git"},"description":"Utility library for interacting with the Dynatrace metrics API v2","maintainers":[{"email":"nodejs@dynatrace.com","name":"dynatrace-nodejs"},{"email":"simon.schatka@dynatrace.com","name":"kamtschatka"},{"email":"dyladan@gmail.com","name":"dyladan"},{"email":"toddbaert@gmail.com","name":"toddbaert"}],"readme":"# dynatrace-metric-utils-js\n\nJavaScript utility for preparing communication with the [Dynatrace Metrics API v2](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v2/).\n\n## Installation\n\nThe library may be built from source or installed from NPM by running:\n\n```shell\nnpm install @dynatrace/metric-utils\n```\n\n## Usage\n\nAn example for how to use this library can be found in [example/index.ts](example/index.ts).\nIt shows how to create metrics lines that can be sent to a [Dynatrace metrics ingest endpoint](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/metric-v2/post-ingest-metrics/) using an HTTP client library.\n\n\n### MetricFactory\n\nFor most basic use-cases, you will first create a `MetricFactory`. Using this `MetricFactory`, you will create individual `Metric`s which will then be serialized into strings.\n\n```typescript\nimport { MetricFactory } from \"@dynatrace/metric-utils\";\n\nconst factory = new MetricFactory(options);\nconst gauge = factory.createGauge(\"my_gauge\", dimensions, value, date);\n```\n\nSee a list of constructor options [below](#constructor-options).\n\n#### Metric Creation Methods\n\nThere are three methods to create metrics. Each takes a name, dimension list, value, and an optional date. They return a `Metric` or `undefined`. When a metric is created, its name and dimensions are normalized for ingestion by the Dynatrace Metrics API v2. If a metric cannot be normalized, it will be `undefined`.\n\n- `createGauge` - A single value serialized as `gauge,<value>`\n- `createCounterDelta` - A single value serialized as `count,delta=<value>`\n- `createSummary` - A summary of multiple values serialized as `gauge,min=<min>,max=<max>,sum=<sum>,count=<count>`\n\nEvery metric is serializable using its `metric.serialize()` method, which returns a string. This string can be ingested by the Dynatrace Metrics API v2.\n\n### Dynatrace Metadata Enrichment\n\nWhen run on a host which has an active OneAgent, the exported function `getDynatraceMetadata` will return a list of dimensions provided by Dynatrace.\nIf no metadata is found, it will return an empty list.\nMore information on the underlying feature that is used by the library can be found in the\n[Dynatrace documentation](https://www.dynatrace.com/support/help/how-to-use-dynatrace/metrics/metric-ingestion/ingestion-methods/enrich-metrics/) provided by Dynatrace.\n\n### Common constants\n\nThe library also provides constants that might be helpful in the projects consuming this library.\n\nTo access the constants, call the respective methods from the `apiconstants` package:\n\n```js\nconst defaultOneAgentEndpoint = getDefaultOneAgentEndpoint()\n```\n\nCurrently available constants are:\n\n* the default [local OneAgent metric API](https://www.dynatrace.com/support/help/how-to-use-dynatrace/metrics/metric-ingestion/ingestion-methods/local-api/) endpoint (`getDefaultOneAgentEndpoint()`)\n* the limit for how many metric lines can be ingested in one request (`getPayloadLinesLimit()`)\n\n### Constructor Options\n\n#### `prefix: string`\n\nA `prefix` will be used to prefix the name of any `Metric` created by the `MetricFactory`. For example, if the prefix `'my_prefix'` is used, a metric created with the name `'my_metric'` will be serialized with the name `'my_prefix.my_metric'`.\n\n```typescript\nconst factory = new MetricFactory({\n    prefix: \"my_prefix\",\n});\n\nconst metric = factory.createGauge(\"my_gauge\", [], 10);\n\nconsole.log(metric.serialize());\n// my_prefix.my_gauge 10\n```\n\n#### `defaultDimensions: Dimension[]`\n\n`defaultDimensions` is a list of dimensions which will be exported with every metric unless one or more of them is overridden by a metric dimension or one of the static dimensions.\n\n```typescript\nconst factory = new MetricFactory({\n    defaultDimensions: [{ key: 'my_dimension', value: 'value 1'}],\n});\n\nconst gauge1 = factory.createGauge(\"my_gauge\", [], 10);\nconst gauge2 = factory.createGauge(\"my_gauge\", [{ key: 'my_dimension', value: 'value 2' }], 10);\n\nconsole.log(gauge1.serialize());\n// my_gauge,my_dimension=value\\ 1 10\nconsole.log(gauge2.serialize());\n// my_gauge,my_dimension=value\\ 2 10\n```\n\n#### `staticDimensions: Dimension[]`\n\n`staticDimensions` is a list of dimensions which will be exported with every metric and cannot be overridden by metric dimensions or by default dimensions.\n\n```typescript\nconst factory = new MetricFactory({\n    staticDimensions: [{ key: 'dim', value: 'static'}],\n});\n\nconst gauge1 = factory.createGauge(\"my_gauge\", [], 10);\nconst gauge2 = factory.createGauge(\"my_gauge\", [{ key: 'dim', value: 'metric'}], 10);\n\nconsole.log(gauge1.serialize());\n// my_gauge,dim=static 10\nconsole.log(gauge2.serialize());\n// my_gauge,dim=static 10\n```","readmeFilename":"README.md"}