obs-dashboard.json 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822
  1. {
  2. "annotations": {
  3. "list": [
  4. {
  5. "$$hashKey": "object:37",
  6. "builtIn": 1,
  7. "datasource": {
  8. "type": "datasource",
  9. "uid": "grafana"
  10. },
  11. "enable": true,
  12. "hide": true,
  13. "iconColor": "rgba(0, 211, 255, 1)",
  14. "name": "Annotations & Alerts",
  15. "type": "dashboard"
  16. }
  17. ]
  18. },
  19. "editable": true,
  20. "fiscalYearStartMonth": 0,
  21. "graphTooltip": 0,
  22. "links": [],
  23. "liveNow": false,
  24. "panels": [
  25. {
  26. "datasource": {
  27. "type": "prometheus",
  28. "uid": "${datasource}"
  29. },
  30. "fieldConfig": {
  31. "defaults": {
  32. "custom": {
  33. "align": "auto",
  34. "cellOptions": {
  35. "type": "auto"
  36. },
  37. "inspect": false
  38. },
  39. "mappings": [],
  40. "thresholds": {
  41. "mode": "absolute",
  42. "steps": [
  43. {
  44. "color": "green",
  45. "value": null
  46. },
  47. {
  48. "color": "red",
  49. "value": 80
  50. }
  51. ]
  52. }
  53. },
  54. "overrides": [
  55. {
  56. "matcher": {
  57. "id": "byName",
  58. "options": "Time"
  59. },
  60. "properties": [
  61. {
  62. "id": "displayName",
  63. "value": "Time"
  64. },
  65. {
  66. "id": "unit",
  67. "value": "time: YYYY-MM-DD HH:mm:ss"
  68. },
  69. {
  70. "id": "custom.align"
  71. }
  72. ]
  73. },
  74. {
  75. "matcher": {
  76. "id": "byName",
  77. "options": "Current"
  78. },
  79. "properties": [
  80. {
  81. "id": "unit",
  82. "value": "short"
  83. },
  84. {
  85. "id": "decimals",
  86. "value": 2
  87. },
  88. {
  89. "id": "custom.cellOptions",
  90. "value": {
  91. "type": "color-text"
  92. }
  93. },
  94. {
  95. "id": "thresholds",
  96. "value": {
  97. "mode": "absolute",
  98. "steps": [
  99. {
  100. "color": "rgba(245, 54, 54, 0.9)",
  101. "value": null
  102. },
  103. {
  104. "color": "rgba(237, 129, 40, 0.89)",
  105. "value": 0
  106. },
  107. {
  108. "color": "rgba(50, 172, 45, 0.97)",
  109. "value": 1
  110. }
  111. ]
  112. }
  113. }
  114. ]
  115. }
  116. ]
  117. },
  118. "gridPos": {
  119. "h": 9,
  120. "w": 8,
  121. "x": 0,
  122. "y": 0
  123. },
  124. "id": 9,
  125. "options": {
  126. "cellHeight": "sm",
  127. "footer": {
  128. "countRows": false,
  129. "fields": "",
  130. "reducer": [
  131. "sum"
  132. ],
  133. "show": false
  134. },
  135. "showHeader": true
  136. },
  137. "pluginVersion": "11.1.4",
  138. "targets": [
  139. {
  140. "datasource": {
  141. "type": "prometheus",
  142. "uid": "${datasource}"
  143. },
  144. "editorMode": "code",
  145. "expr": "obs_output_active{instance=\"$node\", job=\"$job\"}",
  146. "instant": true,
  147. "interval": "",
  148. "legendFormat": "output: {{output_id}}: {{output_name}}",
  149. "refId": "A"
  150. }
  151. ],
  152. "title": "Output Activity",
  153. "transformations": [
  154. {
  155. "id": "seriesToRows",
  156. "options": {
  157. "reducers": []
  158. }
  159. }
  160. ],
  161. "type": "table"
  162. },
  163. {
  164. "datasource": {
  165. "type": "prometheus",
  166. "uid": "${datasource}"
  167. },
  168. "fieldConfig": {
  169. "defaults": {
  170. "color": {
  171. "mode": "palette-classic"
  172. },
  173. "custom": {
  174. "axisBorderShow": false,
  175. "axisCenteredZero": false,
  176. "axisColorMode": "text",
  177. "axisLabel": "",
  178. "axisPlacement": "auto",
  179. "barAlignment": 0,
  180. "drawStyle": "line",
  181. "fillOpacity": 10,
  182. "gradientMode": "none",
  183. "hideFrom": {
  184. "legend": false,
  185. "tooltip": false,
  186. "viz": false
  187. },
  188. "insertNulls": false,
  189. "lineInterpolation": "linear",
  190. "lineWidth": 1,
  191. "pointSize": 5,
  192. "scaleDistribution": {
  193. "type": "linear"
  194. },
  195. "showPoints": "never",
  196. "spanNulls": false,
  197. "stacking": {
  198. "group": "A",
  199. "mode": "none"
  200. },
  201. "thresholdsStyle": {
  202. "mode": "off"
  203. }
  204. },
  205. "links": [],
  206. "mappings": [],
  207. "thresholds": {
  208. "mode": "absolute",
  209. "steps": [
  210. {
  211. "color": "green",
  212. "value": null
  213. },
  214. {
  215. "color": "red",
  216. "value": 80
  217. }
  218. ]
  219. },
  220. "unit": "dB"
  221. },
  222. "overrides": []
  223. },
  224. "gridPos": {
  225. "h": 9,
  226. "w": 8,
  227. "x": 8,
  228. "y": 0
  229. },
  230. "id": 7,
  231. "options": {
  232. "legend": {
  233. "calcs": [
  234. "max",
  235. "mean",
  236. "last"
  237. ],
  238. "displayMode": "table",
  239. "placement": "bottom",
  240. "showLegend": true,
  241. "sortBy": "Mean",
  242. "sortDesc": true
  243. },
  244. "tooltip": {
  245. "mode": "multi",
  246. "sort": "none"
  247. }
  248. },
  249. "pluginVersion": "10.2.2",
  250. "targets": [
  251. {
  252. "datasource": {
  253. "type": "prometheus",
  254. "uid": "${datasource}"
  255. },
  256. "editorMode": "code",
  257. "expr": "obs_source_channel_magnitude{instance=\"$node\", job=\"$job\", source_id=\"pipewire_audio_input_capture\"}",
  258. "interval": "",
  259. "legendFormat": "Average: {{source_name}}: channel {{channel_id}}",
  260. "range": true,
  261. "refId": "A"
  262. },
  263. {
  264. "datasource": {
  265. "type": "prometheus",
  266. "uid": "${datasource}"
  267. },
  268. "editorMode": "code",
  269. "expr": "obs_source_channel_peak{instance=\"$node\", job=\"$job\", source_id=\"pipewire_audio_input_capture\"}",
  270. "interval": "",
  271. "legendFormat": "Peak: {{source_name}}: channel {{channel_id}}",
  272. "range": true,
  273. "refId": "B"
  274. }
  275. ],
  276. "title": "Microphone Output",
  277. "type": "timeseries"
  278. },
  279. {
  280. "datasource": {
  281. "type": "prometheus",
  282. "uid": "${datasource}"
  283. },
  284. "fieldConfig": {
  285. "defaults": {
  286. "color": {
  287. "mode": "palette-classic"
  288. },
  289. "custom": {
  290. "axisBorderShow": false,
  291. "axisCenteredZero": false,
  292. "axisColorMode": "text",
  293. "axisLabel": "",
  294. "axisPlacement": "auto",
  295. "barAlignment": 0,
  296. "drawStyle": "line",
  297. "fillOpacity": 10,
  298. "gradientMode": "none",
  299. "hideFrom": {
  300. "legend": false,
  301. "tooltip": false,
  302. "viz": false
  303. },
  304. "insertNulls": false,
  305. "lineInterpolation": "linear",
  306. "lineWidth": 1,
  307. "pointSize": 5,
  308. "scaleDistribution": {
  309. "type": "linear"
  310. },
  311. "showPoints": "never",
  312. "spanNulls": false,
  313. "stacking": {
  314. "group": "A",
  315. "mode": "none"
  316. },
  317. "thresholdsStyle": {
  318. "mode": "off"
  319. }
  320. },
  321. "links": [],
  322. "mappings": [],
  323. "thresholds": {
  324. "mode": "absolute",
  325. "steps": [
  326. {
  327. "color": "green",
  328. "value": null
  329. },
  330. {
  331. "color": "red",
  332. "value": 80
  333. }
  334. ]
  335. },
  336. "unit": "ns"
  337. },
  338. "overrides": []
  339. },
  340. "gridPos": {
  341. "h": 9,
  342. "w": 8,
  343. "x": 16,
  344. "y": 0
  345. },
  346. "id": 6,
  347. "options": {
  348. "legend": {
  349. "calcs": [
  350. "max",
  351. "mean",
  352. "last"
  353. ],
  354. "displayMode": "table",
  355. "placement": "bottom",
  356. "showLegend": true,
  357. "sortBy": "Mean",
  358. "sortDesc": true
  359. },
  360. "tooltip": {
  361. "mode": "multi",
  362. "sort": "none"
  363. }
  364. },
  365. "pluginVersion": "10.2.2",
  366. "targets": [
  367. {
  368. "datasource": {
  369. "type": "prometheus",
  370. "uid": "${datasource}"
  371. },
  372. "editorMode": "code",
  373. "expr": "obs_global_average_frame_time_ns{instance=\"$node\",job=\"$job\"}",
  374. "interval": "",
  375. "legendFormat": "Average",
  376. "range": true,
  377. "refId": "A"
  378. }
  379. ],
  380. "title": "Average Frame Rendering Time",
  381. "type": "timeseries"
  382. },
  383. {
  384. "datasource": {
  385. "type": "prometheus",
  386. "uid": "${datasource}"
  387. },
  388. "fieldConfig": {
  389. "defaults": {
  390. "color": {
  391. "mode": "palette-classic"
  392. },
  393. "custom": {
  394. "axisBorderShow": false,
  395. "axisCenteredZero": false,
  396. "axisColorMode": "text",
  397. "axisLabel": "",
  398. "axisPlacement": "auto",
  399. "barAlignment": 0,
  400. "drawStyle": "line",
  401. "fillOpacity": 10,
  402. "gradientMode": "none",
  403. "hideFrom": {
  404. "legend": false,
  405. "tooltip": false,
  406. "viz": false
  407. },
  408. "insertNulls": false,
  409. "lineInterpolation": "linear",
  410. "lineWidth": 1,
  411. "pointSize": 5,
  412. "scaleDistribution": {
  413. "type": "linear"
  414. },
  415. "showPoints": "never",
  416. "spanNulls": false,
  417. "stacking": {
  418. "group": "A",
  419. "mode": "none"
  420. },
  421. "thresholdsStyle": {
  422. "mode": "off"
  423. }
  424. },
  425. "links": [],
  426. "mappings": [],
  427. "thresholds": {
  428. "mode": "absolute",
  429. "steps": [
  430. {
  431. "color": "green",
  432. "value": null
  433. },
  434. {
  435. "color": "red",
  436. "value": 80
  437. }
  438. ]
  439. },
  440. "unit": "ops"
  441. },
  442. "overrides": []
  443. },
  444. "gridPos": {
  445. "h": 9,
  446. "w": 8,
  447. "x": 0,
  448. "y": 9
  449. },
  450. "id": 2,
  451. "options": {
  452. "legend": {
  453. "calcs": [
  454. "max",
  455. "mean",
  456. "last"
  457. ],
  458. "displayMode": "table",
  459. "placement": "bottom",
  460. "showLegend": true,
  461. "sortBy": "Mean",
  462. "sortDesc": true
  463. },
  464. "tooltip": {
  465. "mode": "multi",
  466. "sort": "none"
  467. }
  468. },
  469. "pluginVersion": "10.2.2",
  470. "targets": [
  471. {
  472. "datasource": {
  473. "type": "prometheus",
  474. "uid": "${datasource}"
  475. },
  476. "editorMode": "code",
  477. "expr": "irate(obs_output_frames{instance=\"$node\", job=\"$job\"}[5m])",
  478. "interval": "",
  479. "legendFormat": "{{output_id}}: {{output_name}}",
  480. "range": true,
  481. "refId": "A"
  482. }
  483. ],
  484. "title": "Output Frames Per Second",
  485. "type": "timeseries"
  486. },
  487. {
  488. "datasource": {
  489. "type": "prometheus",
  490. "uid": "${datasource}"
  491. },
  492. "fieldConfig": {
  493. "defaults": {
  494. "color": {
  495. "mode": "palette-classic"
  496. },
  497. "custom": {
  498. "axisBorderShow": false,
  499. "axisCenteredZero": false,
  500. "axisColorMode": "text",
  501. "axisLabel": "",
  502. "axisPlacement": "auto",
  503. "barAlignment": 0,
  504. "drawStyle": "line",
  505. "fillOpacity": 10,
  506. "gradientMode": "none",
  507. "hideFrom": {
  508. "legend": false,
  509. "tooltip": false,
  510. "viz": false
  511. },
  512. "insertNulls": false,
  513. "lineInterpolation": "linear",
  514. "lineWidth": 1,
  515. "pointSize": 5,
  516. "scaleDistribution": {
  517. "type": "linear"
  518. },
  519. "showPoints": "never",
  520. "spanNulls": false,
  521. "stacking": {
  522. "group": "A",
  523. "mode": "normal"
  524. },
  525. "thresholdsStyle": {
  526. "mode": "off"
  527. }
  528. },
  529. "links": [],
  530. "mappings": [],
  531. "thresholds": {
  532. "mode": "absolute",
  533. "steps": [
  534. {
  535. "color": "green",
  536. "value": null
  537. },
  538. {
  539. "color": "red",
  540. "value": 80
  541. }
  542. ]
  543. },
  544. "unit": "ops"
  545. },
  546. "overrides": []
  547. },
  548. "gridPos": {
  549. "h": 9,
  550. "w": 8,
  551. "x": 8,
  552. "y": 9
  553. },
  554. "id": 4,
  555. "options": {
  556. "legend": {
  557. "calcs": [
  558. "max",
  559. "mean",
  560. "last"
  561. ],
  562. "displayMode": "table",
  563. "placement": "bottom",
  564. "showLegend": true,
  565. "sortBy": "Mean",
  566. "sortDesc": true
  567. },
  568. "tooltip": {
  569. "mode": "multi",
  570. "sort": "none"
  571. }
  572. },
  573. "pluginVersion": "10.2.2",
  574. "targets": [
  575. {
  576. "datasource": {
  577. "type": "prometheus",
  578. "uid": "${datasource}"
  579. },
  580. "editorMode": "code",
  581. "expr": "irate(obs_global_lagged_frames_total{instance=\"$node\", job=\"$job\"}[5m])",
  582. "interval": "",
  583. "legendFormat": "lagged",
  584. "range": true,
  585. "refId": "A"
  586. },
  587. {
  588. "datasource": {
  589. "type": "prometheus",
  590. "uid": "${datasource}"
  591. },
  592. "editorMode": "code",
  593. "expr": "irate(obs_global_video_skipped_frames_total{instance=\"$node\", job=\"$job\"}[5m])",
  594. "interval": "",
  595. "legendFormat": "skipped",
  596. "range": true,
  597. "refId": "B"
  598. },
  599. {
  600. "datasource": {
  601. "type": "prometheus",
  602. "uid": "${datasource}"
  603. },
  604. "editorMode": "code",
  605. "expr": "irate(obs_output_dropped_frames_total{instance=\"$node\", job=\"$job\"}[5m])",
  606. "interval": "",
  607. "legendFormat": "dropped: {{output_id}}: {{output_name}}",
  608. "range": true,
  609. "refId": "C"
  610. }
  611. ],
  612. "title": "Problematic Frames Per Second",
  613. "type": "timeseries"
  614. },
  615. {
  616. "datasource": {
  617. "type": "prometheus",
  618. "uid": "${datasource}"
  619. },
  620. "fieldConfig": {
  621. "defaults": {
  622. "color": {
  623. "mode": "palette-classic"
  624. },
  625. "custom": {
  626. "axisBorderShow": false,
  627. "axisCenteredZero": false,
  628. "axisColorMode": "text",
  629. "axisLabel": "",
  630. "axisPlacement": "auto",
  631. "barAlignment": 0,
  632. "drawStyle": "line",
  633. "fillOpacity": 10,
  634. "gradientMode": "none",
  635. "hideFrom": {
  636. "legend": false,
  637. "tooltip": false,
  638. "viz": false
  639. },
  640. "insertNulls": false,
  641. "lineInterpolation": "linear",
  642. "lineWidth": 1,
  643. "pointSize": 5,
  644. "scaleDistribution": {
  645. "type": "linear"
  646. },
  647. "showPoints": "never",
  648. "spanNulls": false,
  649. "stacking": {
  650. "group": "A",
  651. "mode": "none"
  652. },
  653. "thresholdsStyle": {
  654. "mode": "off"
  655. }
  656. },
  657. "links": [],
  658. "mappings": [],
  659. "thresholds": {
  660. "mode": "absolute",
  661. "steps": [
  662. {
  663. "color": "green",
  664. "value": null
  665. },
  666. {
  667. "color": "red",
  668. "value": 80
  669. }
  670. ]
  671. },
  672. "unit": "bps"
  673. },
  674. "overrides": []
  675. },
  676. "gridPos": {
  677. "h": 9,
  678. "w": 8,
  679. "x": 16,
  680. "y": 9
  681. },
  682. "id": 3,
  683. "options": {
  684. "legend": {
  685. "calcs": [
  686. "max",
  687. "mean",
  688. "last"
  689. ],
  690. "displayMode": "table",
  691. "placement": "bottom",
  692. "showLegend": true,
  693. "sortBy": "Mean",
  694. "sortDesc": true
  695. },
  696. "tooltip": {
  697. "mode": "multi",
  698. "sort": "none"
  699. }
  700. },
  701. "pluginVersion": "10.2.2",
  702. "targets": [
  703. {
  704. "datasource": {
  705. "type": "prometheus",
  706. "uid": "${datasource}"
  707. },
  708. "editorMode": "code",
  709. "expr": "irate(obs_output_bytes_total{instance=\"$node\", job=\"$job\"}[5m]) * 8",
  710. "interval": "",
  711. "legendFormat": "{{output_id}}: {{output_name}}",
  712. "range": true,
  713. "refId": "A"
  714. },
  715. {
  716. "datasource": {
  717. "type": "prometheus",
  718. "uid": "${datasource}"
  719. },
  720. "expr": "",
  721. "interval": "",
  722. "legendFormat": "",
  723. "refId": "B"
  724. }
  725. ],
  726. "title": "Output Data Rate",
  727. "type": "timeseries"
  728. }
  729. ],
  730. "refresh": "",
  731. "schemaVersion": 39,
  732. "tags": [],
  733. "templating": {
  734. "list": [
  735. {
  736. "current": {
  737. "selected": false,
  738. "text": "Prometheus",
  739. "value": "prometheus"
  740. },
  741. "hide": 0,
  742. "includeAll": false,
  743. "label": "Data Source",
  744. "multi": false,
  745. "name": "datasource",
  746. "options": [],
  747. "query": "prometheus",
  748. "queryValue": "",
  749. "refresh": 1,
  750. "regex": "",
  751. "skipUrlSync": false,
  752. "type": "datasource"
  753. },
  754. {
  755. "current": {
  756. "selected": true,
  757. "text": "192.168.0.145:9407",
  758. "value": "192.168.0.145:9407"
  759. },
  760. "datasource": {
  761. "type": "prometheus",
  762. "uid": "${datasource}"
  763. },
  764. "definition": "label_values(obs_encoder_info{job=\"$job\"},instance)",
  765. "hide": 0,
  766. "includeAll": false,
  767. "label": "Host",
  768. "multi": false,
  769. "name": "node",
  770. "options": [],
  771. "query": {
  772. "qryType": 1,
  773. "query": "label_values(obs_encoder_info{job=\"$job\"},instance)",
  774. "refId": "PrometheusVariableQueryEditor-VariableQuery"
  775. },
  776. "refresh": 1,
  777. "regex": "",
  778. "skipUrlSync": false,
  779. "sort": 0,
  780. "type": "query"
  781. },
  782. {
  783. "current": {
  784. "selected": false,
  785. "text": "obs",
  786. "value": "obs"
  787. },
  788. "datasource": {
  789. "type": "prometheus",
  790. "uid": "${datasource}"
  791. },
  792. "definition": "label_values(obs_encoder_info,job)",
  793. "hide": 0,
  794. "includeAll": false,
  795. "label": "Job",
  796. "multi": false,
  797. "name": "job",
  798. "options": [],
  799. "query": {
  800. "qryType": 1,
  801. "query": "label_values(obs_encoder_info,job)",
  802. "refId": "PrometheusVariableQueryEditor-VariableQuery"
  803. },
  804. "refresh": 1,
  805. "regex": "",
  806. "skipUrlSync": false,
  807. "sort": 0,
  808. "type": "query"
  809. }
  810. ]
  811. },
  812. "time": {
  813. "from": "now-15m",
  814. "to": "now"
  815. },
  816. "timepicker": {},
  817. "timezone": "",
  818. "title": "OBS",
  819. "uid": "zFbd6TRGk",
  820. "version": 1,
  821. "weekStart": ""
  822. }