-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CON-181 Add prometheus metrics to CN #3166
Conversation
For reference, linking the other content node prometheus PR https://github.com/AudiusProject/audius-protocol/pull/2888/files |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for coming up with this POC. much simpler integration than the other but i still think we're missing some insights on how to best integrate this. i had some questions about how the metrics are instrumented and collected
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
|
GitGuardian id | Secret | Commit | Filename | |
---|---|---|---|---|
3509188 | Generic High Entropy Secret | c16d74d | .circleci/config.yml | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
Our GitHub checks need improvements? Share your feedbacks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@joaquincasares @dmanjunath i know this took me a long time but i spent a while with the code + docs, thinking through best patterns. i responded to all your comments with my thoughts
also pushed up:
- more fleshed out metric creation pattern
- added a more complex metric to /tracks, per @joaquincasares 's example/suggestion
- added gauge metrics to understand their API + ensure it fits in my proposed pattern
- first pass at getting test coverage
pls keep in mind that PR is still in draft and code is not ready for full review, just take a look at the high level patterns
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good! 🔥
creator-node/src/services/prometheusMonitoring/prometheusMetrics.constants.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusMetrics.constants.js
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i like this approach a lot. very light and very flexible. we can add more structure if we want later on
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good!
I notice the Draft label was removed. Is this the final review now?
If so, I went through it a few times and everything looks good! I'll come back to it first thing Monday with fresh eyes, but I don't see any blockers at the moment!
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheusRegistry.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
@@ -131,8 +131,22 @@ const healthCheckController = async (req) => { | |||
* Controller for `health_check/sync` route, calls | |||
* syncHealthCheckController | |||
*/ | |||
const syncHealthCheckController = async () => { | |||
const syncHealthCheckController = async (req) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i just used this as an example of a Gauge metric - the previous example in Monitors was actually broken
const { createBullBoard } = require('@bull-board/api') | ||
const { BullAdapter } = require('@bull-board/api/bullAdapter') | ||
const { ExpressAdapter } = require('@bull-board/express') | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just moved lines from below
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this looks great. The README and examples are very clear as well
creator-node/src/components/healthCheck/healthCheckController.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great!
Aside from the one line deletion and the _counts_total
thread, everything here looks golden! 🔥
creator-node/src/services/prometheusMonitoring/prometheus.constants.js
Outdated
Show resolved
Hide resolved
[eb23ea0] [C-2309] Fix track title hover state (#3197) Dylan Jeffers [b82a6ee] [C-2303] Ensure consistent play/active state for entity tiles (#3195) Dylan Jeffers [3faedfb] [C-2223] Flex on Finnuh (#3196) Raymond Jacobson [d1cd884] [C-2271] Update data passed to edit playlist form to update playlist properly (#3183) Kyle Shanks [7837460] [C-2187] Improve sign-up error messages (#3194) Dylan Jeffers [e200477] [C-2287] Update wallet connect language, flags, icons (#3192) Dylan Jeffers [cc0b56d] allow create notification to handle playlist id as array or int (#3190) sabrina-kiam [d357b3b] [C-2431] Add tastmaker notification to mobile (#3191) Dylan Jeffers [83a6d36] No playlists text fix C-2296 (#3189) nicoback2 [0e44281] [PLAT-847]: Fix user subscription create album notification copy (#3162) sabrina-kiam [7da3e10] [C-2412] Opaque id deeplinks (#3188) Sebastian Klingler [4ff1c53] [C-2418] Fix mobile web open in app banner (#3173) Raymond Jacobson [22a1240] [C-1504] Prevent user from following themselves (#3187) Dylan Jeffers [465182a] [C-2306] Fix sign-in sign-up invalid email bug (#3186) Dylan Jeffers [2cec764] [C-1750] Refactor top tags (#3180) Dylan Jeffers [7ca864f] Fix Snap sharing with weird track names C-2081 (#3176) nicoback2 [761187a] Fix missing track on Sammie's page C-2342 (#3182) nicoback2 [41c9cf5] Fix track upload cover art name (#3138) Theo Ilie [cfb0b96] [C-2428] Handle null in cache map handle/permalink adds (#3184) Andrew Mendelsohn [0559902] [PAY-1127] Improve mobile chats performance: remove index dep (#3170) Reed [961649a] Use RNGH touchables for mobile chats (#3174) Reed [be5d2a5] [C-2427] Fix preinstall checks for ruby and python versions (#3179) Andrew Mendelsohn [48f8d4c] Update readme with deps, remove sudo (#3178) Reed [fe79400] Disallow sharing premium content to social media, remove feature flags C-2334 C-2420 (#3172) nicoback2 [776596f] [PAY-829][PAY-1044] Desktop: Chats search users modal permissions/blocks and profile page permissions/blocks (#3156) Marcus Pasell [e4df304] Fix scrolling on ChatListScreen (#3171) Reed [6f35699] [PAY-1041][PAY-1040][PAY-1126] Mobile search users screen improvements (#3159) Reed [d9e302b] [PAY-1143] Desktop: Overflow menu on Chat Header (#3169) Marcus Pasell [798a664] Fix edit profile button not working after you submit the first time (#3163) nicoback2 [1d78774] [PLAT-814] Use sdk discovery-node-selection in libs (#3125) Dylan Jeffers [58005c4] [PAY-799] DMs: Link previews (#3096) Marcus Pasell [7e3d44c] [PAY-924][Desktop] DMs: Blocking/Unblocking Wire Up/UI (#3155) Marcus Pasell [7038d81] [C-2347] Improve popover zIndex (#3168) Dylan Jeffers [3eb62fe] [C-2364] Fix missing artist-card badges on android (#3165) Dylan Jeffers [64ffb7f] Update @audius/sdk to 2.0.3-beta.4 (#3160) Marcus Pasell [6e5306c] [QA-443] Fix cache case matching for handles and permalinks (#3167) Andrew Mendelsohn [84dcb5a] [C-2059] Show toast when email check fails due to blocked user (#3166) Sebastian Klingler [be855a4] [C-2419] Fix offline lineup loading (#3164) Andrew Mendelsohn [920e25b] Fix permissions message for adding to photos C-2379 (#3161) nicoback2 [78cbdfa] [PLAT-819]: Fix copy for repost and save of albums notifications (#3151) sabrina-kiam [10617a2] Mobile chats use push instead of navigate (#3154) Reed [6131075] [C-2406] Fix repeated edits of same track (#3157) Sebastian Klingler [3ae27d1] Mobile chats scrolling improvements (#3153) Reed [e820e3f] [C-2336, C-2388] Playlist style and bug fixes (#3149) Kyle Shanks [955887f] [C-2406] Null check localStorage (#3150) Sebastian Klingler [3b31b73] [C-2227] Clear wallet state on sign-out (#3147) Dylan Jeffers [91940fb] [C-2406] Prevent non finite set of currentTime (#3148) Sebastian Klingler [d799e30] [C-2404] Fix ios build on xcode 14.3 (#3146) Dylan Jeffers [186a086] [C-2398] Clean up playlist-update feature flags (#3145) Dylan Jeffers [edb3142] update to xcode 14.2.0 (#3107) Raymond Jacobson [4add953] [PLAT-835] Fix tastemaker twitter button (#3144) Dylan Jeffers [e68ada9] [PLAT-834]: Fix notifications last seen new tag (#3143) sabrina-kiam
Description
Adds prometheus integration to CN
Adds default metric collection
Adds duration metric collection for all requests (at least all that use
handleResponse
, which is not all)Default metrics subset
Custom metrics
Tests
Added test coverage for
/prometheus_metrics
endpointExisting CN + maddog test coverage ensures other metric generation works correctly.
How will this change be monitored? Are there sufficient logs?
Can check metrics at any CN's
/prometheus_metrics
endpoint, or check charts in Prometheus & Grafana (not yet configured).