diff --git a/.github/actions/add-commit-status/action.yml b/.github/actions/add-commit-status/action.yml index 0671b65038..daffe97ce7 100644 --- a/.github/actions/add-commit-status/action.yml +++ b/.github/actions/add-commit-status/action.yml @@ -11,7 +11,7 @@ runs: using: composite steps: - name: Add commit status - uses: actions/github-script@v6 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 env: STATE: ${{ inputs.state }} STATUS_CONTEXT: ${{ inputs.statusContext }} @@ -36,4 +36,4 @@ runs: const result = await github.rest.repos.createCommitStatus(args); - console.log("Result:", result) \ No newline at end of file + console.log("Result:", result) diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml index de2093e864..45f608240e 100644 --- a/.github/actions/bootstrap/action.yml +++ b/.github/actions/bootstrap/action.yml @@ -2,9 +2,9 @@ name: Bootstrap Workflow description: Reusable action for setting up the repo runs: using: composite - steps: + steps: - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 with: node-version: 16 @@ -14,7 +14,7 @@ runs: working-directory: utils run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - uses: actions/cache@v3 + - uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} @@ -24,4 +24,4 @@ runs: - name: Install dependencies shell: bash - run: cd utils && yarn install --frozen-lockfile \ No newline at end of file + run: cd utils && yarn install --frozen-lockfile diff --git a/.github/workflows/pr-merged.yml b/.github/workflows/pr-merged.yml index 7cbd468a1a..3000b9c819 100644 --- a/.github/workflows/pr-merged.yml +++ b/.github/workflows/pr-merged.yml @@ -23,37 +23,19 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} ref: "release" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Generate UUIDs for quickstarts id: generate-uuids run: cd utils && yarn generate-uuids - - name: Temporarily disable branch protections - id: disable-branch-protection - if: always() - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} - script: | - const result = await github.rest.repos.updateBranchProtection({ - owner: context.repo.owner, - repo: context.repo.repo, - branch: 'release', - required_status_checks: null, - restrictions: null, - enforce_admins: null, - required_pull_request_reviews: null - }) - console.log("Result:", result) - - name: Commit changes id: commit-changes run: | @@ -69,99 +51,3 @@ jobs: - name: Push Commit if: env.commit == 'true' run: git push origin HEAD - - - name: Re-enable branch protections - id: enable-branch-protection - if: always() - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} - script: | - const result = await github.rest.repos.updateBranchProtection({ - owner: context.repo.owner, - repo: context.repo.repo, - branch: 'release', - required_status_checks: { - strict: true, - contexts: [ - 'Validation / Image count and extension compliance', - 'Validation / Ensure icons exist', - 'Validation / Install plan ids exist', - 'Validation / Data source ids exist', - 'Validation / Install plan schema compliance', - 'Validation / Data source schema compliance', - 'Validation / Quickstart id are unique', - 'Validation / Validate Quickstart Schema', - 'Validation / Quickstart dashboard name is unique' - ] - }, - restrictions: { - "users":[], - "teams":[], - "apps":[] - }, - enforce_admins: true, - required_pull_request_reviews: { - dismiss_stale_reviews: true, - required_approving_review_count: 1, - dismissal_restrictions: { - users: [], - teams: [] - } - } - }) - console.log("Result:", result) - - # get-pr-number: - # name: Get PR number - # runs-on: ubuntu-latest - # outputs: - # pr-number: ${{ steps.output_pr_number.outputs.pr-number }} - # steps: - # - name: Download artifact - # uses: dawidd6/action-download-artifact@v2 - # with: - # workflow: submit_gate.yml - # run_id: ${{ github.event.workflow_run.id }} - - # - name: Get PR number - # id: output_pr_number - # run: | - # export PR_NUMBER=$(cat artifact/pr_number_submit.txt) - # echo "pr-number=$PR_NUMBER" >> $GITHUB_OUTPUT - - # staging: - # needs: [generate-uuid, get-pr-number] - # uses: ./.github/workflows/reusable.quickstart_submission.yml - # with: - # pr-number: ${{ needs.get-pr-number.outputs.pr-number }} - # dry-run: false - # secrets: - # nr-api-url: ${{ secrets.NR_API_URL_STAGING }} - # nr-api-token: ${{ secrets.NR_API_TOKEN_STAGING }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # nr-license-key: ${{ secrets.NEW_RELIC_LICENSE_KEY }} - - # production: - # needs: [staging, get-pr-number] - # uses: ./.github/workflows/reusable.quickstart_submission.yml - # with: - # pr-number: ${{ needs.get-pr-number.outputs.pr-number }} - # dry-run: false - # secrets: - # nr-api-url: ${{ secrets.NR_API_URL }} - # nr-api-token: ${{ secrets.NR_API_TOKEN }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # nr-license-key: ${{ secrets.NEW_RELIC_LICENSE_KEY }} - - # eu-production: - # needs: [staging, get-pr-number] - # uses: ./.github/workflows/reusable.quickstart_submission.yml - # with: - # pr-number: ${{ needs.get-pr-number.outputs.pr-number }} - # dry-run: false - # secrets: - # nr-api-url: ${{ secrets.NR_API_URL_EU }} - # nr-api-token: ${{ secrets.NR_API_TOKEN_EU }} - # github-token: ${{ secrets.GITHUB_TOKEN }} - # nr-license-key: ${{ secrets.NEW_RELIC_LICENSE_KEY }} diff --git a/.github/workflows/pr-project-board.yml b/.github/workflows/pr-project-board.yml index 7af3ec269e..6e6fc001e3 100644 --- a/.github/workflows/pr-project-board.yml +++ b/.github/workflows/pr-project-board.yml @@ -4,8 +4,7 @@ on: pull_request_target: types: [opened] paths: - - 'quickstarts/**' - + - "quickstarts/**" env: GITHUB_TOKEN: ${{ secrets.OPENSOURCE_BOT_TOKEN }} @@ -15,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Move PR to Project Board for triage run: | diff --git a/.github/workflows/preview-links.yml b/.github/workflows/preview-links.yml index 2b40f9c103..1e5a9407fc 100644 --- a/.github/workflows/preview-links.yml +++ b/.github/workflows/preview-links.yml @@ -15,10 +15,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Create preview links id: links diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3725559044..c720598e54 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,112 +10,18 @@ env: THIRD_PARTY_GIT_AUTHOR_NAME: nr-opensource-bot jobs: - generate-schema-docs: - name: Generate GraphQL schema documentation - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} - ref: "main" - fetch-depth: 0 - - - name: Setup workspace - uses: './.github/actions/bootstrap' - - - name: Generate schema docs for GraphQl - id: generate-schema - env: - NR_API_URL: ${{ secrets.NR_API_URL }} - NR_API_TOKEN: ${{ secrets.NR_API_TOKEN }} - run: cd utils && yarn generate-schema-docs - - - name: Commit changes - id: commit-changes - run: | - git config --local user.email "${{ env.THIRD_PARTY_GIT_AUTHOR_EMAIL }}" - git config --local user.name "${{ env.THIRD_PARTY_GIT_AUTHOR_NAME }}" - git add ./docs/* - git diff-index --quiet HEAD ./docs/* || git commit -m 'chore: generate schema documentation [skip ci]' - echo "commit=true" >> $GITHUB_ENV - - - name: Temporarily disable branch protections - id: disable-branch-protection - if: always() - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} - script: | - const result = await github.rest.repos.updateBranchProtection({ - owner: context.repo.owner, - repo: context.repo.repo, - branch: 'main', - required_status_checks: null, - restrictions: null, - enforce_admins: null, - required_pull_request_reviews: null - }) - console.log("Result:", result) - - - name: Push Commit - if: env.commit == 'true' - run: git push origin HEAD - - - name: Re-enable branch protections - id: enable-branch-protection - if: always() - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.OPENSOURCE_BOT_TOKEN }} - script: | - const result = await github.rest.repos.updateBranchProtection({ - owner: context.repo.owner, - repo: context.repo.repo, - branch: 'main', - required_status_checks: { - strict: true, - contexts: [ - 'Validation / Image count and extension compliance', - 'Validation / Ensure icons exist', - 'Validation / Install plan ids exist', - 'Validation / Data source ids exist', - 'Validation / Install plan schema compliance', - 'Validation / Data source schema compliance', - 'Validation / Quickstart id are unique', - 'Validation / Validate Quickstart Schema', - 'Validation / Quickstart dashboard name is unique' - ] - }, - restrictions: { - "users":[], - "teams":[], - "apps":[] - }, - enforce_admins: true, - required_pull_request_reviews: { - dismiss_stale_reviews: true, - required_approving_review_count: 1, - dismissal_restrictions: { - users: [], - teams: [] - } - } - }) - console.log("Result:", result) - generate-third-party-notices: runs-on: ubuntu-latest steps: # Checkout fetch-depth: 2 because there's a check to see if package.json # was updated, and need at least 2 commits for the check to function properly - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: fetch-depth: 2 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Install OSS CLI working-directory: ./utils diff --git a/.github/workflows/repolinter.yml b/.github/workflows/repolinter.yml index 36e3331909..fe5b5e0039 100644 --- a/.github/workflows/repolinter.yml +++ b/.github/workflows/repolinter.yml @@ -15,17 +15,17 @@ jobs: steps: - name: Test Default Branch id: default-branch - uses: actions/github-script@v6 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 with: script: | const data = await github.rest.repos.get(context.repo) return data.data && data.data.default_branch === context.ref.split('/').slice(-1)[0] - name: Checkout Self if: ${{ steps.default-branch.outputs.result == 'true' }} - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Run Repolinter if: ${{ steps.default-branch.outputs.result == 'true' }} - uses: newrelic/repolinter-action@v1 + uses: newrelic/repolinter-action@3f4448f855c351e9695b24524a4111c7847b84cb with: config_url: https://raw.githubusercontent.com/newrelic/.github/main/repolinter-rulesets/community-project.yml output_type: issue diff --git a/.github/workflows/reusable.quickstart_submission.yml b/.github/workflows/reusable.quickstart_submission.yml index 8fa871bdb8..6aaaff6cf0 100644 --- a/.github/workflows/reusable.quickstart_submission.yml +++ b/.github/workflows/reusable.quickstart_submission.yml @@ -31,14 +31,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # Ensure we have the most recent commit to `main` with: ref: "main" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Update install plans env: @@ -55,14 +55,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # Ensure we have the most recent commit to `main` with: ref: "main" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Update data sources env: @@ -80,14 +80,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # Ensure we have the most recent commit to `main` with: ref: "main" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Update quickstarts env: @@ -105,14 +105,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # Ensure we have the most recent commit to `main` with: ref: "main" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Update dashboards with required datasources from quickstarts env: @@ -130,14 +130,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # Ensure we have the most recent commit to `main` with: ref: "main" fetch-depth: 0 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Update dashboards with required datasources from quickstarts env: diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 4b6433cd4e..b0c4a83e66 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -14,10 +14,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Run tests run: cd utils && yarn test diff --git a/.github/workflows/stale-message.yml b/.github/workflows/stale-message.yml index 6f818a72d8..0171a761e8 100644 --- a/.github/workflows/stale-message.yml +++ b/.github/workflows/stale-message.yml @@ -11,7 +11,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b with: stale-issue-message: "Old issues will be closed after 105 days of inactivity. This issue has been quiet for 90 days and is being marked as stale. Reply here to keep this issue open." close-issue-message: "This issue is being closed due to inactivity. Is this a mistake? Please re-open this issue or create a new one." diff --git a/.github/workflows/submit-gate.yml b/.github/workflows/submit-gate.yml index d1b5045c54..f5d7757511 100644 --- a/.github/workflows/submit-gate.yml +++ b/.github/workflows/submit-gate.yml @@ -4,7 +4,7 @@ # Having it setup this way allows us to have manual approval for this workflow run, and then the subsequent triggered runs can access secrets in the repository for validation (even for forked PRs). name: Submit Gate -on: +on: pull_request: branches: - release @@ -21,6 +21,6 @@ jobs: run: echo "${{ github.event.pull_request.number }}" > pr_number_submit.txt - name: upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 with: path: pr_number_submit.txt diff --git a/.github/workflows/validate_data_sources.yml b/.github/workflows/validate_data_sources.yml index ee712f9b63..9f39d62947 100644 --- a/.github/workflows/validate_data_sources.yml +++ b/.github/workflows/validate_data_sources.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -24,12 +24,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate new files id: validation @@ -50,7 +50,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Data source schema compliance" - state: ${{ job.status }} \ No newline at end of file + state: ${{ job.status }} diff --git a/.github/workflows/validate_install_plans.yml b/.github/workflows/validate_install_plans.yml index 48b09da31c..3c8dc5e091 100644 --- a/.github/workflows/validate_install_plans.yml +++ b/.github/workflows/validate_install_plans.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -24,12 +24,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate new files id: validation @@ -49,7 +49,7 @@ jobs: cd utils && yarn create-validate-install-plans $URL $DRY_RUN - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Install plan schema compliance" - state: ${{ job.status }} \ No newline at end of file + state: ${{ job.status }} diff --git a/.github/workflows/validate_packs.yml b/.github/workflows/validate_packs.yml index 64e5e50a80..b80f9f71ef 100644 --- a/.github/workflows/validate_packs.yml +++ b/.github/workflows/validate_packs.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -27,12 +27,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Check for unique names and ids id: validation @@ -40,7 +40,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Quickstart id are unique" state: ${{ job.status }} @@ -50,7 +50,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -62,21 +62,20 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate Images id: validation run: cd utils && yarn validate-images - - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Image count and extension compliance" state: ${{ job.status }} @@ -86,7 +85,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -98,12 +97,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate Icons id: validation @@ -111,7 +110,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Ensure icons exist" state: ${{ job.status }} @@ -121,7 +120,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -133,12 +132,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate pr quickstart files id: validation @@ -159,7 +158,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Validate Quickstart Schema" state: ${{ job.status }} @@ -169,7 +168,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -181,12 +180,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate new files id: validation @@ -199,7 +198,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Install plan ids exist" state: ${{ job.status }} @@ -209,7 +208,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -221,12 +220,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Validate new files id: validation @@ -241,7 +240,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Data source ids exist" state: ${{ job.status }} @@ -251,7 +250,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -263,12 +262,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Check for unique dashboard names id: validation @@ -276,7 +275,7 @@ jobs: - name: Add commit status if: always() - uses: './.github/actions/add-commit-status' + uses: "./.github/actions/add-commit-status" with: statusContext: "Validation / Quickstart dashboard name is unique" state: ${{ job.status }} @@ -285,7 +284,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@268677152d06ba59fcec7a7f0b5d961b6ccd7e1e with: workflow: validation_gate.yml run_id: ${{ github.event.workflow_run.id }} @@ -297,12 +296,12 @@ jobs: echo "pr-number=$PR_NUMBER" >> $GITHUB_ENV - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 with: ref: "refs/pull/${{ env.pr-number }}/merge" - name: Setup workspace - uses: './.github/actions/bootstrap' + uses: "./.github/actions/bootstrap" - name: Run dashboard helper id: helper diff --git a/.github/workflows/validation_gate.yml b/.github/workflows/validation_gate.yml index 503bdd3a5c..a06b325d9a 100644 --- a/.github/workflows/validation_gate.yml +++ b/.github/workflows/validation_gate.yml @@ -4,7 +4,7 @@ # Having it setup this way allows us to have manual approval for this workflow run, and then the subsequent triggered runs can access secrets in the repository for validation (even for forked PRs). name: Validation Gate -on: +on: pull_request: jobs: @@ -18,6 +18,6 @@ jobs: run: echo "${{ github.event.pull_request.number }}" > pr_number.txt - name: upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 with: path: pr_number.txt diff --git a/.github/workflows/yaml-lint.yml b/.github/workflows/yaml-lint.yml index ea05e10483..9f49d59877 100644 --- a/.github/workflows/yaml-lint.yml +++ b/.github/workflows/yaml-lint.yml @@ -3,8 +3,8 @@ name: Lint Yaml on: pull_request: paths: - - '**.yml' - - '**.yaml' + - "**.yml" + - "**.yaml" jobs: lint-yaml-files: @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 - name: Run yamllint run: | diff --git a/alert-policies/cacti/apacheRequests.yml b/alert-policies/cacti/apacheRequests.yml new file mode 100644 index 0000000000..c27598b598 --- /dev/null +++ b/alert-policies/cacti/apacheRequests.yml @@ -0,0 +1,26 @@ +name: Apache Requests + +description: |+ + This alert is triggered when the apache requests exceeds 200 for 5 minutes. +type: STATIC +nrql: + query: "SELECT max(value) FROM ApacheTotalHitsSample" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 200 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/cacti/pingLatency.yml b/alert-policies/cacti/pingLatency.yml new file mode 100644 index 0000000000..50ae2123db --- /dev/null +++ b/alert-policies/cacti/pingLatency.yml @@ -0,0 +1,35 @@ +name: Ping Latency + +description: |+ + This alert is triggered when the ping latency exceeds 100ms for 5 minutes. +type: STATIC +nrql: + query: "SELECT latest(value)*1000 FROM PingLatencySample" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 200 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 100 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 \ No newline at end of file diff --git a/alert-policies/jmeter/JMeter90thPercentileLatency.yml b/alert-policies/jmeter/JMeter90thPercentileLatency.yml deleted file mode 100644 index 6423b730ec..0000000000 --- a/alert-policies/jmeter/JMeter90thPercentileLatency.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Name of the alert -name: JMeter 90th Percentile Latency - -# Description and details -description: |+ - This alert monitors 90th percentile latency for all tests currently executing and is triggered when the latency exceeds 500ms indicating a problem with the service being tested. - The critical alert threshold is set to 500ms. - -# Type of alert -type: STATIC - -# NRQL query -nrql: - query: "SELECT percentile(jmeter, 90) AS '90th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel" - -# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) -valueFunction: SINGLE_VALUE - -# List of Critical and Warning thresholds for the condition -terms: - - priority: CRITICAL - # Operator used to compare against the threshold. - operator: ABOVE - # Value that triggers a violation; float value - threshold: 500 - # Time in seconds; 120 - 3600 - thresholdDuration: 60 - # How many data points must be in violation for the duration - thresholdOccurrences: ALL - -# Duration after which a violation automatically closes -# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) -violationTimeLimitSeconds: 259200 diff --git a/alert-policies/jmeter/JmeterErrorRate.yml b/alert-policies/jmeter/JmeterErrorRate.yml deleted file mode 100644 index 1c520f76ac..0000000000 --- a/alert-policies/jmeter/JmeterErrorRate.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Name of the alert -name: JMeter Error Rate - -# Description and details -description: |+ - This alert monitors the error rate for all tests currently executing and is triggered when the error percent exceeds 25% indicating that JMeter test(s) are failing. - The alert threshold is set to 15% for warning and 25% for critical. - -# Type of alert -type: STATIC - -# NRQL query -nrql: - query: "SELECT percentage(count(jmeter), WHERE ResponseCode != '200') FROM Metric FACET SampleLabel" - -# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) -valueFunction: SINGLE_VALUE - -# List of Critical and Warning thresholds for the condition -terms: - - priority: CRITICAL - # Operator used to compare against the threshold. - operator: ABOVE - # Value that triggers a violation; float value - threshold: 25 - # Time in seconds; 120 - 3600 - thresholdDuration: 60 - # How many data points must be in violation for the duration - thresholdOccurrences: AT_LEAST_ONCE - - # Adding a Warning threshold is optional - - priority: WARNING - operator: ABOVE - threshold: 15 - thresholdDuration: 60 - thresholdOccurrences: AT_LEAST_ONCE - -# Duration after which a violation automatically closes -# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) -violationTimeLimitSeconds: 259200 diff --git a/alert-policies/nvidia-jetson/EMCUsage.yml b/alert-policies/nvidia-jetson/EMCUsage.yml new file mode 100644 index 0000000000..ff0b9f67c4 --- /dev/null +++ b/alert-policies/nvidia-jetson/EMCUsage.yml @@ -0,0 +1,36 @@ +name: Excessive EMC usage + +description: |+ + This alert is triggered when the EMC usage exceeds 85% for 5 minutes. + +type: STATIC +nrql: + query: "SELECT latest(emc_freq_pct) as 'EMC Used (%)' from jetsonTegrastats" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/nvidia-jetson/GPUTemperature.yml b/alert-policies/nvidia-jetson/GPUTemperature.yml new file mode 100644 index 0000000000..5df25528a9 --- /dev/null +++ b/alert-policies/nvidia-jetson/GPUTemperature.yml @@ -0,0 +1,36 @@ +name: High GPU temperature + +description: |+ + This alert is triggered when the GPU temperature exceeds 85°C for 5 minutes. + +type: STATIC +nrql: + query: "SELECT latest(gpu_temp) as 'GPU temperature (C)' from jetsonTegrastats" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 85 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/alert-policies/nvidia-jetson/ThermalTemperature.yml b/alert-policies/nvidia-jetson/ThermalTemperature.yml new file mode 100644 index 0000000000..5524d545ae --- /dev/null +++ b/alert-policies/nvidia-jetson/ThermalTemperature.yml @@ -0,0 +1,36 @@ +name: High thermal temperature + +description: |+ + This alert is triggered when the thermal temperature exceeds 80°C for 5 minutes. + +type: STATIC +nrql: + query: "SELECT latest(thermal_temp) as 'Thermal temperature (C)' from jetsonTegrastats" + +# Function used to aggregate the NRQL query value(s) for comparison to the terms.threshold (Default: SINGLE_VALUE) +valueFunction: SINGLE_VALUE + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 80 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: ABOVE + # Value that triggers a violation + threshold: 70 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + +# Duration after which a violation automatically closes +# Time in seconds; 300 - 2592000 (Default: 86400 [1 day]) +violationTimeLimitSeconds: 86400 diff --git a/dashboards/cacti/cacti.json b/dashboards/cacti/cacti.json new file mode 100644 index 0000000000..a7fa8983ef --- /dev/null +++ b/dashboards/cacti/cacti.json @@ -0,0 +1,483 @@ +{ + "name": "Cacti", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Cacti icon](https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ0in11pInZJQO9avK5OV15Wyt3moWLYIsQdmBM-zJjBHS8iDLx)" + } + }, + { + "title": "Machine load by name", + "layout": { + "column": 4, + "row": 1, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM machineLoadSample FACET name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Last data source", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT median(last_ds) FROM machineLoadSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Machine load", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM machineLoadSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/).\n\nInstrument Cacti with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/cacti-integration/).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Cacti) here and let us know how we can improve it for you." + } + }, + { + "title": "Latest user's", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM machineUserSample" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Apache CPU load", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(value) FROM ApacheCpuLoadSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Login user", + "layout": { + "column": 9, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM UserLoginsSample FACET name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total apache hits", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT max(value) FROM ApacheTotalHitsSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Ping latency", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM PingLatencySample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "SECONDS" + } + } + }, + { + "title": "Processes", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM procSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "User types", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM UserTypesSample FACET name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "User type value", + "layout": { + "column": 5, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM UserTypesSample FACET value " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Buffers", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(value) FROM memBuffersSample TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "units": { + "unit": "BYTES" + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + } + ] + }, + { + "name": "Log", + "description": null, + "widgets": [ + { + "title": "Log type", + "layout": { + "column": 1, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(*) FROM Log FACET logtype" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 4, + "row": 1, + "width": 9, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT * FROM Log " + } + ] + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/cacti/cacti01.png b/dashboards/cacti/cacti01.png new file mode 100644 index 0000000000..3c21a07151 Binary files /dev/null and b/dashboards/cacti/cacti01.png differ diff --git a/dashboards/cacti/cacti02.png b/dashboards/cacti/cacti02.png new file mode 100644 index 0000000000..9ca17e7254 Binary files /dev/null and b/dashboards/cacti/cacti02.png differ diff --git a/dashboards/cacti/cacti03.png b/dashboards/cacti/cacti03.png new file mode 100644 index 0000000000..330b07cc8a Binary files /dev/null and b/dashboards/cacti/cacti03.png differ diff --git a/dashboards/coredns/coredns-dashboard-1.jpg b/dashboards/coredns/coredns-dashboard-1.jpg deleted file mode 100644 index a690147653..0000000000 Binary files a/dashboards/coredns/coredns-dashboard-1.jpg and /dev/null differ diff --git a/dashboards/coredns/coredns-dashboard-2.jpg b/dashboards/coredns/coredns-dashboard-2.jpg deleted file mode 100644 index 2524d325dc..0000000000 Binary files a/dashboards/coredns/coredns-dashboard-2.jpg and /dev/null differ diff --git a/dashboards/coredns/coredns-dashboard-3.jpg b/dashboards/coredns/coredns-dashboard-3.jpg deleted file mode 100644 index 987f465147..0000000000 Binary files a/dashboards/coredns/coredns-dashboard-3.jpg and /dev/null differ diff --git a/dashboards/coredns/coredns-dashboard-4.jpg b/dashboards/coredns/coredns-dashboard-4.jpg deleted file mode 100644 index a063759b04..0000000000 Binary files a/dashboards/coredns/coredns-dashboard-4.jpg and /dev/null differ diff --git a/dashboards/coredns/coredns01.png b/dashboards/coredns/coredns01.png new file mode 100644 index 0000000000..0f9aab8574 Binary files /dev/null and b/dashboards/coredns/coredns01.png differ diff --git a/dashboards/coredns/coredns02.png b/dashboards/coredns/coredns02.png new file mode 100644 index 0000000000..5a51ceb6ad Binary files /dev/null and b/dashboards/coredns/coredns02.png differ diff --git a/dashboards/coredns/coredns03.png b/dashboards/coredns/coredns03.png new file mode 100644 index 0000000000..99b31e69e0 Binary files /dev/null and b/dashboards/coredns/coredns03.png differ diff --git a/dashboards/coredns/coredns04.png b/dashboards/coredns/coredns04.png new file mode 100644 index 0000000000..57b398dd92 Binary files /dev/null and b/dashboards/coredns/coredns04.png differ diff --git a/dashboards/jmeter/jmeter.json b/dashboards/jmeter/jmeter.json deleted file mode 100644 index 8b6120b471..0000000000 --- a/dashboards/jmeter/jmeter.json +++ /dev/null @@ -1,288 +0,0 @@ -{ - "name": "JMeter Results Summary", - "description": null, - "pages": [ - { - "name": "JMeter Test Results", - "description": null, - "widgets": [ - { - "title": "", - "layout": { - "column": 1, - "row": 1, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "![JMeter logo](https://jmeter.apache.org/images/logo.svg)" - } - }, - { - "title": "Thread Group Details", - "layout": { - "column": 3, - "row": 1, - "width": 5, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT TestName,ThreadName, AllThreads, GrpThreads FROM Metric WHERE metricName = 'jmeter'" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "HTTP Responses", - "layout": { - "column": 8, - "row": 1, - "width": 5, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT count(jmeter) as 'Count' FROM Metric WHERE metricName = 'jmeter' FACET SampleLabel as 'Label', ResponseCode AS 'HTTP Response'" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Latency - Average", - "layout": { - "column": 1, - "row": 4, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT average(jmeter) AS 'Average' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Latency - 90th Percentile", - "layout": { - "column": 3, - "row": 4, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT percentile(jmeter, 90) AS '90th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Latency - 95th Percentile", - "layout": { - "column": 5, - "row": 4, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT percentile(jmeter, 95) AS '95th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Latency - 99th Percentile", - "layout": { - "column": 7, - "row": 4, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT percentile(jmeter, 99) AS '99th Percentile' FROM Metric where metricName = 'jmeter' AND ResponseCode = '200' FACET SampleLabel TIMESERIES AUTO" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Error Rate", - "layout": { - "column": 9, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT percentage(count(jmeter), WHERE ResponseCode != '200') FROM Metric FACET SampleLabel TIMESERIES AUTO" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Summary Report", - "layout": { - "column": 1, - "row": 7, - "width": 12, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT count(jmeter) AS '# Samples', average(jmeter) AS 'Average', min(jmeter) AS 'Min', max(jmeter) AS 'Max', median(jmeter) AS 'Median', stddev(jmeter) AS 'Std. Dev.', percentile(jmeter, 90) AS 'Line', percentile(jmeter, 95) AS 'Line', percentile(jmeter, 99) AS 'Line' FROM Metric WHERE metricName = 'jmeter' FACET SampleLabel AS 'Label'" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "View Results in Table", - "layout": { - "column": 1, - "row": 9, - "width": 12, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.table" - }, - "rawConfiguration": { - "dataFormatters": [], - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [ - { - "accountIds": [], - "query": "SELECT SampleLabel, URL, (numeric(SampleEndTime) - numeric(SampleStartTime)) AS 'Sample Time (ms)', Bytes, SentBytes, Latency, ConnectTime FROM Metric WHERE metricName = 'jmeter' LIMIT MAX" - } - ], - "platformOptions": { - "ignoreTimeRange": false - } - } - } - ] - } - ], - "variables": [] -} \ No newline at end of file diff --git a/dashboards/jmeter/jmeter.png b/dashboards/jmeter/jmeter.png deleted file mode 100644 index 6681b4ebdb..0000000000 Binary files a/dashboards/jmeter/jmeter.png and /dev/null differ diff --git a/dashboards/nvidia-jetson/nvidia-jetson.json b/dashboards/nvidia-jetson/nvidia-jetson.json new file mode 100644 index 0000000000..055e393a31 --- /dev/null +++ b/dashboards/nvidia-jetson/nvidia-jetson.json @@ -0,0 +1,1272 @@ +{ + "name": "NVIDIA Jetson", + "description": null, + "pages": [ + { + "name": "Overview", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![NVIDIA Jetson logo](https://www.nvidia.com/content/dam/en-zz/Solutions/about-nvidia/logo-and-brand/01-nvidia-logo-horiz-500x200-2c50-p@2x.png)\n" + } + }, + { + "title": "RAM Usage (MB)", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ram_used) as 'RAM Used', latest(ram_total) as 'Total RAM ' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "External memory controller (EMC) ", + "layout": { + "column": 5, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(emc_freq_pct) as 'EMC Used (%)', latest(emc_freq_val) as 'EMC frequency (MHz) ' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SWAP Usage (MB)", + "layout": { + "column": 8, + "row": 1, + "width": 3, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(swap_used) as 'SWAP Used', latest(swap_cached) as 'SWAP Cached', latest(swap_total) as 'Total SWAP' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "GR3D (GPU engine)", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(gr3d_freq_pct) as 'GR3D Used (%)',latest(gr3d_freq_val) as 'GR3D frequency (MHz)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument your application with New Relic - [Add Data](https://one.newrelic.com/).\n\nInstrument NVIDIA Jetson with New Relic using the [documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-jetson-integration).\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Jetson) here and let us know how we can improve it for you." + } + }, + { + "title": "RAM Usage (MB)", + "layout": { + "column": 3, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ram_used) as 'RAM Used', latest(ram_total) as 'Total RAM ' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "SWAP Usage (MB)", + "layout": { + "column": 8, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(swap_used) as 'SWAP Used', latest(swap_cached) as 'SWAP Cached', latest(swap_total) as 'Total SWAP' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU count", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(coreCount) as 'CPU count' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "IRAM overview", + "layout": { + "column": 3, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(iram_used) as 'IRAM used (kB)',latest(iram_total) as 'IRAM total (kB)',latest(lfb_block) as 'IRAM lfb size (kB)' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Input power management", + "layout": { + "column": 7, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(pom_in_current) as 'Current power consumption (mW)', latest(pom_in_peak) as 'Peak power consumption (mW)' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU power management", + "layout": { + "column": 9, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(pom_gpu_used) as 'Current GPU power consumption (mW)', latest(pom_gpu_total) as 'Peak GPU power consumption (mW)' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU power management", + "layout": { + "column": 11, + "row": 7, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(pom_cpu_used) as 'Current CPU power consumption (mW)', latest(pom_cpu_total) as 'Peak CPU power consumption (mW)' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Audio processing engine frequency", + "layout": { + "column": 1, + "row": 10, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ape) as 'APE frequency (MHz)' from jetsonTegrastats" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Largest free block overview", + "layout": { + "column": 3, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT concat(lfb_num,'x',lfb_size) as 'Largest Free Block (lfb)' ,lfb_num as 'Number of large free blocks', lfb_size as 'Size of each large free block (MB)' from jetsonTegrastats where lfb_num is not null" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "IRAM overview", + "layout": { + "column": 8, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(iram_used) as 'IRAM used (kB)',latest(iram_total) as 'Total IRAM (kB)',latest(lfb_block) as 'IRAM lfb size (kB)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Temperature ", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Graphics Processing Unit (GPU) Temperature in Celsius" + } + }, + { + "title": "GPU temperature (C)", + "layout": { + "column": 5, + "row": 1, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gpu_temp) as ' Average GPU temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "GPU temperature (C)", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(gpu_temp) as 'GPU temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average GPU temperature (C)", + "layout": { + "column": 3, + "row": 2, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(gpu_temp) as 'GPU temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Central Processing Unit (CPU) Temperature in Celsius" + } + }, + { + "title": "CPU temperature (C)", + "layout": { + "column": 5, + "row": 4, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(cpu_temp) as 'Average CPU temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU temperature (C)", + "layout": { + "column": 1, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(cpu_temp) as 'CPU temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average CPU temperature (C)", + "layout": { + "column": 3, + "row": 5, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(cpu_temp) as 'CPU temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 7, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Temperature of NVIDIA Jetson in degrees Celsius." + } + }, + { + "title": "Thermal temperature (C)", + "layout": { + "column": 5, + "row": 7, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(thermal_temp) as 'Average thermal temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Thermal temperature (C)", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(thermal_temp) as 'Thermal temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average Thermal temperature (C)", + "layout": { + "column": 3, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(thermal_temp) as 'Thermal temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power Management Integrated Circuit (PMIC) Temperature in Celsius" + } + }, + { + "title": "PMIC temperature (C)", + "layout": { + "column": 5, + "row": 10, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(pmic_temp) as 'Average PMIC temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "PMIC temperature (C)", + "layout": { + "column": 1, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(pmic_temp) as 'PMIC temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average PMIC temperature (C)", + "layout": { + "column": 3, + "row": 11, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(pmic_temp) as 'PMIC temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 13, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# AO (Always-On) Temperature in Celsius" + } + }, + { + "title": "AO temperature (C)", + "layout": { + "column": 5, + "row": 13, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(ao_temp) as 'Average AO temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "AO temperature (C)", + "layout": { + "column": 1, + "row": 14, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(ao_temp) as 'AO temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Average AO temperature (C)", + "layout": { + "column": 3, + "row": 14, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(ao_temp) as 'AO temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 16, + "width": 4, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Phase-Locked Loop (PLL) Temperature in Celsius" + } + }, + { + "title": "PLL temperature (C)", + "layout": { + "column": 5, + "row": 16, + "width": 8, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(pll_temp) as 'Average Phase locked loop (PLL) temperature (C)' from jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "PLL Temperature (C)", + "layout": { + "column": 1, + "row": 17, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(pll_temp) as 'PLL temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "PLL Temperature (C)", + "layout": { + "column": 3, + "row": 17, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(pll_temp) as 'PLL temperature (C)' from jetsonTegrastats " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "CPU ", + "description": null, + "widgets": [ + { + "title": "CPU-1 Usage", + "layout": { + "column": 1, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(cpu1_usage) as 'CPU-1 Used (%)', latest(cpu1_freq) as 'CPU-1 Frequency (MHz)' FROM jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-1 Usage", + "layout": { + "column": 6, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cpu1_usage as 'CPU-1 Used (%)', cpu1_freq as 'CPU-1 Frequency (MHz)' FROM jetsonTegrastats where cpu1_usage IS NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-2 Usage", + "layout": { + "column": 1, + "row": 4, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(cpu2_usage) as 'CPU-2 Used (%)', latest(cpu2_freq) as 'CPU-2 Frequency (MHz)' FROM jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-2 Usage", + "layout": { + "column": 6, + "row": 4, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cpu2_usage as 'CPU-2 Used (%)', cpu2_freq as 'CPU-2 Frequency (MHz)' FROM jetsonTegrastats where cpu2_usage IS NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-3 Usage", + "layout": { + "column": 1, + "row": 7, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(cpu3_usage) as 'CPU-3 Used (%)', latest(cpu3_freq) as 'CPU-3 Frequency (MHz)' FROM jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-3 Usage", + "layout": { + "column": 6, + "row": 7, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cpu3_usage as 'CPU-3 Used (%)', cpu3_freq as 'CPU-3 Frequency (MHz)' FROM jetsonTegrastats where cpu3_usage IS NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-4 Usage", + "layout": { + "column": 1, + "row": 10, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(cpu4_usage) as 'CPU-4 Used (%)', latest(cpu4_freq) as 'CPU-4 Frequency (MHz)' FROM jetsonTegrastats TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CPU-4 Usage", + "layout": { + "column": 6, + "row": 10, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cpu4_usage as 'CPU-4 Used (%)', cpu4_freq as 'CPU-4 Frequency (MHz)' FROM jetsonTegrastats where cpu4_usage IS NOT NULL" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + } + ], + "variables": [] +} \ No newline at end of file diff --git a/dashboards/nvidia-jetson/nvidia-jetson01.png b/dashboards/nvidia-jetson/nvidia-jetson01.png new file mode 100644 index 0000000000..1e6a592392 Binary files /dev/null and b/dashboards/nvidia-jetson/nvidia-jetson01.png differ diff --git a/dashboards/nvidia-jetson/nvidia-jetson02.png b/dashboards/nvidia-jetson/nvidia-jetson02.png new file mode 100644 index 0000000000..6b9291a5aa Binary files /dev/null and b/dashboards/nvidia-jetson/nvidia-jetson02.png differ diff --git a/dashboards/nvidia-jetson/nvidia-jetson03.png b/dashboards/nvidia-jetson/nvidia-jetson03.png new file mode 100644 index 0000000000..8e4ac7ac3b Binary files /dev/null and b/dashboards/nvidia-jetson/nvidia-jetson03.png differ diff --git a/dashboards/nvidia-jetson/nvidia-jetson04.png b/dashboards/nvidia-jetson/nvidia-jetson04.png new file mode 100644 index 0000000000..e592f46782 Binary files /dev/null and b/dashboards/nvidia-jetson/nvidia-jetson04.png differ diff --git a/dashboards/nvidia-jetson/nvidia-jetson05.png b/dashboards/nvidia-jetson/nvidia-jetson05.png new file mode 100644 index 0000000000..5f2e19b64d Binary files /dev/null and b/dashboards/nvidia-jetson/nvidia-jetson05.png differ diff --git a/dashboards/temporal/temporal-07.png b/dashboards/temporal/temporal-07.png new file mode 100644 index 0000000000..254212d580 Binary files /dev/null and b/dashboards/temporal/temporal-07.png differ diff --git a/dashboards/temporal/temporal.json b/dashboards/temporal/temporal.json index 2270dbe539..629e11e29e 100644 --- a/dashboards/temporal/temporal.json +++ b/dashboards/temporal/temporal.json @@ -1,1140 +1,1248 @@ { - "name": "Temporal", - "description": null, - "pages": [{ - "name": "Temporal", - "description": null, - "widgets": [{ - "title": "", - "layout": { - "column": 1, - "row": 1, - "width": 2, - "height": 1 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "![Temporal icon](https://docs.temporal.io/img/temporal-logo-dark.svg)\n" - } - }, - { - "title": "Persistence Latency", - "layout": { - "column": 3, - "row": 1, - "width": 6, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(persistence_latency_sum) FROM Metric FACET service_name" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Service Errors", - "layout": { - "column": 9, - "row": 1, - "width": 4, - "height": 4 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(service_error_with_type) FROM Metric FACET error_type" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "", - "layout": { - "column": 1, - "row": 2, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.markdown" - }, - "rawConfiguration": { - "text": "**About**\n\nInstrument Temporal with New Relic - [Add Data](https://one.newrelic.com/)\n\nFollow New Relic [Temporal documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/temporal-monitoring-integration/) documentation to instrument Temporal.\n\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Temporal&entry.358368110=https://onenr.io/0dQeLbY0Yje) here and let us know how we can improve it for you." - } - }, - { - "title": "Temporal Request Failures by Operation", - "layout": { - "column": 1, - "row": 5, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(temporal_request_failure) FROM Metric FACET operation TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Request Latency", - "layout": { - "column": 5, - "row": 5, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.heatmap" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT histogram(temporal_request_latency_bucket) FROM Metric FACET operation" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Cache Latency", - "layout": { - "column": 9, - "row": 5, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(cache_latency_bucket), sum(cache_latency_sum) FROM Metric TIMESERIES" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - } - ] + "name": "Temporal", + "description": null, + "pages": [ + { + "name": "Temporal", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Temporal icon](https://docs.temporal.io/img/temporal-logo-dark.svg)\n" + } }, { - "name": "Server Metrics", - "description": null, - "widgets": [{ - "title": "Shard Statistics ", - "layout": { - "column": 1, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.stacked-bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(shard_lock_latency_sum), sum(shard_lock_latency_bucket), sum(shard_controller_lock_latency_sum), sum(shard_controller_lock_latency_sum) FROM Metric TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Client Statistics ", - "layout": { - "column": 5, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(client_requests),sum(client_errors), sum(client_latency_sum) FROM Metric TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Visibility Persistence", - "layout": { - "column": 9, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(visibility_persistence_latency_bucket), sum(visibility_persistence_latency_sum), sum(visibility_persistence_requests) FROM Metric TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Allocated Memory (MB)", - "layout": { - "column": 1, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT latest(memory_allocated)/1e+6 FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Heap Memory (MB)", - "layout": { - "column": 5, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT latest(memory_heap)/1e+6 FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Cache Requests/Miss", - "layout": { - "column": 9, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(cache_requests), sum(cache_miss)FROM Metric TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Service Requests", - "layout": { - "column": 1, - "row": 7, - "width": 2, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(service_pending_requests) FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Requests by Operation", - "layout": { - "column": 3, - "row": 7, - "width": 6, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(temporal_request) FROM Metric FACET operation" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Visibility Persistence Latency", - "layout": { - "column": 9, - "row": 7, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.heatmap" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT histogram(visibility_persistence_latency_bucket) FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Service Pending Requests", - "layout": { - "column": 1, - "row": 9, - "width": 2, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(service_pending_requests) FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Available Worker Task Slots", - "layout": { - "column": 3, - "row": 10, - "width": 5, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT latest(temporal_worker_task_slots_available) FROM Metric FACET namespace" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Visibility Persistence Requests", - "layout": { - "column": 8, - "row": 10, - "width": 5, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(visibility_persistence_requests) FROM Metric FACET service_name " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Task Requests", - "layout": { - "column": 1, - "row": 12, - "width": 5, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(task_requests) FROM Metric FACET task_type" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Tasks Started Queues", - "layout": { - "column": 6, - "row": 12, - "width": 7, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(task_queue_started) FROM Metric FACET taskqueue" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Tasks Count by Category ", - "layout": { - "column": 1, - "row": 15, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(task_count_sum) FROM Metric FACET task_category TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Task Latency Queue by Type", - "layout": { - "column": 5, - "row": 15, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(task_latency_queue_sum) FROM Metric FACET task_type TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Task Latency by Type", - "layout": { - "column": 9, - "row": 15, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.stacked-bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(task_latency_sum) FROM Metric FACET task_type TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - } + "title": "Persistence Latency", + "layout": { + "column": 3, + "row": 1, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(persistence_latency_sum) FROM Metric FACET service_name" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Service Errors", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(service_error_with_type) FROM Metric FACET error_type" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 2, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "**About**\n\nInstrument Temporal with New Relic - [Add Data](https://one.newrelic.com/)\n\nFollow New Relic [Temporal documentation](https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/temporal-monitoring-integration/) documentation to instrument Temporal.\n\n\n[Please rate this dashboard](https://docs.google.com/forms/d/e/1FAIpQLSclR38J8WbbB2J1tHnllKUkzWZkJhf4SrJGyavpMd4t82NjnQ/viewform?usp=pp_url&entry.1615922415=Temporal&entry.358368110=https://onenr.io/0dQeLbY0Yje) here and let us know how we can improve it for you." + } + }, + { + "title": "Temporal Request Failures by Operation", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(temporal_request_failure) FROM Metric FACET operation TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Request Latency", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(temporal_request_latency_bucket) FROM Metric FACET operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cache Latency", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(cache_latency_bucket), sum(cache_latency_sum) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + } + ] + }, + { + "name": "Server Metrics", + "description": null, + "widgets": [ + { + "title": "Shard Statistics ", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(shard_lock_latency_sum), sum(shard_lock_latency_bucket), sum(shard_controller_lock_latency_sum), sum(shard_controller_lock_latency_sum) FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Client Statistics ", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(client_requests),sum(client_errors), sum(client_latency_sum) FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Visibility Persistence", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(visibility_persistence_latency_bucket), sum(visibility_persistence_latency_sum), sum(visibility_persistence_requests) FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Allocated Memory (MB)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(memory_allocated)/1e+6 FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heap Memory (MB)", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(memory_heap)/1e+6 FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Cache Requests/Miss", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(cache_requests), sum(cache_miss)FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Service Requests", + "layout": { + "column": 1, + "row": 7, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(service_pending_requests) FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Requests by Operation", + "layout": { + "column": 3, + "row": 7, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(temporal_request) FROM Metric FACET operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Visibility Persistence Latency", + "layout": { + "column": 9, + "row": 7, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(visibility_persistence_latency_bucket) FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Service Pending Requests", + "layout": { + "column": 1, + "row": 9, + "width": 2, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(service_pending_requests) FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Available Worker Task Slots", + "layout": { + "column": 3, + "row": 10, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(temporal_worker_task_slots_available) FROM Metric FACET namespace" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Visibility Persistence Requests", + "layout": { + "column": 8, + "row": 10, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(visibility_persistence_requests) FROM Metric FACET service_name " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Task Requests", + "layout": { + "column": 1, + "row": 12, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(task_requests) FROM Metric FACET task_type" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tasks Started Queues", + "layout": { + "column": 6, + "row": 12, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(task_queue_started) FROM Metric FACET taskqueue" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Tasks Count by Category ", + "layout": { + "column": 1, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(task_count_sum) FROM Metric FACET task_category TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Task Latency Queue by Type", + "layout": { + "column": 5, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(task_latency_queue_sum) FROM Metric FACET task_type TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Task Latency by Type", + "layout": { + "column": 9, + "row": 15, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(task_latency_sum) FROM Metric FACET task_type TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "SDK Metrics", + "description": null, + "widgets": [ + { + "title": "Total Temporal Requests", + "layout": { + "column": 1, + "row": 1, + "width": 7, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(temporal_request_total) AS 'Temporal request' FROM Metric FACET operation" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Long Request Latency (seconds)", + "layout": { + "column": 8, + "row": 1, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(temporal_long_request_latency_seconds_bucket) FROM Metric FACET worker_type" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Request Latency (seconds)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.heatmap" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT histogram(temporal_request_latency_seconds_bucket) FROM Metric FACET worker_type" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temporal Total Poller Starts", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(temporal_poller_start_total) FROM Metric FACET worker_type " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Temporal Workflow Active Thread", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT count(temporal_workflow_active_thread_count) AS 'thread count' FROM Metric TIMESERIES " + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Activity Execution Failed", + "layout": { + "column": 1, + "row": 7, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(temporal_activity_execution_failed_total) AS 'execution failed' FROM Metric" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } ] + } }, { - "name": "SDK Metrics", - "description": null, - "widgets": [{ - "title": "Total Temporal Requests", - "layout": { - "column": 1, - "row": 1, - "width": 7, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(temporal_request_total) AS 'Temporal request' FROM Metric FACET operation" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, + "title": "Temporal Activity Schedule to Start Latency", + "layout": { + "column": 4, + "row": 7, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(temporal_activity_schedule_to_start_latency_sum) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true, + "thresholds": [ { - "title": "Temporal Long Request Latency (seconds)", - "layout": { - "column": 8, - "row": 1, - "width": 5, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.heatmap" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT histogram(temporal_long_request_latency_seconds_bucket) FROM Metric FACET worker_type" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } + "from": 4, + "name": "critical alert", + "severity": "critical", + "to": 5 }, { - "title": "Temporal Request Latency (seconds)", - "layout": { - "column": 1, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.heatmap" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT histogram(temporal_request_latency_seconds_bucket) FROM Metric FACET worker_type" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Temporal Total Poller Starts", - "layout": { - "column": 5, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(temporal_poller_start_total) FROM Metric FACET worker_type " - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Total Temporal Workflow Active Thread", - "layout": { - "column": 9, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT count(temporal_workflow_active_thread_count) AS 'thread count' FROM Metric TIMESERIES " - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Activity Execution Failed", - "layout": { - "column": 1, - "row": 7, - "width": 3, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.billboard" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT latest(temporal_activity_execution_failed_total) AS 'execution failed' FROM Metric" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": [{ - "alertSeverity": "CRITICAL", - "value": 1 - }] - } - }, - { - "title": "Temporal Activity Schedule to Start Latency", - "layout": { - "column": 4, - "row": 7, - "width": 4, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(temporal_activity_schedule_to_start_latency_sum) FROM Metric TIMESERIES" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true, - "thresholds": [{ - "from": 4, - "name": "critical alert", - "severity": "critical", - "to": 5 - }, - { - "from": 3, - "name": "warning alert", - "severity": "warning", - "to": 4 - } - ] - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Temporal Activity Execution Latency", - "layout": { - "column": 8, - "row": 7, - "width": 5, - "height": 2 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT sum(temporal_activity_execution_latency_seconds_sum) FROM Metric TIMESERIES" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": false, - "thresholds": [{ - "from": 4, - "name": "critical alert", - "severity": "critical", - "to": 5 - }, - { - "from": 3, - "name": "warning", - "severity": "warning", - "to": 4 - } - ] - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } + "from": 3, + "name": "warning alert", + "severity": "warning", + "to": 4 } - ] + ] + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } }, { - "name": "Infrastructure ", - "description": null, - "widgets": [{ - "title": "CPU Usage (%)", - "layout": { - "column": 1, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT average(cpuPercent) AS `CPU used %` FROM SystemSample TIMESERIES AUTO" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Memory Usage (%)", - "layout": { - "column": 5, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": false - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT average(memoryUsedPercent) AS `Memory used %` FROM SystemSample TIMESERIES AUTO" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "max": 100, - "min": 0, - "zero": true - }, - "yAxisRight": { - "zero": true - } - } - }, - { - "title": "Storage Usage (%)", - "layout": { - "column": 9, - "row": 1, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.stacked-bar" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT average(diskUsedPercent) AS `Storage used %` FROM StorageSample TIMESERIES AUTO" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, - { - "title": "Disk Usage (%)", - "layout": { - "column": 1, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.pie" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": true - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT latest(diskUsedPercent) AS `Used %` FROM StorageSample FACET device LIMIT MAX" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } - }, + "title": "Temporal Activity Execution Latency", + "layout": { + "column": 8, + "row": 7, + "width": 5, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(temporal_activity_execution_latency_seconds_sum) FROM Metric TIMESERIES" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": false, + "thresholds": [ { - "title": "Network Traffic", - "layout": { - "column": 5, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.area" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT average(transmitBytesPerSecond) AS `Transmit bytes per second`, average(receiveBytesPerSecond) AS `Receive bytes per second` FROM NetworkSample TIMESERIES AUTO" - }], - "platformOptions": { - "ignoreTimeRange": false - } - } + "from": 4, + "name": "critical alert", + "severity": "critical", + "to": 5 }, { - "title": "Load Average", - "layout": { - "column": 9, - "row": 4, - "width": 4, - "height": 3 - }, - "linkedEntityGuids": null, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [{ - "accountIds": [], - "query": "SELECT average(loadAverageOneMinute) AS `1 minute`, average(loadAverageFiveMinute) AS `5 minutes`, average(loadAverageFifteenMinute) AS `15 minutes` FROM SystemSample TIMESERIES AUTO" - }], - "platformOptions": { - "ignoreTimeRange": false - }, - "thresholds": { - "isLabelVisible": true - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } + "from": 3, + "name": "warning", + "severity": "warning", + "to": 4 } + ] + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + } + ] + }, + { + "name": "Logs", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 12, + "height": 5 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "logger.log-table-widget" + }, + "rawConfiguration": { + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Log SELECT message WHERE logtype = 'temporal_logs' " + } ] + } + } + ] + }, + { + "name": "Infrastructure ", + "description": null, + "widgets": [ + { + "title": "CPU Usage (%)", + "layout": { + "column": 1, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(cpuPercent) AS `CPU used %` FROM SystemSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Memory Usage (%)", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(memoryUsedPercent) AS `Memory used %` FROM SystemSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "max": 100, + "min": 0, + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Storage Usage (%)", + "layout": { + "column": 9, + "row": 1, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.stacked-bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(diskUsedPercent) AS `Storage used %` FROM StorageSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Usage (%)", + "layout": { + "column": 1, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(diskUsedPercent) AS `Used %` FROM StorageSample FACET device LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Traffic", + "layout": { + "column": 5, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(transmitBytesPerSecond) AS `Transmit bytes per second`, average(receiveBytesPerSecond) AS `Receive bytes per second` FROM NetworkSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Load Average", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(loadAverageOneMinute) AS `1 minute`, average(loadAverageFiveMinute) AS `5 minutes`, average(loadAverageFifteenMinute) AS `15 minutes` FROM SystemSample TIMESERIES AUTO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": { + "isLabelVisible": true + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } } - ], - "variables": [] + ] + } + ], + "variables": [] } \ No newline at end of file diff --git a/data-sources/aws-cloudfront/config.yml b/data-sources/aws-cloudfront/config.yml index 53c0066da0..2db7eeef09 100644 --- a/data-sources/aws-cloudfront/config.yml +++ b/data-sources/aws-cloudfront/config.yml @@ -5,8 +5,12 @@ description: Monitor Amazon Cloudfront Web Logs with the New Relic log forwardin icon: logo.svg install: primary: - link: - url: https://docs.newrelic.com/docs/logs/forward-logs/cloudfront-web-logs/ + nerdlet: + nerdletId: marketplace.install-data-source + nerdletState: + dataSourceId: aws-cloudfront-logs + frameworkConfigId: aws-cloudfront-logs + requiresAccount: false keywords: - aws - cloudfront diff --git a/data-sources/cacti/config.yml b/data-sources/cacti/config.yml new file mode 100644 index 0000000000..8e0f4adae5 --- /dev/null +++ b/data-sources/cacti/config.yml @@ -0,0 +1,12 @@ +id: cacti +displayName: Cacti +description: | + Monitor and analyze your Cacti with New Relic. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/cacti-integration/ +keywords: + - Cacti + - logs \ No newline at end of file diff --git a/data-sources/cacti/logo.png b/data-sources/cacti/logo.png new file mode 100644 index 0000000000..8edd4c6548 Binary files /dev/null and b/data-sources/cacti/logo.png differ diff --git a/data-sources/jmeter/config.yml b/data-sources/jmeter/config.yml deleted file mode 100644 index 0da165b1f3..0000000000 --- a/data-sources/jmeter/config.yml +++ /dev/null @@ -1,18 +0,0 @@ -id: jmeter -displayName: JMeter -description: | - The Apache JMeter plug-in enables you to send test results as metrics to New Relic. This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. -icon: logo.png -install: - primary: - link: - url: https://github.com/darrensmithwtc/jmeter-backend-newrelic -keywords: - - jmeter - - performance - - load - - stress - - functional - - testing -categoryTerms: - - open source monitoring diff --git a/data-sources/jmeter/logo.png b/data-sources/jmeter/logo.png deleted file mode 100644 index d30a4a9ee6..0000000000 Binary files a/data-sources/jmeter/logo.png and /dev/null differ diff --git a/data-sources/nvidia-jetson/config.yml b/data-sources/nvidia-jetson/config.yml new file mode 100644 index 0000000000..417c2ef16c --- /dev/null +++ b/data-sources/nvidia-jetson/config.yml @@ -0,0 +1,15 @@ +id: nvidia-jetson +displayName: NVIDIA Jetson +description: | + Boost the performance monitoring and instrumentation of your NVIDIA Jetson device by integrating with New Relic. +icon: logo.png +install: + primary: + link: + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-jetson-integration +keywords: + - jetson + - nvidia jetson + - tegrastats + - nvidia + \ No newline at end of file diff --git a/data-sources/nvidia-jetson/logo.png b/data-sources/nvidia-jetson/logo.png new file mode 100644 index 0000000000..00e777df8c Binary files /dev/null and b/data-sources/nvidia-jetson/logo.png differ diff --git a/quickstarts/cacti/config.yml b/quickstarts/cacti/config.yml new file mode 100644 index 0000000000..7b14d654e0 --- /dev/null +++ b/quickstarts/cacti/config.yml @@ -0,0 +1,38 @@ +id: 707be3ac-8fc0-4d9b-ab9b-301a447d187a + +slug: cacti +description: | + ## Why monitor Cacti? + Monitoring Cacti can help optimize network efficiency, plan for future growth, ensure stability, reduce downtimes, and improve overall network management. + + ## Comprehensive monitoring quickstart for Cacti + Monitoring Cacti will allow you to effectively track server health, network performance, and resource utilization, while utilizing New Relic's application performance monitoring features to gain deep insights into application behavior, transaction traces, and user experience metrics, enabling users to obtain a holistic view of both infrastructure and application performance. + + ## What’s included in this quickstart? + New Relic Cacti monitoring quickstart provides quality out-of-the-box reporting: + - Dashboards (login users, apache cpu load, total apache hits etc) + - Alerts for Cacti (apache cpu load and total apache hits) + +summary: | + Monitor and analyze your Cacti with New Relic. +icon: logo.png +level: New Relic +authors: + - New Relic + - Ramana Reddy +title: Cacti +documentation: + - name: Cacti integration documentation + description: | + Monitor and instrument your Cacti with New Relic to gain deep insights into your performance. + url: https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/cacti-integration/ +keywords: + - Cacti + - NR1_addData + - NR1_sys +dataSourceIds: + - cacti +dashboards: + - cacti +alertPolicies: + - cacti \ No newline at end of file diff --git a/quickstarts/cacti/logo.png b/quickstarts/cacti/logo.png new file mode 100644 index 0000000000..8edd4c6548 Binary files /dev/null and b/quickstarts/cacti/logo.png differ diff --git a/quickstarts/cplusplus/config.yml b/quickstarts/cplusplus/config.yml deleted file mode 100644 index c0b8e1bb5e..0000000000 --- a/quickstarts/cplusplus/config.yml +++ /dev/null @@ -1,34 +0,0 @@ -id: e9c70324-f5c2-48fc-943e-57b4600ebd3e -slug: cplusplus -description: | - ## What is C++? - - General-purpose programming language that extends C with modern - object-oriented, generic, and functional features. - - ## Get started! - - Leverage community expertise and instantly get value out of your telemetry data. This quickstart automatically instruments C++ with the New Relic C SDK, and allows you to further leverage New Relic's APM capabilities by setting up [custom dashboards](https://docs.newrelic.com/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/), [errors inbox](https://docs.newrelic.com/docs/apm/apm-ui-pages/errors-inbox/errors-inbox/), [transaction tracing](https://docs.newrelic.com/docs/apm/transactions/transaction-traces/introduction-transaction-traces/), and [service maps](https://docs.newrelic.com/docs/understand-dependencies/understand-system-dependencies/service-maps/introduction-service-maps/). - - ## More info - - Check out the [documentation](https://docs.newrelic.com/docs/agents/c-sdk/get-started/introduction-c-sdk/) to learn more about New Relic monitoring for C++. -summary: | - Monitor C++ with New Relic's C agent -icon: logo.svg -level: New Relic -authors: - - New Relic -title: C++ -documentation: - - name: C++ installation docs - description: | - General-purpose programming language that extends C with modern - object-oriented, generic, and functional features. - url: https://docs.newrelic.com/docs/agents/c-sdk -keywords: - - apm -installPlans: - - setup-c-agent -dataSourceIds: - - c diff --git a/quickstarts/cplusplus/logo.svg b/quickstarts/cplusplus/logo.svg deleted file mode 100644 index 4974a1610e..0000000000 --- a/quickstarts/cplusplus/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/jmeter/config.yml b/quickstarts/jmeter/config.yml deleted file mode 100644 index d0d64f8b26..0000000000 --- a/quickstarts/jmeter/config.yml +++ /dev/null @@ -1,69 +0,0 @@ -id: 18db3f9a-9033-4ff2-a2da-537409a500ac -# Sets the URL name of the quickstart on public I/O (required) -slug: jmeter - -# Displayed in the UI (required) -title: JMeter - -# Long-form description of the quickstart (required) -description: | - ## Quickstart for Jmeter Test Monitoring - Apache JMeter is open source software, a Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. - The link to JMeter plug-in provided enables you to send test results to New Relic. - This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. - The JMeter quickstart includes: - ## a dashboard - where users can easily monitor: - - Thread Group Details - - HTTP Responses - - Summary Report - - View Results in Table - ## alert conditions - where users are notified on: - - Test Error Rate - - 90th Percentile Latency - -# Displayed in search results and recommendations. Summarizes a quickstarts functionality. -summary: | - This quickstart allows users to monitor JMeter tests inside New Relic and observe test results in the context of instrumented applications. - -# Support level: New Relic | Verified | Community (required) -level: Community - -# Authors of the quickstart (required) -authors: - - Munwar Mohammed - -# Keywords for filtering / searching criteria in the UI -keywords: - - jmeter - - performance - - load - - stress - - functional - - testing web application - - NR1_addData - - NR1_sys - -# Reference to dashboards to be included in this quickstart -dashboards: - - jmeter - -alertPolicies: - - jmeter - -dataSourceIds: - - jmeter - -# Documentation references -documentation: - - name: Set up JMeter to send data to New Relic - url: https://github.com/darrensmithwtc/jmeter-backend-newrelic - description: Information on how to setup JMeter plug-in to send test results to New Relic - - name: Learn more about Apache JMeter - url: https://jmeter.apache.org/ - description: Information on how Apache JMeter can be utilized to performance test dynamic web applications - -# Content / Design -icon: logo.png -website: https://jmeter.apache.org/ \ No newline at end of file diff --git a/quickstarts/jmeter/logo.png b/quickstarts/jmeter/logo.png deleted file mode 100644 index d30a4a9ee6..0000000000 Binary files a/quickstarts/jmeter/logo.png and /dev/null differ diff --git a/quickstarts/nvidia-jetson/config.yml b/quickstarts/nvidia-jetson/config.yml new file mode 100644 index 0000000000..958c95f2ea --- /dev/null +++ b/quickstarts/nvidia-jetson/config.yml @@ -0,0 +1,41 @@ +id: 65c93280-3259-4858-bfb5-e9830d440084 +slug: nvidia-jetson +description: | + ## Why monitor your NVIDIA Jetson? + Monitoring your NVIDIA Jetson device ensures optimal performance and prevents overheating. Tegrastats includes metrics such as CPU and GPU usage, RAM and swap memory utilization, and critical temperature readings (CPU, GPU, and PMIC). Real-time insights help maintain efficiency and extend the device's lifespan. + + ## Comprehensive monitoring quickstart for NVIDIA Jetson + Integrate your NVIDIA Jetson device with New Relic for real-time performance insights. Capture essential tegrastats like CPU, GPU, RAM, and temperature readings. Use alerts to prevent overheating and optimize resource usage. + + ## What’s included in the NVIDIA Jetson quickstart? + New Relic NVIDIA Jetson monitoring quickstart ability to cover quality on out-of-the-box reporting. + - Dashboards (RAM and EMC usage, largest free block, PMIC and PLL temperature and etc) + - Alerts (EMC used, GPU temperature and thermal temperature) + +summary: | + Our NVIDIA Jetson integration collects and sends data about your tegrastats utility to New Relic, where you can monitor CPU, GPU, RAM, and temperature readings about your NVIDIA Jetson device. +icon: logo.png +level: New Relic +authors: + - New Relic + - Jyothi Surampudi +title: NVIDIA Jetson +documentation: + - name: NVIDIA Jetson integration documentation + description: | + Boost the performance monitoring and instrumentation of your NVIDIA Jetson device by integrating with New Relic. + url: >- + https://docs.newrelic.com/docs/infrastructure/host-integrations/host-integrations-list/nvidia-jetson-integration +keywords: + - jetson + - nvidia jetson + - tegrastats + - nvidia + - NR1_addData + - NR1_sys +dashboards: + - nvidia-jetson +alertPolicies: + - nvidia-jetson +dataSourceIds: + - nvidia-jetson diff --git a/quickstarts/nvidia-jetson/logo.png b/quickstarts/nvidia-jetson/logo.png new file mode 100644 index 0000000000..00e777df8c Binary files /dev/null and b/quickstarts/nvidia-jetson/logo.png differ diff --git a/utils/graphql-schemas/constants.js b/utils/graphql-schemas/constants.js deleted file mode 100644 index 3420348a63..0000000000 --- a/utils/graphql-schemas/constants.js +++ /dev/null @@ -1,82 +0,0 @@ -const fullSchemaQuery = ` -query IntrospectionQuery { - __schema { - types { - ...FullType - } - } -} -fragment FullType on __Type { - kind - name - description - fields(includeDeprecated: true) { - name - description - args { - ...InputValue - } - type { - ...TypeRef - } - isDeprecated - deprecationReason - } - inputFields { - ...InputValue - } - interfaces { - ...TypeRef - } - enumValues(includeDeprecated: true) { - name - description - isDeprecated - deprecationReason - } - possibleTypes { - ...TypeRef - } -} -fragment InputValue on __InputValue { - name - description - type { - ...TypeRef - } - defaultValue -} -fragment TypeRef on __Type { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - } - } - } - } - } - } - } -}`; - -module.exports = { fullSchemaQuery }; diff --git a/utils/graphql-schemas/generate-schema-docs.js b/utils/graphql-schemas/generate-schema-docs.js deleted file mode 100644 index c62c2be649..0000000000 --- a/utils/graphql-schemas/generate-schema-docs.js +++ /dev/null @@ -1,70 +0,0 @@ -const fs = require('fs'); -const { fetchNRGraphqlResults } = require('../lib/nr-graphql-helpers'); -const { fullSchemaQuery } = require('./constants'); -const { renderSchema } = require('graphql-markdown'); - -/** - * Print function to pass to renderSchema, writes each line separately to a file - * @param {String} data - The data to write to the file - */ -const printData = (data) => { - fs.appendFileSync('../docs/graphql-schema-docs.md', `${data}\n`); -}; - -/** - * Filters the data to only include NR1Catalog endpoints - * @param {Object} data - The data to filter - * @returns {Object} The filtered data in schema form for graphql-markdown - */ -const filterData = (data) => { - const { - data: { - __schema: { types }, - }, - } = data; - const endpoints = types.filter( - (type) => - type.name.startsWith('Nr1CatalogQuickstart') || - type.name.startsWith('Nr1CatalogInstall') - ); - - // Stringifies the data and replaces the NR internal strings in all descriptions - const removedInternalData = JSON.parse( - JSON.stringify(endpoints).replace( - /(\\n\\n---\\n\*\*NR Internal\*\*)(.*?)(\\n\\n)/g, - '' - ) - ); - - // Return in a GraphQL schema pattern so that graphql-markdown can render correctly - return { __schema: { types: removedInternalData } }; -}; - -const main = async () => { - const { NR_API_URL, NR_API_TOKEN } = process.env; - if (!NR_API_URL || !NR_API_TOKEN) { - console.error( - 'Please set the NR_API_URL and NR_API_TOKEN environment variables' - ); - process.exit(1); - } - - const result = await fetchNRGraphqlResults({ - queryString: fullSchemaQuery, - }); - const endpoints = filterData(result); - - // Clear the file before writing to it, as each line is written separately - fs.writeFileSync('../docs/graphql-schema-docs.md', ''); - renderSchema(endpoints, { printer: printData }); - process.exit(0); -}; - -/** - * This allows us to check if the script was invoked directly from the command line, i.e 'node validate_quickstarts.js', or if it was imported. - * This would be true if this was used in one of our GitHub workflows, but false when imported for use in a test. - * See here: https://nodejs.org/docs/latest/api/modules.html#modules_accessing_the_main_module - */ -if (require.main === module) { - main(); -} diff --git a/utils/package.json b/utils/package.json index 6f87bde0d5..8f19b3e9d8 100644 --- a/utils/package.json +++ b/utils/package.json @@ -19,7 +19,6 @@ "generate-uuids": "ts-node generate-uuids.ts", "sanitize-dashboard": "ts-node sanitize_dashboards.ts", "dashboard-helper": "ts-node dashboard-helper.ts", - "generate-schema-docs": "ts-node graphql-schemas/generate-schema-docs.js", "preview": "ts-node preview.ts", "create-preview-links": "ts-node create-preview-links.ts", "set-alert-policy-required-datasources": "ts-node set-alert-policy-required-datasources.ts",