ntfy-grafana.json 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400
  1. {
  2. "__inputs": [
  3. {
  4. "name": "DS_PROMETHEUS",
  5. "label": "Prometheus",
  6. "description": "",
  7. "type": "datasource",
  8. "pluginId": "prometheus",
  9. "pluginName": "Prometheus"
  10. }
  11. ],
  12. "__elements": {},
  13. "__requires": [
  14. {
  15. "type": "grafana",
  16. "id": "grafana",
  17. "name": "Grafana",
  18. "version": "9.4.3"
  19. },
  20. {
  21. "type": "datasource",
  22. "id": "prometheus",
  23. "name": "Prometheus",
  24. "version": "1.0.0"
  25. },
  26. {
  27. "type": "panel",
  28. "id": "stat",
  29. "name": "Stat",
  30. "version": ""
  31. },
  32. {
  33. "type": "panel",
  34. "id": "timeseries",
  35. "name": "Time series",
  36. "version": ""
  37. }
  38. ],
  39. "annotations": {
  40. "list": [
  41. {
  42. "builtIn": 1,
  43. "datasource": {
  44. "type": "grafana",
  45. "uid": "-- Grafana --"
  46. },
  47. "enable": true,
  48. "hide": true,
  49. "iconColor": "rgba(0, 211, 255, 1)",
  50. "name": "Annotations & Alerts",
  51. "target": {
  52. "limit": 100,
  53. "matchAny": false,
  54. "tags": [],
  55. "type": "dashboard"
  56. },
  57. "type": "dashboard"
  58. }
  59. ]
  60. },
  61. "editable": true,
  62. "fiscalYearStartMonth": 0,
  63. "graphTooltip": 0,
  64. "id": null,
  65. "links": [],
  66. "liveNow": false,
  67. "panels": [
  68. {
  69. "collapsed": false,
  70. "gridPos": {
  71. "h": 1,
  72. "w": 24,
  73. "x": 0,
  74. "y": 0
  75. },
  76. "id": 38,
  77. "panels": [],
  78. "title": "Overview",
  79. "type": "row"
  80. },
  81. {
  82. "datasource": {
  83. "type": "prometheus",
  84. "uid": "${DS_PROMETHEUS}"
  85. },
  86. "fieldConfig": {
  87. "defaults": {
  88. "color": {
  89. "mode": "thresholds"
  90. },
  91. "mappings": [],
  92. "thresholds": {
  93. "mode": "absolute",
  94. "steps": [
  95. {
  96. "color": "light-green",
  97. "value": null
  98. }
  99. ]
  100. }
  101. },
  102. "overrides": []
  103. },
  104. "gridPos": {
  105. "h": 3,
  106. "w": 4,
  107. "x": 0,
  108. "y": 1
  109. },
  110. "id": 36,
  111. "options": {
  112. "colorMode": "value",
  113. "graphMode": "none",
  114. "justifyMode": "auto",
  115. "orientation": "auto",
  116. "reduceOptions": {
  117. "calcs": [
  118. "last"
  119. ],
  120. "fields": "",
  121. "values": false
  122. },
  123. "textMode": "auto"
  124. },
  125. "pluginVersion": "9.4.3",
  126. "targets": [
  127. {
  128. "datasource": {
  129. "type": "prometheus",
  130. "uid": "${DS_PROMETHEUS}"
  131. },
  132. "editorMode": "code",
  133. "expr": "ntfy_messages_published_success{job=\"$job\"}",
  134. "legendFormat": "Messages cached",
  135. "range": true,
  136. "refId": "A"
  137. }
  138. ],
  139. "title": "Published",
  140. "type": "stat"
  141. },
  142. {
  143. "datasource": {
  144. "type": "prometheus",
  145. "uid": "${DS_PROMETHEUS}"
  146. },
  147. "fieldConfig": {
  148. "defaults": {
  149. "color": {
  150. "mode": "thresholds"
  151. },
  152. "mappings": [],
  153. "thresholds": {
  154. "mode": "absolute",
  155. "steps": [
  156. {
  157. "color": "orange",
  158. "value": null
  159. }
  160. ]
  161. }
  162. },
  163. "overrides": []
  164. },
  165. "gridPos": {
  166. "h": 3,
  167. "w": 4,
  168. "x": 4,
  169. "y": 1
  170. },
  171. "id": 33,
  172. "options": {
  173. "colorMode": "value",
  174. "graphMode": "none",
  175. "justifyMode": "auto",
  176. "orientation": "auto",
  177. "reduceOptions": {
  178. "calcs": [
  179. "last"
  180. ],
  181. "fields": "",
  182. "values": false
  183. },
  184. "textMode": "auto"
  185. },
  186. "pluginVersion": "9.4.3",
  187. "targets": [
  188. {
  189. "datasource": {
  190. "type": "prometheus",
  191. "uid": "${DS_PROMETHEUS}"
  192. },
  193. "editorMode": "builder",
  194. "expr": "ntfy_messages_cached_total{job=\"$job\"}",
  195. "legendFormat": "Messages cached",
  196. "range": true,
  197. "refId": "A"
  198. }
  199. ],
  200. "title": "Cached",
  201. "type": "stat"
  202. },
  203. {
  204. "datasource": {
  205. "type": "prometheus",
  206. "uid": "${DS_PROMETHEUS}"
  207. },
  208. "fieldConfig": {
  209. "defaults": {
  210. "color": {
  211. "mode": "thresholds"
  212. },
  213. "mappings": [],
  214. "thresholds": {
  215. "mode": "absolute",
  216. "steps": [
  217. {
  218. "color": "#69bfb5",
  219. "value": null
  220. }
  221. ]
  222. }
  223. },
  224. "overrides": []
  225. },
  226. "gridPos": {
  227. "h": 3,
  228. "w": 4,
  229. "x": 8,
  230. "y": 1
  231. },
  232. "id": 31,
  233. "options": {
  234. "colorMode": "value",
  235. "graphMode": "none",
  236. "justifyMode": "auto",
  237. "orientation": "auto",
  238. "reduceOptions": {
  239. "calcs": [
  240. "last"
  241. ],
  242. "fields": "",
  243. "values": false
  244. },
  245. "textMode": "auto"
  246. },
  247. "pluginVersion": "9.4.3",
  248. "targets": [
  249. {
  250. "datasource": {
  251. "type": "prometheus",
  252. "uid": "${DS_PROMETHEUS}"
  253. },
  254. "editorMode": "builder",
  255. "expr": "ntfy_visitors_total{job=\"$job\"}",
  256. "legendFormat": "Visitors",
  257. "range": true,
  258. "refId": "A"
  259. }
  260. ],
  261. "title": "Visitors",
  262. "type": "stat"
  263. },
  264. {
  265. "datasource": {
  266. "type": "prometheus",
  267. "uid": "${DS_PROMETHEUS}"
  268. },
  269. "description": "",
  270. "fieldConfig": {
  271. "defaults": {
  272. "color": {
  273. "mode": "thresholds"
  274. },
  275. "mappings": [],
  276. "thresholds": {
  277. "mode": "absolute",
  278. "steps": [
  279. {
  280. "color": "green",
  281. "value": null
  282. },
  283. {
  284. "color": "red",
  285. "value": 80
  286. }
  287. ]
  288. }
  289. },
  290. "overrides": []
  291. },
  292. "gridPos": {
  293. "h": 3,
  294. "w": 4,
  295. "x": 12,
  296. "y": 1
  297. },
  298. "id": 32,
  299. "options": {
  300. "colorMode": "value",
  301. "graphMode": "none",
  302. "justifyMode": "auto",
  303. "orientation": "auto",
  304. "reduceOptions": {
  305. "calcs": [
  306. "last"
  307. ],
  308. "fields": "",
  309. "values": false
  310. },
  311. "textMode": "auto"
  312. },
  313. "pluginVersion": "9.4.3",
  314. "targets": [
  315. {
  316. "datasource": {
  317. "type": "prometheus",
  318. "uid": "${DS_PROMETHEUS}"
  319. },
  320. "editorMode": "builder",
  321. "expr": "ntfy_users_total{job=\"$job\"}",
  322. "legendFormat": "Visitors",
  323. "range": true,
  324. "refId": "A"
  325. }
  326. ],
  327. "title": "Users",
  328. "type": "stat"
  329. },
  330. {
  331. "datasource": {
  332. "type": "prometheus",
  333. "uid": "${DS_PROMETHEUS}"
  334. },
  335. "description": "",
  336. "fieldConfig": {
  337. "defaults": {
  338. "color": {
  339. "mode": "thresholds"
  340. },
  341. "mappings": [],
  342. "thresholds": {
  343. "mode": "absolute",
  344. "steps": [
  345. {
  346. "color": "blue",
  347. "value": null
  348. }
  349. ]
  350. }
  351. },
  352. "overrides": []
  353. },
  354. "gridPos": {
  355. "h": 3,
  356. "w": 4,
  357. "x": 16,
  358. "y": 1
  359. },
  360. "id": 34,
  361. "options": {
  362. "colorMode": "value",
  363. "graphMode": "none",
  364. "justifyMode": "auto",
  365. "orientation": "auto",
  366. "reduceOptions": {
  367. "calcs": [
  368. "last"
  369. ],
  370. "fields": "",
  371. "values": false
  372. },
  373. "textMode": "auto"
  374. },
  375. "pluginVersion": "9.4.3",
  376. "targets": [
  377. {
  378. "datasource": {
  379. "type": "prometheus",
  380. "uid": "${DS_PROMETHEUS}"
  381. },
  382. "editorMode": "builder",
  383. "expr": "ntfy_topics_total{job=\"$job\"}",
  384. "legendFormat": "Topics",
  385. "range": true,
  386. "refId": "A"
  387. }
  388. ],
  389. "title": "Topics",
  390. "type": "stat"
  391. },
  392. {
  393. "datasource": {
  394. "type": "prometheus",
  395. "uid": "${DS_PROMETHEUS}"
  396. },
  397. "description": "",
  398. "fieldConfig": {
  399. "defaults": {
  400. "color": {
  401. "mode": "thresholds"
  402. },
  403. "mappings": [],
  404. "thresholds": {
  405. "mode": "absolute",
  406. "steps": [
  407. {
  408. "color": "purple",
  409. "value": null
  410. }
  411. ]
  412. }
  413. },
  414. "overrides": []
  415. },
  416. "gridPos": {
  417. "h": 3,
  418. "w": 4,
  419. "x": 20,
  420. "y": 1
  421. },
  422. "id": 35,
  423. "options": {
  424. "colorMode": "value",
  425. "graphMode": "none",
  426. "justifyMode": "auto",
  427. "orientation": "auto",
  428. "reduceOptions": {
  429. "calcs": [
  430. "last"
  431. ],
  432. "fields": "",
  433. "values": false
  434. },
  435. "textMode": "auto"
  436. },
  437. "pluginVersion": "9.4.3",
  438. "targets": [
  439. {
  440. "datasource": {
  441. "type": "prometheus",
  442. "uid": "${DS_PROMETHEUS}"
  443. },
  444. "editorMode": "builder",
  445. "expr": "ntfy_subscribers_total",
  446. "legendFormat": "Subscribers",
  447. "range": true,
  448. "refId": "A"
  449. }
  450. ],
  451. "title": "Subscribers",
  452. "type": "stat"
  453. },
  454. {
  455. "gridPos": {
  456. "h": 1,
  457. "w": 24,
  458. "x": 0,
  459. "y": 4
  460. },
  461. "id": 10,
  462. "title": "Metrics",
  463. "type": "row"
  464. },
  465. {
  466. "datasource": {
  467. "type": "prometheus",
  468. "uid": "${DS_PROMETHEUS}"
  469. },
  470. "description": "Number of successfully published messages, and messages that could not be published (due to rate limiting, bad formatting, etc.)",
  471. "fieldConfig": {
  472. "defaults": {
  473. "color": {
  474. "mode": "palette-classic"
  475. },
  476. "custom": {
  477. "axisCenteredZero": false,
  478. "axisColorMode": "text",
  479. "axisLabel": "",
  480. "axisPlacement": "auto",
  481. "barAlignment": 0,
  482. "drawStyle": "line",
  483. "fillOpacity": 0,
  484. "gradientMode": "none",
  485. "hideFrom": {
  486. "legend": false,
  487. "tooltip": false,
  488. "viz": false
  489. },
  490. "lineInterpolation": "linear",
  491. "lineWidth": 1,
  492. "pointSize": 5,
  493. "scaleDistribution": {
  494. "type": "linear"
  495. },
  496. "showPoints": "auto",
  497. "spanNulls": false,
  498. "stacking": {
  499. "group": "A",
  500. "mode": "none"
  501. },
  502. "thresholdsStyle": {
  503. "mode": "off"
  504. }
  505. },
  506. "mappings": [],
  507. "thresholds": {
  508. "mode": "absolute",
  509. "steps": [
  510. {
  511. "color": "green",
  512. "value": null
  513. }
  514. ]
  515. }
  516. },
  517. "overrides": [
  518. {
  519. "matcher": {
  520. "id": "byName",
  521. "options": "Failed"
  522. },
  523. "properties": [
  524. {
  525. "id": "custom.axisColorMode",
  526. "value": "text"
  527. },
  528. {
  529. "id": "color",
  530. "value": {
  531. "fixedColor": "red",
  532. "mode": "fixed"
  533. }
  534. }
  535. ]
  536. }
  537. ]
  538. },
  539. "gridPos": {
  540. "h": 7,
  541. "w": 6,
  542. "x": 0,
  543. "y": 5
  544. },
  545. "id": 42,
  546. "options": {
  547. "legend": {
  548. "calcs": [],
  549. "displayMode": "list",
  550. "placement": "bottom",
  551. "showLegend": true
  552. },
  553. "tooltip": {
  554. "mode": "single",
  555. "sort": "none"
  556. }
  557. },
  558. "targets": [
  559. {
  560. "datasource": {
  561. "type": "prometheus",
  562. "uid": "${DS_PROMETHEUS}"
  563. },
  564. "editorMode": "code",
  565. "expr": "rate(ntfy_messages_published_success{job=\"$job\"}[$rate])",
  566. "legendFormat": "Success",
  567. "range": true,
  568. "refId": "A"
  569. },
  570. {
  571. "datasource": {
  572. "type": "prometheus",
  573. "uid": "${DS_PROMETHEUS}"
  574. },
  575. "editorMode": "code",
  576. "expr": "rate(ntfy_messages_published_failure{job=\"$job\"}[$rate])",
  577. "hide": false,
  578. "legendFormat": "Failed",
  579. "range": true,
  580. "refId": "B"
  581. }
  582. ],
  583. "title": "Messages published (per second)",
  584. "type": "timeseries"
  585. },
  586. {
  587. "datasource": {
  588. "type": "prometheus",
  589. "uid": "${DS_PROMETHEUS}"
  590. },
  591. "description": "Number of messages published since last ntfy server restart",
  592. "fieldConfig": {
  593. "defaults": {
  594. "color": {
  595. "mode": "palette-classic"
  596. },
  597. "custom": {
  598. "axisCenteredZero": false,
  599. "axisColorMode": "text",
  600. "axisLabel": "",
  601. "axisPlacement": "auto",
  602. "barAlignment": 0,
  603. "drawStyle": "line",
  604. "fillOpacity": 0,
  605. "gradientMode": "none",
  606. "hideFrom": {
  607. "legend": false,
  608. "tooltip": false,
  609. "viz": false
  610. },
  611. "lineInterpolation": "linear",
  612. "lineWidth": 1,
  613. "pointSize": 5,
  614. "scaleDistribution": {
  615. "type": "linear"
  616. },
  617. "showPoints": "auto",
  618. "spanNulls": false,
  619. "stacking": {
  620. "group": "A",
  621. "mode": "none"
  622. },
  623. "thresholdsStyle": {
  624. "mode": "off"
  625. }
  626. },
  627. "mappings": [],
  628. "thresholds": {
  629. "mode": "absolute",
  630. "steps": [
  631. {
  632. "color": "green",
  633. "value": null
  634. },
  635. {
  636. "color": "red",
  637. "value": 80
  638. }
  639. ]
  640. }
  641. },
  642. "overrides": [
  643. {
  644. "matcher": {
  645. "id": "byName",
  646. "options": "Failed"
  647. },
  648. "properties": [
  649. {
  650. "id": "color",
  651. "value": {
  652. "fixedColor": "red",
  653. "mode": "fixed"
  654. }
  655. }
  656. ]
  657. }
  658. ]
  659. },
  660. "gridPos": {
  661. "h": 7,
  662. "w": 6,
  663. "x": 6,
  664. "y": 5
  665. },
  666. "id": 4,
  667. "options": {
  668. "legend": {
  669. "calcs": [],
  670. "displayMode": "list",
  671. "placement": "bottom",
  672. "showLegend": true
  673. },
  674. "tooltip": {
  675. "mode": "single",
  676. "sort": "none"
  677. }
  678. },
  679. "targets": [
  680. {
  681. "datasource": {
  682. "type": "prometheus",
  683. "uid": "${DS_PROMETHEUS}"
  684. },
  685. "editorMode": "builder",
  686. "expr": "ntfy_messages_published_success{job=\"$job\"}",
  687. "legendFormat": "Successful",
  688. "range": true,
  689. "refId": "A"
  690. },
  691. {
  692. "datasource": {
  693. "type": "prometheus",
  694. "uid": "${DS_PROMETHEUS}"
  695. },
  696. "editorMode": "builder",
  697. "expr": "ntfy_messages_published_failure{job=\"$job\"}",
  698. "hide": false,
  699. "legendFormat": "Failed",
  700. "range": true,
  701. "refId": "B"
  702. }
  703. ],
  704. "title": "Messages published",
  705. "type": "timeseries"
  706. },
  707. {
  708. "datasource": {
  709. "type": "prometheus",
  710. "uid": "${DS_PROMETHEUS}"
  711. },
  712. "description": "Number of messages currently stored in message cache",
  713. "fieldConfig": {
  714. "defaults": {
  715. "color": {
  716. "mode": "palette-classic"
  717. },
  718. "custom": {
  719. "axisCenteredZero": false,
  720. "axisColorMode": "text",
  721. "axisLabel": "",
  722. "axisPlacement": "auto",
  723. "barAlignment": 0,
  724. "drawStyle": "line",
  725. "fillOpacity": 0,
  726. "gradientMode": "none",
  727. "hideFrom": {
  728. "legend": false,
  729. "tooltip": false,
  730. "viz": false
  731. },
  732. "lineInterpolation": "linear",
  733. "lineWidth": 1,
  734. "pointSize": 5,
  735. "scaleDistribution": {
  736. "type": "linear"
  737. },
  738. "showPoints": "auto",
  739. "spanNulls": false,
  740. "stacking": {
  741. "group": "A",
  742. "mode": "none"
  743. },
  744. "thresholdsStyle": {
  745. "mode": "off"
  746. }
  747. },
  748. "mappings": [],
  749. "thresholds": {
  750. "mode": "absolute",
  751. "steps": [
  752. {
  753. "color": "green",
  754. "value": null
  755. },
  756. {
  757. "color": "red",
  758. "value": 80
  759. }
  760. ]
  761. }
  762. },
  763. "overrides": []
  764. },
  765. "gridPos": {
  766. "h": 7,
  767. "w": 6,
  768. "x": 12,
  769. "y": 5
  770. },
  771. "id": 2,
  772. "options": {
  773. "legend": {
  774. "calcs": [],
  775. "displayMode": "list",
  776. "placement": "bottom",
  777. "showLegend": true
  778. },
  779. "tooltip": {
  780. "mode": "single",
  781. "sort": "none"
  782. }
  783. },
  784. "targets": [
  785. {
  786. "datasource": {
  787. "type": "prometheus",
  788. "uid": "${DS_PROMETHEUS}"
  789. },
  790. "editorMode": "builder",
  791. "expr": "ntfy_messages_cached_total{job=\"$job\"}",
  792. "legendFormat": "Messages in database",
  793. "range": true,
  794. "refId": "A"
  795. }
  796. ],
  797. "title": "Messages cached",
  798. "type": "timeseries"
  799. },
  800. {
  801. "datasource": {
  802. "type": "prometheus",
  803. "uid": "${DS_PROMETHEUS}"
  804. },
  805. "fieldConfig": {
  806. "defaults": {
  807. "color": {
  808. "mode": "palette-classic"
  809. },
  810. "custom": {
  811. "axisCenteredZero": false,
  812. "axisColorMode": "text",
  813. "axisLabel": "",
  814. "axisPlacement": "auto",
  815. "barAlignment": 0,
  816. "drawStyle": "line",
  817. "fillOpacity": 0,
  818. "gradientMode": "none",
  819. "hideFrom": {
  820. "legend": false,
  821. "tooltip": false,
  822. "viz": false
  823. },
  824. "lineInterpolation": "linear",
  825. "lineWidth": 1,
  826. "pointSize": 5,
  827. "scaleDistribution": {
  828. "type": "linear"
  829. },
  830. "showPoints": "auto",
  831. "spanNulls": false,
  832. "stacking": {
  833. "group": "A",
  834. "mode": "none"
  835. },
  836. "thresholdsStyle": {
  837. "mode": "off"
  838. }
  839. },
  840. "mappings": [],
  841. "thresholds": {
  842. "mode": "absolute",
  843. "steps": [
  844. {
  845. "color": "green",
  846. "value": null
  847. },
  848. {
  849. "color": "red",
  850. "value": 80
  851. }
  852. ]
  853. }
  854. },
  855. "overrides": []
  856. },
  857. "gridPos": {
  858. "h": 7,
  859. "w": 6,
  860. "x": 18,
  861. "y": 5
  862. },
  863. "id": 14,
  864. "options": {
  865. "legend": {
  866. "calcs": [],
  867. "displayMode": "list",
  868. "placement": "bottom",
  869. "showLegend": true
  870. },
  871. "tooltip": {
  872. "mode": "single",
  873. "sort": "none"
  874. }
  875. },
  876. "targets": [
  877. {
  878. "datasource": {
  879. "type": "prometheus",
  880. "uid": "${DS_PROMETHEUS}"
  881. },
  882. "editorMode": "builder",
  883. "expr": "ntfy_visitors_total{job=\"$job\"}",
  884. "legendFormat": "Visitors",
  885. "range": true,
  886. "refId": "A"
  887. },
  888. {
  889. "datasource": {
  890. "type": "prometheus",
  891. "uid": "${DS_PROMETHEUS}"
  892. },
  893. "editorMode": "builder",
  894. "expr": "ntfy_topics_total{job=\"$job\"}",
  895. "hide": false,
  896. "legendFormat": "Topics",
  897. "range": true,
  898. "refId": "B"
  899. },
  900. {
  901. "datasource": {
  902. "type": "prometheus",
  903. "uid": "${DS_PROMETHEUS}"
  904. },
  905. "editorMode": "builder",
  906. "expr": "ntfy_subscribers_total{job=\"$job\"}",
  907. "hide": false,
  908. "legendFormat": "Subscribers",
  909. "range": true,
  910. "refId": "C"
  911. },
  912. {
  913. "datasource": {
  914. "type": "prometheus",
  915. "uid": "${DS_PROMETHEUS}"
  916. },
  917. "editorMode": "builder",
  918. "expr": "ntfy_users_total{job=\"$job\"}",
  919. "hide": false,
  920. "legendFormat": "Users",
  921. "range": true,
  922. "refId": "D"
  923. }
  924. ],
  925. "title": "Visitors, subscribers, topics",
  926. "type": "timeseries"
  927. },
  928. {
  929. "datasource": {
  930. "type": "prometheus",
  931. "uid": "${DS_PROMETHEUS}"
  932. },
  933. "fieldConfig": {
  934. "defaults": {
  935. "color": {
  936. "mode": "palette-classic"
  937. },
  938. "custom": {
  939. "axisCenteredZero": false,
  940. "axisColorMode": "text",
  941. "axisLabel": "",
  942. "axisPlacement": "auto",
  943. "barAlignment": 0,
  944. "drawStyle": "line",
  945. "fillOpacity": 0,
  946. "gradientMode": "none",
  947. "hideFrom": {
  948. "legend": false,
  949. "tooltip": false,
  950. "viz": false
  951. },
  952. "lineInterpolation": "linear",
  953. "lineWidth": 1,
  954. "pointSize": 5,
  955. "scaleDistribution": {
  956. "type": "linear"
  957. },
  958. "showPoints": "auto",
  959. "spanNulls": false,
  960. "stacking": {
  961. "group": "A",
  962. "mode": "none"
  963. },
  964. "thresholdsStyle": {
  965. "mode": "off"
  966. }
  967. },
  968. "mappings": [],
  969. "thresholds": {
  970. "mode": "absolute",
  971. "steps": [
  972. {
  973. "color": "green",
  974. "value": null
  975. },
  976. {
  977. "color": "red",
  978. "value": 80
  979. }
  980. ]
  981. }
  982. },
  983. "overrides": []
  984. },
  985. "gridPos": {
  986. "h": 7,
  987. "w": 6,
  988. "x": 0,
  989. "y": 12
  990. },
  991. "id": 43,
  992. "options": {
  993. "legend": {
  994. "calcs": [],
  995. "displayMode": "list",
  996. "placement": "bottom",
  997. "showLegend": true
  998. },
  999. "tooltip": {
  1000. "mode": "single",
  1001. "sort": "none"
  1002. }
  1003. },
  1004. "targets": [
  1005. {
  1006. "datasource": {
  1007. "type": "prometheus",
  1008. "uid": "${DS_PROMETHEUS}"
  1009. },
  1010. "editorMode": "code",
  1011. "expr": "sum by(job) (rate(ntfy_http_requests_total{job=\"$job\"}[$rate]))",
  1012. "legendFormat": "Requests per second",
  1013. "range": true,
  1014. "refId": "A"
  1015. }
  1016. ],
  1017. "title": "HTTP requests (per second)",
  1018. "type": "timeseries"
  1019. },
  1020. {
  1021. "datasource": {
  1022. "type": "prometheus",
  1023. "uid": "${DS_PROMETHEUS}"
  1024. },
  1025. "fieldConfig": {
  1026. "defaults": {
  1027. "color": {
  1028. "mode": "palette-classic"
  1029. },
  1030. "custom": {
  1031. "axisCenteredZero": false,
  1032. "axisColorMode": "text",
  1033. "axisLabel": "",
  1034. "axisPlacement": "auto",
  1035. "barAlignment": 0,
  1036. "drawStyle": "line",
  1037. "fillOpacity": 0,
  1038. "gradientMode": "none",
  1039. "hideFrom": {
  1040. "legend": false,
  1041. "tooltip": false,
  1042. "viz": false
  1043. },
  1044. "lineInterpolation": "linear",
  1045. "lineWidth": 1,
  1046. "pointSize": 5,
  1047. "scaleDistribution": {
  1048. "type": "linear"
  1049. },
  1050. "showPoints": "auto",
  1051. "spanNulls": false,
  1052. "stacking": {
  1053. "group": "A",
  1054. "mode": "none"
  1055. },
  1056. "thresholdsStyle": {
  1057. "mode": "off"
  1058. }
  1059. },
  1060. "mappings": [],
  1061. "thresholds": {
  1062. "mode": "absolute",
  1063. "steps": [
  1064. {
  1065. "color": "green",
  1066. "value": null
  1067. },
  1068. {
  1069. "color": "red",
  1070. "value": 80
  1071. }
  1072. ]
  1073. }
  1074. },
  1075. "overrides": []
  1076. },
  1077. "gridPos": {
  1078. "h": 7,
  1079. "w": 9,
  1080. "x": 6,
  1081. "y": 12
  1082. },
  1083. "id": 41,
  1084. "options": {
  1085. "legend": {
  1086. "calcs": [
  1087. "mean"
  1088. ],
  1089. "displayMode": "table",
  1090. "placement": "right",
  1091. "showLegend": true,
  1092. "sortBy": "Mean",
  1093. "sortDesc": true
  1094. },
  1095. "tooltip": {
  1096. "mode": "single",
  1097. "sort": "none"
  1098. }
  1099. },
  1100. "targets": [
  1101. {
  1102. "datasource": {
  1103. "type": "prometheus",
  1104. "uid": "${DS_PROMETHEUS}"
  1105. },
  1106. "editorMode": "code",
  1107. "expr": "sum by(http_code) (rate(ntfy_http_requests_total{job=\"$job\", http_code!=\"200\", http_code!=\"429\", http_code!=\"507\"}[$rate]))",
  1108. "legendFormat": "{{http_code}}",
  1109. "range": true,
  1110. "refId": "A"
  1111. }
  1112. ],
  1113. "title": "HTTP errors (per second, excl. 429/507)",
  1114. "type": "timeseries"
  1115. },
  1116. {
  1117. "datasource": {
  1118. "type": "prometheus",
  1119. "uid": "${DS_PROMETHEUS}"
  1120. },
  1121. "fieldConfig": {
  1122. "defaults": {
  1123. "color": {
  1124. "mode": "palette-classic"
  1125. },
  1126. "custom": {
  1127. "axisCenteredZero": false,
  1128. "axisColorMode": "text",
  1129. "axisLabel": "",
  1130. "axisPlacement": "auto",
  1131. "barAlignment": 0,
  1132. "drawStyle": "line",
  1133. "fillOpacity": 0,
  1134. "gradientMode": "none",
  1135. "hideFrom": {
  1136. "legend": false,
  1137. "tooltip": false,
  1138. "viz": false
  1139. },
  1140. "lineInterpolation": "linear",
  1141. "lineWidth": 1,
  1142. "pointSize": 5,
  1143. "scaleDistribution": {
  1144. "type": "linear"
  1145. },
  1146. "showPoints": "auto",
  1147. "spanNulls": false,
  1148. "stacking": {
  1149. "group": "A",
  1150. "mode": "none"
  1151. },
  1152. "thresholdsStyle": {
  1153. "mode": "off"
  1154. }
  1155. },
  1156. "mappings": [],
  1157. "thresholds": {
  1158. "mode": "absolute",
  1159. "steps": [
  1160. {
  1161. "color": "green",
  1162. "value": null
  1163. },
  1164. {
  1165. "color": "red",
  1166. "value": 80
  1167. }
  1168. ]
  1169. }
  1170. },
  1171. "overrides": []
  1172. },
  1173. "gridPos": {
  1174. "h": 7,
  1175. "w": 9,
  1176. "x": 15,
  1177. "y": 12
  1178. },
  1179. "id": 16,
  1180. "options": {
  1181. "legend": {
  1182. "calcs": [
  1183. "mean"
  1184. ],
  1185. "displayMode": "table",
  1186. "placement": "right",
  1187. "showLegend": true,
  1188. "sortBy": "Mean",
  1189. "sortDesc": true
  1190. },
  1191. "tooltip": {
  1192. "mode": "single",
  1193. "sort": "none"
  1194. }
  1195. },
  1196. "targets": [
  1197. {
  1198. "datasource": {
  1199. "type": "prometheus",
  1200. "uid": "${DS_PROMETHEUS}"
  1201. },
  1202. "editorMode": "code",
  1203. "expr": "sum by(ntfy_code) (rate(ntfy_http_requests_total{http_code!=\"200\", job=\"$job\"}[$rate]))",
  1204. "legendFormat": "{{http_method}} {{http_code}} {{ntfy_code}}",
  1205. "range": true,
  1206. "refId": "A"
  1207. }
  1208. ],
  1209. "title": "HTTP errors (per second, ntfy code)",
  1210. "type": "timeseries"
  1211. },
  1212. {
  1213. "datasource": {
  1214. "type": "prometheus",
  1215. "uid": "${DS_PROMETHEUS}"
  1216. },
  1217. "fieldConfig": {
  1218. "defaults": {
  1219. "color": {
  1220. "mode": "palette-classic"
  1221. },
  1222. "custom": {
  1223. "axisCenteredZero": false,
  1224. "axisColorMode": "text",
  1225. "axisLabel": "",
  1226. "axisPlacement": "auto",
  1227. "barAlignment": 0,
  1228. "drawStyle": "line",
  1229. "fillOpacity": 0,
  1230. "gradientMode": "none",
  1231. "hideFrom": {
  1232. "legend": false,
  1233. "tooltip": false,
  1234. "viz": false
  1235. },
  1236. "lineInterpolation": "linear",
  1237. "lineWidth": 1,
  1238. "pointSize": 5,
  1239. "scaleDistribution": {
  1240. "type": "linear"
  1241. },
  1242. "showPoints": "auto",
  1243. "spanNulls": false,
  1244. "stacking": {
  1245. "group": "A",
  1246. "mode": "none"
  1247. },
  1248. "thresholdsStyle": {
  1249. "mode": "off"
  1250. }
  1251. },
  1252. "mappings": [],
  1253. "thresholds": {
  1254. "mode": "absolute",
  1255. "steps": [
  1256. {
  1257. "color": "green",
  1258. "value": null
  1259. },
  1260. {
  1261. "color": "red",
  1262. "value": 80
  1263. }
  1264. ]
  1265. },
  1266. "unit": "decbytes"
  1267. },
  1268. "overrides": []
  1269. },
  1270. "gridPos": {
  1271. "h": 7,
  1272. "w": 6,
  1273. "x": 0,
  1274. "y": 19
  1275. },
  1276. "id": 20,
  1277. "options": {
  1278. "legend": {
  1279. "calcs": [],
  1280. "displayMode": "list",
  1281. "placement": "bottom",
  1282. "showLegend": true
  1283. },
  1284. "tooltip": {
  1285. "mode": "single",
  1286. "sort": "none"
  1287. }
  1288. },
  1289. "targets": [
  1290. {
  1291. "datasource": {
  1292. "type": "prometheus",
  1293. "uid": "${DS_PROMETHEUS}"
  1294. },
  1295. "editorMode": "builder",
  1296. "expr": "ntfy_attachments_total_size{job=\"$job\"}",
  1297. "legendFormat": "Total size in MB",
  1298. "range": true,
  1299. "refId": "A"
  1300. }
  1301. ],
  1302. "title": "Attachments: Total cache size",
  1303. "transformations": [],
  1304. "type": "timeseries"
  1305. },
  1306. {
  1307. "datasource": {
  1308. "type": "prometheus",
  1309. "uid": "${DS_PROMETHEUS}"
  1310. },
  1311. "fieldConfig": {
  1312. "defaults": {
  1313. "color": {
  1314. "mode": "palette-classic"
  1315. },
  1316. "custom": {
  1317. "axisCenteredZero": false,
  1318. "axisColorMode": "text",
  1319. "axisLabel": "",
  1320. "axisPlacement": "auto",
  1321. "barAlignment": -1,
  1322. "drawStyle": "line",
  1323. "fillOpacity": 0,
  1324. "gradientMode": "none",
  1325. "hideFrom": {
  1326. "legend": false,
  1327. "tooltip": false,
  1328. "viz": false
  1329. },
  1330. "lineInterpolation": "linear",
  1331. "lineWidth": 1,
  1332. "pointSize": 5,
  1333. "scaleDistribution": {
  1334. "type": "linear"
  1335. },
  1336. "showPoints": "auto",
  1337. "spanNulls": false,
  1338. "stacking": {
  1339. "group": "A",
  1340. "mode": "none"
  1341. },
  1342. "thresholdsStyle": {
  1343. "mode": "off"
  1344. }
  1345. },
  1346. "mappings": [],
  1347. "thresholds": {
  1348. "mode": "absolute",
  1349. "steps": [
  1350. {
  1351. "color": "green",
  1352. "value": null
  1353. },
  1354. {
  1355. "color": "red",
  1356. "value": 80
  1357. }
  1358. ]
  1359. }
  1360. },
  1361. "overrides": [
  1362. {
  1363. "matcher": {
  1364. "id": "byName",
  1365. "options": "Failure"
  1366. },
  1367. "properties": [
  1368. {
  1369. "id": "color",
  1370. "value": {
  1371. "fixedColor": "red",
  1372. "mode": "fixed"
  1373. }
  1374. }
  1375. ]
  1376. }
  1377. ]
  1378. },
  1379. "gridPos": {
  1380. "h": 7,
  1381. "w": 6,
  1382. "x": 6,
  1383. "y": 19
  1384. },
  1385. "id": 27,
  1386. "options": {
  1387. "legend": {
  1388. "calcs": [],
  1389. "displayMode": "list",
  1390. "placement": "bottom",
  1391. "showLegend": true
  1392. },
  1393. "tooltip": {
  1394. "mode": "single",
  1395. "sort": "none"
  1396. }
  1397. },
  1398. "targets": [
  1399. {
  1400. "datasource": {
  1401. "type": "prometheus",
  1402. "uid": "${DS_PROMETHEUS}"
  1403. },
  1404. "editorMode": "code",
  1405. "expr": "rate(ntfy_firebase_published_success{job=\"$job\"}[$rate])",
  1406. "legendFormat": "Success",
  1407. "range": true,
  1408. "refId": "A"
  1409. },
  1410. {
  1411. "datasource": {
  1412. "type": "prometheus",
  1413. "uid": "${DS_PROMETHEUS}"
  1414. },
  1415. "editorMode": "code",
  1416. "expr": "rate(ntfy_firebase_published_failure{job=\"$job\"}[$rate])",
  1417. "hide": false,
  1418. "legendFormat": "Failure",
  1419. "range": true,
  1420. "refId": "B"
  1421. }
  1422. ],
  1423. "title": "Firebase messages sent",
  1424. "type": "timeseries"
  1425. },
  1426. {
  1427. "datasource": {
  1428. "type": "prometheus",
  1429. "uid": "${DS_PROMETHEUS}"
  1430. },
  1431. "fieldConfig": {
  1432. "defaults": {
  1433. "color": {
  1434. "mode": "palette-classic"
  1435. },
  1436. "custom": {
  1437. "axisCenteredZero": false,
  1438. "axisColorMode": "text",
  1439. "axisLabel": "",
  1440. "axisPlacement": "auto",
  1441. "barAlignment": 0,
  1442. "drawStyle": "line",
  1443. "fillOpacity": 0,
  1444. "gradientMode": "none",
  1445. "hideFrom": {
  1446. "legend": false,
  1447. "tooltip": false,
  1448. "viz": false
  1449. },
  1450. "lineInterpolation": "linear",
  1451. "lineWidth": 1,
  1452. "pointSize": 5,
  1453. "scaleDistribution": {
  1454. "type": "linear"
  1455. },
  1456. "showPoints": "auto",
  1457. "spanNulls": false,
  1458. "stacking": {
  1459. "group": "A",
  1460. "mode": "none"
  1461. },
  1462. "thresholdsStyle": {
  1463. "mode": "off"
  1464. }
  1465. },
  1466. "mappings": [],
  1467. "thresholds": {
  1468. "mode": "absolute",
  1469. "steps": [
  1470. {
  1471. "color": "green",
  1472. "value": null
  1473. }
  1474. ]
  1475. }
  1476. },
  1477. "overrides": [
  1478. {
  1479. "matcher": {
  1480. "id": "byName",
  1481. "options": "Rejected (HTTP 507)"
  1482. },
  1483. "properties": [
  1484. {
  1485. "id": "color",
  1486. "value": {
  1487. "fixedColor": "red",
  1488. "mode": "fixed"
  1489. }
  1490. }
  1491. ]
  1492. }
  1493. ]
  1494. },
  1495. "gridPos": {
  1496. "h": 7,
  1497. "w": 6,
  1498. "x": 12,
  1499. "y": 19
  1500. },
  1501. "id": 26,
  1502. "options": {
  1503. "legend": {
  1504. "calcs": [],
  1505. "displayMode": "list",
  1506. "placement": "bottom",
  1507. "showLegend": true
  1508. },
  1509. "tooltip": {
  1510. "mode": "single",
  1511. "sort": "none"
  1512. }
  1513. },
  1514. "targets": [
  1515. {
  1516. "datasource": {
  1517. "type": "prometheus",
  1518. "uid": "${DS_PROMETHEUS}"
  1519. },
  1520. "editorMode": "code",
  1521. "expr": "rate(ntfy_unifiedpush_published_success{job=\"$job\"}[$rate])",
  1522. "legendFormat": "Success",
  1523. "range": true,
  1524. "refId": "A"
  1525. },
  1526. {
  1527. "datasource": {
  1528. "type": "prometheus",
  1529. "uid": "${DS_PROMETHEUS}"
  1530. },
  1531. "editorMode": "code",
  1532. "expr": "rate(ntfy_http_requests_total{job=\"$job\",http_code=\"507\"}[$rate])",
  1533. "hide": false,
  1534. "legendFormat": "Rejected (HTTP 507)",
  1535. "range": true,
  1536. "refId": "B"
  1537. }
  1538. ],
  1539. "title": "UnifiedPush messages",
  1540. "type": "timeseries"
  1541. },
  1542. {
  1543. "datasource": {
  1544. "type": "prometheus",
  1545. "uid": "${DS_PROMETHEUS}"
  1546. },
  1547. "fieldConfig": {
  1548. "defaults": {
  1549. "color": {
  1550. "mode": "palette-classic"
  1551. },
  1552. "custom": {
  1553. "axisCenteredZero": false,
  1554. "axisColorMode": "text",
  1555. "axisLabel": "",
  1556. "axisPlacement": "auto",
  1557. "barAlignment": 0,
  1558. "drawStyle": "line",
  1559. "fillOpacity": 0,
  1560. "gradientMode": "none",
  1561. "hideFrom": {
  1562. "legend": false,
  1563. "tooltip": false,
  1564. "viz": false
  1565. },
  1566. "lineInterpolation": "linear",
  1567. "lineWidth": 1,
  1568. "pointSize": 5,
  1569. "scaleDistribution": {
  1570. "type": "linear"
  1571. },
  1572. "showPoints": "auto",
  1573. "spanNulls": false,
  1574. "stacking": {
  1575. "group": "A",
  1576. "mode": "none"
  1577. },
  1578. "thresholdsStyle": {
  1579. "mode": "off"
  1580. }
  1581. },
  1582. "mappings": [],
  1583. "thresholds": {
  1584. "mode": "absolute",
  1585. "steps": [
  1586. {
  1587. "color": "green",
  1588. "value": null
  1589. },
  1590. {
  1591. "color": "red",
  1592. "value": 80
  1593. }
  1594. ]
  1595. }
  1596. },
  1597. "overrides": [
  1598. {
  1599. "matcher": {
  1600. "id": "byName",
  1601. "options": "Failure"
  1602. },
  1603. "properties": [
  1604. {
  1605. "id": "color",
  1606. "value": {
  1607. "fixedColor": "red",
  1608. "mode": "fixed"
  1609. }
  1610. }
  1611. ]
  1612. }
  1613. ]
  1614. },
  1615. "gridPos": {
  1616. "h": 7,
  1617. "w": 6,
  1618. "x": 18,
  1619. "y": 19
  1620. },
  1621. "id": 24,
  1622. "options": {
  1623. "legend": {
  1624. "calcs": [],
  1625. "displayMode": "list",
  1626. "placement": "bottom",
  1627. "showLegend": true
  1628. },
  1629. "tooltip": {
  1630. "mode": "single",
  1631. "sort": "none"
  1632. }
  1633. },
  1634. "targets": [
  1635. {
  1636. "datasource": {
  1637. "type": "prometheus",
  1638. "uid": "${DS_PROMETHEUS}"
  1639. },
  1640. "editorMode": "code",
  1641. "expr": "rate(ntfy_matrix_published_success{job=\"$job\"}[$rate])",
  1642. "legendFormat": "Success",
  1643. "range": true,
  1644. "refId": "A"
  1645. },
  1646. {
  1647. "datasource": {
  1648. "type": "prometheus",
  1649. "uid": "${DS_PROMETHEUS}"
  1650. },
  1651. "editorMode": "code",
  1652. "expr": "rate(ntfy_matrix_published_failure{job=\"$job\"}[$rate])",
  1653. "hide": false,
  1654. "legendFormat": "Failure",
  1655. "range": true,
  1656. "refId": "B"
  1657. }
  1658. ],
  1659. "title": "Matrix messages published",
  1660. "type": "timeseries"
  1661. },
  1662. {
  1663. "datasource": {
  1664. "type": "prometheus",
  1665. "uid": "${DS_PROMETHEUS}"
  1666. },
  1667. "fieldConfig": {
  1668. "defaults": {
  1669. "color": {
  1670. "mode": "palette-classic"
  1671. },
  1672. "custom": {
  1673. "axisCenteredZero": false,
  1674. "axisColorMode": "text",
  1675. "axisLabel": "",
  1676. "axisPlacement": "auto",
  1677. "barAlignment": 0,
  1678. "drawStyle": "line",
  1679. "fillOpacity": 0,
  1680. "gradientMode": "none",
  1681. "hideFrom": {
  1682. "legend": false,
  1683. "tooltip": false,
  1684. "viz": false
  1685. },
  1686. "lineInterpolation": "linear",
  1687. "lineWidth": 1,
  1688. "pointSize": 5,
  1689. "scaleDistribution": {
  1690. "type": "linear"
  1691. },
  1692. "showPoints": "auto",
  1693. "spanNulls": false,
  1694. "stacking": {
  1695. "group": "A",
  1696. "mode": "none"
  1697. },
  1698. "thresholdsStyle": {
  1699. "mode": "off"
  1700. }
  1701. },
  1702. "mappings": [],
  1703. "thresholds": {
  1704. "mode": "absolute",
  1705. "steps": [
  1706. {
  1707. "color": "green",
  1708. "value": null
  1709. },
  1710. {
  1711. "color": "red",
  1712. "value": 80
  1713. }
  1714. ]
  1715. }
  1716. },
  1717. "overrides": [
  1718. {
  1719. "matcher": {
  1720. "id": "byName",
  1721. "options": "Failure"
  1722. },
  1723. "properties": [
  1724. {
  1725. "id": "color",
  1726. "value": {
  1727. "fixedColor": "red",
  1728. "mode": "fixed"
  1729. }
  1730. }
  1731. ]
  1732. }
  1733. ]
  1734. },
  1735. "gridPos": {
  1736. "h": 7,
  1737. "w": 6,
  1738. "x": 0,
  1739. "y": 26
  1740. },
  1741. "id": 12,
  1742. "options": {
  1743. "legend": {
  1744. "calcs": [],
  1745. "displayMode": "list",
  1746. "placement": "bottom",
  1747. "showLegend": true
  1748. },
  1749. "tooltip": {
  1750. "mode": "single",
  1751. "sort": "none"
  1752. }
  1753. },
  1754. "targets": [
  1755. {
  1756. "datasource": {
  1757. "type": "prometheus",
  1758. "uid": "${DS_PROMETHEUS}"
  1759. },
  1760. "editorMode": "builder",
  1761. "expr": "ntfy_emails_sent_success{job=\"$job\"}",
  1762. "legendFormat": "Success",
  1763. "range": true,
  1764. "refId": "A"
  1765. },
  1766. {
  1767. "datasource": {
  1768. "type": "prometheus",
  1769. "uid": "${DS_PROMETHEUS}"
  1770. },
  1771. "editorMode": "builder",
  1772. "expr": "ntfy_emails_sent_failure{job=\"$job\"}",
  1773. "hide": false,
  1774. "legendFormat": "Failure",
  1775. "range": true,
  1776. "refId": "B"
  1777. }
  1778. ],
  1779. "title": "Emails sent",
  1780. "type": "timeseries"
  1781. },
  1782. {
  1783. "datasource": {
  1784. "type": "prometheus",
  1785. "uid": "${DS_PROMETHEUS}"
  1786. },
  1787. "fieldConfig": {
  1788. "defaults": {
  1789. "color": {
  1790. "mode": "palette-classic"
  1791. },
  1792. "custom": {
  1793. "axisCenteredZero": false,
  1794. "axisColorMode": "text",
  1795. "axisLabel": "",
  1796. "axisPlacement": "auto",
  1797. "barAlignment": 0,
  1798. "drawStyle": "line",
  1799. "fillOpacity": 0,
  1800. "gradientMode": "none",
  1801. "hideFrom": {
  1802. "legend": false,
  1803. "tooltip": false,
  1804. "viz": false
  1805. },
  1806. "lineInterpolation": "linear",
  1807. "lineWidth": 1,
  1808. "pointSize": 5,
  1809. "scaleDistribution": {
  1810. "type": "linear"
  1811. },
  1812. "showPoints": "auto",
  1813. "spanNulls": false,
  1814. "stacking": {
  1815. "group": "A",
  1816. "mode": "none"
  1817. },
  1818. "thresholdsStyle": {
  1819. "mode": "off"
  1820. }
  1821. },
  1822. "mappings": [],
  1823. "thresholds": {
  1824. "mode": "absolute",
  1825. "steps": [
  1826. {
  1827. "color": "green",
  1828. "value": null
  1829. },
  1830. {
  1831. "color": "red",
  1832. "value": 80
  1833. }
  1834. ]
  1835. }
  1836. },
  1837. "overrides": [
  1838. {
  1839. "matcher": {
  1840. "id": "byName",
  1841. "options": "Failure"
  1842. },
  1843. "properties": [
  1844. {
  1845. "id": "color",
  1846. "value": {
  1847. "fixedColor": "red",
  1848. "mode": "fixed"
  1849. }
  1850. }
  1851. ]
  1852. }
  1853. ]
  1854. },
  1855. "gridPos": {
  1856. "h": 7,
  1857. "w": 6,
  1858. "x": 6,
  1859. "y": 26
  1860. },
  1861. "id": 22,
  1862. "options": {
  1863. "legend": {
  1864. "calcs": [],
  1865. "displayMode": "list",
  1866. "placement": "bottom",
  1867. "showLegend": true
  1868. },
  1869. "tooltip": {
  1870. "mode": "single",
  1871. "sort": "none"
  1872. }
  1873. },
  1874. "targets": [
  1875. {
  1876. "datasource": {
  1877. "type": "prometheus",
  1878. "uid": "${DS_PROMETHEUS}"
  1879. },
  1880. "editorMode": "builder",
  1881. "expr": "ntfy_emails_received_success{job=\"$job\"}",
  1882. "legendFormat": "Success",
  1883. "range": true,
  1884. "refId": "A"
  1885. },
  1886. {
  1887. "datasource": {
  1888. "type": "prometheus",
  1889. "uid": "${DS_PROMETHEUS}"
  1890. },
  1891. "editorMode": "builder",
  1892. "expr": "ntfy_emails_received_failure{job=\"$job\"}",
  1893. "hide": false,
  1894. "legendFormat": "Failure",
  1895. "range": true,
  1896. "refId": "B"
  1897. }
  1898. ],
  1899. "title": "Emails received",
  1900. "type": "timeseries"
  1901. },
  1902. {
  1903. "datasource": {
  1904. "type": "prometheus",
  1905. "uid": "${DS_PROMETHEUS}"
  1906. },
  1907. "fieldConfig": {
  1908. "defaults": {
  1909. "color": {
  1910. "mode": "palette-classic"
  1911. },
  1912. "custom": {
  1913. "axisCenteredZero": false,
  1914. "axisColorMode": "text",
  1915. "axisLabel": "",
  1916. "axisPlacement": "auto",
  1917. "barAlignment": 0,
  1918. "drawStyle": "line",
  1919. "fillOpacity": 0,
  1920. "gradientMode": "none",
  1921. "hideFrom": {
  1922. "legend": false,
  1923. "tooltip": false,
  1924. "viz": false
  1925. },
  1926. "lineInterpolation": "linear",
  1927. "lineWidth": 1,
  1928. "pointSize": 5,
  1929. "scaleDistribution": {
  1930. "type": "linear"
  1931. },
  1932. "showPoints": "auto",
  1933. "spanNulls": false,
  1934. "stacking": {
  1935. "group": "A",
  1936. "mode": "none"
  1937. },
  1938. "thresholdsStyle": {
  1939. "mode": "off"
  1940. }
  1941. },
  1942. "mappings": [],
  1943. "thresholds": {
  1944. "mode": "absolute",
  1945. "steps": [
  1946. {
  1947. "color": "green",
  1948. "value": null
  1949. },
  1950. {
  1951. "color": "red",
  1952. "value": 80
  1953. }
  1954. ]
  1955. },
  1956. "unit": "ms"
  1957. },
  1958. "overrides": []
  1959. },
  1960. "gridPos": {
  1961. "h": 7,
  1962. "w": 6,
  1963. "x": 12,
  1964. "y": 26
  1965. },
  1966. "id": 29,
  1967. "options": {
  1968. "legend": {
  1969. "calcs": [],
  1970. "displayMode": "list",
  1971. "placement": "bottom",
  1972. "showLegend": true
  1973. },
  1974. "tooltip": {
  1975. "mode": "single",
  1976. "sort": "none"
  1977. }
  1978. },
  1979. "targets": [
  1980. {
  1981. "datasource": {
  1982. "type": "prometheus",
  1983. "uid": "${DS_PROMETHEUS}"
  1984. },
  1985. "editorMode": "builder",
  1986. "expr": "ntfy_message_publish_duration_ms{job=\"$job\"}",
  1987. "legendFormat": "Duration",
  1988. "range": true,
  1989. "refId": "A"
  1990. }
  1991. ],
  1992. "title": "Message publish duration",
  1993. "type": "timeseries"
  1994. },
  1995. {
  1996. "collapsed": false,
  1997. "gridPos": {
  1998. "h": 1,
  1999. "w": 24,
  2000. "x": 0,
  2001. "y": 33
  2002. },
  2003. "id": 8,
  2004. "panels": [],
  2005. "title": "Internals",
  2006. "type": "row"
  2007. },
  2008. {
  2009. "datasource": {
  2010. "type": "prometheus",
  2011. "uid": "${DS_PROMETHEUS}"
  2012. },
  2013. "fieldConfig": {
  2014. "defaults": {
  2015. "color": {
  2016. "mode": "palette-classic"
  2017. },
  2018. "custom": {
  2019. "axisCenteredZero": false,
  2020. "axisColorMode": "text",
  2021. "axisLabel": "",
  2022. "axisPlacement": "auto",
  2023. "barAlignment": 0,
  2024. "drawStyle": "line",
  2025. "fillOpacity": 0,
  2026. "gradientMode": "none",
  2027. "hideFrom": {
  2028. "legend": false,
  2029. "tooltip": false,
  2030. "viz": false
  2031. },
  2032. "lineInterpolation": "linear",
  2033. "lineWidth": 1,
  2034. "pointSize": 5,
  2035. "scaleDistribution": {
  2036. "type": "linear"
  2037. },
  2038. "showPoints": "auto",
  2039. "spanNulls": false,
  2040. "stacking": {
  2041. "group": "A",
  2042. "mode": "none"
  2043. },
  2044. "thresholdsStyle": {
  2045. "mode": "off"
  2046. }
  2047. },
  2048. "mappings": [],
  2049. "thresholds": {
  2050. "mode": "absolute",
  2051. "steps": [
  2052. {
  2053. "color": "green",
  2054. "value": null
  2055. },
  2056. {
  2057. "color": "red",
  2058. "value": 80
  2059. }
  2060. ]
  2061. }
  2062. },
  2063. "overrides": []
  2064. },
  2065. "gridPos": {
  2066. "h": 7,
  2067. "w": 6,
  2068. "x": 0,
  2069. "y": 34
  2070. },
  2071. "id": 6,
  2072. "options": {
  2073. "legend": {
  2074. "calcs": [],
  2075. "displayMode": "list",
  2076. "placement": "bottom",
  2077. "showLegend": false
  2078. },
  2079. "tooltip": {
  2080. "mode": "single",
  2081. "sort": "none"
  2082. }
  2083. },
  2084. "targets": [
  2085. {
  2086. "datasource": {
  2087. "type": "prometheus",
  2088. "uid": "${DS_PROMETHEUS}"
  2089. },
  2090. "editorMode": "builder",
  2091. "expr": "go_goroutines{job=\"$job\"}",
  2092. "legendFormat": "Go routines",
  2093. "range": true,
  2094. "refId": "A"
  2095. }
  2096. ],
  2097. "title": "Go routines",
  2098. "type": "timeseries"
  2099. },
  2100. {
  2101. "datasource": {
  2102. "type": "prometheus",
  2103. "uid": "${DS_PROMETHEUS}"
  2104. },
  2105. "fieldConfig": {
  2106. "defaults": {
  2107. "color": {
  2108. "mode": "palette-classic"
  2109. },
  2110. "custom": {
  2111. "axisCenteredZero": false,
  2112. "axisColorMode": "text",
  2113. "axisLabel": "",
  2114. "axisPlacement": "auto",
  2115. "barAlignment": 0,
  2116. "drawStyle": "line",
  2117. "fillOpacity": 0,
  2118. "gradientMode": "none",
  2119. "hideFrom": {
  2120. "legend": false,
  2121. "tooltip": false,
  2122. "viz": false
  2123. },
  2124. "lineInterpolation": "linear",
  2125. "lineWidth": 1,
  2126. "pointSize": 5,
  2127. "scaleDistribution": {
  2128. "log": 10,
  2129. "type": "symlog"
  2130. },
  2131. "showPoints": "auto",
  2132. "spanNulls": false,
  2133. "stacking": {
  2134. "group": "A",
  2135. "mode": "none"
  2136. },
  2137. "thresholdsStyle": {
  2138. "mode": "off"
  2139. }
  2140. },
  2141. "mappings": [],
  2142. "thresholds": {
  2143. "mode": "absolute",
  2144. "steps": [
  2145. {
  2146. "color": "green",
  2147. "value": null
  2148. },
  2149. {
  2150. "color": "red",
  2151. "value": 80
  2152. }
  2153. ]
  2154. },
  2155. "unit": "none"
  2156. },
  2157. "overrides": []
  2158. },
  2159. "gridPos": {
  2160. "h": 7,
  2161. "w": 6,
  2162. "x": 6,
  2163. "y": 34
  2164. },
  2165. "id": 44,
  2166. "options": {
  2167. "legend": {
  2168. "calcs": [],
  2169. "displayMode": "list",
  2170. "placement": "bottom",
  2171. "showLegend": true
  2172. },
  2173. "tooltip": {
  2174. "mode": "single",
  2175. "sort": "none"
  2176. }
  2177. },
  2178. "targets": [
  2179. {
  2180. "datasource": {
  2181. "type": "prometheus",
  2182. "uid": "${DS_PROMETHEUS}"
  2183. },
  2184. "editorMode": "builder",
  2185. "expr": "process_open_fds{job=\"$job\"}",
  2186. "legendFormat": "Open",
  2187. "range": true,
  2188. "refId": "A"
  2189. },
  2190. {
  2191. "datasource": {
  2192. "type": "prometheus",
  2193. "uid": "${DS_PROMETHEUS}"
  2194. },
  2195. "editorMode": "builder",
  2196. "expr": "process_max_fds{job=\"$job\"}",
  2197. "hide": false,
  2198. "legendFormat": "Max",
  2199. "range": true,
  2200. "refId": "B"
  2201. }
  2202. ],
  2203. "title": "File descriptors",
  2204. "type": "timeseries"
  2205. },
  2206. {
  2207. "datasource": {
  2208. "type": "prometheus",
  2209. "uid": "${DS_PROMETHEUS}"
  2210. },
  2211. "fieldConfig": {
  2212. "defaults": {
  2213. "color": {
  2214. "mode": "palette-classic"
  2215. },
  2216. "custom": {
  2217. "axisCenteredZero": false,
  2218. "axisColorMode": "text",
  2219. "axisLabel": "",
  2220. "axisPlacement": "auto",
  2221. "barAlignment": 0,
  2222. "drawStyle": "line",
  2223. "fillOpacity": 0,
  2224. "gradientMode": "none",
  2225. "hideFrom": {
  2226. "legend": false,
  2227. "tooltip": false,
  2228. "viz": false
  2229. },
  2230. "lineInterpolation": "linear",
  2231. "lineWidth": 1,
  2232. "pointSize": 5,
  2233. "scaleDistribution": {
  2234. "type": "linear"
  2235. },
  2236. "showPoints": "auto",
  2237. "spanNulls": false,
  2238. "stacking": {
  2239. "group": "A",
  2240. "mode": "none"
  2241. },
  2242. "thresholdsStyle": {
  2243. "mode": "off"
  2244. }
  2245. },
  2246. "mappings": [],
  2247. "thresholds": {
  2248. "mode": "absolute",
  2249. "steps": [
  2250. {
  2251. "color": "green",
  2252. "value": null
  2253. },
  2254. {
  2255. "color": "red",
  2256. "value": 80
  2257. }
  2258. ]
  2259. },
  2260. "unit": "decbytes"
  2261. },
  2262. "overrides": []
  2263. },
  2264. "gridPos": {
  2265. "h": 7,
  2266. "w": 6,
  2267. "x": 12,
  2268. "y": 34
  2269. },
  2270. "id": 45,
  2271. "options": {
  2272. "legend": {
  2273. "calcs": [],
  2274. "displayMode": "list",
  2275. "placement": "bottom",
  2276. "showLegend": true
  2277. },
  2278. "tooltip": {
  2279. "mode": "single",
  2280. "sort": "none"
  2281. }
  2282. },
  2283. "targets": [
  2284. {
  2285. "datasource": {
  2286. "type": "prometheus",
  2287. "uid": "${DS_PROMETHEUS}"
  2288. },
  2289. "editorMode": "builder",
  2290. "expr": "process_resident_memory_bytes{job=\"$job\"}",
  2291. "legendFormat": "Resident memory used by ntfy (RSS)",
  2292. "range": true,
  2293. "refId": "A"
  2294. },
  2295. {
  2296. "datasource": {
  2297. "type": "prometheus",
  2298. "uid": "${DS_PROMETHEUS}"
  2299. },
  2300. "editorMode": "builder",
  2301. "expr": "process_virtual_memory_bytes{job=\"$job\"}",
  2302. "hide": false,
  2303. "legendFormat": "Virtual memory used by ntfy (VSS)",
  2304. "range": true,
  2305. "refId": "B"
  2306. }
  2307. ],
  2308. "title": "Resident/virtual memory",
  2309. "type": "timeseries"
  2310. }
  2311. ],
  2312. "refresh": "10s",
  2313. "revision": 1,
  2314. "schemaVersion": 38,
  2315. "style": "dark",
  2316. "tags": [],
  2317. "templating": {
  2318. "list": [
  2319. {
  2320. "current": {},
  2321. "datasource": {
  2322. "type": "prometheus",
  2323. "uid": "${DS_PROMETHEUS}"
  2324. },
  2325. "definition": "label_values(ntfy_visitors_total, job)",
  2326. "hide": 0,
  2327. "includeAll": false,
  2328. "label": "Job",
  2329. "multi": false,
  2330. "name": "job",
  2331. "options": [],
  2332. "query": {
  2333. "query": "label_values(ntfy_visitors_total, job)",
  2334. "refId": "StandardVariableQuery"
  2335. },
  2336. "refresh": 1,
  2337. "regex": "",
  2338. "skipUrlSync": false,
  2339. "sort": 0,
  2340. "type": "query"
  2341. },
  2342. {
  2343. "auto": false,
  2344. "auto_count": 30,
  2345. "auto_min": "10s",
  2346. "current": {
  2347. "selected": false,
  2348. "text": "30m",
  2349. "value": "30m"
  2350. },
  2351. "description": "Average per-second rates over values from this time span",
  2352. "hide": 0,
  2353. "label": "Rate",
  2354. "name": "rate",
  2355. "options": [
  2356. {
  2357. "selected": false,
  2358. "text": "1m",
  2359. "value": "1m"
  2360. },
  2361. {
  2362. "selected": false,
  2363. "text": "5m",
  2364. "value": "5m"
  2365. },
  2366. {
  2367. "selected": false,
  2368. "text": "10m",
  2369. "value": "10m"
  2370. },
  2371. {
  2372. "selected": true,
  2373. "text": "30m",
  2374. "value": "30m"
  2375. },
  2376. {
  2377. "selected": false,
  2378. "text": "1h",
  2379. "value": "1h"
  2380. }
  2381. ],
  2382. "query": "1m,5m,10m,30m,1h",
  2383. "queryValue": "",
  2384. "refresh": 2,
  2385. "skipUrlSync": false,
  2386. "type": "interval"
  2387. }
  2388. ]
  2389. },
  2390. "time": {
  2391. "from": "now-24h",
  2392. "to": "now"
  2393. },
  2394. "timepicker": {},
  2395. "timezone": "",
  2396. "title": "ntfy App",
  2397. "uid": "TO6HgexVz",
  2398. "version": 24,
  2399. "weekStart": ""
  2400. }