Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

My Information

  • Agent Count
  1. ShawnSack

    Grafana and Labtech

    I was checking out the pull request on github the other day. It may be a little while before they make the merge. I'm really hoping to see what panels you all come up with. I was trying some ideas a few weeks ago, but I'm having a tough time coming up with any practical metrics that can be used by our techs for decision making. Makes for good Executive Summaries though. Here are some panels I think are useful: (You will need to edit the data source to match yours) To use these, just create a new random panel. Exit editor and select the panel and select "Panel JSON" and paste the code in. Script History: { "aliasColors": {}, "bars": false, "datasource": "Labtech", "editable": true, "error": false, "fill": 1, "grid": { "threshold1": null, "threshold1Color": "rgba(216, 200, 27, 0.27)", "threshold2": null, "threshold2Color": "rgba(234, 112, 112, 0.22)", "thresholdLine": false }, "id": 6, "interval": ">60s", "isNew": true, "legend": { "avg": true, "current": false, "max": true, "min": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "connected", "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "span": 6, "stack": false, "steppedLine": true, "targets": [ { "alias": "$t.$col", "dsType": "sqldb", "groupBy": [ { "params": [ "auto" ], "type": "time" } ], "refId": "A", "resultFormat": "time_series", "schema": "labtech", "table": "h_scripts", "tags": [], "targetLists": [ [ { "params": [ "*" ], "type": "field" }, { "params": [], "type": "count" } ] ], "timeCol": "HistoryDate", "timeColDataType": "HistoryDate : timestamp", "timeDataType": "timestamp" } ], "timeFrom": null, "timeShift": null, "title": "Script History", "tooltip": { "msResolution": true, "ordering": "alphabetical", "shared": true, "value_type": "cumulative" }, "type": "graph", "xaxis": { "show": true }, "yaxes": [ { "format": "short", "label": "Script Count", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ] } Script Schedules (shows concentration of scheduled scripts): { "aliasColors": {}, "bars": true, "datasource": "Labtech", "editable": true, "error": false, "fill": 1, "grid": { "threshold1": null, "threshold1Color": "rgba(216, 200, 27, 0.27)", "threshold2": null, "threshold2Color": "rgba(234, 112, 112, 0.22)" }, "id": 1, "interval": ">60s", "isNew": true, "legend": { "alignAsTable": false, "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": false, "linewidth": 2, "links": [], "nullPointMode": "connected", "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "span": 6, "stack": true, "steppedLine": false, "targets": [ { "alias": "$col", "dsType": "sqldb", "groupBy": [ { "params": [ "5m" ], "type": "time" } ], "query": "SELECT $unixtimeColumn * 1000 AS time_msec, count(*) FROM labtech.scheduledscripts WHERE $timeFilter GROUP BY $unixtimeColumn ORDER BY $unixtimeColumn", "rawQuery": false, "refId": "A", "resultFormat": "time_series", "schema": "labtech", "table": "scheduledscripts", "tags": [], "targetLists": [ [ { "params": [ "NextSchedule" ], "type": "field" }, { "params": [], "type": "count" }, { "params": [ "Scheduled" ], "type": "alias" } ] ], "timeCol": "NextSchedule", "timeColDataType": "NextSchedule : datetime", "timeDataType": "datetime" }, { "alias": "$col", "dsType": "sqldb", "groupBy": [ { "params": [ "5m" ], "type": "time" } ], "refId": "B", "resultFormat": "time_series", "schema": "labtech", "table": "scheduledscripts", "tags": [], "targetLists": [ [ { "params": [ "*" ], "type": "field" }, { "params": [], "type": "count" }, { "params": [ "Last Executed" ], "type": "alias" } ] ], "timeCol": "LastSchedule", "timeColDataType": "LastSchedule : datetime", "timeDataType": "datetime" } ], "timeFrom": null, "timeShift": null, "title": "Schedules Scripts", "tooltip": { "msResolution": true, "ordering": "alphabetical", "shared": true, "value_type": "cumulative" }, "type": "graph", "xaxis": { "show": true }, "yaxes": [ { "format": "short", "label": "Scripts", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ] } Scripts Pending: { "cacheTimeout": null, "colorBackground": false, "colorValue": true, "colors": [ "rgba(50, 172, 45, 0.97)", "rgba(237, 129, 40, 0.89)", "rgba(245, 54, 54, 0.9)" ], "datasource": "Labtech", "editable": true, "error": false, "format": "none", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "hideTimeOverride": true, "id": 4, "interval": null, "isNew": true, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "minSpan": 2, "nullPointMode": "connected", "nullText": null, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "span": 2, "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "targets": [ { "alias": "$t.$col", "dsType": "sqldb", "groupBy": [], "query": "SELECT $unixtimeColumn * 1000 AS time_msec, count(*) FROM labtech.runningscripts WHERE Step > 0 AND $timeFilter ORDER BY $unixtimeColumn", "rawQuery": false, "refId": "A", "resultFormat": "time_series", "schema": "labtech", "table": "runningscripts", "tags": [ { "key": "Step", "operator": "=", "value": "0" }, { "condition": "AND", "key": "Start", "operator": "<", "value": "DATE_SUB(NOW(), INTERVAL 30 MINUTE)" } ], "targetLists": [ [ { "params": [ "*" ], "type": "field" }, { "params": [], "type": "count" } ] ], "timeCol": "Start", "timeColDataType": "Start : timestamp", "timeDataType": "timestamp" } ], "thresholds": "50,80", "timeFrom": "3y", "title": "Scripts Pending", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" } Machines with Malware-bytes installed(stuff like this is good for quickly seeing license utilization): { "cacheTimeout": null, "colorBackground": false, "colorValue": true, "colors": [ "rgba(50, 172, 45, 0.97)", "rgba(237, 129, 40, 0.89)", "rgba(245, 54, 54, 0.9)" ], "datasource": "Labtech", "editable": true, "error": false, "format": "none", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "id": 3, "interval": null, "isNew": true, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "span": 2, "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "targets": [ { "alias": "$t.$col", "dsType": "sqldb", "groupBy": [ { "params": [ "$interval" ], "type": "time" } ], "query": "SELECT 0, count(*) FROM labtech.v_software WHERE SoftwareName LIKE '%Malwarebytes Anti-Malware version'", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "schema": "labtech", "table": "v_software", "tags": [ { "key": "SoftwareName", "operator": "=", "value": "%AVG%" } ], "targetLists": [ [ { "params": [ "*" ], "type": "field" }, { "params": [], "type": "count" } ] ], "timeCol": "DateInstalled", "timeColDataType": "DateInstalled : varchar", "timeDataType": "varchar" } ], "thresholds": "720,760", "timeFrom": null, "title": "Malwarebytes Installed", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "avg" }
  2. ShawnSack

    Grafana and Labtech

    Looks like I forgot to add step. Switch back to query builder and under GROUP BY, remove the time(interval) field. You only need that if you are attaching a time field to your metric. I have one that shows me computers added in last $interval.
  3. I had this happen to me the other day. Something occurs to delete the screenconnect config. Here is what you do. Open SQLYog and login, open the table plugin_screenconnect_config and and open Table Data Tab. Go to the "ConfigWizardHasRun" and "ConfigPromptHasRun" fields and change both of them to 0 and save. Open CC and you should be prompted to configure if someone hasn't beat you to it first. Reconfigure with the wizard and everything should start working again.
  4. ShawnSack

    Grafana and Labtech

    Hi all, first write up so bear with me. Dashing was giving me a lot of issues with ruby dependencies and I eventually gave up. In comes Grafana. Grafana is a web-based, time-series visualization tool generally used by cloud services providers and other industries where decisions are influenced by data. I recently found a RDBMS plugin for grafana that allows us to connect to labtech and queries data. There are a few gotchas but I found that it's a little easier to setup and manage than Dashing was. One of the big catches to this is that Grafana needs time data, so feeding it a COUNT() query is not enough(except for singlestat, looks like that was fixed). The way around this though is to feed it 0 or NOW() as the first field. This one is more for testing only until they merge the changes. Once that happens I will rewrite this guide for a more prod ready environment. I am not responsible if something get borked up somewhere, standard disclaimer. Install: (I will edit this when they merge the changes to master branch) This will need to run on a linux machine until the changes are merged to master, you can spin up a ubuntu or centos server for this but I am going to focus on setting up with Ubuntu 16.04 LTS. Spin up you linux distro and make sure openssh, wget, git is installed. sudo apt update && sudo apt install openssh-server wget git Connect to your server with SSH and login Download the prebuilt binary (credit to sraoss on github for creating this plugin.) wget https://github.com/sraoss/grafana-sqldb-datasource/releases/download/V0.1/grafana-sqldb_20160615.tar.gz -O /tmp/grafana.tar.gz And extract to /opt sudo tar xzf /tmp/grafana.tar.gz -C /opt Lets also open our port in firewall sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT Update plugin to newest version cd /opt/grafana-sqldb/data/plugins/grafana-sqldb-datasource sudo rm dist/plugin.json && sudo git pull And start the server cd /opt/grafana-sqldb sudo ./bin/grafana-server web You should now be able to browse to http://yourip:3000 and login with default admin/admin login. Now we set up the data source. After logging in, open the dropdown in the top left corner and click Datasources and click Add Data Source. Title your datasource as Labtech, select SQLDB as the Type and fill out login data for your mySQL server. I strongly recommend creating a user that can only perform SELECT queries. Save & Test should succeed if everything is entered correctly. Create your dashboard. Most of this is up to your needs and imagination, but I'll get you started. At the top left dropdown select Dashboards>New. Click the green tab on the left and select Add Panel>Singlestat In the General Tab, name the panel Agent Count. In the Metrics tab, delete the fake datasource metric and add a Labtech panel data source. Under GROUP BY, remove the time($interval) field. This is only needed if your data is time series. On the right of the metric click the 3 bars button(I have no idea if this has a technical term) and toggle edit mode. Enter: SELECT count(*) FROM labtech.computers If you click in some empty space, it should update to show you your current agent count. And that's the basic gist of it. The are some nuances here and there to find. I find the query builder requires a time field, but you can bypass it on some panels by switching edit mode and typing the query. You can also configure the thresholds and gauges and such. Have fun with it! Remember, not quite prime time ready but give it a few weeks and we should be there.
  5. ShawnSack

    AVG Protection Help

    Pretty sure you're missing a bracket in there.
  6. ShawnSack

    Query agent for data

    That's part of my issue. We have a customer that who's employee jump from computer to computer. There are only a handful who are assigned a computer. As for querying LT, that would be handled by a webserver on my end. I thought about it over the weekend and I guess all I really need is the UUID and the logged in username. Maybe MAC for a validation step. But I guess I don't really need to pull that from LT client itself if UUID is stored in registry. Are there any requirements to accessing the SDK?
  7. ShawnSack

    Query agent for data

    Executable run on client-side to pass computer ID/UUID and logged-in user to a webpage, webpage in turn queries Labtech for data and displays it to client. IE. system info, metrics, tickets, etc.
  8. ShawnSack

    Query agent for data

    Hello, New here but came up with an idea. I want to build a script independent from labtech (not run from scripts tab). But, I want it to query the agent of the device it's running on for computer ID/UUID, logged in user, etc. I want to make those variables that I can pass to a script that pulls additional data from the LT database for display. Anyone have a method for doing this?
  9. ShawnSack

    Potentially new Labtech customer

    This is essentially why they want to go cloud. Our "K-word" on-prem was never really taken care of (I wasn't the one managing it, I just started here) and runs like garbage. They just want to be sure they don't see that again. As long as Labtech is plenty willing to ramp up the hardware if we need it, I probably won't have an issue with it. Regarding the restricted access, would I be able to create a RO mysql acct and access the database from outside? I wanted to build a neat little dashboard that will show site status for each customer.
  10. ShawnSack

    Potentially new Labtech customer

    I agree, I would prefer to have it in house. But management feels that having it in the Cloud = less time/money in back-end management.
  11. Hello all, We've been looking at different RMMs for awhile now to replace our Kaseya implementation. After testing 3-4 of the top, I am most impressed by Labtech. I've been reading through the forum and I'm impressed by the thriving, active community. That tells me more about the product than any demo does. Is there anything I need to know before going into it? We are looking to manage >1500 devices. Management insists on going SaaS, but I'm not completely sold on it. Anyone have any reasons for or against it?