Github action to collect metrics (CPU, memory, I/O, etc ...) from your workflows to help you debug and optimize your CI/CD pipeline

Overview

workflow-telemetry-action

A GitHub Action to track and monitor the resource metrics of your GitHub Action workflow runs. If the run is triggered via a Pull Request, it will create a comment on the connected PR with the results and/or publishes the results to the job summary. The action collects the following metrics:

  • CPU Load (user and system) in percentage
  • Memory usage (used and free) in MB
  • Network I/O (read and write) in MB
  • Disk I/O (read and write) in MB

Example Output

An example output of a simple workflow run will look like this.

PR Comment Example

Usage

To use the action, add the following step before the steps you want to track.

- name: Collect Workflow Telemetry
  uses: thundra-io/workflow-telemetry-action@v1

Configuration

Option Requirement Description
github_token Optional An alternative GitHub token, other than the default provided by GitHub Actions runner.
stat_frequency Optional Statistic collection frequency in seconds. Must be a number. Defaults to 5.
comment_on_pr Optional Set to true to publish the results as comment to the PR (applicable if workflow run is triggered by PR). Defaults to true.
job_summary Optional Set to true to publish the results as part of the job summary page of the workflow run. Defaults to true.
theme Optional Set to dark to generate charts compatible with Github dark mode. Defaults to light.
Comments
  • `AxiosError: Request failed with status code 400`

    `AxiosError: Request failed with status code 400`

    Hi!

    I'm getting an error when running this action on Windows. Here's the run: https://github.com/tiagobento/kie-tools/actions/runs/2904721533

    Please let me know how I can debug it so I can provide more information about the error.

    image

    opened by tiagobento 11
  • remove escalation of system command exectution.

    remove escalation of system command exectution.

    Hi Team:

    src/processTrace.ts Line122.

    There is a system command execution that is using escalated user permission. With assumption that procTracePID is launched by regular user, it should be handled by same user account without privilege's escalation. There is security concerns if code involve higher permission level.

    opened by srccn 4
  • save-state command is deprecated

    save-state command is deprecated

    Hi,

    we are getting the following Warning in our Github Workflow for action "runforesight/workflow-telemetry-action@v1"

    Warning: The save-state command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

    Regards

    opened by arogic 3
  • Post Workflow Telemetry fails with 'Error: Resource not accessible by integration'

    Post Workflow Telemetry fails with 'Error: Resource not accessible by integration'

    Hi,

    I've added the step to my workflow with.

    - name: Workflow Telemetry
      uses: runforesight/workflow-telemetry-action@v1
    

    And the post step is failing with the error Error: Resource not accessible by integration

    Setup Log:

    ##[debug]Evaluating condition for step: 'Workflow Telemetry'
    ##[debug]Evaluating: success()
    ##[debug]Evaluating success:
    ##[debug]=> true
    ##[debug]Result: true
    ##[debug]Starting: Workflow Telemetry
    ##[debug]Register post job cleanup for action: runforesight/workflow-telemetry-action@v1
    ##[debug]Loading inputs
    ##[debug]Evaluating: github.token
    ##[debug]Evaluating Index:
    ##[debug]..Evaluating github:
    ##[debug]..=> Object
    ##[debug]..Evaluating String:
    ##[debug]..=> 'token'
    ##[debug]=> '***'
    ##[debug]Result: '***'
    ##[debug]Loading env
    Run runforesight/workflow-telemetry-action@v1
    [Workflow Telemetry] Initializing ...
    [Workflow Telemetry] Starting step tracer ...
    [Workflow Telemetry] Started step tracer
    [Workflow Telemetry] Starting stat collector ...
    [Workflow Telemetry] Started stat collector
    [Workflow Telemetry] Starting process tracer ...
    ::save-state name=PROC_TRACER_PID::1745588
    ##[debug]Save intra-action state PROC_TRACER_PID = 1745588
    [Workflow Telemetry] Started process tracer
    [Workflow Telemetry] Initialization completed
    ##[debug]Node Action run completed with exit code 0
    ##[debug]Finishing: Workflow Telemetry
    

    Post log:

    ##[debug]Evaluating condition for step: 'Post Workflow Telemetry'
    ##[debug]Evaluating: always()
    ##[debug]Evaluating always:
    ##[debug]=> true
    ##[debug]Result: true
    ##[debug]Starting: Post Workflow Telemetry
    ##[debug]Loading inputs
    ##[debug]Evaluating: github.token
    ##[debug]Evaluating Index:
    ##[debug]..Evaluating github:
    ##[debug]..=> Object
    ##[debug]..Evaluating String:
    ##[debug]..=> 'token'
    ##[debug]=> '***'
    ##[debug]Result: '***'
    ##[debug]Loading env
    Post job cleanup.
    [Workflow Telemetry] Finishing ...
    (node:1747867) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
    Error: Resource not accessible by integration
    ##[debug]Node Action run completed with exit code 1
    ##[debug]Finishing: Post Workflow Telemetry
    

    I suspect this is related to permissions as we have restricted them in our workflows, but I can't work out which need to be enabled from a cursory look. We're also using a custom runner, but hopefully that won't cause any issues?

    permissions:
      contents: read
      packages: write
    

    Thanks for developing this, it looks really fantastic.

    opened by tim-silico 3
  • [Feature Request] Pull-request decoration with telemetry data could be dark-mode friendly

    [Feature Request] Pull-request decoration with telemetry data could be dark-mode friendly

    Hi Thundra devs! 👋

    First of all : awesome job on this Action, I'm already using it in a project and loving it ♥️

    Unfortunately I'm one of those dark-mode addicted Devs (😂) and I realized that the charts plotted in the PR comment driven by this GHA don't look super-great outside the "white" theme in Github, eg

    image

    I was wondering how hard it would be to support a dark-mode friendly report, eventually by requiring opt-in from the user through the Action public API, ie providing another input like

          - name: Setup telemetry for build machine
            uses: thundra-io/[email protected]
            with:
              theme: 'dark' 
    

    and using such an input to disambiguate the colors to inject in the payload to be sent to globadge under the hood 👀

    Thanks in advance for reading/considering this feature request 🙂

    opened by ubiratansoares 3
  • Bump vm2 from 3.9.9 to 3.9.11

    Bump vm2 from 3.9.9 to 3.9.11

    Bumps vm2 from 3.9.9 to 3.9.11.

    Release notes

    Sourced from vm2's releases.

    3.9.11

    New Features

    https://github.com/patriksimek/vm2/commit/58478a58c6f4af3c54faf4117ed5ab72d2cc8cd5: Add option require.strict to allow to load required modules in non strict mode.

    Fixes

    https://github.com/patriksimek/vm2/commit/d9a7f3cc995d3d861e1380eafb886cb3c5e2b873: Security fix.

    3.9.10

    New Features

    61d240f69cc02974be27c7582fee2defd0e6c7a8: Add uptime to process.

    Fixes

    e3e573fdc99a98a9c7db026e4c40474eb78cab4a: Security fix. 245da82dcdfa67031e065fd7c7a7348b5e21f2b8: Fix inspect showProxy.

    Changelog

    Sourced from vm2's changelog.

    v3.9.11 (2022-08-28)

    [new] Add option require.strict to allow to load required modules in non strict mode.
    [fix] Security fix.

    v3.9.10 (2022-07-05)

    [new] Add uptime to process.
    [fix] Security fix.
    [fix] Fix inspection with showProxy.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump @actions/core from 1.8.2 to 1.9.1

    Bump @actions/core from 1.8.2 to 1.9.1

    Bumps @actions/core from 1.8.2 to 1.9.1.

    Changelog

    Sourced from @​actions/core's changelog.

    1.9.1

    • Randomize delimiter when calling core.exportVariable

    1.9.0

    • Added toPosixPath, toWin32Path and toPlatformPath utilities #1102
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v1.8.4)
Owner
Thundra
Observability for the full Software Development Lifecycle
Thundra
Palaemon is an open-source developer tool for monitoring health and resource metrics of Kubernetes clusters and analyzing Out of Memory (OOMKill) errors

