Docker Stats [Using Portainer HTTP API]

A simple Node-RED project that shows stats for different docker containers. It is dependent on Portainer as middleware.

It also uses Node-RED dashboard.

You need to add your portainer UI SSL cert to the request nodes config.

[{"id":"f6f2187d.f17ca8","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"f1bf7ba3b4088527","type":"group","z":"f6f2187d.f17ca8","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["0dd8b704b63c96a1","3b853d53f8b1fb4d","bd7eb8ec2a8e0da9","d3e4f8597b868498"],"x":54,"y":79,"w":812,"h":122},{"id":"856e8d2dc2416b46","type":"group","z":"f6f2187d.f17ca8","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["46b306f2e48bb850","733507b741691f58","7887225ee569137c","69966f561992e23e","9f7f53505a88dbb1","be5dfd66e869804e","fdb9b09540cd5ba6","374c4ab5a3ae97c7","4791a04c70fb929f","75a002efe0c1f011","84cb3dac9b9f5d39","909a59dbc05a2fad","fa243fba1fb72a1d","6fc0878730035324","b56089ef7ebdddf2","60e45a11ede888cb","df970663c1614b1d","0c165bf98f40b598","a86d84649831b0fc","49c1d79c39f3c0a4","0b6e18ac2c03166b","e6f08d657cfa77a9","72d2e05a0acd3fa8","35aa7e2f151f726c","c31090ebce3ba7f8","f1c8fbcb6c326e46","079c415a2374e9a6","d2c92a6d4232af0e","fe7038cac108e62b","bfb495bb4ca9ae6f","6026847cd96ce18c","12ca61074a76e5dd","d8c78c08e407231e","685432773837206d","0026b9dbe31f2b48","d75002a1564c11aa","4534e2dfa3d348df"],"x":54,"y":239,"w":1392,"h":502},{"id":"d3ea6600f7f1c7d6","type":"group","z":"f6f2187d.f17ca8","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["14dab9180b245706","1ed0f9b52a08f533"],"x":914,"y":79,"w":252,"h":82},{"id":"41aad7d8f71cd6e6","type":"tls-config","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"localhost.crt","servername":"","verifyservercert":false,"alpnprotocol":""},{"id":"fa34d5bc6662f5d3","type":"ui_tab","name":"Home","icon":"Dashboard","disabled":false,"hidden":false},{"id":"4e2f3f8f452a1991","type":"ui_base","theme":{"name":"theme-light","lightTheme":{"default":"#0094CE","baseColor":"#0094CE","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":true,"reset":false},"darkTheme":{"default":"#097479","baseColor":"#097479","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif","edited":false},"customTheme":{"name":"Untitled Theme 1","default":"#4B7930","baseColor":"#4B7930","baseFont":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"},"themeState":{"base-color":{"default":"#0094CE","value":"#0094CE","edited":false},"page-titlebar-backgroundColor":{"value":"#0094CE","edited":false},"page-backgroundColor":{"value":"#fafafa","edited":false},"page-sidebar-backgroundColor":{"value":"#ffffff","edited":false},"group-textColor":{"value":"#1bbfff","edited":false},"group-borderColor":{"value":"#ffffff","edited":false},"group-backgroundColor":{"value":"#ffffff","edited":false},"widget-textColor":{"value":"#111111","edited":false},"widget-backgroundColor":{"value":"#0094ce","edited":false},"widget-borderColor":{"value":"#ffffff","edited":false},"base-font":{"value":"-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif"}},"angularTheme":{"primary":"indigo","accents":"blue","warn":"red","background":"grey","palette":"light"}},"site":{"name":"Docker Stats","hideToolbar":"false","allowSwipe":"false","lockMenu":"false","allowTempTheme":"true","dateFormat":"DD/MM/YYYY","sizes":{"sx":48,"sy":48,"gx":6,"gy":6,"cx":6,"cy":6,"px":0,"py":0}}},{"id":"1e8448cdde48d5c9","type":"ui_group","name":"Docker Stats","tab":"fa34d5bc6662f5d3","order":1,"disp":true,"width":"15","collapse":false,"className":""},{"id":"a8cb6c0d6ca52f43","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":2,"width":3,"height":1},{"id":"dc841e72d0fb9595","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":4,"width":15,"height":1},{"id":"314b03d44d96f61a","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":9,"width":15,"height":1},{"id":"727814d83761b79d","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":10,"width":2,"height":1},{"id":"1a157d65c7136149","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":12,"width":1,"height":1},{"id":"94fef8225cd5cb8e","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":14,"width":2,"height":1},{"id":"6eabc1677eb6322b","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":15,"width":2,"height":1},{"id":"9b47e8fd229aa329","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":16,"width":1,"height":1},{"id":"b376f777c4ad3a89","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":17,"width":2,"height":1},{"id":"e477141de7cc99e7","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":18,"width":2,"height":1},{"id":"6ff6c741833c1c10","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":19,"width":1,"height":1},{"id":"dc5738d52bce73ee","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":20,"width":2,"height":1},{"id":"f592dac0c423af34","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":21,"width":2,"height":1},{"id":"333bcd7b4254bbbf","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":22,"width":1,"height":1},{"id":"357022f7021efdd2","type":"ui_spacer","z":"f6f2187d.f17ca8","name":"spacer","group":"1e8448cdde48d5c9","order":23,"width":2,"height":1},{"id":"0dd8b704b63c96a1","type":"inject","z":"f6f2187d.f17ca8","g":"f1bf7ba3b4088527","name":"Authorize","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"{   \"password\": \"\",   \"username\": \"admin\" }","payloadType":"json","x":160,"y":120,"wires":[["bd7eb8ec2a8e0da9"]]},{"id":"3b853d53f8b1fb4d","type":"change","z":"f6f2187d.f17ca8","g":"f1bf7ba3b4088527","name":"SaveToken","rules":[{"t":"set","p":"portainer_jwt","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":120,"wires":[[]]},{"id":"46b306f2e48bb850","type":"http request","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"41aad7d8f71cd6e6","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-Key","valueType":"msg","valueValue":"token"}],"x":570,"y":280,"wires":[["7887225ee569137c"]]},{"id":"733507b741691f58","type":"inject","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Fetch","props":[],"repeat":"","crontab":"","once":true,"onceDelay":"0.5","topic":"","x":150,"y":280,"wires":[["6fc0878730035324","4534e2dfa3d348df"]]},{"id":"7887225ee569137c","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Save Endpoints","func":"var instances = [];\nmsg.payload.forEach(function(endpoint) {\n    var obj = {};\n    obj[endpoint.Name] = endpoint.Id;\n    instances.push(obj)\n});\nflow.set('portainer_endpoints', instances);\nmsg.payload = instances[0];\nmsg.options = instances;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":280,"wires":[["69966f561992e23e"]]},{"id":"69966f561992e23e","type":"ui_dropdown","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","label":"Select Endpoint","tooltip":"","place":"Select option","group":"1e8448cdde48d5c9","order":1,"width":6,"height":1,"passthru":true,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"topic","topicType":"msg","className":"","x":980,"y":280,"wires":[["fdb9b09540cd5ba6","909a59dbc05a2fad"]]},{"id":"9f7f53505a88dbb1","type":"http request","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"41aad7d8f71cd6e6","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-Key","valueType":"msg","valueValue":"token"}],"x":570,"y":340,"wires":[["374c4ab5a3ae97c7"]]},{"id":"be5dfd66e869804e","type":"ui_dropdown","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","label":"Select Container","tooltip":"","place":"Select option","group":"1e8448cdde48d5c9","order":3,"width":6,"height":1,"passthru":true,"multiple":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"payload","topicType":"msg","className":"","x":990,"y":340,"wires":[["75a002efe0c1f011"]]},{"id":"fdb9b09540cd5ba6","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Endpoint","func":"\nmsg.url = flow.get('server_url')+'/api/endpoints/'+msg.payload+'/docker/containers/json?all=true';\nmsg.token = flow.get('portainer_jwt');\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":340,"wires":[["9f7f53505a88dbb1"]]},{"id":"374c4ab5a3ae97c7","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Options","func":"msg.options = msg.payload.map((item)=>{\n    let obj = {};\n   obj[item.Names[0]] = item.Id;\n    return obj;\n})\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":340,"wires":[["be5dfd66e869804e"]]},{"id":"4791a04c70fb929f","type":"ui_switch","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","label":"Status","tooltip":"","group":"1e8448cdde48d5c9","order":5,"width":3,"height":1,"passthru":false,"decouple":"true","topic":"payload","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"className":"","x":550,"y":480,"wires":[["84cb3dac9b9f5d39","72d2e05a0acd3fa8"]]},{"id":"75a002efe0c1f011","type":"change","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Save Container","rules":[{"t":"set","p":"portainer_container","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1240,"y":340,"wires":[["df970663c1614b1d"]]},{"id":"84cb3dac9b9f5d39","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Url","func":"let endpoint = flow.get('portainer_endpoint');\nlet container = flow.get('portainer_container');\nlet startOrStop = msg.payload ? 'start' : 'stop';\nif(!endpoint || !container){\n    return [null, { payload: \"Either endpoint or container not selected\", status: !msg.payload}]\n}else{\n    msg.url = flow.get('server_url') +'/api/endpoints/' + endpoint + '/docker/containers/'+container+'/'+startOrStop;\n    msg.token = flow.get('portainer_jwt');\n    return [msg,null]\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":480,"wires":[["b56089ef7ebdddf2"],["fa243fba1fb72a1d"]]},{"id":"909a59dbc05a2fad","type":"change","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Save Container","rules":[{"t":"set","p":"portainer_endpoint","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1240,"y":280,"wires":[[]]},{"id":"fa243fba1fb72a1d","type":"ui_toast","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"className":"","topic":"","name":"","x":990,"y":520,"wires":[]},{"id":"14dab9180b245706","type":"function","z":"f6f2187d.f17ca8","g":"d3ea6600f7f1c7d6","name":"Reset","func":"flow.set('portainer_endpoint', null);\nflow.set('portainer_container',null);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1090,"y":120,"wires":[[]]},{"id":"1ed0f9b52a08f533","type":"link in","z":"f6f2187d.f17ca8","g":"d3ea6600f7f1c7d6","name":"Reset Link","links":["6fc0878730035324"],"x":955,"y":120,"wires":[["14dab9180b245706"]]},{"id":"6fc0878730035324","type":"link out","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Fetch Link","mode":"link","links":["0c165bf98f40b598","1ed0f9b52a08f533"],"x":265,"y":320,"wires":[]},{"id":"b56089ef7ebdddf2","type":"http request","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","method":"POST","ret":"obj","paytoqs":"ignore","url":"","tls":"41aad7d8f71cd6e6","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-Key","valueType":"msg","valueValue":"token"}],"x":970,"y":480,"wires":[[]]},{"id":"60e45a11ede888cb","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Button","func":"msg.enabled = !!flow.get('portainer_container');\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":480,"wires":[["4791a04c70fb929f"]]},{"id":"df970663c1614b1d","type":"link out","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Button","mode":"link","links":["49c1d79c39f3c0a4"],"x":1385,"y":340,"wires":[]},{"id":"0c165bf98f40b598","type":"link in","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Button Status","links":["35aa7e2f151f726c","6fc0878730035324"],"x":95,"y":480,"wires":[["60e45a11ede888cb"]]},{"id":"a86d84649831b0fc","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Url","func":"let endpoint = flow.get('portainer_endpoint');\nlet container = flow.get('portainer_container');\nif (!!endpoint && !!container){\n    msg.url = flow.get('server_url') +'/api/endpoints/' + endpoint + '/docker/containers/'+container+'/json';\n    msg.token = flow.get('portainer_jwt');\n    return msg\n}\nelse\n    return null;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":400,"wires":[["0b6e18ac2c03166b"]]},{"id":"49c1d79c39f3c0a4","type":"link in","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Container Selected","links":["df970663c1614b1d"],"x":95,"y":400,"wires":[["a86d84649831b0fc"]]},{"id":"0b6e18ac2c03166b","type":"http request","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"41aad7d8f71cd6e6","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-Key","valueType":"msg","valueValue":"token"}],"x":570,"y":400,"wires":[["e6f08d657cfa77a9"]]},{"id":"e6f08d657cfa77a9","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Get Status","func":"//msg.payload = msg.payload.State.Running;\nreturn [\n    { payload: msg.payload.State.Running},\n    { payload: msg.payload.State.Status},\n    { payload: msg.payload.State.Health.Status },\n    { payload: msg.payload.State.StartedAt}\n];","outputs":4,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":400,"wires":[["35aa7e2f151f726c"],["c31090ebce3ba7f8"],["079c415a2374e9a6"],["fe7038cac108e62b"]]},{"id":"72d2e05a0acd3fa8","type":"delay","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":570,"y":540,"wires":[["4791a04c70fb929f"]]},{"id":"35aa7e2f151f726c","type":"link out","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Button","mode":"link","links":["0c165bf98f40b598"],"x":915,"y":380,"wires":[]},{"id":"c31090ebce3ba7f8","type":"ui_text","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","group":"1e8448cdde48d5c9","order":6,"width":3,"height":1,"name":"","label":"Status","format":"{{msg.payload}}","layout":"row-left","className":"","x":1050,"y":380,"wires":[]},{"id":"f1c8fbcb6c326e46","type":"inject","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Update Status","props":[],"repeat":"5","crontab":"","once":true,"onceDelay":"0.5","topic":"","x":180,"y":360,"wires":[["a86d84649831b0fc","bfb495bb4ca9ae6f"]]},{"id":"079c415a2374e9a6","type":"ui_text","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","group":"1e8448cdde48d5c9","order":7,"width":3,"height":1,"name":"","label":"Health","format":"{{msg.payload}}","layout":"row-left","className":"","x":1050,"y":420,"wires":[]},{"id":"d2c92a6d4232af0e","type":"ui_text","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","group":"1e8448cdde48d5c9","order":8,"width":6,"height":1,"name":"","label":"Started","format":"{{msg.payload}}","layout":"row-left","className":"","x":1360,"y":460,"wires":[]},{"id":"fe7038cac108e62b","type":"moment","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","topic":"","input":"payload","inputType":"msg","inTz":"Asia/Kolkata","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD.MM.YYYY HH:mm","locale":"en-US","output":"payload","outputType":"msg","outTz":"Asia/Kolkata","x":1180,"y":460,"wires":[["d2c92a6d4232af0e"]]},{"id":"bfb495bb4ca9ae6f","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set Url","func":"let endpoint = flow.get('portainer_endpoint');\nlet container = flow.get('portainer_container');\nif (!!endpoint && !!container){\n    msg.url = flow.get('server_url') +'/api/endpoints/' + endpoint + '/docker/containers/' + container +'/stats?stream=false&one-shot=false';\n    msg.token = flow.get('portainer_jwt');\n    return msg\n}\nelse\n    return null;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":580,"wires":[["6026847cd96ce18c"]]},{"id":"6026847cd96ce18c","type":"http request","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"","tls":"41aad7d8f71cd6e6","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-Key","valueType":"msg","valueValue":"token"}],"x":590,"y":580,"wires":[["12ca61074a76e5dd","d8c78c08e407231e"]]},{"id":"12ca61074a76e5dd","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"CPU Usage","func":"var stats = msg.payload;\nif(!!stats){\n    var cpu_delta = stats.cpu_stats.cpu_usage.total_usage - stats.precpu_stats.cpu_usage.total_usage;\n    var system_cpu_delta = stats.cpu_stats.system_cpu_usage - stats.precpu_stats.system_cpu_usage;\n    var number_cpus = stats.cpu_stats.online_cpus;\n   // msg.payload = { data: [stats, cpu_delta, system_cpu_delta, number_cpus]}\n    msg.payload = Number((cpu_delta === 0? 0 : (cpu_delta / system_cpu_delta) * number_cpus * 100.0).toFixed(2));\n    return msg;\n}\nelse\n    return null","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":580,"wires":[["685432773837206d"]]},{"id":"d8c78c08e407231e","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Memory Usage","func":"var stats = msg.payload;\nif(!!stats){\n    if (!!stats.memory_stats.stats.cache)\n        var used_memory = stats.memory_stats.usage - stats.memory_stats.stats.cache;\n    else\n        var used_memory = stats.memory_stats.usage - stats.memory_stats.stats.inactive_file\n    var available_memory =stats.memory_stats.limit\n    // msg.payload = { data: [stats, used_memory, available_memory]}\n    msg.payload = Number(((used_memory / available_memory) * 100.000).toFixed(2));\n    return msg;\n}\nelse\nreturn null","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":640,"wires":[["0026b9dbe31f2b48","d75002a1564c11aa"]]},{"id":"685432773837206d","type":"ui_gauge","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","group":"1e8448cdde48d5c9","order":13,"width":5,"height":4,"gtype":"donut","title":"CPU Usage","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":970,"y":580,"wires":[]},{"id":"0026b9dbe31f2b48","type":"ui_gauge","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"","group":"1e8448cdde48d5c9","order":11,"width":5,"height":4,"gtype":"donut","title":"RAM Usage","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","diff":false,"className":"","x":970,"y":640,"wires":[]},{"id":"d75002a1564c11aa","type":"debug","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"debug 1","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":960,"y":700,"wires":[]},{"id":"bd7eb8ec2a8e0da9","type":"function","z":"f6f2187d.f17ca8","g":"f1bf7ba3b4088527","name":"Configuration","func":"msg.payload = \"ptr_3Wql5OXTh3bhXGW18Bzrk8SjVcr2xmBFXmpciFzR7zI=\"\nmsg.serverUrl = \"https://192.168.0.103:9443\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":120,"wires":[["3b853d53f8b1fb4d","d3e4f8597b868498"]]},{"id":"d3e4f8597b868498","type":"change","z":"f6f2187d.f17ca8","g":"f1bf7ba3b4088527","name":"Save URL","rules":[{"t":"set","p":"server_url","pt":"flow","to":"serverUrl","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":160,"wires":[[]]},{"id":"4534e2dfa3d348df","type":"function","z":"f6f2187d.f17ca8","g":"856e8d2dc2416b46","name":"Set URL","func":"msg.url = flow.get('server_url') + '/api/endpoints'\nmsg.token = flow.get('portainer_jwt');\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":280,"wires":[["46b306f2e48bb850"]]}]

Flow Info

Created 2 years, 2 months ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • change (x4)
  • debug (x1)
  • delay (x1)
  • function (x13)
  • http request (x5)
  • inject (x3)
  • link in (x3)
  • link out (x3)
  • tls-config (x1)
Other

Tags

  • docker
  • portainer
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option