Palaemon ?? ?? An Electron based developer tool for Kubernetes cluster monitoring and error analysis Palaemon is a Greek, child sea-god who came to ai

OSLabs Beta 99 Dec 28, 2022
Create a badge using GitHub Actions and GitHub Workflow CPU time

Generated Badges Create a badge using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers) Install $ npm i generated-badges -g Command

小弟调调™ 9 Dec 30, 2022
Buildable's core open-source offering for actions that makes it easy to collect, centralize and action your backend system activity

What are Action Templates? Action Templates are open-source functions that save developers hundreds of hours when integrating databases, apps and othe

Buildable 6 Nov 5, 2022
📊 AlphaSwap subgraph - (Blocks, token info, profiles, pricing data, LP metrics, etc...)

AlphaSwap Subgraph AlphaSwap is a decentralized protocol for automated token exchange on the KCC network. This subgraph dynamically tracks any pair cr

Brandon 3 Jul 9, 2022
Quo is a (free) debugging companion app to help you debug dumped variables, the dumped variables will appear in this Quo client instead of the traditional way which is often tedious.

Quo is a debugging companion to help you debug dumped variables, the dumped variables will appear in this Quo client instead of via the traditional way which is often tedious.

Protoqol 33 Dec 25, 2022
🐷 Collect historical performance data on your products via Lighthouse CI & Github Actions

Datahog ?? Datahog is a template repo, configured to collect historical performance data on your products via Lighhouse CI & Github Actions. Setup Cli

Jacob Størdahl 5 Sep 21, 2022
Github Actions and Workflows that make maintaining Magento2 projects and modules easier.

Magento 2 GitHub Actions Opinionated Github Actions and Workflows to make building, testing, and maintaining Magento 2 Modules easier. README if you a

Graycore, LLC 35 Dec 21, 2022
A social network where you can share posts, view your profile metrics and follow other users.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Rui Neto 16 Aug 21, 2022
SEE-EYE is a collection of useful Github actions and workflows used to build CI pipelines for TypeScript applications

SEA-EYE ?? No frils collection of common actions and pre-made workflows for TypeScript project that uses yarn@v1 as package manager. Workflows Build -

Tino Thamjarat 10 Jun 6, 2022
Create deployment files and configure GitHub Actions workflows to deploy applications to Azure Kubernetes Service (AKS).

Azure Kubernetes Service (AKS) DevX (Developer experience) Extension for Visual Studio Code (Preview) The AKS DevX extension for Visual Studio Code (P

Microsoft Azure 11 Oct 1, 2022
Manage GitHub resources like repositories, teams, members, integrations and workflows with the AWS CDK as Custom Resources in CloudFormation.

CDK Github Manage GitHub resources like repositories, teams, members, integrations and workflows with the AWS CDK as Custom Resources in CloudFormatio

Pepperize 8 Nov 25, 2022
Michael Schneider 4 Oct 26, 2022
GitHub Actions - Workflows as Code (WAC)

github-actions-wac GitHub Actions - Workflows as Code (WaC). Table of Contents Installation Overview Examples Reference Functions createWorkflow CLI b

Webiny 21 Dec 23, 2022
Imagable - Create, Edit, Optimize And Add Effects to Images

Imagable Imagable is an open-source image editor build on top of Typescript and Node.js. We serve with next-gen tools and filters and effects to make

Haneen Mahdin 2 May 5, 2022
Dynamically resize, format and optimize images based on url modifiers.

Local Image Sharp Dynamically resize, format and optimize images based on url modifiers. Table of Contents ✨ Features ?? Installation ?? Usage Contrib

Strapi Community 30 Nov 29, 2022
UAParser.js - Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment.

UAParser.js JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data with relatively small footprint (~17KB m

Faisal Salman 7.4k Jan 4, 2023
e-ONG, an authorial project, whose objective is to help ONGs to find people who need help or would like to help them

This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: npm start Runs the app in the developmen

Lucas Lima 2 Nov 11, 2022
Tracer for module requires/imports to optimize coldstarts in serverless

treq treq is a library to automatically trace requires/imports in your serverless applications and gives you insights about the most expensive modules

Serkan ÖZAL 29 Aug 16, 2022
WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives.

Introduction WhyProfiler is a CPU profiler for Jupyter notebook that not only identifies hotspots but can suggest faster alternatives. It is powered b

Robusta 44 Dec 5, 2022