From f7da0125817e7dd0a535125ec042215b09f3c7c0 Mon Sep 17 00:00:00 2001 From: Kevin Duret Date: Tue, 14 Jan 2025 12:13:33 +0100 Subject: [PATCH 01/20] enh(ci): check if pull request on testing is a cherry-pick (#5390) --- .github/workflows/check-status.yml | 180 ++++++++++++++++++++++++++ .github/workflows/get-environment.yml | 17 ++- 2 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/check-status.yml diff --git a/.github/workflows/check-status.yml b/.github/workflows/check-status.yml new file mode 100644 index 0000000000..0e9b9db95a --- /dev/null +++ b/.github/workflows/check-status.yml @@ -0,0 +1,180 @@ +name: check-status + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +on: + pull_request: + branches: + - develop + - master + - hotfix-* + - release-* + +jobs: + check-status: + runs-on: ubuntu-24.04 + steps: + - name: Check workflow statuses and display token usage + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + echo "current rest api rate usage:" + curl -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/rate_limit | jq .rate + echo "" + echo "" + echo "current graphql rate usage:" + curl -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/rate_limit | jq .resources.graphql + echo "" + echo "" + + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ github.event.number }} + with: + script: | + await exec.exec("sleep 20s"); + + for (let i = 0; i < 120; i++) { + const failure = []; + const cancelled = []; + const pending = []; + + const result = await github.rest.checks.listSuitesForRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: "${{ github.head_ref }}" + }); + result.data.check_suites.forEach(({ app: { slug }, conclusion, id}) => { + if (slug === 'github-actions') { + if (conclusion === 'failure' || conclusion === 'cancelled') { + failure.push(id); + } else if (conclusion === null) { + pending.push(id); + } + console.log(`check suite ${id} => ${conclusion === null ? 'pending' : conclusion}`); + } + }); + + if (pending.length === 0) { + core.setFailed("Cannot get pull request check status"); + return; + } + + if (failure.length > 0) { + let failureMessage = ''; + const failedCheckRuns = []; + for await (const suite_id of failure) { + const resultCheckRuns = await github.rest.checks.listForSuite({ + owner: context.repo.owner, + repo: context.repo.repo, + check_suite_id: suite_id + }); + + resultCheckRuns.data.check_runs.forEach(({ conclusion, name, html_url }) => { + if (conclusion === 'failure' || conclusion === 'cancelled') { + failedCheckRuns.push(`${name} (${conclusion})`); + } + }); + } + + core.summary.addRaw(`${failedCheckRuns.length} job(s) failed:`, true) + core.summary.addList(failedCheckRuns); + core.summary.write() + + if (failedCheckRuns.length > 0) { + core.setFailed(`${failedCheckRuns.length} job(s) failed`); + return; + } + } + + if (pending.length === 1) { + core.info("All workflows are ok"); + return; + } + + core.info(`${pending.length} workflows in progress`); + + await exec.exec("sleep 30s"); + } + + core.setFailed("Timeout: some jobs are still in progress"); + + get-environment: + if: | + contains(fromJSON('["pull_request", "pull_request_target"]') , github.event_name) && + (startsWith(github.base_ref, 'release-') || startsWith(github.base_ref, 'hotfix-')) + uses: ./.github/workflows/get-environment.yml + + check-cherry-pick: + needs: [get-environment, check-status] + runs-on: ubuntu-24.04 + if: | + contains(fromJSON('["pull_request", "pull_request_target"]') , github.event_name) && + needs.get-environment.outputs.target_stability == 'testing' && + ! contains(needs.get-environment.outputs.labels, 'skip-cherry-pick') + + steps: + - name: Check if the PR is a cherry-pick from dev branch + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + LINKED_DEV_BRANCH: develop + with: + script: | + let linkedPrs = []; + let errorMessage = `This pull request is not a cherry-pick from ${process.env.LINKED_DEV_BRANCH} or has no reference to a pull request which has been merged on ${process.env.LINKED_DEV_BRANCH}\n`; + + try { + const pull = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.issue.number + }); + + const { title, body } = pull.data; + + [title, body].forEach((text) => { + const linkedPrMatches = text.matchAll(/(?:#|\/pull\/)(\d+)/g); + if (linkedPrMatches) { + [...linkedPrMatches].forEach((match) => { + linkedPrs.push(Number(match[1])); + }); + } + }); + + // remove duplicates + linkedPrs = [...new Set(linkedPrs)]; + console.log(`Linked pull requests found in PR title and body: ${linkedPrs.join(', ')}`); + } catch (e) { + throw new Error(`Failed to get information of pull request #${context.issue.number}: ${e}`); + } + + for await (const prNumber of linkedPrs) { + try { + const pull = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber + }); + + if (pull.data.base.ref === process.env.LINKED_DEV_BRANCH) { + if (pull.data.state === 'closed' && pull.data.merged === true) { + console.log(`This pull request is a cherry-pick from pull request #${prNumber} on ${process.env.LINKED_DEV_BRANCH}`); + return; + } else { + errorMessage += `This pull request seems to be a cherry-pick from pull request #${prNumber} on ${process.env.LINKED_DEV_BRANCH} but it is not merged yet\n`; + } + } else { + errorMessage += `Pull request #${prNumber} is linked to ${pull.data.base.ref} instead of ${process.env.LINKED_DEV_BRANCH}\n`; + } + } catch (e) { + errorMessage += `Failed to get information on pull request #${prNumber}: ${e}\n`; + } + } + + errorMessage += `\nIf you are sure this PR does not need to be a cherry-pick from ${process.env.LINKED_DEV_BRANCH} or must be merged urgently, `; + errorMessage += `open the pull request on ${process.env.LINKED_DEV_BRANCH} and add label "skip-cherry-pick" to the PR and re-run all jobs of workflow check-status\n`; + + throw new Error(errorMessage); diff --git a/.github/workflows/get-environment.yml b/.github/workflows/get-environment.yml index 14c1eba61d..e97a2d0a3f 100644 --- a/.github/workflows/get-environment.yml +++ b/.github/workflows/get-environment.yml @@ -26,6 +26,9 @@ on: skip_workflow: description: "if the current workflow should be skipped" value: ${{ jobs.get-environment.outputs.skip_workflow }} + labels: + description: "list of labels on the PR" + value: ${{ jobs.get-environment.outputs.labels }} jobs: get-environment: @@ -38,6 +41,7 @@ jobs: release_type: ${{ steps.get_release_type.outputs.release_type }} is_targeting_feature_branch: ${{ steps.get_stability.outputs.is_targeting_feature_branch }} skip_workflow: ${{ steps.skip_workflow.outputs.result }} + labels: ${{ steps.has_skip_label.outputs.labels }} steps: - name: Check if PR has skip label @@ -46,14 +50,17 @@ jobs: with: script: | let hasSkipLabel = false; + let labels = []; + if (${{ contains(fromJSON('["pull_request", "pull_request_target"]') , github.event_name) }} === true) { try { - const labels = await github.rest.issues.listLabelsOnIssue({ + const fetchedLabels = await github.rest.issues.listLabelsOnIssue({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number }); - labels.data.forEach(({ name }) => { + fetchedLabels.data.forEach(({ name }) => { + labels.push(name); if (name === '${{ format('skip-workflow-{0}', github.workflow) }}') { hasSkipLabel = true; } @@ -62,6 +69,9 @@ jobs: core.warning(`failed to list labels: ${e}`); } } + + core.setOutput('labels', labels); + return hasSkipLabel; - name: Checkout sources (current branch) @@ -276,7 +286,8 @@ jobs: ['release_type', '${{ steps.get_release_type.outputs.release_type || 'not defined because this is not a release' }}'], ['is_targeting_feature_branch', '${{ steps.get_stability.outputs.is_targeting_feature_branch }}'], ['target_stability', '${{ steps.get_stability.outputs.target_stability || 'not defined because current run is not triggered by pull request event' }}'], - ['skip_workflow', '${{ steps.skip_workflow.outputs.result }}'] + ['skip_workflow', '${{ steps.skip_workflow.outputs.result }}'], + ['labels', '${{ steps.has_skip_label.outputs.labels }}'], ]; core.summary .addHeading(`${context.workflow} environment outputs`) From 8ad485f42356bd288dfc6999fc7ac2614062d5d4 Mon Sep 17 00:00:00 2001 From: Kevin Duret Date: Tue, 14 Jan 2025 16:21:16 +0100 Subject: [PATCH 02/20] fix(ci): fix stable rpm promote path (#5393) --- .github/actions/package-delivery/action.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/actions/package-delivery/action.yml b/.github/actions/package-delivery/action.yml index 82f641fbe4..e67fe1211e 100644 --- a/.github/actions/package-delivery/action.yml +++ b/.github/actions/package-delivery/action.yml @@ -177,6 +177,11 @@ runs: const path = require('path'); const globber = await glob.create('*.${{ steps.parse-distrib.outputs.package_extension }}'); + let stableRpmSubdirectory = ''; + if ('${{ inputs.stability }}' === 'stable') { + stableRpmSubdirectory = 'RPMS/'; + } + const debTargetProps = '${{ inputs.stability }}' == 'testing' ? '--target-props "release_type=${{ inputs.release_type }}"' : ''; for await (const file of globber.globGenerator()) { @@ -188,7 +193,7 @@ runs: arch = 'x86_64'; } await exec.exec( - `jf rt upload "${fileName}" "${{ steps.get_repository_stability_path.outputs.repository_stability_path }}/${arch}/${{ inputs.module_name }}/" --flat` + `jf rt upload "${fileName}" "${{ steps.get_repository_stability_path.outputs.repository_stability_path }}/${arch}/${stableRpmSubdirectory}${{ inputs.module_name }}/" --flat` ); } else if ('${{ steps.parse-distrib.outputs.package_extension }}' === 'deb') { let arch = 'all'; From dfda070220b6da016f79bc4b14086e247b6a6d09 Mon Sep 17 00:00:00 2001 From: May <110405507+mushroomempires@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:28:43 +0100 Subject: [PATCH 03/20] refactor(release): align plugins release number to branch name in testing context (#5392) Co-authored-by: Kevin Duret --- .github/workflows/get-environment.yml | 46 ++++++++++++++++++--------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/.github/workflows/get-environment.yml b/.github/workflows/get-environment.yml index e97a2d0a3f..d79bc9339e 100644 --- a/.github/workflows/get-environment.yml +++ b/.github/workflows/get-environment.yml @@ -246,24 +246,40 @@ jobs: - name: Get version id: get_version - run: | - if [[ "${{ inputs.version_file }}" == "" ]]; then - VERSION=$(date '+%Y%m%d') - elif [[ "${{ inputs.version_file }}" == */*.yaml ]]; then - VERSION=$(grep 'version: ' ${{ inputs.version_file }} | cut -d' ' -f2 | tr -d '"') - else - VERSION=$(grep VERSION ${{ inputs.version_file }} | cut -d "'" -f 2) - fi - echo "version=$(echo $VERSION)" >> $GITHUB_OUTPUT - shell: bash + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + let version = ''; + + if ('${{ steps.get_stability.outputs.stability }}' === 'testing') { + const branchName = "${{ github.ref_name }}"; + const matches = branchName.match(/^(?:release|hotfix)-(\d{8})$/); + if (matches) { + version = matches[1]; + } else { + throw new Error('invalid version'); + } + } else { + const currentDate = new Date(); + version = `${currentDate.getFullYear()}${("0" + (currentDate.getMonth() + 1)).slice(-2)}00`; + } - - name: "Get release: 1 for testing / stable, . for others" + core.setOutput('version', version); + + - name: "Get release: 1 for testing / stable, for others" id: get_release - run: | - RELEASE=$(date '+%H%M%S') + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + let release = ''; - echo "release=$RELEASE" >> $GITHUB_OUTPUT - shell: bash + if (${{ contains(fromJSON('["testing", "unstable"]') , steps.get_stability.outputs.stability) }} === true) { + release = "1" + } else { + release = Date.now() + } + + core.setOutput('release', release); - name: "Get release type: hotfix, release or not defined if not a release" id: get_release_type From 3164c6b12c68a831ded00db73e8633ecabb6803c Mon Sep 17 00:00:00 2001 From: May <110405507+mushroomempires@users.noreply.github.com> Date: Mon, 20 Jan 2025 11:06:48 +0100 Subject: [PATCH 04/20] chore(deps): absorb 25.01 dependabot GitHub Actions updates (#5380) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/actions/merge-artifacts/action.yml | 2 +- .github/actions/package-delivery/action.yml | 2 +- .github/actions/package-nfpm/action.yml | 4 ++-- .github/actions/test-plugins/action.yml | 2 +- .github/workflows/as400.yml | 2 +- .github/workflows/connector-vmware.yml | 2 +- .../workflows/docker-builder-packaging-plugins.yml | 4 ++-- .../workflows/docker-builder-testing-plugins.yml | 4 ++-- .github/workflows/docker-builder-unit-tests.yml | 4 ++-- .github/workflows/perl-cpan-libraries.yml | 12 ++++++------ .github/workflows/perl-crypt-argon2.yml | 2 +- .github/workflows/perl-filesys-smbclient.yml | 8 ++++---- .github/workflows/perl-json-path.yml | 2 +- .github/workflows/perl-libssh-session.yml | 2 +- .github/workflows/perl-net-curl.yml | 2 +- .github/workflows/perl-openwsman.yml | 2 +- .github/workflows/perl-vmware-vsphere.yml | 4 ++-- .github/workflows/plink.yml | 8 ++++---- .github/workflows/plugins.yml | 14 +++++++------- .github/workflows/spellchecker.yml | 2 +- 20 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.github/actions/merge-artifacts/action.yml b/.github/actions/merge-artifacts/action.yml index a213c8fa3e..fcf729705e 100644 --- a/.github/actions/merge-artifacts/action.yml +++ b/.github/actions/merge-artifacts/action.yml @@ -25,7 +25,7 @@ runs: merge-multiple: true - name: Upload the Regrouped Artifact - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: ${{ inputs.target_name }} path: | diff --git a/.github/actions/package-delivery/action.yml b/.github/actions/package-delivery/action.yml index e67fe1211e..5da2efcce1 100644 --- a/.github/actions/package-delivery/action.yml +++ b/.github/actions/package-delivery/action.yml @@ -77,7 +77,7 @@ runs: - if: ${{ inputs.stability != 'stable' }} name: Restore packages from cache - uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.${{ steps.parse-distrib.outputs.package_extension }} key: ${{ inputs.cache_key }} diff --git a/.github/actions/package-nfpm/action.yml b/.github/actions/package-nfpm/action.yml index 189b5fdd9c..e8c23cd1f9 100644 --- a/.github/actions/package-nfpm/action.yml +++ b/.github/actions/package-nfpm/action.yml @@ -122,7 +122,7 @@ runs: done shell: bash - - uses: actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.${{ inputs.package_extension }} key: ${{ inputs.cache_key }} @@ -130,7 +130,7 @@ runs: # Add to your PR the label upload-artifacts to get packages as artifacts - if: ${{ contains(github.event.pull_request.labels.*.name, 'upload-artifacts') }} name: Upload package artifacts - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ inputs.distrib }} path: ./*.${{ inputs.package_extension}} diff --git a/.github/actions/test-plugins/action.yml b/.github/actions/test-plugins/action.yml index b3cbd53814..bbcf5bfd76 100644 --- a/.github/actions/test-plugins/action.yml +++ b/.github/actions/test-plugins/action.yml @@ -16,7 +16,7 @@ runs: steps: - name: get the cached plugin - uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.${{ inputs.package-extension }} key: ${{ inputs.cache-key }} diff --git a/.github/workflows/as400.yml b/.github/workflows/as400.yml index 098b834d42..7c0f4dd80a 100644 --- a/.github/workflows/as400.yml +++ b/.github/workflows/as400.yml @@ -102,7 +102,7 @@ jobs: stability: ${{ needs.get-environment.outputs.stability }} - name: Save to cache - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.${{ matrix.package_extension }} key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }} diff --git a/.github/workflows/connector-vmware.yml b/.github/workflows/connector-vmware.yml index 3e42dc8c69..eb74274bb2 100644 --- a/.github/workflows/connector-vmware.yml +++ b/.github/workflows/connector-vmware.yml @@ -77,7 +77,7 @@ jobs: stability: ${{ needs.get-environment.outputs.stability }} - name: Upload apt/dnf packages as artifacts if asked if: ${{ contains(github.event.pull_request.labels.*.name, 'upload-artifacts') }} - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: vmware-connector-daemon-${{ matrix.distrib }} path: centreon-plugin* diff --git a/.github/workflows/docker-builder-packaging-plugins.yml b/.github/workflows/docker-builder-packaging-plugins.yml index 4ad9c1b1f1..d034ac64cf 100644 --- a/.github/workflows/docker-builder-packaging-plugins.yml +++ b/.github/workflows/docker-builder-packaging-plugins.yml @@ -84,9 +84,9 @@ jobs: username: ${{ secrets.HARBOR_CENTREON_PUSH_USERNAME }} password: ${{ secrets.HARBOR_CENTREON_PUSH_TOKEN }} - - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 + - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: file: .github/docker/packaging/Dockerfile.${{ matrix.dockerfile }} context: . diff --git a/.github/workflows/docker-builder-testing-plugins.yml b/.github/workflows/docker-builder-testing-plugins.yml index 2872c99db4..57e871d37d 100644 --- a/.github/workflows/docker-builder-testing-plugins.yml +++ b/.github/workflows/docker-builder-testing-plugins.yml @@ -69,9 +69,9 @@ jobs: username: ${{ secrets.HARBOR_CENTREON_PUSH_USERNAME }} password: ${{ secrets.HARBOR_CENTREON_PUSH_TOKEN }} - - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 + - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: file: .github/docker/testing/Dockerfile.testing-plugins-${{ matrix.dockerfile }} context: . diff --git a/.github/workflows/docker-builder-unit-tests.yml b/.github/workflows/docker-builder-unit-tests.yml index 184f2b726d..a0ea6a7ae7 100644 --- a/.github/workflows/docker-builder-unit-tests.yml +++ b/.github/workflows/docker-builder-unit-tests.yml @@ -69,9 +69,9 @@ jobs: username: ${{ secrets.HARBOR_CENTREON_PUSH_USERNAME }} password: ${{ secrets.HARBOR_CENTREON_PUSH_TOKEN }} - - uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # v3.6.1 + - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: file: .github/docker/unit-tests/Dockerfile.unit-tests-${{ matrix.dockerfile }} context: . diff --git a/.github/workflows/perl-cpan-libraries.yml b/.github/workflows/perl-cpan-libraries.yml index 988cc04cf6..1c543ce7dc 100644 --- a/.github/workflows/perl-cpan-libraries.yml +++ b/.github/workflows/perl-cpan-libraries.yml @@ -233,7 +233,7 @@ jobs: shell: bash - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ steps.package-name.outputs.name_with_dash }} path: ./*.${{ matrix.package_extension }} @@ -251,7 +251,7 @@ jobs: steps: - name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact/merge@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-rpm-${{ matrix.distrib }} pattern: packages-rpm-${{ matrix.distrib }}-* @@ -299,7 +299,7 @@ jobs: - run: rpmsign --addsign ./*.rpm shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -473,7 +473,7 @@ jobs: shell: bash - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ matrix.arch }}-${{ steps.package-name.outputs.name_with_dash}} path: ./*.${{ matrix.package_extension }} @@ -491,7 +491,7 @@ jobs: steps: - name: Merge Artifacts - uses: actions/upload-artifact/merge@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact/merge@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-deb-${{ matrix.distrib }} pattern: packages-deb-${{ matrix.distrib }}-* @@ -519,7 +519,7 @@ jobs: name: packages-deb-${{ matrix.distrib }} path: ./ - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.deb key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} diff --git a/.github/workflows/perl-crypt-argon2.yml b/.github/workflows/perl-crypt-argon2.yml index 7680b17e4e..0ce224ca41 100644 --- a/.github/workflows/perl-crypt-argon2.yml +++ b/.github/workflows/perl-crypt-argon2.yml @@ -137,7 +137,7 @@ jobs: # set condition to true if artifacts are needed - if: ${{ false }} name: Upload package artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.distrib }}-${{ matrix.arch }} path: ./*.${{ matrix.package_extension}} diff --git a/.github/workflows/perl-filesys-smbclient.yml b/.github/workflows/perl-filesys-smbclient.yml index 4b1d28e2d2..35cd2dbf53 100644 --- a/.github/workflows/perl-filesys-smbclient.yml +++ b/.github/workflows/perl-filesys-smbclient.yml @@ -63,7 +63,7 @@ jobs: cp -r ~/rpmbuild/RPMS/x86_64/*.rpm . shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -97,7 +97,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -108,7 +108,7 @@ jobs: - run: rpmsign --addsign ./*.rpm shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -155,7 +155,7 @@ jobs: DEB_BUILD_OPTIONS="nocheck nodocs notest noautodbgsym" dh-make-perl make --dist ${{ matrix.distrib }} --verbose --build --version 4.0${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} perl-filesys-smbclient/ shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.deb key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} diff --git a/.github/workflows/perl-json-path.yml b/.github/workflows/perl-json-path.yml index 379b50f16b..809657437c 100644 --- a/.github/workflows/perl-json-path.yml +++ b/.github/workflows/perl-json-path.yml @@ -122,7 +122,7 @@ jobs: # set condition to true if artifacts are needed - if: ${{ false }} name: Upload package artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.distrib }} path: ./*.${{ matrix.package_extension}} diff --git a/.github/workflows/perl-libssh-session.yml b/.github/workflows/perl-libssh-session.yml index 53df82f574..81fdf87d76 100644 --- a/.github/workflows/perl-libssh-session.yml +++ b/.github/workflows/perl-libssh-session.yml @@ -135,7 +135,7 @@ jobs: # set condition to true if artifacts are needed - if: ${{ false }} name: Upload package artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.distrib }}-${{ matrix.arch }} path: ./*.${{ matrix.package_extension}} diff --git a/.github/workflows/perl-net-curl.yml b/.github/workflows/perl-net-curl.yml index 38b38938aa..da66a77589 100644 --- a/.github/workflows/perl-net-curl.yml +++ b/.github/workflows/perl-net-curl.yml @@ -135,7 +135,7 @@ jobs: # set condition to true if artifacts are needed - if: ${{ false }} name: Upload package artifacts - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.distrib }}-${{ matrix.arch }} path: ./*.${{ matrix.package_extension }} diff --git a/.github/workflows/perl-openwsman.yml b/.github/workflows/perl-openwsman.yml index 12474ae022..491e3cc67f 100644 --- a/.github/workflows/perl-openwsman.yml +++ b/.github/workflows/perl-openwsman.yml @@ -208,7 +208,7 @@ jobs: rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }} stability: ${{ needs.get-environment.outputs.stability }} - - uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.${{ matrix.package_extension }} key: cache-${{ github.sha }}-${{ matrix.package_extension }}-wsman-${{ matrix.distrib }}-${{ matrix.arch }}-${{ github.head_ref || github.ref_name }} diff --git a/.github/workflows/perl-vmware-vsphere.yml b/.github/workflows/perl-vmware-vsphere.yml index 7be8efc489..c6173f8867 100644 --- a/.github/workflows/perl-vmware-vsphere.yml +++ b/.github/workflows/perl-vmware-vsphere.yml @@ -43,7 +43,7 @@ jobs: shell: bash - name: Cache vsphere cli sources - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: vmware-vsphere-cli-distrib key: ${{ github.sha }}-${{ github.run_id }}-sources-perl-vmware-vsphere @@ -103,7 +103,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Import source files - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: vmware-vsphere-cli-distrib key: ${{ github.sha }}-${{ github.run_id }}-sources-perl-vmware-vsphere diff --git a/.github/workflows/plink.yml b/.github/workflows/plink.yml index 31a4435e1c..a375aedbfc 100644 --- a/.github/workflows/plink.yml +++ b/.github/workflows/plink.yml @@ -57,7 +57,7 @@ jobs: cp -r ~/rpmbuild/RPMS/x86_64/*.rpm . shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -91,7 +91,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: unsigned-${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} @@ -102,12 +102,12 @@ jobs: - run: rpmsign --addsign ./*.rpm shell: bash - - uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./*.rpm key: ${{ github.sha }}-${{ github.run_id }}-rpm-${{ matrix.distrib }} - - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.distrib }} path: ./*.rpm diff --git a/.github/workflows/plugins.yml b/.github/workflows/plugins.yml index 14bb8b2e66..ffd95be3e3 100644 --- a/.github/workflows/plugins.yml +++ b/.github/workflows/plugins.yml @@ -37,7 +37,7 @@ jobs: with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: '3.9' @@ -137,7 +137,7 @@ jobs: - name: Upload logs as artifacts if tests failed if: failure() - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: plugin-installation-${{ matrix.distrib }} path: ./lastlog.jsonl @@ -157,7 +157,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Prepare FatPacker - uses: shogo82148/actions-setup-perl@9c1eca9952ccc07f9ca4a2097b63df93d9d138e9 # v1.31.3 + uses: shogo82148/actions-setup-perl@98dfedee230bcf1ee68d5b021931fc8d63f2016e # v1.31.4 with: perl-version: '5.34' install-modules-with: cpm @@ -168,7 +168,7 @@ jobs: COMMIT=$(git log -1 HEAD --pretty=format:%h) perl .github/scripts/plugins-source.container.pl "${{ needs.get-plugins.outputs.plugins }}" "${{ needs.get-environment.outputs.version }} ($COMMIT)" - - uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./build/ key: fatpacked-plugins-${{ github.sha }}-${{ github.run_id }} @@ -219,7 +219,7 @@ jobs: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./build/ key: fatpacked-plugins-${{ github.sha }}-${{ github.run_id }} @@ -353,7 +353,7 @@ jobs: - name: Upload apt/dnf logs as artifacts if tests failed if: failure() - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: plugin-installation-${{ matrix.distrib }} path: /var/log/robot-plugins-installation-tests.log @@ -412,7 +412,7 @@ jobs: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + - uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 with: path: ./build/ key: fatpacked-plugins-${{ github.sha }}-${{ github.run_id }} diff --git a/.github/workflows/spellchecker.yml b/.github/workflows/spellchecker.yml index 413b881a4f..dbaf565f34 100644 --- a/.github/workflows/spellchecker.yml +++ b/.github/workflows/spellchecker.yml @@ -30,7 +30,7 @@ jobs: - added|modified: 'src/**/*.pm' - name: Install CPAN Libraries - uses: shogo82148/actions-setup-perl@9c1eca9952ccc07f9ca4a2097b63df93d9d138e9 # v1.31.3 + uses: shogo82148/actions-setup-perl@98dfedee230bcf1ee68d5b021931fc8d63f2016e # v1.31.4 with: perl-version: '5.34' install-modules-with: cpm From 8ee6889662bc17c132c9c42731d06ee4c7a20ae5 Mon Sep 17 00:00:00 2001 From: ponchoh Date: Thu, 23 Jan 2025 05:55:43 -0500 Subject: [PATCH 05/20] help(http-jsoncontent): fixed the pod in jsoncontent.pm (#5389) No associated ticket --- src/apps/protocols/http/mode/jsoncontent.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/protocols/http/mode/jsoncontent.pm b/src/apps/protocols/http/mode/jsoncontent.pm index d57d8b3183..c9c786d1fc 100644 --- a/src/apps/protocols/http/mode/jsoncontent.pm +++ b/src/apps/protocols/http/mode/jsoncontent.pm @@ -459,7 +459,7 @@ Critical threshold (default: on total matching elements) =item B<--threshold-value> Define the scope to which the numeric thresholds apply. -Possible values for this option: 'value' to check numeric values, 'count' to check the number of values (default: count). +Possible values for this option: 'values' to check numeric values, 'count' to check the number of values (default: count). =item B<--warning-string> From 9ae01fc81d9a5a8dd2babdc2707b06c4b14701f1 Mon Sep 17 00:00:00 2001 From: sdepassio <114986849+sdepassio@users.noreply.github.com> Date: Thu, 23 Jan 2025 18:36:02 +0100 Subject: [PATCH 06/20] ci(cpan-libs): Add cpan libs tests (#5324) Co-authored-by: Kevin Duret Refs: CTOR-726 --- .../Dockerfile.packaging-plugins-alma8 | 14 +- .../Dockerfile.packaging-plugins-alma9 | 14 +- .../Dockerfile.packaging-plugins-bookworm | 6 + .../Dockerfile.packaging-plugins-bullseye | 6 +- .../Dockerfile.packaging-plugins-jammy | 4 + .github/workflows/perl-cpan-libraries.yml | 349 ++++++++++++++---- 6 files changed, 308 insertions(+), 85 deletions(-) diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-alma8 b/.github/docker/packaging/Dockerfile.packaging-plugins-alma8 index e9fe67b494..620a7b3cc3 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-alma8 +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-alma8 @@ -10,10 +10,22 @@ baseurl=https://repo.goreleaser.com/yum/ enabled=1 gpgcheck=0' | tee /etc/yum.repos.d/goreleaser.repo -dnf -y install gcc git gettext rpm-build dos2unix python3 epel-release nfpm-2.41.0 openssl-devel jq zstd selinux-policy-devel +dnf -y install gcc git gettext rpm-build dos2unix python3 epel-release nfpm-2.41.0 openssl-devel jq zstd selinux-policy-devel yum-utils +dnf config-manager --set-enabled powertools dnf -y install perl-App-cpanminus perl-JSON cpanm App::FatPacker cpanm File::Copy::Recursive + +# For cpan libs +dnf install -y cpio libcurl-devel libssh-devel expat-devel libuuid-devel zeromq-devel libxml2-devel libffi-devel perl-DBI perl-Net-Pcap freetds freetds-devel perl-Module-Build-Tiny +cpanm Module::Build::Tiny +cpanm Module::Install +# Install fpm (ruby 3 is required) +dnf module reset -y ruby +dnf module enable -y ruby:3.1 +dnf install -y ruby ruby-devel +gem install fpm + dnf clean all EOF diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-alma9 b/.github/docker/packaging/Dockerfile.packaging-plugins-alma9 index 23bd219eb5..a3086c8181 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-alma9 +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-alma9 @@ -10,10 +10,22 @@ baseurl=https://repo.goreleaser.com/yum/ enabled=1 gpgcheck=0' | tee /etc/yum.repos.d/goreleaser.repo -dnf -y install gcc git gettext rpm-build dos2unix python3 epel-release nfpm-2.41.0 openssl-devel jq zstd selinux-policy-devel +dnf -y install gcc git gettext rpm-build dos2unix python3 epel-release nfpm-2.41.0 openssl-devel jq zstd selinux-policy-devel yum-utils +dnf config-manager --set-enabled crb dnf -y install perl-App-cpanminus perl-JSON cpanm App::FatPacker cpanm File::Copy::Recursive + +# For cpan libs +dnf install -y cpio libcurl-devel libssh-devel expat-devel libuuid-devel zeromq-devel libxml2-devel libffi-devel perl-DBI perl-Net-Pcap freetds freetds-devel perl-Module-Build-Tiny +cpanm Module::Build::Tiny +cpanm Module::Install +# Install fpm (ruby 3 is required) +dnf module reset -y ruby +dnf module enable -y ruby:3.1 +dnf install -y ruby ruby-devel +gem install fpm + dnf clean all EOF diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-bookworm b/.github/docker/packaging/Dockerfile.packaging-plugins-bookworm index 9b7f90b073..93a6127298 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-bookworm +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-bookworm @@ -55,6 +55,8 @@ apt-get install -y \ cpanm Module::Build::Tiny cpanm Module::Install +cpanm Crypt::OpenSSL::Guess + gem install fpm echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list @@ -64,3 +66,7 @@ apt-get install -y nfpm=2.41.0 apt-get clean EOF + +COPY .github/patch/fpm-deb.rb.diff /tmp/fpm-deb.rb.diff +# Patch to apply fpm fix for debian package generation while waiting for the official fix to be released (https://github.com/jordansissel/fpm/pull/1947). +RUN patch -i /tmp/fpm-deb.rb.diff $(find / -type f -name "deb.rb") && /bin/rm -rf /tmp/fpm-deb.rb.diff diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-bullseye b/.github/docker/packaging/Dockerfile.packaging-plugins-bullseye index 39881c897f..1c02a49cc7 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-bullseye +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-bullseye @@ -38,7 +38,6 @@ apt-get install -y \ libapp-fatpacker-perl \ libcurl4-openssl-dev \ libczmq-dev \ - libczmq-dev\ libfile-copy-recursive-perl \ libjson-perl \ libmodule-build-tiny-perl \ @@ -58,7 +57,6 @@ cpanm Crypt::OpenSSL::Guess gem install fpm - echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list apt-get update apt-get install -y nfpm=2.41.0 @@ -66,3 +64,7 @@ apt-get install -y nfpm=2.41.0 apt-get clean EOF + +COPY .github/patch/fpm-deb.rb.diff /tmp/fpm-deb.rb.diff +# Patch to apply fpm fix for debian package generation while waiting for the official fix to be released (https://github.com/jordansissel/fpm/pull/1947). +RUN patch -i /tmp/fpm-deb.rb.diff $(find / -type f -name "deb.rb") && /bin/rm -rf /tmp/fpm-deb.rb.diff diff --git a/.github/docker/packaging/Dockerfile.packaging-plugins-jammy b/.github/docker/packaging/Dockerfile.packaging-plugins-jammy index ddd4f993b8..96109a27a8 100644 --- a/.github/docker/packaging/Dockerfile.packaging-plugins-jammy +++ b/.github/docker/packaging/Dockerfile.packaging-plugins-jammy @@ -66,3 +66,7 @@ apt-get install -y nfpm=2.41.0 apt-get clean EOF + +COPY .github/patch/fpm-deb.rb.diff /tmp/fpm-deb.rb.diff +# Patch to apply fpm fix for debian package generation while waiting for the official fix to be released (https://github.com/jordansissel/fpm/pull/1947). +RUN patch -i /tmp/fpm-deb.rb.diff $(find / -type f -name "deb.rb") && /bin/rm -rf /tmp/fpm-deb.rb.diff diff --git a/.github/workflows/perl-cpan-libraries.yml b/.github/workflows/perl-cpan-libraries.yml index 1c543ce7dc..be2f2abf3a 100644 --- a/.github/workflows/perl-cpan-libraries.yml +++ b/.github/workflows/perl-cpan-libraries.yml @@ -92,6 +92,7 @@ jobs: - rpm_provides: "" - version: "" - spec_file: "" + - no-auto-depends: false - distrib: el8 package_extension: rpm image: packaging-plugins-alma8 @@ -112,6 +113,10 @@ jobs: rpm_provides: "perl(FFI::Platypus::Buffer) perl(FFI::Platypus::Memory)" rpm_dependencies: "perl(Capture::Tiny) perl(FFI::CheckLib) perl(File::Spec::Functions) perl(IPC::Cmd) perl(JSON::PP) perl(List::Util) perl(autodie) perl(constant) perl(parent)" no-auto-depends: true + - name: "Mojo::IOLoop::Signal" + rpm_dependencies: "perl-Mojolicious" + rpm_provides: "perl(Mojo::IOLoop::Signal)" + no-auto-depends: true - name: "Net::DHCP" rpm_provides: "perl(Net::DHCP::Constants) perl(Net::DHCP::Packet)" - name: "Net::SMTPS" @@ -131,11 +136,6 @@ jobs: - name: "ZMQ::LibZMQ4" version: "0.01" rpm_dependencies: "zeromq" - - name: "Mojo::IOLoop::Signal" - rpm_dependencies: "perl-Mojolicious" - rpm_provides: "perl(Mojo::IOLoop::Signal)" - no-auto-depends: true - name: package ${{ matrix.distrib }} ${{ matrix.name }} container: @@ -149,35 +149,25 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + name: Check if package already exists + id: check-package-existence run: | - yum install -y yum-utils epel-release git - yum config-manager --set-enabled crb || true # alma 9 - yum config-manager --set-enabled powertools || true # alma 8 - yum install -y cpanminus rpm-build libcurl-devel libssh-devel expat-devel gcc libuuid-devel zeromq-devel libxml2-devel libffi-devel perl-DBI perl-Net-Pcap freetds freetds-devel perl-Module-Build-Tiny - - dnf module reset -y ruby - dnf module enable -y ruby:3.1 - dnf install -y ruby ruby-devel - shell: bash - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - with: - repository: kduret/fpm - ref: fix-rpm-perl-dependency-name-unchanged - path: fpm - - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - name: Build and install fpm # waiting https://github.com/jordansissel/fpm/pull/2066 - run: | - dnf install -y bsdtar - cd fpm - gem install bundler - bundle install - make install + package_info=$(dnf provides 'perl(${{ matrix.name }})' 2>&1 | tr '[:upper:]' '[:lower:]' || true) + do_not_build="false" + if [[ ! $package_info =~ "no matches found" ]]; then + package_version=$(echo $package_info | grep -oP 'perl\(${{ matrix.name }}\) = \K[0-9]+\.[0-9]+') + if [[ -z "${{ matrix.version }}" || "$package_version" == "${{ matrix.version }}" ]]; then + echo "::warning::Package ${{ matrix.name }} already exists in the official ${{ matrix.distrib }} repository with the same version." + do_not_build="true" + else + echo "::warning::Package ${{ matrix.name }} exists in the official ${{ matrix.distrib }} repository with a different version." + do_not_build="false" + fi + fi + echo "do_not_build=$do_not_build" >> $GITHUB_OUTPUT shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file == '' }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file == '' }} run: | if [ -z "${{ matrix.version }}" ]; then PACKAGE_VERSION="" @@ -205,15 +195,20 @@ jobs: done fi - cpanm Module::Build::Tiny - cpanm Module::Install - export SYBASE="/usr" - fpm -s cpan -t ${{ matrix.package_extension }} --rpm-dist ${{ matrix.distrib }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES$PACKAGE_PROVIDES$PACKAGE_VERSION ${{ matrix.name }} + temp_file=$(mktemp) + created_package=$(fpm -s cpan -t ${{ matrix.package_extension }} --rpm-dist ${{ matrix.distrib }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES$PACKAGE_PROVIDES$PACKAGE_VERSION ${{ matrix.name }} | tee "$temp_file" | grep "Created package" | grep -oP '(?<=:path=>").*?(?=")') + # Check package name + if [ -z "$created_package" ]; then + echo "Error: fpm command failed" + exit 1 + fi + # Check rpm + rpm2cpio $created_package | cpio -t shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file != '' }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_distribs, matrix.distrib) && matrix.spec_file != '' }} run: | mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} @@ -222,7 +217,7 @@ jobs: cp -r ~/rpmbuild/RPMS/noarch/*.rpm . shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_distribs, matrix.distrib) }} name: Replace '::' with - in the feature path id: package-name run: | @@ -232,7 +227,7 @@ jobs: echo "name_with_dash=$name_with_dash" >> $GITHUB_OUTPUT shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_distribs, matrix.distrib) }} uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ steps.package-name.outputs.name_with_dash }} @@ -318,7 +313,6 @@ jobs: name: [ "ARGV::Struct", - "Authen::SCRAM::Client", "Config::AWS", "Convert::EBCDIC", "Crypt::Blowfish_PP", @@ -338,42 +332,51 @@ jobs: "Net::FTPSSL", "Net::HTTPTunnel", "Net::MQTT::Simple", - "Net::SMTP_auth", "Paws", "Statistics::Regression", - "WWW::Selenium", + "XS::Loader", "ZMQ::Constants", "ZMQ::LibZMQ4" ] include: - runner_name: ubuntu-24.04 - arch: amd64 - - build_distribs: "bullseye,bookworm,jammy" + - build_names: "bullseye-amd64,bookworm,jammy" - deb_dependencies: "" - rpm_provides: "" - version: "" - use_dh_make_perl: "true" - - spec_file: "" - - distrib: bullseye + - build_name: bullseye-amd64 + distrib: bullseye package_extension: deb image: packaging-plugins-bullseye - - distrib: bookworm + - build_name: bookworm + distrib: bookworm package_extension: deb image: packaging-plugins-bookworm - - distrib: jammy + - build_name: jammy + distrib: jammy package_extension: deb image: packaging-plugins-jammy - - distrib: bullseye + - build_name: bullseye-arm64 + distrib: bullseye package_extension: deb image: packaging-plugins-bullseye-arm64 arch: arm64 runner_name: ["self-hosted", "collect-arm64"] + - name: "Crypt::OpenSSL::AES" + use_dh_make_perl: "false" + deb_dependencies: "libexporter-tiny-perl libxs-install-perl" + no-auto-depends: true + build_names: "bullseye-amd64,bookworm,jammy,bullseye-arm64" - name: "Device::Modbus::RTU::Client" - build_distribs: "bookworm" + build_names: "bookworm" - name: "Device::Modbus::TCP::Client" - build_distribs: "bookworm" + build_names: "bookworm" + - name: "Digest::SHA1" + build_names: "jammy" - name: "Net::Amazon::Signature::V4" - build_distribs: ["bullseye", "jammy"] + build_names: ["bullseye-amd64", "jammy"] - name: "Net::MQTT::Simple" version: "1.29" - name: "Paws" @@ -381,12 +384,13 @@ jobs: deb_dependencies: "libmoose-perl libmoosex-classattribute-perl libjson-maybexs-perl liburl-encode-perl libargv-struct-perl libmoo-perl libtype-tiny-perl libdatastruct-flat-perl libmodule-find-perl libthrowable-perl liburi-template-perl libnet-amazon-signature-v4-perl" no-auto-depends: true - name: "Statistics::Regression" - build_distribs: "bullseye" + build_names: "bullseye-amd64" version: "0.53" - name: "ZMQ::LibZMQ4" use_dh_make_perl: "false" version: "0.01" deb_dependencies: "libzmq5" + build_names: "bullseye-amd64,bookworm,jammy,bullseye-arm64" name: package ${{ matrix.distrib }} ${{ matrix.arch }} ${{ matrix.name }} container: image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }}:latest @@ -395,43 +399,62 @@ jobs: password: ${{ secrets.HARBOR_CENTREON_PULL_TOKEN }} steps: - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ contains(matrix.build_names, matrix.build_name) }} uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ contains(matrix.build_names, matrix.build_name) }} name: Parse distrib name id: parse-distrib uses: ./.github/actions/parse-distrib with: distrib: ${{ matrix.distrib }} - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} - name: Get package version - id: package-version + - if: ${{ contains(matrix.build_names, matrix.build_name) }} + name: Get package infos + id: package-infos run: | apt-get update - apt-get install -y cpanminus - + cpan_info=$(cpanm --info ${{ matrix.name }}) if [ -z "${{ matrix.version }}" ]; then - CPAN_PACKAGE_VERSION=$(cpanm --info ${{ matrix.name }} | sed 's/\.tar\.gz$//' | sed 's/.*\-//' | sed 's/v//') - + CPAN_PACKAGE_VERSION=$(echo $cpan_info | sed 's/\.tar\.gz$//' | sed 's/.*\-//' | sed 's/v//') if [[ ! $CPAN_PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+ ]]; then echo "::error::Invalid version number: ${CPAN_PACKAGE_VERSION}" exit 1 fi - PACKAGE_VERSION="${CPAN_PACKAGE_VERSION}" else PACKAGE_VERSION="${{ matrix.version }}" fi - echo "package_version=$(echo $PACKAGE_VERSION)" >> $GITHUB_OUTPUT + CPAN_PACKAGE_NAME=$(echo $cpan_info | sed 's/.*\///g' | sed 's/-[0-9\.]*\.tar\.gz//g' | tr '[:upper:]' '[:lower:]') + PACKAGE_NAME="lib$CPAN_PACKAGE_NAME-perl" + echo "package_name=$(echo $PACKAGE_NAME)" >> $GITHUB_OUTPUT shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'false' }} + - if: ${{ contains(matrix.build_names, matrix.build_name) }} + name: Check if package already exists + id: check-package-existence run: | - apt-get install -y ruby libcurl4-openssl-dev libssh-dev uuid-dev libczmq-dev + package_info=$(apt-cache policy ${{ steps.package-infos.outputs.package_name }}) + if [[ -n $package_info && "${{ steps.package-infos.outputs.package_name }}" =~ "_" ]]; then + package_info=$(apt-cache policy $(echo ${{ steps.package-infos.outputs.package_name }} | sed 's/_//g')) + fi + do_not_build="false" + if [[ -n $package_info ]]; then + candidate_version=$(echo "$package_info" | grep 'Candidate:' | awk '{print $2}') + if [[ "$candidate_version" == "${{ steps.package-infos.outputs.package_version }}"* ]]; then + echo "::warning::Package ${{ steps.package-infos.outputs.package_name }} already exists in the official ${{ matrix.distrib }} repository with the same version." + do_not_build="true" + else + echo "::warning::Package ${{ steps.package-infos.outputs.package_name }} exists in the official ${{ matrix.distrib }} repository with a different version." + do_not_build="false" + fi + fi + echo "do_not_build=$do_not_build" >> $GITHUB_OUTPUT + shell: bash + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) && matrix.use_dh_make_perl == 'false' }} + run: | if [ -z "${{ matrix.deb_dependencies }}" ]; then PACKAGE_DEPENDENCIES="" else @@ -439,30 +462,35 @@ jobs: PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --depends $PACKAGE_DEPENDENCY" done fi - if [ ! -z "${{ matrix.no-auto-depends }}" ]; then PACKAGE_DEPENDENCIES="$PACKAGE_DEPENDENCIES --no-auto-depends" fi - cpanm Module::Build::Tiny - cpanm Module::Install - - gem install fpm - # Patch to apply fpm fix for debian package generation while waiting for the official fix to be released. - patch -i .github/patch/fpm-deb.rb.diff $(find / -type f -name "deb.rb") - - fpm -a native -s cpan -t ${{ matrix.package_extension }} --deb-dist ${{ matrix.distrib }} --iteration ${{ steps.parse-distrib.outputs.package_distrib_name }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES -v ${{ steps.package-version.outputs.package_version }} ${{ matrix.name }} + temp_file=$(mktemp) + created_package=$(fpm -s cpan -t ${{ matrix.package_extension }} --deb-dist ${{ matrix.distrib }} --iteration ${{ steps.parse-distrib.outputs.package_distrib_name }} --verbose --cpan-verbose --no-cpan-test$PACKAGE_DEPENDENCIES -v ${{ steps.package-infos.outputs.package_version }} ${{ matrix.name }} | tee "$temp_file" | grep "Created package" | grep -oP '(?<=:path=>").*?(?=")') || { echo "Error: fpm command failed"; exit 1; } + # Check package name + if [ -z "$created_package" ]; then + echo "Error: fpm command failed" + exit 1 + fi + # Check deb + dpkg-deb --contents $created_package || { echo "Error: dpkg-deb failed for package $created_package"; exit 1; } shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) && matrix.use_dh_make_perl == 'true' }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) && matrix.use_dh_make_perl == 'true' }} run: | - apt-get install -y libcurl4-openssl-dev dh-make-perl libssh-dev uuid-dev libczmq-dev libmodule-install-perl libmodule-build-tiny-perl - # module-build-tiny is required for Mojo::IOLoop::Signal build. - - DEB_BUILD_OPTIONS="nocheck nodocs notest" dh-make-perl make --dist ${{ matrix.distrib }} --build --version ${{ steps.package-version.outputs.package_version }}${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} --cpan ${{ matrix.name }} + temp_file=$(mktemp) + created_package=$(DEB_BUILD_OPTIONS="nocheck nodocs notest" dh-make-perl make --dist ${{ matrix.distrib }} --build --version ${{ steps.package-infos.outputs.package_version }}${{ steps.parse-distrib.outputs.package_distrib_separator }}${{ steps.parse-distrib.outputs.package_distrib_name }} --cpan ${{ matrix.name }} | tee "$temp_file" | grep "building package" | grep -oP "(?<=in '..\/).*.deb(?=')") || { echo "Error: dh-make-perl command failed"; exit 1; } + # Check package name + if [ -z "$created_package" ]; then + echo "Error: fpm command failed" + exit 1 + fi + # Check deb + dpkg-deb --contents $created_package || { echo "Error: dpkg-deb failed for package $created_package"; exit 1; } shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) }} name: Replace '::' with - in the feature path id: package-name run: | @@ -472,7 +500,7 @@ jobs: echo "name_with_dash=$name_with_dash" >> $GITHUB_OUTPUT shell: bash - - if: ${{ contains(matrix.build_distribs, matrix.distrib) }} + - if: ${{ steps.check-package-existence.outputs.do_not_build == 'false' && contains(matrix.build_names, matrix.build_name) }} uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: packages-${{ matrix.package_extension }}-${{ matrix.distrib }}-${{ matrix.arch }}-${{ steps.package-name.outputs.name_with_dash}} @@ -524,8 +552,167 @@ jobs: path: ./*.deb key: ${{ github.sha }}-${{ github.run_id }}-deb-${{ matrix.distrib }} - deliver-packages: + test-packages: needs: [get-environment, sign-rpm, download-and-cache-deb] + strategy: + fail-fast: false + matrix: + include: + - package_extension: rpm + image: almalinux:8 + distrib: el8 + arch: amd64 + runner_name: ubuntu-24.04 + - package_extension: rpm + image: almalinux:9 + distrib: el9 + arch: amd64 + runner_name: ubuntu-24.04 + - package_extension: deb + image: debian:bullseye + distrib: bullseye + arch: amd64 + runner_name: ubuntu-24.04 + - package_extension: deb + image: debian:bookworm + distrib: bookworm + arch: amd64 + runner_name: ubuntu-24.04 + - package_extension: deb + image: ubuntu:jammy + distrib: jammy + arch: amd64 + runner_name: ubuntu-24.04 + - package_extension: deb + image: debian:bullseye + distrib: bullseye + arch: arm64 + runner_name: ["self-hosted", "collect-arm64"] + + runs-on: ${{ matrix.runner_name }} + container: + image: ${{ matrix.image }} + + name: Test perl CPAN libs packages on ${{ matrix.package_extension }} ${{ matrix.distrib }} ${{ matrix.arch }} + steps: + - if: ${{ matrix.package_extension == 'rpm' }} + name: Install zstd, perl and Centreon repositories + run: | + dnf install -y zstd perl epel-release 'dnf-command(config-manager)' + dnf config-manager --set-enabled powertools || true # alma 8 + dnf config-manager --set-enabled crb || true # alma 9 + # Import Centreon GPG key + GPG_KEY_URL="https://yum-gpg.centreon.com/RPM-GPG-KEY-CES" + curl -sSL $GPG_KEY_URL -o RPM-GPG-KEY-CES + rpm --import RPM-GPG-KEY-CES + shell: bash + + - if: ${{ matrix.package_extension == 'deb' }} + name: Install zstd, perl and Centreon repositories + run: | + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get install -y zstd perl wget gpg apt-utils procps + wget -O- https://apt-key.centreon.com | gpg --dearmor | tee /etc/apt/trusted.gpg.d/centreon.gpg > /dev/null 2>&1 + # Avoid apt to clean packages cache directory + rm -f /etc/apt/apt.conf.d/docker-clean + apt-get update + shell: bash + + - name: Restore packages from cache + uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 + with: + path: ./*.${{ matrix.package_extension }} + key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }} + fail-on-cache-miss: true + + - if: ${{ matrix.package_extension == 'rpm' }} + name: Install packages + run: | + error_log="install_error_${{ matrix.distrib }}_${{ matrix.arch }}.log" + for package in ./*.rpm; do + echo "Installing package: $package" + # List dependencies, and remove version and comparison operators + dependencies=$(rpm -qpR $package | sed 's/ [0-9.-]*\(\s\|$\)/ /g' | sed 's/ [<>!=]*\(\s\|$\)/ /g') + for dependency in $dependencies; do + # Skip non-perl dependencies + if [[ $dependency != perl* ]]; then + continue + else + echo "Check dependency: $dependency" + # Update the dependency name to match the package name + dependency=$(echo $dependency | sed 's/(/-/g' | sed 's/)//g' | sed 's/::/-/g') + fi + # If the dependency has been built in the same workflow, install it + if [[ -n $(find . -maxdepth 1 -regex "\.\/$dependency-[0-9v].*\.rpm") ]]; then + echo "Installing dependency: $dependency" + error_output=$(dnf install -y ./$dependency*.rpm 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; } + fi + done + # Install package, then uninstall it with all his dependencies + echo "Package installation..." + error_output=$(dnf install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; } + echo "Package installation done." + echo "Package uninstallation..." + error_output=$(dnf autoremove --setopt=keepcache=True -y $(echo $package | sed 's/_[0-9].*\.rpm//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; } + echo "Package uninstallation done." + done + # If the file error_log exists and is not empty, the workflow is in error + if [[ -s $error_log ]]; then + cat $error_log + exit 1 + fi + shell: bash + + - if: ${{ matrix.package_extension == 'deb' }} + name: Install packages + run: | + error_log="install_error_${{ matrix.distrib }}_${{ matrix.arch }}.log" + for package in ./*.deb; do + # If the debian package name ends with amd64 or arm64, we only install it if the tested architecture is the same, otherwise we skip it + if [[ $package == *amd64.deb && ${{ matrix.arch }} != "amd64" || $package == *arm64.deb && ${{ matrix.arch }} != "arm64" ]]; then + continue + fi + echo "Installing package: $package" + # List dependencies + dependencies=$(dpkg-deb -I $package | grep Depends | sed 's/Depends: //' | sed 's/,//g' | sed 's/(\(.*\)//g') || { echo "$error_output" >> $error_log; echo "Error while listing dependencies of the package $package" >> $error_log; true; } + for dependency in $dependencies; do + # If the dependency exists in the Debian repository, don't check the local dependencies + dependency_info=$(apt-cache policy $dependency) + if [[ -n $dependency_info ]]; then + echo "Dependency $dependency exists in debian repository." + else + # If the dependency has been built in the same workflow, install it + for dependency_package in $(find . -maxdepth 1 -regex "\.\/${dependency}_[0-9].*all\.deb" -o -regex "\.\/${dependency}_[0-9].*${{ matrix.arch }}\.deb"); do + echo "Installing dependency: $dependency_package" + error_output=$(apt-get install -y ./$dependency_package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the dependency $dependency" >> $error_log; true; } + done + fi + done + # Install package, then uninstall it with all his dependencies + echo "Package installation..." + error_output=$(apt-get install -y $package 2>&1) || { echo "$error_output" >> $error_log; echo "Error during installation of the package $package" >> $error_log; true; } + echo "Package installation done." + echo "Package uninstallation..." + error_output=$(apt-get autoremove -y --purge $(echo $package | sed 's/_[0-9].*\.deb//' | sed 's/.\///') 2>&1) || { echo "$error_output" >> $error_log; echo "Error during autoremove of the package $package" >> $error_log; true; } + echo "Package uninstallation done." + done + # If the file error_log exists and is not empty, the workflow is in error + if [[ -s $error_log ]]; then + cat $error_log + exit 1 + fi + shell: bash + + - name: Upload error log + if: failure() + uses: actions/upload-artifact@v4 + with: + name: install_error_log_${{ matrix.distrib }}-${{ matrix.arch }} + path: install_error_${{ matrix.distrib }}_${{ matrix.arch }}.log + + deliver-packages: + needs: [get-environment, sign-rpm, download-and-cache-deb, test-packages] if: | needs.get-environment.outputs.skip_workflow == 'false' && (contains(fromJson('["testing", "unstable"]'), needs.get-environment.outputs.stability) || ( needs.get-environment.outputs.stability == 'stable' && github.event_name != 'workflow_dispatch')) && From 900717092fee08dfcb18791b0e6b1f532c9e1274 Mon Sep 17 00:00:00 2001 From: sfarouq-ext <116093375+sfarouq-ext@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:50:19 +0100 Subject: [PATCH 07/20] feat(cyberoam): Add modes ha-status, license, list-vpns & vpn-status (#5335) Add new mode for cyberoam equipment Refs: CTOR-102 Co-authored-by: Roman Morandell <46994680+rmorandell-pgum@users.noreply.github.com> Co-authored-by: omercier --- .gitignore | 2 + .../deb.json | 5 +- .../rpm.json | 5 +- src/network/cyberoam/snmp/mode/hastatus.pm | 191 +++ src/network/cyberoam/snmp/mode/license.pm | 294 ++++ src/network/cyberoam/snmp/mode/listvpns.pm | 232 ++++ src/network/cyberoam/snmp/mode/vpnstatus.pm | 386 ++++++ src/network/cyberoam/snmp/plugin.pm | 18 +- tests/network/cyberoam/snmp/ha-status.robot | 32 + tests/network/cyberoam/snmp/interfaces.robot | 34 + tests/network/cyberoam/snmp/license.robot | 34 + .../cyberoam/snmp/list-interfaces.robot | 40 + tests/network/cyberoam/snmp/list-vpns.robot | 32 + tests/network/cyberoam/snmp/memory.robot | 34 + tests/network/cyberoam/snmp/requests.robot | 39 + tests/network/cyberoam/snmp/services.robot | 32 + .../cyberoam/snmp/slim_sophos.snmpwalk | 1231 +++++++++++++++++ .../cyberoam/snmp/slim_sophos_no_ha.snmpwalk | 1231 +++++++++++++++++ tests/network/cyberoam/snmp/storage.robot | 30 + tests/network/cyberoam/snmp/vpn-status.robot | 40 + tests/resources/spellcheck/stopwords.txt | 9 +- 21 files changed, 3936 insertions(+), 15 deletions(-) create mode 100644 src/network/cyberoam/snmp/mode/hastatus.pm create mode 100644 src/network/cyberoam/snmp/mode/license.pm create mode 100644 src/network/cyberoam/snmp/mode/listvpns.pm create mode 100644 src/network/cyberoam/snmp/mode/vpnstatus.pm create mode 100644 tests/network/cyberoam/snmp/ha-status.robot create mode 100644 tests/network/cyberoam/snmp/interfaces.robot create mode 100644 tests/network/cyberoam/snmp/license.robot create mode 100644 tests/network/cyberoam/snmp/list-interfaces.robot create mode 100644 tests/network/cyberoam/snmp/list-vpns.robot create mode 100644 tests/network/cyberoam/snmp/memory.robot create mode 100644 tests/network/cyberoam/snmp/requests.robot create mode 100644 tests/network/cyberoam/snmp/services.robot create mode 100644 tests/network/cyberoam/snmp/slim_sophos.snmpwalk create mode 100644 tests/network/cyberoam/snmp/slim_sophos_no_ha.snmpwalk create mode 100644 tests/network/cyberoam/snmp/storage.robot create mode 100644 tests/network/cyberoam/snmp/vpn-status.robot diff --git a/.gitignore b/.gitignore index 21c3e1f4b2..832e6bb1b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ log.html output.xml report.html +.editorconfig +.idea diff --git a/packaging/centreon-plugin-Network-Cyberoam-Snmp/deb.json b/packaging/centreon-plugin-Network-Cyberoam-Snmp/deb.json index 663aaacebf..3eb4dc6962 100644 --- a/packaging/centreon-plugin-Network-Cyberoam-Snmp/deb.json +++ b/packaging/centreon-plugin-Network-Cyberoam-Snmp/deb.json @@ -1,5 +1,6 @@ { "dependencies": [ - "libsnmp-perl" + "libsnmp-perl", + "libdatetime-format-strptime-perl" ] -} \ No newline at end of file +} diff --git a/packaging/centreon-plugin-Network-Cyberoam-Snmp/rpm.json b/packaging/centreon-plugin-Network-Cyberoam-Snmp/rpm.json index 418a331fce..84e1081696 100644 --- a/packaging/centreon-plugin-Network-Cyberoam-Snmp/rpm.json +++ b/packaging/centreon-plugin-Network-Cyberoam-Snmp/rpm.json @@ -1,5 +1,6 @@ { "dependencies": [ - "perl(SNMP)" + "perl(SNMP)", + "perl(DateTime::Format::Strptime)" ] -} \ No newline at end of file +} diff --git a/src/network/cyberoam/snmp/mode/hastatus.pm b/src/network/cyberoam/snmp/mode/hastatus.pm new file mode 100644 index 0000000000..c1bd9d9c43 --- /dev/null +++ b/src/network/cyberoam/snmp/mode/hastatus.pm @@ -0,0 +1,191 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::cyberoam::snmp::mode::hastatus; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub custom_status_output { + my ($self, %options) = @_; + + my $msg = "HA is '" . $self->{result_values}->{hastatus} . "' - "; + $msg .= "Current HA State: '" . $self->{result_values}->{hastate} . "' - "; + $msg .= "Peer HA State: '" . $self->{result_values}->{peer_hastate} . "' - "; + $msg .= "HA Port: '" . $self->{result_values}->{ha_port} . "' - "; + $msg .= "HA IP: '" . $self->{result_values}->{ha_ip} . "' - "; + $msg .= "Peer IP: '" . $self->{result_values}->{ha_peer_ip} . "'"; + return $msg; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'ha', type => 0 }, + ]; + + $self->{maps_counters}->{ha} = [ + { + label => 'status', + type => 2, + set => { + key_values => [ + { name => 'hastate' }, + { name => 'hastatus' }, + { name => 'peer_hastate' }, + { name => 'ha_port' }, + { name => 'ha_ip' }, + { name => 'ha_peer_ip' } + ], + default_critical => '%{hastatus} =~ /^enabled$/ && %{hastate} =~ /^faulty$/', + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub {return 0;}, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'no-ha-status:s' => { name => 'no_ha_status', default => 'UNKNOWN' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + $self->change_macros(macros => [ 'warning_status', 'critical_status' ]); +} +# snmptranslate -Td .1.3.6.1.4.1.2604.5.1.4.1.0 +# SFOS-FIREWALL-MIB::sfosHAStatus.0 +# sfosHAStatus OBJECT-TYPE +# -- FROM SFOS-FIREWALL-MIB +# -- TEXTUAL CONVENTION HaStatusType +# SYNTAX INTEGER {disabled(0), enabled(1)} +# MAX-ACCESS read-only +# STATUS current +# DESCRIPTION " " +# ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) sophosMIB(2604) sfosXGMIB(5) sfosXGMIBObjects(1) sfosXGHAStats(4) sfosHAStatus(1) 0 } + +my %map_status = ( + 0 => 'disabled', + 1 => 'enabled' +); + +# snmptranslate -Td .1.3.6.1.4.1.2604.5.1.4.4.0 +# SFOS-FIREWALL-MIB::sfosDeviceCurrentHAState.0 +# sfosDeviceCurrentHAState OBJECT-TYPE +# -- FROM SFOS-FIREWALL-MIB +# -- TEXTUAL CONVENTION HaState +# SYNTAX INTEGER {notapplicable(0), auxiliary(1), standAlone(2), primary(3), faulty(4), ready(5)} +# MAX-ACCESS read-only +# STATUS current +# DESCRIPTION "HA State of current Device" +# ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) sophosMIB(2604) sfosXGMIB(5) sfosXGMIBObjects(1) sfosXGHAStats(4) sfosDeviceCurrentHAState(4) 0 } + +my %map_state = ( + 0 => 'notapplicable', + 1 => 'auxiliary', + 2 => 'standAlone', + 3 => 'primary', + 4 => 'faulty', + 5 => 'ready' +); + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_ha_status = '.1.3.6.1.4.1.2604.5.1.4.1.0'; + my $oid_ha_state = '.1.3.6.1.4.1.2604.5.1.4.4.0'; + my $oid_peer_ha_state = '.1.3.6.1.4.1.2604.5.1.4.5.0'; + my $oid_ha_port = '.1.3.6.1.4.1.2604.5.1.4.8.0'; + my $oid_ha_ip = '.1.3.6.1.4.1.2604.5.1.4.9.0'; + my $oid_ha_peer_ip = '.1.3.6.1.4.1.2604.5.1.4.10.0'; + + $self->{ha} = {}; + + my $result = $options{snmp}->get_leef( + oids => + [ $oid_ha_status, $oid_ha_state, $oid_peer_ha_state, $oid_ha_port, $oid_ha_ip, $oid_ha_peer_ip ], + nothing_quit => + 1 + ); + + if ($result->{$oid_ha_status} == 0 or $result->{$oid_ha_state} == 0) { + $self->{output}->output_add( + severity => $self->{option_results}->{no_ha_status}, + short_msg => sprintf("Looks like HA is not enabled, or not applicable .."), + long_msg => sprintf( + "HA Enabled : '%u' HA Status : '%s'", + $map_status{$result->{$oid_ha_status}}, $map_status{$result->{$oid_ha_state}} + ), + ); + $self->{output}->display(); + $self->{output}->exit(); + } + $self->{ha} = { + hastatus => $map_status{$result->{$oid_ha_status}}, + hastate => $map_state{$result->{$oid_ha_state}}, + peer_hastate => $map_state{$result->{$oid_peer_ha_state}}, + ha_port => $result->{$oid_ha_port}, + ha_ip => $result->{$oid_ha_ip}, + ha_peer_ip => $result->{$oid_ha_peer_ip} + }; +} + +1; + +__END__ + +=head1 MODE + +Check current HA-State. +HA-States: notapplicable, auxiliary, standAlone, primary, faulty, ready + +=over 8 + +=item B<--warning-status> + +Trigger warning on %{hastatus} or %{hastate} or %{peer_hastate} values. + +=item B<--critical-status> + +Trigger critical on %{hastatus} or %{hastate} or %{peer_hastate} values. +(default: '%{hastatus} =~ /^enabled$/ && %{hastate} =~ /^faulty$/'). + +=item B<--no-ha-status> + +Status to return when HA not running or not installed (default: 'UNKNOWN'). + +=back + +=cut diff --git a/src/network/cyberoam/snmp/mode/license.pm b/src/network/cyberoam/snmp/mode/license.pm new file mode 100644 index 0000000000..75db24c8c2 --- /dev/null +++ b/src/network/cyberoam/snmp/mode/license.pm @@ -0,0 +1,294 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::cyberoam::snmp::mode::license; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); +use centreon::plugins::misc; +use POSIX; +use Time::Local; +use DateTime::Format::Strptime; + +my $unitdiv = { s => 1, w => 604800, d => 86400, h => 3600, m => 60 }; +my $unitdiv_long = { s => 'seconds', w => 'weeks', d => 'days', h => 'hours', m => 'minutes' }; + +sub custom_expires_perfdata { + my ($self, %options) = @_; + + $self->{output}->perfdata_add( + nlabel => $self->{nlabel} . '.' . $unitdiv_long->{ $self->{instance_mode}->{option_results}->{unit} }, + unit => $self->{instance_mode}->{option_results}->{unit}, + instances => $self->{result_values}->{name}, + value => floor($self->{result_values}->{expires_seconds} / $unitdiv->{ $self->{instance_mode}->{option_results}->{unit} }), + warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning-' . $self->{thlabel}), + critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical-' . $self->{thlabel}), + min => 0 + ); +} + +sub custom_expires_threshold { + my ($self, %options) = @_; + + return $self->{perfdata}->threshold_check( + value => + floor($self->{result_values}->{expires_seconds} / $unitdiv->{ $self->{instance_mode}->{option_results}->{unit} }), + threshold => + [ + { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-' . $self->{thlabel}, exit_litteral => 'warning' }, + { label => 'unknown-' . $self->{thlabel}, exit_litteral => 'unknown' } + ] + ); +} + +sub custom_status_output { + my ($self, %options) = @_; + + return 'status: ' . $self->{result_values}->{status} . ', expires in ' . $self->{result_values}->{expires_human}; +} + +sub prefix_license_output { + my ($self, %options) = @_; + + return sprintf( + "License '%s' ", + $options{instance_value}->{name} + ); +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { + name => 'licenses', + type => 1, + cb_prefix_output => 'prefix_license_output', + message_multiple => 'All licenses are ok', + skipped_code => { -10 => 1 } + } + ]; + + $self->{maps_counters}->{licenses} = [ + { + label => 'status', + type => 2, + critical_default => '%{status} =~ /expired/i', + set => { + key_values => [ { name => 'name' }, { name => 'status' }, { name => 'expires_human' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub {return 0;}, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { + label => 'expires', + type => 1, + nlabel => 'license.expires', + set => { + key_values => [ { name => 'expires_seconds' }, { name => 'expires_human' }, { name => 'name' } ], + output_template => 'expires in %s', + output_use => 'expires_human', + closure_custom_perfdata => $self->can('custom_expires_perfdata'), + closure_custom_threshold_check => $self->can('custom_expires_threshold') + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' }, + 'unit:s' => { name => 'unit', default => 's' } + }); + + return $self; +} + +my %map_lic_status = ( + 0 => 'none', + 1 => 'evaluating', + 2 => 'notsubscribed', + 3 => 'subscribed', + 4 => 'expired', + 5 => 'deactivated' +); + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if ($self->{option_results}->{unit} eq '' || !defined($unitdiv->{$self->{option_results}->{unit}})) { + $self->{option_results}->{unit} = 's'; + } +} + +sub add_license { + my ($self, %options) = @_; + + return if (!defined($options{status})); + return if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $options{name} !~ /$self->{option_results}->{filter_name}/); + + $self->{licenses}->{ $options{name} } = { + name => $options{name}, + status => $options{status}, + expires => $options{expires} + }; + + if (defined($options{expires}) && $options{expires} ne "fail" && $options{status} =~ /subscribed|expired|evaluating/i) { + my $strp = DateTime::Format::Strptime->new( + pattern => '%b %d %Y', + locale => 'en_US', + ); + + my $dt = $strp->parse_datetime($options{expires}); + + $self->{licenses}->{ $options{name} }->{expires_seconds} = $dt->epoch - time(); + $self->{licenses}->{ $options{name} }->{expires_seconds} = 0 if ($self->{licenses}->{ $options{name} }->{expires_seconds} < 0); + $self->{licenses}->{ $options{name} }->{expires_human} = centreon::plugins::misc::change_seconds( + value => $self->{licenses}->{ $options{name} }->{expires_seconds} + ); + } else { + $self->{licenses}->{ $options{name} }->{expires_human} = "n.d."; + } +} + +sub manage_selection { + my ($self, %options) = @_; + + my $oid_base_fw_lic_status = '.1.3.6.1.4.1.2604.5.1.5.1.1.0';# sfosBaseFWLicRegStatus + my $oid_base_fw_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.1.2.0';# sfosBaseFWLicExpiryDate + my $oid_net_protection_lic_status = '.1.3.6.1.4.1.2604.5.1.5.2.1.0';# sfosNetProtectionLicRegStatus + my $oid_net_protection_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.2.2.0';# sfosNetProtectionLicExpiryDate + my $oid_web_protection_lic_status = '.1.3.6.1.4.1.2604.5.1.5.3.1.0';# sfosWebProtectionLicRegStatus + my $oid_web_protection_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.3.2.0';# sfosWebProtectionLicExpiryDate + my $oid_mail_protection_lic_status = '.1.3.6.1.4.1.2604.5.1.5.4.1.0';# sfosMailProtectionLicRegStatus + my $oid_mail_protection_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.4.2.0';# sfosMailProtectionLicExpiryDate + my $oid_web_server_protection_lic_status = '.1.3.6.1.4.1.2604.5.1.5.5.1';# sfosWebServerProtectionLicRegStatus + my $oid_web_server_protection_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.5.2';# sfosWebServerProtectionLicExpiryDate + my $oid_sand_storm_lic_status = '.1.3.6.1.4.1.2604.5.1.5.6.1';# sfosSandstromLicRegStatus + my $oid_sand_storm_protection_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.6.2';# sfosSandstromLicExpiryDate + my $oid_enhanced_support_lic_status = '.1.3.6.1.4.1.2604.5.1.5.7.1';# sfosEnhancedSupportLicRegStatus + my $oid_enhanced_support_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.7.2';# sfosEnhancedSupportLicExpiryDate + my $oid_enhanced_plus_lic_status = '.1.3.6.1.4.1.2604.5.1.5.8.1';# sfosEnhancedPlusLicRegStatus + my $oid_enhanced_plus_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.8.2';# sfosEnhancedPlusLicExpiryDate + my $oid_central_orchestra_lic_status = '.1.3.6.1.4.1.2604.5.1.5.9.1';# sfosCentralOrchestrationLicRegStatus + my $oid_central_orchestra_lic_expiry_date = '.1.3.6.1.4.1.2604.5.1.5.9.2';# sfosCentralOrchestrationLicExpiryDate + + my $result = $options{snmp}->get_leef( + oids => [ + $oid_base_fw_lic_status, + $oid_base_fw_lic_expiry_date, + $oid_net_protection_lic_status, + $oid_net_protection_lic_expiry_date, + $oid_web_protection_lic_status, + $oid_web_protection_lic_expiry_date, + $oid_mail_protection_lic_status, + $oid_mail_protection_lic_expiry_date, + # $oid_web_server_protection_lic_status, + # $oid_web_server_protection_lic_expiry_date, + # $oid_sand_storm_lic_status, + # $oid_sand_storm_protection_lic_expiry_date, + # $oid_enhanced_support_lic_status, + # $oid_enhanced_support_lic_expiry_date, + # $oid_enhanced_plus_lic_status, + # $oid_mail_protection_lic_status, + # $oid_enhanced_plus_lic_expiry_date, + # $oid_central_orchestra_lic_status, + # $oid_central_orchestra_lic_expiry_date + ], + nothing_quit => 1 + ); + + $self->{licenses} = {}; + $self->add_license( + name => 'base_fw', + status => $map_lic_status{$result->{$oid_base_fw_lic_status}}, + expires => $result->{$oid_base_fw_lic_expiry_date} + ); + $self->add_license( + name => 'net_protection', + status => $map_lic_status{$result->{$oid_net_protection_lic_status}}, + expires => $result->{$oid_net_protection_lic_expiry_date} + ); + $self->add_license( + name => 'web_protection', + status => $map_lic_status{$result->{$oid_web_protection_lic_status}}, + expires => $result->{$oid_web_protection_lic_expiry_date} + ); + $self->add_license( + name => 'mail_protection', + status => $map_lic_status{$result->{$oid_mail_protection_lic_status}}, + expires => $result->{$oid_mail_protection_lic_expiry_date} + ); +} + +1; + +__END__ + +=head1 MODE + +Check license (SFOS-FIREWALL-MIB). + +=over 8 + +=item B<--filter-name> + +Filter licenses by name (can be a regexp). + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{name}, %{status}. + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: '%{status} =~ /expired/i'). +You can use the following variables: %{name}, %{status}. + +=item B<--unit> + +Select the time unit for the expiration thresholds. May be 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days, 'w' for weeks. Default is seconds. + +=item B<--warning-expires> + +Threshold. +Example: C<--unit=w --warning-expires=2:> will result in a WARNING state when one of the licenses expires in less than +two weeks. + +=item B<--critical-expires> + +Threshold. +Example: C<--unit=w --critical-expires=2:> will result in a CRITICAL state when one of the licenses expires in less than +two weeks. + +=back + +=cut diff --git a/src/network/cyberoam/snmp/mode/listvpns.pm b/src/network/cyberoam/snmp/mode/listvpns.pm new file mode 100644 index 0000000000..eafbd49830 --- /dev/null +++ b/src/network/cyberoam/snmp/mode/listvpns.pm @@ -0,0 +1,232 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::cyberoam::snmp::mode::listvpns; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { + "filter-name:s" => { name => 'filter_name' }, + "filter-connection-status:s" => { name => 'filter_connection_status' }, + "filter-vpn-activated:s" => { name => 'filter_vpn_activated' }, + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $map_connection_status = { + 0 => 'inactive', + 1 => 'active', + 2 => 'partially-active' + }; + + my $map_vpn_activated = { + 0 => 'inactive', + 1 => 'active' + }; + + my $map_connection_type = { + 1 => 'host-to-host', + 2 => 'site-to-site', + 3 => 'tunnel-interface' + }; + + my $mapping = { + name => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2' },# sfosIPSecVpnConnName + policy => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4' },# sfosIPSecVpnPolicyUsed + description => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3' },# sfosIPSecVpnConnDes + connection_mode => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5' },# sfosIPSecVpnConnMode + connection_type => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6', map => $map_connection_type },# sfosIPSecVpnConnType + connection_status => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9', map => $map_connection_status },# sfosIPSecVpnConnStatus + activated => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10', map => $map_vpn_activated }# sfosIPSecVpnActivated + }; + # parent oid for all the mapping usage + my $oid_bsnAPEntry = '.1.3.6.1.4.1.2604.5.1.6.1.1.1'; + + my $snmp_result = $options{snmp}->get_table( + oid => $oid_bsnAPEntry, + start => $mapping->{name}->{oid},# First oid of the mapping => here : 2 + end => $mapping->{activated}->{oid}# Last oid of the mapping => here : 23 + ); + + my $results = {}; + # Iterate for all oids catch in snmp result above + foreach my $oid (keys %$snmp_result) { + next if ($oid !~ /^$mapping->{name}->{oid}\.(.*)$/); + my $oid_path = $1; + + my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $oid_path); + + if (!defined($result->{name}) || $result->{name} eq '') { + $self->{output}->output_add(long_msg => + "skipping VPN '$oid_path': cannot get a name. please set it.", + debug => + 1); + next; + } + + if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $result->{name} !~ /$self->{option_results}->{filter_name}/) { + $self->{output}->output_add(long_msg => + "skipping '" . $result->{name} . "': no matching name filter.", + debug => + 1); + next; + } + + if (defined($self->{option_results}->{filter_connection_status}) && $self->{option_results}->{filter_connection_status} ne '' && + $result->{connection_status} !~ /$self->{option_results}->{filter_connection_status}/) { + $self->{output}->output_add(long_msg => + "skipping '" . $result->{connection_status} . "': no matching connection_status filter.", + debug => + 1); + next; + } + + if (defined($self->{option_results}->{filter_vpn_activated}) && $self->{option_results}->{filter_vpn_activated} ne '' && + $result->{activated} !~ /$self->{option_results}->{filter_vpn_activated}/) { + $self->{output}->output_add(long_msg => + "skipping '" . $result->{activated} . "': no matching activated filter.", + debug => + 1); + next; + } + + $results->{$oid_path} = { + name => $result->{name}, + policy => $result->{policy}, + description => $result->{description}, + connection_mode => $result->{connection_mode}, + connection_type => $result->{connection_type}, + connection_status => $result->{connection_status}, + activated => $result->{activated} + }; + } + + return $results; +} + +sub run { + my ($self, %options) = @_; + + my $results = $self->manage_selection(snmp => $options{snmp}); + foreach my $oid_path (sort keys %$results) { + $self->{output}->output_add( + long_msg => sprintf( + '[oid_path: %s] [name: %s] [policy: %s] [description: %s] [connection_mode: %s] [connection_type: %s] [connection_status: %s] [activated: %s]', + $oid_path, + $results->{$oid_path}->{name}, + $results->{$oid_path}->{policy}, + $results->{$oid_path}->{description}, + $results->{$oid_path}->{connection_mode}, + $results->{$oid_path}->{connection_type}, + $results->{$oid_path}->{connection_status}, + $results->{$oid_path}->{activated} + ) + ); + } + + $self->{output}->output_add( + severity => 'OK', + short_msg => 'List vpn' + ); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => + [ 'name', 'policy', 'description', 'connection_mode', 'connection_type', 'connection_status', 'activated' ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $results = $self->manage_selection(snmp => $options{snmp}); + foreach my $oid_path (sort keys %$results) { + $self->{output}->add_disco_entry( + name => + $results->{$oid_path}->{name}, + policy => + $results->{$oid_path}->{policy}, + description => + $results->{$oid_path}->{description}, + connection_mode => + $results->{$oid_path}->{connection_mode}, + connection_type => + $results->{$oid_path}->{connection_type}, + connection_status => + $results->{$oid_path}->{connection_status}, + activated => + $results->{$oid_path}->{activated} + ); + } +} + +1; + +__END__ + +=head1 MODE + +List VPN. + +=over 8 + +=item B<--filter-name> + +Display VPN matching the filter. + +=item B<--filter-connection-status> + +Display VPN matching the filter. + +=item B<--filter-vpn-activated> + +Display VPN matching the filter. + +=back + +=cut diff --git a/src/network/cyberoam/snmp/mode/vpnstatus.pm b/src/network/cyberoam/snmp/mode/vpnstatus.pm new file mode 100644 index 0000000000..b5e1277ba5 --- /dev/null +++ b/src/network/cyberoam/snmp/mode/vpnstatus.pm @@ -0,0 +1,386 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::cyberoam::snmp::mode::vpnstatus; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub custom_status_output { + my ($self, %options) = @_; + + my $msg = 'status: ' . $self->{result_values}->{connection_status}; + return $msg; +} + +sub prefix_global_output { + my ($self, %options) = @_; + + return 'VPN '; +} + +sub vpn_long_output { + my ($self, %options) = @_; + + return "checking vpn '" . $options{instance_value}->{display} . "'"; +} + +sub prefix_vpn_output { + my ($self, %options) = @_; + + my $output = "VPN '" . $options{instance_value}->{display} . "' "; + + if (defined(($options{instance_value}->{vpn_global}->{description})) + && ($options{instance_value}->{vpn_global}->{description})) { + $output .= "($options{instance_value}->{vpn_global}->{description}) "; + } + + return $output; +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { + name => 'global', + type => 0, + cb_prefix_output => 'prefix_global_output' + }, + { + name => 'vpn', + type => 3, + cb_prefix_output => 'prefix_vpn_output', + cb_long_output => 'vpn_long_output', + indent_long_output => ' ', + message_multiple => 'All VPNs are ok', + group => [ + { name => 'vpn_global', type => 0 } + ] + } + ]; + + $self->{maps_counters}->{global} = [ + { + label => 'total', + type => 1, + nlabel => 'vpn.total.count', + set => { + key_values => [ { name => 'total' } ], + output_template => 'total: %s', + perfdatas => [ + { label => 'total', template => '%s', min => 0 } + ] + } + }, + { + label => 'total-inactive', + type => 1, + nlabel => 'vpn.inactive.count', + set => { + key_values => [ { name => 'inactive' } ], + output_template => 'inactive: %s', + perfdatas => [ + { label => 'total_inactive', template => '%s', min => 0 } + ] + } + }, + { + label => 'total-active', + type => 1, + nlabel => 'vpn.active.count', + set => { + key_values => [ { name => 'active' } ], + output_template => 'active: %s', + perfdatas => [ + { label => 'total_active', template => '%s', min => 0 } + ] + } + }, + { + label => 'total-partially-active', + type => 1, + nlabel => 'vpn.partiallyactive.count', + set => { + key_values => [ { name => 'partiallyActive' } ], + output_template => 'partially active: %s', + perfdatas => [ + { label => 'total_partially_active', template => '%s', min => 0 } + ] + } + } + ]; + + $self->{maps_counters}->{vpn_global} = [ + { + label => 'status', + type => 2, + critical_default => '%{connection_status} =~ /inactive/', + warning_default => '%{connection_status} =~ /partiallyActive/', + set => { + key_values => [ { name => 'connection_status' }, { name => 'display' }, { name => 'description' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub {return 0;}, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => { + "filter-name:s" => { name => 'filter_name' }, + "filter-vpn-activated:s" => { name => 'filter_vpn_activated' }, + "filter-connection-mode:s" => { name => 'filter_connection_mode' }, + "filter-connection-type:s" => { name => 'filter_connection_type' } + }); + + return $self; +} + +# SFOS-FIREWALL-MIB::sfosIPSecVpnConnStatus +# sfosIPSecVpnConnStatus OBJECT-TYPE +# -- FROM SFOS-FIREWALL-MIB +# -- TEXTUAL CONVENTION IPSecVPNConnectionStatus +# SYNTAX INTEGER {inactive(0), active(1), partially-active(2)} +# MAX-ACCESS read-only +# STATUS current +# DESCRIPTION "Connection status of IPsec tunnel" +# ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) sophosMIB(2604) sfosXGMIB(5) sfosXGMIBObjects(1) sfosXGTunnelInfo(6) sfosVPNInfo(1) sfosIPSecVPNConnInfo(1) sfosIPSecVpnTunnelTable(1) sfosIPSecVpnTunnelEntry(1) 9 } +my $map_connection_status = { + 0 => 'inactive', + 1 => 'active', + 2 => 'partiallyActive' +}; + +# SFOS-FIREWALL-MIB::sfosIPSecVpnActivated +# sfosIPSecVpnActivated OBJECT-TYPE +# -- FROM SFOS-FIREWALL-MIB +# -- TEXTUAL CONVENTION IPSecVPNActivationStatus +# SYNTAX INTEGER {inactive(0), active(1)} +# MAX-ACCESS read-only +# STATUS current +# DESCRIPTION "Activation status of IPsec tunnel" +# ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) sophosMIB(2604) sfosXGMIB(5) sfosXGMIBObjects(1) sfosXGTunnelInfo(6) sfosVPNInfo(1) sfosIPSecVPNConnInfo(1) sfosIPSecVpnTunnelTable(1) sfosIPSecVpnTunnelEntry(1) 10 } +my $map_vpn_activated = { + 0 => 'inactive', + 1 => 'active' +}; + +# SFOS-FIREWALL-MIB::sfosIPSecVpnConnType +# sfosIPSecVpnConnType OBJECT-TYPE +# -- FROM SFOS-FIREWALL-MIB +# -- TEXTUAL CONVENTION IPSecVPNConnectionType +# SYNTAX INTEGER {host-to-host(1), site-to-site(2), tunnel-interface(3)} +# MAX-ACCESS read-only +# STATUS current +# DESCRIPTION "Connection Type of IPsec Tunnel" +# ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) sophosMIB(2604) sfosXGMIB(5) sfosXGMIBObjects(1) sfosXGTunnelInfo(6) sfosVPNInfo(1) sfosIPSecVPNConnInfo(1) sfosIPSecVpnTunnelTable(1) sfosIPSecVpnTunnelEntry(1) 6 } +my $map_connection_type = { + 1 => 'host-to-host', + 2 => 'site-to-site', + 3 => 'tunnel-interface' +}; + +my $mapping = { + name => { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2' },# sfosIPSecVpnConnName + connection_mode => { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5' },# sfosIPSecVpnConnMode + connection_type => { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6', map => $map_connection_type },# sfosIPSecVpnConnType + activated => { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10', map => $map_vpn_activated }# sfosIPSecVpnActivated +}; + +my $mapping_stat = { + description => { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3' },# sfosIPSecVpnConnDes + connection_status => + { oid => '.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9', map => $map_connection_status }# sfosIPSecVpnConnStatus +}; + +sub manage_selection { + my ($self, %options) = @_; + + $self->{vpn} = {}; + $self->{global} = { + inactive => 0, + active => 0, + partiallyActive => 0 + }; + + my $request = [ { oid => $mapping->{name}->{oid} } ]; + push @$request, { oid => $mapping->{activated}->{oid} } + if (defined($self->{option_results}->{filter_vpn_activated}) && $self->{option_results}->{filter_vpn_activated} ne ''); + + push @$request, { oid => $mapping->{connection_mode}->{oid} } + if (defined($self->{option_results}->{filter_connection_mode}) && $self->{option_results}->{filter_connection_mode} ne ''); + + push @$request, { oid => $mapping->{connection_type}->{oid} } + if (defined($self->{option_results}->{filter_connection_type}) && $self->{option_results}->{filter_connection_type} ne ''); + + my $snmp_result = $options{snmp}->get_multiple_table( + oids => $request, + return_type => 1, + nothing_quit => 1 + ); + + foreach (keys %$snmp_result) { + next if (!/^$mapping->{name}->{oid}\.(.*)/); + my $instance = $1; + + my $result = $options{snmp}->map_instance(mapping => $mapping, results => $snmp_result, instance => $instance); + if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $result->{name} !~ /$self->{option_results}->{filter_name}/) { + $self->{output}->output_add(long_msg => "skipping '" . $result->{name} . "': not matching name filter."); + next; + } + + if (defined($self->{option_results}->{filter_connection_type}) && $self->{option_results}->{filter_connection_type} ne '' && + $result->{connection_type} !~ /$self->{option_results}->{filter_connection_type}/) { + $self->{output}->output_add(long_msg => "skipping '" . $result->{connection_type} . "': not matching connection-type filter."); + next; + } + + if (defined($self->{option_results}->{filter_connection_mode}) && $self->{option_results}->{filter_connection_mode} ne '' && + $result->{connection_mode} !~ /$self->{option_results}->{filter_connection_mode}/) { + $self->{output}->output_add(long_msg => "skipping '" . $result->{connection_mode} . "': not matching connection-mode filter."); + next; + } + + if (defined($self->{option_results}->{filter_vpn_activated}) && $self->{option_results}->{filter_vpn_activated} ne '' && + $result->{activated} !~ /$self->{option_results}->{filter_vpn_activated}/) { + $self->{output}->output_add(long_msg => "skipping '" . $result->{activated} . "': not matching vpn-activated filter " . $self->{option_results}->{filter_vpn_activated} . "."); + next; + } + + $self->{vpn}->{ $result->{name} } = { + instance => $instance, + display => $result->{name}, + vpn_global => { display => $result->{name} } }; + } + + if (scalar(keys %{$self->{vpn}}) <= 0) { + $self->{output}->output_add(long_msg => 'no VPN associated'); + return; + } + + $options{snmp}->load( + oids => [ map($_->{oid}, values(%$mapping_stat)) ], + instances => [ map($_->{instance}, values %{$self->{vpn}}) ], + instance_regexp => '^(.*)$' + ); + $snmp_result = $options{snmp}->get_leef(); + + foreach (keys %{$self->{vpn}}) { + my $result = $options{snmp}->map_instance( + mapping => $mapping_stat, + results => $snmp_result, + instance => $self->{vpn}->{$_}->{instance}); + + $self->{global}->{total}++; + $self->{global}->{ $result->{connection_status} }++; + $self->{vpn}->{$_}->{vpn_global}->{connection_status} = $result->{connection_status}; + $self->{vpn}->{$_}->{vpn_global}->{description} = $result->{description}; + } +} + +1; + +__END__ + +=head1 MODE + +Check VPN status. +VPN-Connection-Status: inactive, active, partiallyActive + +=over 8 + +=item B<--filter-counters> + +Only display some counters (regexp can be used). +Example: --filter-counters='^total$|^total-normal$' + +=item B<--filter-name> + +Filter VPN name (can be a regexp). + +=item B<--filter-vpn-activated> + +Filter by the activation status of the VPN (can be a regexp). +Values: active, inactive + +=item B<--filter-connection-mode> + +Filter by the connection mode of the VPN (can be a regexp). + +=item B<--connection-type> + +Filter by the connection type of the VPN (can be a regexp). +Values: host-to-host, site-to-site, tunnel-interface + +=item B<--warning-status> + +Trigger warning on %{connection_status} values. +(default: '%{connection_status} =~ /partiallyActive/'). + +=item B<--critical-status> + +Trigger critical on %{connection_status} values. +(default: '%{connection_status} =~ /inactive/'). + +=item B<--warning-total> + +Thresholds. + +=item B<--critical-total> + +Thresholds. + +=item B<--warning-total-inactive> + +Thresholds. + +=item B<--critical-total-inactive> + +Thresholds. + +=item B<--warning-total-partiallyActive> + +Thresholds. + +=item B<--critical-total-partiallyActive> + +Thresholds. + +=item B<--warning-total-active> + +Thresholds. + +=item B<--critical-total-active> + +Thresholds. + +=back + +=cut diff --git a/src/network/cyberoam/snmp/plugin.pm b/src/network/cyberoam/snmp/plugin.pm index 9f5370f0fc..f44578051e 100644 --- a/src/network/cyberoam/snmp/plugin.pm +++ b/src/network/cyberoam/snmp/plugin.pm @@ -31,13 +31,17 @@ sub new { $self->{version} = '0.1'; $self->{modes} = { - 'cpu' => 'network::cyberoam::snmp::mode::cpu', - 'interfaces' => 'snmp_standard::mode::interfaces', - 'list-interfaces' => 'snmp_standard::mode::listinterfaces', - 'memory' => 'network::cyberoam::snmp::mode::memory', - 'requests' => 'network::cyberoam::snmp::mode::requests', - 'services' => 'network::cyberoam::snmp::mode::services', - 'storage' => 'network::cyberoam::snmp::mode::storage' + 'cpu' => 'network::cyberoam::snmp::mode::cpu', + 'ha-status' => 'network::cyberoam::snmp::mode::hastatus', + 'interfaces' => 'snmp_standard::mode::interfaces', + 'license' => 'network::cyberoam::snmp::mode::license', + 'list-interfaces' => 'snmp_standard::mode::listinterfaces', + 'list-vpns' => 'network::cyberoam::snmp::mode::listvpns', + 'memory' => 'network::cyberoam::snmp::mode::memory', + 'requests' => 'network::cyberoam::snmp::mode::requests', + 'services' => 'network::cyberoam::snmp::mode::services', + 'storage' => 'network::cyberoam::snmp::mode::storage', + 'vpn-status' => 'network::cyberoam::snmp::mode::vpnstatus' }; return $self; diff --git a/tests/network/cyberoam/snmp/ha-status.robot b/tests/network/cyberoam/snmp/ha-status.robot new file mode 100644 index 0000000000..0d73df6906 --- /dev/null +++ b/tests/network/cyberoam/snmp/ha-status.robot @@ -0,0 +1,32 @@ +*** Settings *** +Documentation Check Cyberoam equipments in SNMP. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +ha-status ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=ha-status + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=${SNMPCOMMUNITY} + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options SNMPCOMMUNITY expected_result -- + ... 1 ${EMPTY} network/cyberoam/snmp/slim_sophos OK: HA is 'enabled' - Current HA State: 'primary' - Peer HA State: 'auxiliary' - HA Port: 'Anonymized 007' - HA IP: '192.168.42.167' - Peer IP: '192.168.42.23' + ... 2 --warning-status='\\\%{hastate} ne "down"' network/cyberoam/snmp/slim_sophos WARNING: HA is 'enabled' - Current HA State: 'primary' - Peer HA State: 'auxiliary' - HA Port: 'Anonymized 007' - HA IP: '192.168.42.167' - Peer IP: '192.168.42.23' + ... 3 --critical-status='\\\%{hastatus} ne "down"' network/cyberoam/snmp/slim_sophos CRITICAL: HA is 'enabled' - Current HA State: 'primary' - Peer HA State: 'auxiliary' - HA Port: 'Anonymized 007' - HA IP: '192.168.42.167' - Peer IP: '192.168.42.23' + ... 4 --no-ha-status='UNKNOWN' network/cyberoam/snmp/slim_sophos_no_ha UNKNOWN: Looks like HA is not enabled, or not applicable .. \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/interfaces.robot b/tests/network/cyberoam/snmp/interfaces.robot new file mode 100644 index 0000000000..5652196651 --- /dev/null +++ b/tests/network/cyberoam/snmp/interfaces.robot @@ -0,0 +1,34 @@ +*** Settings *** +Documentation Check interfaces. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +interfaces ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=interfaces + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + # first run to build cache + Run ${command} + # second run to control the output + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} CRITICAL: Interface 'Anonymized 232' Status : down (admin: up) - Interface 'Anonymized 191' Status : down (admin: up) - Interface 'Anonymized 141' Status : down (admin: up) + ... 2 --warning-total-admin-down=0 --critical-total-admin-down=0 CRITICAL: Interface 'Anonymized 232' Status : down (admin: up) - Interface 'Anonymized 191' Status : down (admin: up) - Interface 'Anonymized 141' Status : down (admin: up) + ... 3 --interface='.*' --name --add-status --add-traffic --critical-status='' --warning-in-traffic='80' --critical-in-traffic='90' --warning-out-traffic='80' --critical-out-traffic='90' --verbose OK: All interfaces are ok | 'traffic_in_Anonymized 250'=0.00b/s;0:8000000;0:9000000;0;10000000 'traffic_out_Anonymized 250'=0.00b/s;0:8000000;0:9000000;0;10000000 'traffic_in_Anonymized 012'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 012'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 118'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 118'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 073'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 073'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 073'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 073'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 242'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 242'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 037'=0.00b/s;;;0; 'traffic_out_Anonymized 037'=0.00b/s;;;0; 'traffic_in_Anonymized 080'=0.00b/s;;;0; 'traffic_out_Anonymized 080'=0.00b/s;;;0; 'traffic_in_Anonymized 103'=0.00b/s;;;0; 'traffic_out_Anonymized 103'=0.00b/s;;;0; 'traffic_in_Anonymized 151'=0.00b/s;;;0; 'traffic_out_Anonymized 151'=0.00b/s;;;0; 'traffic_in_Anonymized 171'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 171'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 107'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 107'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 239'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 239'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 137'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_out_Anonymized 137'=0.00b/s;0:800000000;0:900000000;0;1000000000 'traffic_in_Anonymized 028'=0.00b/s;;;0; 'traffic_out_Anonymized 028'=0.00b/s;;;0; 'traffic_in_Anonymized 105'=0.00b/s;;;0; 'traffic_out_Anonymized 105'=0.00b/s;;;0; 'traffic_in_Anonymized 012'=0.00b/s;;;0; 'traffic_out_Anonymized 012'=0.00b/s;;;0; 'traffic_in_Anonymized 232'=0.00b/s;0:8000000000;0:9000000000;0;10000000000 'traffic_out_Anonymized 232'=0.00b/s;0:8000000000;0:9000000000;0;10000000000 Interface 'Anonymized 250' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 012' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 118' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 073' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 071' Status : down (admin: down) Interface 'Anonymized 073' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 232' Status : down (admin: up) Interface 'Anonymized 191' Status : down (admin: up) Interface 'Anonymized 242' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 175' Status : down (admin: down) Interface 'Anonymized 128' Status : down (admin: down) Interface 'Anonymized 037' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 080' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 092' Status : down (admin: down) Interface 'Anonymized 187' Status : down (admin: down) Interface 'Anonymized 163' Status : down (admin: down) Interface 'Anonymized 103' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 151' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 141' Status : down (admin: up) Interface 'Anonymized 171' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 184' Status : down (admin: down) Interface 'Anonymized 107' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 239' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 137' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 028' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 105' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 045' Status : down (admin: down) Interface 'Anonymized 101' Status : down (admin: down) Interface 'Anonymized 252' Status : down (admin: down) Interface 'Anonymized 012' Status : up (admin: up), Traffic In : 0.00b/s (-), Traffic Out : 0.00b/s (-) Interface 'Anonymized 232' Status : up (admin: up), Traffic In : 0.00b/s (0.00%), Traffic Out : 0.00b/s (0.00%) Interface 'Anonymized 072' Status : down (admin: down) Interface 'Anonymized 037' Status : down (admin: down) \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/license.robot b/tests/network/cyberoam/snmp/license.robot new file mode 100644 index 0000000000..f81fc387bf --- /dev/null +++ b/tests/network/cyberoam/snmp/license.robot @@ -0,0 +1,34 @@ +*** Settings *** +Documentation Check current HA-State. HA-States: notapplicable, auxiliary, standAlone,primary, faulty, ready. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +ha-status ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=license + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} OK: All licenses are ok \\\\| 'base_fw#license.expires.seconds'=\\\\d+s;;;0; 'net_protection#license.expires.seconds'=\\\\d+s;;;0; 'web_protection#license.expires.seconds'=\\\\d+s;;;0; + ... 2 --unit=w OK: All licenses are ok \\\\| 'base_fw#license.expires.weeks'=\\\\d+w;;;0; 'net_protection#license.expires.weeks'=\\\\d+w;;;0; 'web_protection#license.expires.weeks'=\\\\d+w;;;0; + ... 3 --unit=w --warning-expires=0 WARNING: License 'base_fw' expires in.* \\\\| 'base_fw#license.expires.weeks'=\\\\d+w;0:0;;0; 'net_protection#license.expires.weeks'=\\\\d+w;0:0;;0; 'web_protection#license.expires.weeks'=\\\\d+w;0:0;;0; + ... 4 --unit=w --critical-expires=0 CRITICAL: License 'base_fw' expires in.* \\\\| 'base_fw#license.expires.weeks'=\\\\d+w;;0:0;0; 'net_protection#license.expires.weeks'=\\\\d+w;;0:0;0; 'web_protection#license.expires.weeks'=\\\\d+w;;0:0;0; + ... 5 --unit=w --warning-expires=1000000: WARNING: License 'base_fw' expires in.* \\\\| 'base_fw#license.expires.weeks'=\\\\d+w;1000000:;;0; 'net_protection#license.expires.weeks'=\\\\d+w;1000000:;;0; 'web_protection#license.expires.weeks'=\\\\d+w;1000000:;;0; + ... 6 --unit=w --critical-expires=1000000: CRITICAL: License 'base_fw' expires in.* \\\\| 'base_fw#license.expires.weeks'=\\\\d+w;;1000000:;0; 'net_protection#license.expires.weeks'=\\\\d+w;;1000000:;0; 'web_protection#license.expires.weeks'=\\\\d+w;;1000000:;0; diff --git a/tests/network/cyberoam/snmp/list-interfaces.robot b/tests/network/cyberoam/snmp/list-interfaces.robot new file mode 100644 index 0000000000..0cf918c094 --- /dev/null +++ b/tests/network/cyberoam/snmp/list-interfaces.robot @@ -0,0 +1,40 @@ +*** Settings *** +Documentation Check Cyberoam equipments in SNMP. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +list-interfaces ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=list-interfaces + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 2 --interface=1 List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] + ... 3 --name='Anonymized 027' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 4 --speed=20 List interfaces: 'Anonymized 250' [speed = 20][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 20][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 20][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 20][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = 20][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 20][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = 20][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = 20][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 20][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = 20][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = 20][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = 20][status = up][id = 2][type = ethernetCsmacd] + ... 5 --skip-speed0='' --name='Anonymized 232' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] skipping interface 'Anonymized 071': interface speed is 0 and option --skip-speed0 is set 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] skipping interface 'Anonymized 232': interface speed is 0 and option --skip-speed0 is set skipping interface 'Anonymized 191': interface speed is 0 and option --skip-speed0 is set 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] + ... 6 --filter-status='up' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] skipping interface 'Anonymized 071': no matching filter status 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] skipping interface 'Anonymized 232': no matching filter status skipping interface 'Anonymized 191': no matching filter status 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] skipping interface 'Anonymized 175': no matching filter status skipping interface 'Anonymized 128': no matching filter status 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 7 --use-adminstatus='down' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] skipping interface 'Anonymized 071': adminstatus is not 'up' and option --use-adminstatus is set 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] skipping interface 'Anonymized 175': adminstatus is not 'up' and option --use-adminstatus is set + ... 8 --oid-filter='ifName' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 9 --oid-display='ifDesc' List interfaces: 'Anonymized 147' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 026' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 232' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 093' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 058' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 158' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 160' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 188' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 034' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 029' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 10 --display-transform-src='ens' --display-transform-dst='eth' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 11 --add-extra-oid='vlan,.1.3.6.1.2.1.31.19,\\\%{instance}\..*' List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][type = ethernetCsmacd] 'Anonymized 232' [speed = ][status = down][id = 15][type = ethernetCsmacd] 'Anonymized 191' [speed = ][status = down][id = 16][type = ethernetCsmacd] 'Anonymized 242' [speed = 1000][status = up][id = 17][type = ethernetCsmacd] 'Anonymized 175' [speed = ][status = down][id = 18][type = ethernetCsmacd] 'Anonymized 128' [speed = ][status = down][id = 19][type = ethernetCsmacd] 'Anonymized 037' [speed = ][status = up][id = 2][type = ethernetCsmacd] + ... 12 --add-mac-address List interfaces: 'Anonymized 250' [speed = 10][status = up][id = 1][macaddress = ][type = softwareLoopback] 'Anonymized 012' [speed = 1000][status = up][id = 10][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:30:38:34][type = ethernetCsmacd] 'Anonymized 118' [speed = 1000][status = up][id = 11][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:31:38:34][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 12][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:30:37:32][type = ethernetCsmacd] 'Anonymized 071' [speed = ][status = down][id = 13][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:31:31:39][type = ethernetCsmacd] 'Anonymized 073' [speed = 1000][status = up][id = 14][macaddress = 41:6e:6f:6e:79:6d:69:7a:65:64:20:30:31:30][type = ethernetCsmacd] \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/list-vpns.robot b/tests/network/cyberoam/snmp/list-vpns.robot new file mode 100644 index 0000000000..8a94389ae8 --- /dev/null +++ b/tests/network/cyberoam/snmp/list-vpns.robot @@ -0,0 +1,32 @@ +*** Settings *** +Documentation List VPN. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +list-vpns ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=list-vpns + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} List vpn [oid_path: 1] [name: Anonymized 093] [policy: Anonymized 208] [description: Anonymized 022] [connection_mode: Anonymized 245] [connection_type: site-to-site] [connection_status: active] [activated: active] [oid_path: 2] [name: Anonymized 252] [policy: Anonymized 055] [description: Anonymized 070] [connection_mode: Anonymized 123] [connection_type: site-to-site] [connection_status: active] [activated: active] [oid_path: 3] [name: Anonymized 029] [policy: Anonymized 151] [description: Anonymized 157] [connection_mode: Anonymized 055] [connection_type: site-to-site] [connection_status: inactive] [activated: active] [oid_path: 4] [name: Anonymized 132] [policy: Anonymized 089] [description: ] [connection_mode: Anonymized 185] [connection_type: site-to-site] [connection_status: active] [activated: active] + ... 2 --filter-name='Anonymized 093' List vpn [oid_path: 1] [name: Anonymized 093] [policy: Anonymized 208] [description: Anonymized 022] [connection_mode: Anonymized 245] [connection_type: site-to-site] [connection_status: active] [activated: active] + ... 3 --filter-connection-status='inactive' List vpn [oid_path: 3] [name: Anonymized 029] [policy: Anonymized 151] [description: Anonymized 157] [connection_mode: Anonymized 055] [connection_type: site-to-site] [connection_status: inactive] [activated: active] + ... 4 --filter-vpn-activated='active' List vpn [oid_path: 1] [name: Anonymized 093] [policy: Anonymized 208] [description: Anonymized 022] [connection_mode: Anonymized 245] [connection_type: site-to-site] [connection_status: active] [activated: active] [oid_path: 2] [name: Anonymized 252] [policy: Anonymized 055] [description: Anonymized 070] [connection_mode: Anonymized 123] [connection_type: site-to-site] [connection_status: active] [activated: active] [oid_path: 3] [name: Anonymized 029] [policy: Anonymized 151] [description: Anonymized 157] [connection_mode: Anonymized 055] [connection_type: site-to-site] [connection_status: inactive] [activated: active] [oid_path: 4] [name: Anonymized 132] [policy: Anonymized 089] [description: ] [connection_mode: Anonymized 185] [connection_type: site-to-site] [connection_status: active] [activated: active] \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/memory.robot b/tests/network/cyberoam/snmp/memory.robot new file mode 100644 index 0000000000..e4a39d21ff --- /dev/null +++ b/tests/network/cyberoam/snmp/memory.robot @@ -0,0 +1,34 @@ +*** Settings *** +Documentation Check memory usages. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +memory ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=memory + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 ${EMPTY} OK: Physical memory Total: 7.61 GB Used: 4.41 GB (58.00%) Free: 3.20 GB (42.00%) - Swap memory Total: 7.73 GB Used: 791.10 MB (10.00%) Free: 6.95 GB (90.00%) | 'physical_used'=4738284257.28B;;;0;8169455616 'swap_used'=829528473.6B;;;0;8295284736 + ... 2 --filter-counters='^physical-usage$' OK: Physical memory Total: 7.61 GB Used: 4.41 GB (58.00%) Free: 3.20 GB (42.00%) | 'physical_used'=4738284257.28B;;;0;8169455616 + ... 3 --warning-physical-usage=40 --critical-physical-usage=60 WARNING: Physical memory Total: 7.61 GB Used: 4.41 GB (58.00%) Free: 3.20 GB (42.00%) | 'physical_used'=4738284257.28B;0:3267782246;0:4901673369;0;8169455616 'swap_used'=829528473.6B;;;0;8295284736 + ... 4 --warning-swap-usage=100 --critical-swap-usage=0 CRITICAL: Swap memory Total: 7.73 GB Used: 791.10 MB (10.00%) Free: 6.95 GB (90.00%) | 'physical_used'=4738284257.28B;;;0;8169455616 'swap_used'=829528473.6B;0:8295284736;0:0;0;8295284736 + ... 5 --warning-physical-usage=60 --critical-physical-usage=40 CRITICAL: Physical memory Total: 7.61 GB Used: 4.41 GB (58.00%) Free: 3.20 GB (42.00%) | 'physical_used'=4738284257.28B;0:4901673369;0:3267782246;0;8169455616 'swap_used'=829528473.6B;;;0;8295284736 + ... 6 --warning-swap-usage=0 --critical-swap-usage=100 WARNING: Swap memory Total: 7.73 GB Used: 791.10 MB (10.00%) Free: 6.95 GB (90.00%) | 'physical_used'=4738284257.28B;;;0;8169455616 'swap_used'=829528473.6B;0:0;0:8295284736;0;8295284736 \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/requests.robot b/tests/network/cyberoam/snmp/requests.robot new file mode 100644 index 0000000000..2630be215d --- /dev/null +++ b/tests/network/cyberoam/snmp/requests.robot @@ -0,0 +1,39 @@ +*** Settings *** +Documentation Check request statistics. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +requests ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=requests + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + # first run to build cache + Run ${command} + # second run to control the output + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --filter-counters='' OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;;;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;;;0; + ... 2 --filter-counters='http' OK: Requests http hits: 0 | 'http_hits'=0;;;0; + ... 3 --warning-live-users=0 --critical-live-users=0 CRITICAL: Requests live users: 38 | 'live_users'=38;0:0;0:0;0; 'http_hits'=0;;;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;;;0; + ... 4 --warning-http-hits=0 --critical-http-hits=10 OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;0:0;0:10;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;;;0; + ... 5 --warning-ftp-hits=5 --critical-ftp-hits=10 OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;;;0; 'ftp_hits'=0;0:5;0:10;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;;;0; + ... 6 --warning-smtp-hits=20 --critical-smtp-hits=10 OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;;;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;0:20;0:10;0; + ... 7 --warning-pop3-hits=80 --critical-pop3-hits=100 OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;;;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;0:80;0:100;0; 'imap_hits'=0;;;0; 'smtp_hits'=0;;;0; + ... 8 --warning-imap-hits=50 --critical-imap-hits=50 OK: Requests live users: 38, http hits: 0, ftp hits: 0, pop3 hits: 0, imap hits: 0, smtp hits: 0 | 'live_users'=38;;;0; 'http_hits'=0;;;0; 'ftp_hits'=0;;;0; 'pop3_hits'=0;;;0; 'imap_hits'=0;0:50;0:50;0; 'smtp_hits'=0;;;0; diff --git a/tests/network/cyberoam/snmp/services.robot b/tests/network/cyberoam/snmp/services.robot new file mode 100644 index 0000000000..87c4012c57 --- /dev/null +++ b/tests/network/cyberoam/snmp/services.robot @@ -0,0 +1,32 @@ +*** Settings *** +Documentation Check services. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +services ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=services + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --component='service' OK: All 21 components are ok [21/21 services]. | 'hardware.service.count'=21;;;; + ... 2 --filter='toto' OK: All 21 components are ok [21/21 services]. | 'hardware.service.count'=21;;;; + ... 3 --no-component='UNKNOWN' OK: All 21 components are ok [21/21 services]. | 'hardware.service.count'=21;;;; + ... 4 --threshold-overload='service,toto,OK,running' OK: All 21 components are ok [21/21 services]. | 'hardware.service.count'=21;;;; \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/slim_sophos.snmpwalk b/tests/network/cyberoam/snmp/slim_sophos.snmpwalk new file mode 100644 index 0000000000..5206bfa89b --- /dev/null +++ b/tests/network/cyberoam/snmp/slim_sophos.snmpwalk @@ -0,0 +1,1231 @@ +.1.3.6.1.2.1.2.2.1.2.1 = STRING: Anonymized 147 +.1.3.6.1.2.1.2.2.1.2.2 = STRING: Anonymized 029 +.1.3.6.1.2.1.2.2.1.2.3 = STRING: Anonymized 088 +.1.3.6.1.2.1.2.2.1.2.4 = STRING: Anonymized 220 +.1.3.6.1.2.1.2.2.1.2.5 = STRING: Anonymized 003 +.1.3.6.1.2.1.2.2.1.2.6 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.7 = STRING: Anonymized 192 +.1.3.6.1.2.1.2.2.1.2.8 = STRING: Anonymized 123 +.1.3.6.1.2.1.2.2.1.2.9 = STRING: Anonymized 203 +.1.3.6.1.2.1.2.2.1.2.10 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.2.11 = STRING: Anonymized 232 +.1.3.6.1.2.1.2.2.1.2.12 = STRING: Anonymized 093 +.1.3.6.1.2.1.2.2.1.2.13 = STRING: Anonymized 058 +.1.3.6.1.2.1.2.2.1.2.14 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.15 = STRING: Anonymized 158 +.1.3.6.1.2.1.2.2.1.2.16 = STRING: Anonymized 191 +.1.3.6.1.2.1.2.2.1.2.17 = STRING: Anonymized 160 +.1.3.6.1.2.1.2.2.1.2.18 = STRING: Anonymized 188 +.1.3.6.1.2.1.2.2.1.2.19 = STRING: Anonymized 034 +.1.3.6.1.2.1.2.2.1.2.20 = STRING: Anonymized 203 +.1.3.6.1.2.1.2.2.1.2.23 = STRING: Anonymized 056 +.1.3.6.1.2.1.2.2.1.2.24 = STRING: Anonymized 204 +.1.3.6.1.2.1.2.2.1.2.25 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.2.26 = STRING: Anonymized 135 +.1.3.6.1.2.1.2.2.1.2.27 = STRING: Anonymized 182 +.1.3.6.1.2.1.2.2.1.2.28 = STRING: Anonymized 053 +.1.3.6.1.2.1.2.2.1.2.29 = STRING: Anonymized 232 +.1.3.6.1.2.1.2.2.1.2.30 = STRING: Anonymized 102 +.1.3.6.1.2.1.2.2.1.2.31 = STRING: Anonymized 238 +.1.3.6.1.2.1.2.2.1.2.32 = STRING: Anonymized 056 +.1.3.6.1.2.1.2.2.1.2.36 = STRING: Anonymized 000 +.1.3.6.1.2.1.2.2.1.2.37 = STRING: Anonymized 002 +.1.3.6.1.2.1.2.2.1.2.39 = STRING: Anonymized 021 +.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: softwareLoopback(24) +.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.7 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.8 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.9 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.10 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.11 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.12 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.13 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.14 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.15 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.16 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.17 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.18 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.19 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.20 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.23 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.24 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.25 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.26 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.27 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.28 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.29 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.30 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.31 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.32 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.36 = INTEGER: other(1) +.1.3.6.1.2.1.2.2.1.3.37 = INTEGER: other(1) +.1.3.6.1.2.1.2.2.1.3.39 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 10000000 +.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.7 = Gauge32: 4294967295 +.1.3.6.1.2.1.2.2.1.5.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.10 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.11 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.12 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.14 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.15 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.16 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.17 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.18 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.19 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.20 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.23 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.24 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.25 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.26 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.27 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.28 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.29 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.30 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.31 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.32 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.36 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.37 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.39 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.6.1 = STRING: +.1.3.6.1.2.1.2.2.1.6.2 = STRING: Anonymized 210 +.1.3.6.1.2.1.2.2.1.6.3 = STRING: +.1.3.6.1.2.1.2.2.1.6.4 = STRING: +.1.3.6.1.2.1.2.2.1.6.5 = STRING: Anonymized 132 +.1.3.6.1.2.1.2.2.1.6.6 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.6.7 = STRING: Anonymized 167 +.1.3.6.1.2.1.2.2.1.6.8 = STRING: Anonymized 198 +.1.3.6.1.2.1.2.2.1.6.9 = STRING: Anonymized 085 +.1.3.6.1.2.1.2.2.1.6.10 = STRING: Anonymized 084 +.1.3.6.1.2.1.2.2.1.6.11 = STRING: Anonymized 184 +.1.3.6.1.2.1.2.2.1.6.12 = STRING: Anonymized 072 +.1.3.6.1.2.1.2.2.1.6.13 = STRING: Anonymized 119 +.1.3.6.1.2.1.2.2.1.6.14 = STRING: Anonymized 010 +.1.3.6.1.2.1.2.2.1.6.15 = STRING: Anonymized 172 +.1.3.6.1.2.1.2.2.1.6.16 = STRING: Anonymized 068 +.1.3.6.1.2.1.2.2.1.6.17 = STRING: Anonymized 226 +.1.3.6.1.2.1.2.2.1.6.18 = STRING: Anonymized 038 +.1.3.6.1.2.1.2.2.1.6.19 = STRING: Anonymized 144 +.1.3.6.1.2.1.2.2.1.6.20 = STRING: Anonymized 067 +.1.3.6.1.2.1.2.2.1.6.23 = STRING: +.1.3.6.1.2.1.2.2.1.6.24 = STRING: +.1.3.6.1.2.1.2.2.1.6.25 = STRING: +.1.3.6.1.2.1.2.2.1.6.26 = STRING: Anonymized 250 +.1.3.6.1.2.1.2.2.1.6.27 = STRING: Anonymized 045 +.1.3.6.1.2.1.2.2.1.6.28 = STRING: Anonymized 102 +.1.3.6.1.2.1.2.2.1.6.29 = STRING: Anonymized 229 +.1.3.6.1.2.1.2.2.1.6.30 = STRING: Anonymized 037 +.1.3.6.1.2.1.2.2.1.6.31 = STRING: Anonymized 154 +.1.3.6.1.2.1.2.2.1.6.32 = STRING: Anonymized 135 +.1.3.6.1.2.1.2.2.1.6.36 = STRING: +.1.3.6.1.2.1.2.2.1.6.37 = STRING: +.1.3.6.1.2.1.2.2.1.6.39 = STRING: Anonymized 089 +.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.3 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.5 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.6 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.7 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.8 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.9 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.10 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.11 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.12 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.13 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.14 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.15 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.16 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.17 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.18 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.19 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.20 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.23 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.24 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.25 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.26 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.27 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.28 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.29 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.30 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.31 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.32 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.36 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.37 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.39 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.3 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.5 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.6 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.7 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.8 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.9 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.10 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.11 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.12 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.13 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.14 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.15 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.16 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.17 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.18 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.19 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.20 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.23 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.24 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.25 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.26 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.27 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.28 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.29 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.30 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.31 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.32 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.36 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.37 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.39 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.10.1 = Counter32: 816086386 +.1.3.6.1.2.1.2.2.1.10.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.6 = Counter32: 135035687 +.1.3.6.1.2.1.2.2.1.10.7 = Counter32: 106055395 +.1.3.6.1.2.1.2.2.1.10.8 = Counter32: 894434488 +.1.3.6.1.2.1.2.2.1.10.9 = Counter32: 2266527688 +.1.3.6.1.2.1.2.2.1.10.10 = Counter32: 1771413770 +.1.3.6.1.2.1.2.2.1.10.11 = Counter32: 3700103753 +.1.3.6.1.2.1.2.2.1.10.12 = Counter32: 912751441 +.1.3.6.1.2.1.2.2.1.10.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.14 = Counter32: 3820363530 +.1.3.6.1.2.1.2.2.1.10.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.17 = Counter32: 1080729382 +.1.3.6.1.2.1.2.2.1.10.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.29 = Counter32: 90833859 +.1.3.6.1.2.1.2.2.1.10.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.32 = Counter32: 983245010 +.1.3.6.1.2.1.2.2.1.10.36 = Counter32: 3218105718 +.1.3.6.1.2.1.2.2.1.10.37 = Counter32: 2339127288 +.1.3.6.1.2.1.2.2.1.10.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.1 = Counter32: 311235449 +.1.3.6.1.2.1.2.2.1.11.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.6 = Counter32: 608921 +.1.3.6.1.2.1.2.2.1.11.7 = Counter32: 2957603730 +.1.3.6.1.2.1.2.2.1.11.8 = Counter32: 804292572 +.1.3.6.1.2.1.2.2.1.11.9 = Counter32: 724307901 +.1.3.6.1.2.1.2.2.1.11.10 = Counter32: 3611908365 +.1.3.6.1.2.1.2.2.1.11.11 = Counter32: 1461873024 +.1.3.6.1.2.1.2.2.1.11.12 = Counter32: 22522112 +.1.3.6.1.2.1.2.2.1.11.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.14 = Counter32: 7239031 +.1.3.6.1.2.1.2.2.1.11.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.17 = Counter32: 13022379 +.1.3.6.1.2.1.2.2.1.11.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.29 = Counter32: 557016795 +.1.3.6.1.2.1.2.2.1.11.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.32 = Counter32: 3984009 +.1.3.6.1.2.1.2.2.1.11.36 = Counter32: 4817280 +.1.3.6.1.2.1.2.2.1.11.37 = Counter32: 5285053 +.1.3.6.1.2.1.2.2.1.11.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.10 = Counter32: 15143971 +.1.3.6.1.2.1.2.2.1.13.11 = Counter32: 1910975 +.1.3.6.1.2.1.2.2.1.13.12 = Counter32: 1177547 +.1.3.6.1.2.1.2.2.1.13.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.14 = Counter32: 817214 +.1.3.6.1.2.1.2.2.1.13.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.17 = Counter32: 692 +.1.3.6.1.2.1.2.2.1.13.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.29 = Counter32: 275 +.1.3.6.1.2.1.2.2.1.13.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.17 = Counter32: 27194 +.1.3.6.1.2.1.2.2.1.14.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.1 = Counter32: 816086386 +.1.3.6.1.2.1.2.2.1.16.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.6 = Counter32: 89203602 +.1.3.6.1.2.1.2.2.1.16.7 = Counter32: 3248384140 +.1.3.6.1.2.1.2.2.1.16.8 = Counter32: 2269336382 +.1.3.6.1.2.1.2.2.1.16.9 = Counter32: 4108826730 +.1.3.6.1.2.1.2.2.1.16.10 = Counter32: 1842425322 +.1.3.6.1.2.1.2.2.1.16.11 = Counter32: 2230351444 +.1.3.6.1.2.1.2.2.1.16.12 = Counter32: 29055595 +.1.3.6.1.2.1.2.2.1.16.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.14 = Counter32: 541665149 +.1.3.6.1.2.1.2.2.1.16.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.17 = Counter32: 3459218176 +.1.3.6.1.2.1.2.2.1.16.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.27 = Counter32: 660 +.1.3.6.1.2.1.2.2.1.16.28 = Counter32: 220 +.1.3.6.1.2.1.2.2.1.16.29 = Counter32: 2968325899 +.1.3.6.1.2.1.2.2.1.16.30 = Counter32: 491480 +.1.3.6.1.2.1.2.2.1.16.31 = Counter32: 1192796 +.1.3.6.1.2.1.2.2.1.16.32 = Counter32: 2214965357 +.1.3.6.1.2.1.2.2.1.16.36 = Counter32: 2588289726 +.1.3.6.1.2.1.2.2.1.16.37 = Counter32: 2941818072 +.1.3.6.1.2.1.2.2.1.16.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.1 = Counter32: 311235449 +.1.3.6.1.2.1.2.2.1.17.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.6 = Counter32: 563639 +.1.3.6.1.2.1.2.2.1.17.7 = Counter32: 2836151371 +.1.3.6.1.2.1.2.2.1.17.8 = Counter32: 746569775 +.1.3.6.1.2.1.2.2.1.17.9 = Counter32: 804288376 +.1.3.6.1.2.1.2.2.1.17.10 = Counter32: 3787287640 +.1.3.6.1.2.1.2.2.1.17.11 = Counter32: 1186744628 +.1.3.6.1.2.1.2.2.1.17.12 = Counter32: 12481327 +.1.3.6.1.2.1.2.2.1.17.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.14 = Counter32: 8051014 +.1.3.6.1.2.1.2.2.1.17.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.17 = Counter32: 24713191 +.1.3.6.1.2.1.2.2.1.17.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.27 = Counter32: 6 +.1.3.6.1.2.1.2.2.1.17.28 = Counter32: 2 +.1.3.6.1.2.1.2.2.1.17.29 = Counter32: 1584253698 +.1.3.6.1.2.1.2.2.1.17.30 = Counter32: 11692 +.1.3.6.1.2.1.2.2.1.17.31 = Counter32: 28390 +.1.3.6.1.2.1.2.2.1.17.32 = Counter32: 8235853 +.1.3.6.1.2.1.2.2.1.17.36 = Counter32: 4102143 +.1.3.6.1.2.1.2.2.1.17.37 = Counter32: 5014348 +.1.3.6.1.2.1.2.2.1.17.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.2 = Counter32: 76759 +.1.3.6.1.2.1.2.2.1.19.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.7 = Counter32: 12 +.1.3.6.1.2.1.2.2.1.19.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.17 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.36 = Counter32: 57 +.1.3.6.1.2.1.2.2.1.19.37 = Counter32: 818 +.1.3.6.1.2.1.2.2.1.19.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.17 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.7 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.10 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.11 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.12 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.14 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.15 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.16 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.17 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.18 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.19 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.20 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.23 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.24 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.25 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.26 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.27 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.28 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.29 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.30 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.31 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.32 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.36 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.37 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.39 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.22.1 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.2 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.3 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.4 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.5 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.6 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.7 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.8 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.9 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.10 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.11 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.12 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.13 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.14 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.15 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.16 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.17 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.18 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.19 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.20 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.23 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.24 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.25 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.26 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.27 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.28 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.29 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.30 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.31 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.32 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.36 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.37 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.39 = OID: .0.0 +.1.3.6.1.2.1.4.20.1.2.1.1.1.1 = INTEGER: 15 +.1.3.6.1.2.1.4.20.1.2.10.0.0.254 = INTEGER: 10 +.1.3.6.1.2.1.4.20.1.2.10.255.0.1 = INTEGER: 27 +.1.3.6.1.2.1.4.20.1.2.127.0.0.1 = INTEGER: 1 +.1.3.6.1.2.1.4.20.1.2.151.12.111.4 = INTEGER: 11 +.1.3.6.1.2.1.4.20.1.2.169.254.192.2 = INTEGER: 17 +.1.3.6.1.2.1.4.20.1.2.169.254.234.5 = INTEGER: 2 +.1.3.6.1.2.1.4.20.1.2.192.168.30.254 = INTEGER: 12 +.1.3.6.1.2.1.4.20.1.2.192.168.40.1 = INTEGER: 36 +.1.3.6.1.2.1.4.20.1.2.192.168.40.129 = INTEGER: 37 +.1.3.6.1.2.1.4.20.1.2.192.168.80.254 = INTEGER: 32 +.1.3.6.1.2.1.4.20.1.2.192.168.201.254 = INTEGER: 29 +.1.3.6.1.2.1.4.20.1.2.192.168.202.254 = INTEGER: 30 +.1.3.6.1.2.1.4.20.1.2.192.168.203.254 = INTEGER: 31 +.1.3.6.1.2.1.4.20.1.2.192.168.217.1 = INTEGER: 14 +.1.3.6.1.2.1.4.20.1.2.192.168.218.4 = INTEGER: 28 +.1.3.6.1.2.1.31.1.1.1.1.1 = STRING: Anonymized 250 +.1.3.6.1.2.1.31.1.1.1.1.2 = STRING: Anonymized 037 +.1.3.6.1.2.1.31.1.1.1.1.3 = STRING: Anonymized 184 +.1.3.6.1.2.1.31.1.1.1.1.4 = STRING: Anonymized 101 +.1.3.6.1.2.1.31.1.1.1.1.5 = STRING: Anonymized 252 +.1.3.6.1.2.1.31.1.1.1.1.6 = STRING: Anonymized 012 +.1.3.6.1.2.1.31.1.1.1.1.7 = STRING: Anonymized 232 +.1.3.6.1.2.1.31.1.1.1.1.8 = STRING: Anonymized 072 +.1.3.6.1.2.1.31.1.1.1.1.9 = STRING: Anonymized 037 +.1.3.6.1.2.1.31.1.1.1.1.10 = STRING: Anonymized 012 +.1.3.6.1.2.1.31.1.1.1.1.11 = STRING: Anonymized 118 +.1.3.6.1.2.1.31.1.1.1.1.12 = STRING: Anonymized 073 +.1.3.6.1.2.1.31.1.1.1.1.13 = STRING: Anonymized 071 +.1.3.6.1.2.1.31.1.1.1.1.14 = STRING: Anonymized 073 +.1.3.6.1.2.1.31.1.1.1.1.15 = STRING: Anonymized 232 +.1.3.6.1.2.1.31.1.1.1.1.16 = STRING: Anonymized 191 +.1.3.6.1.2.1.31.1.1.1.1.17 = STRING: Anonymized 242 +.1.3.6.1.2.1.31.1.1.1.1.18 = STRING: Anonymized 175 +.1.3.6.1.2.1.31.1.1.1.1.19 = STRING: Anonymized 128 +.1.3.6.1.2.1.31.1.1.1.1.20 = STRING: Anonymized 080 +.1.3.6.1.2.1.31.1.1.1.1.23 = STRING: Anonymized 092 +.1.3.6.1.2.1.31.1.1.1.1.24 = STRING: Anonymized 187 +.1.3.6.1.2.1.31.1.1.1.1.25 = STRING: Anonymized 163 +.1.3.6.1.2.1.31.1.1.1.1.26 = STRING: Anonymized 103 +.1.3.6.1.2.1.31.1.1.1.1.27 = STRING: Anonymized 151 +.1.3.6.1.2.1.31.1.1.1.1.28 = STRING: Anonymized 141 +.1.3.6.1.2.1.31.1.1.1.1.29 = STRING: Anonymized 171 +.1.3.6.1.2.1.31.1.1.1.1.30 = STRING: Anonymized 107 +.1.3.6.1.2.1.31.1.1.1.1.31 = STRING: Anonymized 239 +.1.3.6.1.2.1.31.1.1.1.1.32 = STRING: Anonymized 137 +.1.3.6.1.2.1.31.1.1.1.1.36 = STRING: Anonymized 028 +.1.3.6.1.2.1.31.1.1.1.1.37 = STRING: Anonymized 105 +.1.3.6.1.2.1.31.1.1.1.1.39 = STRING: Anonymized 045 +.1.3.6.1.2.1.31.1.1.1.2.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.29 = Counter32: 2169 +.1.3.6.1.2.1.31.1.1.1.2.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 159731655835 +.1.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.6 = Counter64: 135035805 +.1.3.6.1.2.1.31.1.1.1.6.7 = Counter64: 3380252424024 +.1.3.6.1.2.1.31.1.1.1.6.8 = Counter64: 5146279094400 +.1.3.6.1.2.1.31.1.1.1.6.9 = Counter64: 5147653913693 +.1.3.6.1.2.1.31.1.1.1.6.10 = Counter64: 3682563614036 +.1.3.6.1.2.1.31.1.1.1.6.11 = Counter64: 1451114931208 +.1.3.6.1.2.1.31.1.1.1.6.12 = Counter64: 13797678926 +.1.3.6.1.2.1.31.1.1.1.6.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.14 = Counter64: 3820364831 +.1.3.6.1.2.1.31.1.1.1.6.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.17 = Counter64: 1080733376 +.1.3.6.1.2.1.31.1.1.1.6.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.29 = Counter64: 1013706131268 +.1.3.6.1.2.1.31.1.1.1.6.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.32 = Counter64: 983249543 +.1.3.6.1.2.1.31.1.1.1.6.36 = Counter64: 3218111678 +.1.3.6.1.2.1.31.1.1.1.6.37 = Counter64: 2339438452 +.1.3.6.1.2.1.31.1.1.1.6.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.1 = Counter64: 311238779 +.1.3.6.1.2.1.31.1.1.1.7.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.6 = Counter64: 608922 +.1.3.6.1.2.1.31.1.1.1.7.7 = Counter64: 2957639849 +.1.3.6.1.2.1.31.1.1.1.7.8 = Counter64: 5099307474 +.1.3.6.1.2.1.31.1.1.1.7.9 = Counter64: 724349420 +.1.3.6.1.2.1.31.1.1.1.7.10 = Counter64: 3611938635 +.1.3.6.1.2.1.31.1.1.1.7.11 = Counter64: 1461892794 +.1.3.6.1.2.1.31.1.1.1.7.12 = Counter64: 22522190 +.1.3.6.1.2.1.31.1.1.1.7.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.14 = Counter64: 7239047 +.1.3.6.1.2.1.31.1.1.1.7.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.17 = Counter64: 13022433 +.1.3.6.1.2.1.31.1.1.1.7.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.29 = Counter64: 557042139 +.1.3.6.1.2.1.31.1.1.1.7.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.32 = Counter64: 3984024 +.1.3.6.1.2.1.31.1.1.1.7.36 = Counter64: 4817301 +.1.3.6.1.2.1.31.1.1.1.7.37 = Counter64: 5292043 +.1.3.6.1.2.1.31.1.1.1.7.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.29 = Counter64: 2169 +.1.3.6.1.2.1.31.1.1.1.8.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 159731655835 +.1.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.6 = Counter64: 89203720 +.1.3.6.1.2.1.31.1.1.1.10.7 = Counter64: 3349033946951 +.1.3.6.1.2.1.31.1.1.1.10.8 = Counter64: 5147653913582 +.1.3.6.1.2.1.31.1.1.1.10.9 = Counter64: 5166676325433 +.1.3.6.1.2.1.31.1.1.1.10.10 = Counter64: 4481502747279 +.1.3.6.1.2.1.31.1.1.1.10.11 = Counter64: 642185108419 +.1.3.6.1.2.1.31.1.1.1.10.12 = Counter64: 8619024942 +.1.3.6.1.2.1.31.1.1.1.10.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.14 = Counter64: 541666193 +.1.3.6.1.2.1.31.1.1.1.10.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.17 = Counter64: 3459240699 +.1.3.6.1.2.1.31.1.1.1.10.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.27 = Counter64: 660 +.1.3.6.1.2.1.31.1.1.1.10.28 = Counter64: 220 +.1.3.6.1.2.1.31.1.1.1.10.29 = Counter64: 2240647975939 +.1.3.6.1.2.1.31.1.1.1.10.30 = Counter64: 491480 +.1.3.6.1.2.1.31.1.1.1.10.31 = Counter64: 1193048 +.1.3.6.1.2.1.31.1.1.1.10.32 = Counter64: 2214976596 +.1.3.6.1.2.1.31.1.1.1.10.36 = Counter64: 2588293755 +.1.3.6.1.2.1.31.1.1.1.10.37 = Counter64: 2943757933 +.1.3.6.1.2.1.31.1.1.1.10.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.1 = Counter64: 311238779 +.1.3.6.1.2.1.31.1.1.1.11.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.6 = Counter64: 563640 +.1.3.6.1.2.1.31.1.1.1.11.7 = Counter64: 2836176053 +.1.3.6.1.2.1.31.1.1.1.11.8 = Counter64: 5041574603 +.1.3.6.1.2.1.31.1.1.1.11.9 = Counter64: 804340189 +.1.3.6.1.2.1.31.1.1.1.11.10 = Counter64: 3787315137 +.1.3.6.1.2.1.31.1.1.1.11.11 = Counter64: 1186755765 +.1.3.6.1.2.1.31.1.1.1.11.12 = Counter64: 12481379 +.1.3.6.1.2.1.31.1.1.1.11.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.14 = Counter64: 8051029 +.1.3.6.1.2.1.31.1.1.1.11.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.17 = Counter64: 24713360 +.1.3.6.1.2.1.31.1.1.1.11.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.27 = Counter64: 6 +.1.3.6.1.2.1.31.1.1.1.11.28 = Counter64: 2 +.1.3.6.1.2.1.31.1.1.1.11.29 = Counter64: 1584273437 +.1.3.6.1.2.1.31.1.1.1.11.30 = Counter64: 11692 +.1.3.6.1.2.1.31.1.1.1.11.31 = Counter64: 28396 +.1.3.6.1.2.1.31.1.1.1.11.32 = Counter64: 8235886 +.1.3.6.1.2.1.31.1.1.1.11.36 = Counter64: 4102167 +.1.3.6.1.2.1.31.1.1.1.11.37 = Counter64: 5026956 +.1.3.6.1.2.1.31.1.1.1.11.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.15.1 = Gauge32: 10 +.1.3.6.1.2.1.31.1.1.1.15.2 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.3 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.4 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.5 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.6 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.7 = Gauge32: 10000 +.1.3.6.1.2.1.31.1.1.1.15.8 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.9 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.10 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.11 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.12 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.13 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.14 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.15 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.16 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.17 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.18 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.19 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.20 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.23 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.24 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.25 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.26 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.27 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.28 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.29 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.30 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.31 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.32 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.36 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.37 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.39 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.16.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.2 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.3 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.4 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.5 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.6 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.7 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.8 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.9 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.10 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.11 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.12 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.13 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.14 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.15 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.16 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.17 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.18 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.19 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.20 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.23 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.24 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.25 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.26 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.27 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.28 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.29 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.30 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.31 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.32 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.36 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.37 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.39 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.2 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.3 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.4 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.5 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.6 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.7 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.8 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.9 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.10 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.11 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.12 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.13 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.14 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.15 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.16 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.17 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.18 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.19 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.20 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.23 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.24 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.25 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.26 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.27 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.28 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.29 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.30 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.31 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.32 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.36 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.37 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.39 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.18.1 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.2 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.3 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.4 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.5 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.6 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.7 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.8 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.9 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.10 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.11 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.12 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.13 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.14 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.15 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.16 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.17 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.18 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.19 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.20 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.23 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.24 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.25 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.26 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.27 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.28 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.29 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.30 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.31 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.32 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.36 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.37 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.39 = STRING: +.1.3.6.1.2.1.31.1.1.1.19.1 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.2 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.3 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.4 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.5 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.6 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.7 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.8 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.9 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.10 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.11 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.12 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.13 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.14 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.15 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.16 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.17 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.18 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.19 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.20 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.23 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.24 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.25 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.26 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.27 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.28 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.29 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.30 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.31 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.32 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.36 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.37 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.39 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.4.1.2604.5.1.2.4.1.0 = Gauge32: 89056 +.1.3.6.1.4.1.2604.5.1.2.4.2.0 = Gauge32: 24 +.1.3.6.1.4.1.2604.5.1.2.5.1.0 = Gauge32: 7791 +.1.3.6.1.4.1.2604.5.1.2.5.2.0 = Gauge32: 58 +.1.3.6.1.4.1.2604.5.1.2.5.3.0 = Gauge32: 7911 +.1.3.6.1.4.1.2604.5.1.2.5.4.0 = Gauge32: 10 +.1.3.6.1.4.1.2604.5.1.2.6.0 = Gauge32: 38 +.1.3.6.1.4.1.2604.5.1.2.7.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.8.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.1.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.2.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.3.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.3.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.2.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.3.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.4.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.5.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.6.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.7.0 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.3.8.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.9.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.10.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.11.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.12.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.13.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.14.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.15.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.16.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.17.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.18.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.19.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.20.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.21.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.4.1.0 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.4.4.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.4.5.0 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.4.8.0 = STRING: Anonymized 007 +.1.3.6.1.4.1.2604.5.1.4.9.0 = IpAddress: 192.168.42.167 +.1.3.6.1.4.1.2604.5.1.4.10.0 = IpAddress: 192.168.42.023 +.1.3.6.1.4.1.2604.5.1.5.1.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.1.2.0 = STRING: Dec 31 2999 +.1.3.6.1.4.1.2604.5.1.5.2.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.2.2.0 = STRING: Feb 27 2029 +.1.3.6.1.4.1.2604.5.1.5.3.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.3.2.0 = STRING: Feb 27 2029 +.1.3.6.1.4.1.2604.5.1.5.4.1.0 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.5.4.2.0 = STRING: fail +.1.3.6.1.4.1.2604.5.1.5.5.1.0 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.5.5.2.0 = STRING: Anonymized 009 +.1.3.6.1.4.1.2604.5.1.5.6.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.6.2.0 = STRING: Anonymized 230 +.1.3.6.1.4.1.2604.5.1.5.7.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.7.2.0 = STRING: Anonymized 220 +.1.3.6.1.4.1.2604.5.1.5.8.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.8.2.0 = STRING: Anonymized 188 +.1.3.6.1.4.1.2604.5.1.5.9.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.9.2.0 = STRING: Anonymized 237 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.1 = STRING: Anonymized 093 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.2 = STRING: Anonymized 252 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.3 = STRING: Anonymized 029 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.4 = STRING: Anonymized 132 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.1 = STRING: Anonymized 022 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.2 = STRING: Anonymized 070 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.3 = STRING: Anonymized 157 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.4 = "" +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.1 = STRING: Anonymized 208 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.2 = STRING: Anonymized 055 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.3 = STRING: Anonymized 151 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.4 = STRING: Anonymized 089 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.1 = STRING: Anonymized 245 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.2 = STRING: Anonymized 123 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.3 = STRING: Anonymized 055 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.4 = STRING: Anonymized 185 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.1 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.2 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.3 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.4 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.1 = STRING: Anonymized 238 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.2 = STRING: Anonymized 076 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.3 = STRING: Anonymized 081 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.4 = STRING: Anonymized 172 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.1 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.2 = INTEGER: 12 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.3 = INTEGER: 12 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.4 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.1 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.2 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.3 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.4 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.1 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.2 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.3 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.4 = INTEGER: 1 diff --git a/tests/network/cyberoam/snmp/slim_sophos_no_ha.snmpwalk b/tests/network/cyberoam/snmp/slim_sophos_no_ha.snmpwalk new file mode 100644 index 0000000000..2f5a86026a --- /dev/null +++ b/tests/network/cyberoam/snmp/slim_sophos_no_ha.snmpwalk @@ -0,0 +1,1231 @@ +.1.3.6.1.2.1.2.2.1.2.1 = STRING: Anonymized 147 +.1.3.6.1.2.1.2.2.1.2.2 = STRING: Anonymized 029 +.1.3.6.1.2.1.2.2.1.2.3 = STRING: Anonymized 088 +.1.3.6.1.2.1.2.2.1.2.4 = STRING: Anonymized 220 +.1.3.6.1.2.1.2.2.1.2.5 = STRING: Anonymized 003 +.1.3.6.1.2.1.2.2.1.2.6 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.7 = STRING: Anonymized 192 +.1.3.6.1.2.1.2.2.1.2.8 = STRING: Anonymized 123 +.1.3.6.1.2.1.2.2.1.2.9 = STRING: Anonymized 203 +.1.3.6.1.2.1.2.2.1.2.10 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.2.11 = STRING: Anonymized 232 +.1.3.6.1.2.1.2.2.1.2.12 = STRING: Anonymized 093 +.1.3.6.1.2.1.2.2.1.2.13 = STRING: Anonymized 058 +.1.3.6.1.2.1.2.2.1.2.14 = STRING: Anonymized 118 +.1.3.6.1.2.1.2.2.1.2.15 = STRING: Anonymized 158 +.1.3.6.1.2.1.2.2.1.2.16 = STRING: Anonymized 191 +.1.3.6.1.2.1.2.2.1.2.17 = STRING: Anonymized 160 +.1.3.6.1.2.1.2.2.1.2.18 = STRING: Anonymized 188 +.1.3.6.1.2.1.2.2.1.2.19 = STRING: Anonymized 034 +.1.3.6.1.2.1.2.2.1.2.20 = STRING: Anonymized 203 +.1.3.6.1.2.1.2.2.1.2.23 = STRING: Anonymized 056 +.1.3.6.1.2.1.2.2.1.2.24 = STRING: Anonymized 204 +.1.3.6.1.2.1.2.2.1.2.25 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.2.26 = STRING: Anonymized 135 +.1.3.6.1.2.1.2.2.1.2.27 = STRING: Anonymized 182 +.1.3.6.1.2.1.2.2.1.2.28 = STRING: Anonymized 053 +.1.3.6.1.2.1.2.2.1.2.29 = STRING: Anonymized 232 +.1.3.6.1.2.1.2.2.1.2.30 = STRING: Anonymized 102 +.1.3.6.1.2.1.2.2.1.2.31 = STRING: Anonymized 238 +.1.3.6.1.2.1.2.2.1.2.32 = STRING: Anonymized 056 +.1.3.6.1.2.1.2.2.1.2.36 = STRING: Anonymized 000 +.1.3.6.1.2.1.2.2.1.2.37 = STRING: Anonymized 002 +.1.3.6.1.2.1.2.2.1.2.39 = STRING: Anonymized 021 +.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: softwareLoopback(24) +.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.7 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.8 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.9 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.10 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.11 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.12 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.13 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.14 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.15 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.16 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.17 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.18 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.19 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.20 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.23 = INTEGER: tunnel(131) +.1.3.6.1.2.1.2.2.1.3.24 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.25 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.26 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.27 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.28 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.29 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.30 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.31 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.32 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.3.36 = INTEGER: other(1) +.1.3.6.1.2.1.2.2.1.3.37 = INTEGER: other(1) +.1.3.6.1.2.1.2.2.1.3.39 = INTEGER: ethernetCsmacd(6) +.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 10000000 +.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.7 = Gauge32: 4294967295 +.1.3.6.1.2.1.2.2.1.5.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.10 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.11 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.12 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.14 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.15 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.16 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.17 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.18 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.19 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.20 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.23 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.24 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.25 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.26 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.27 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.28 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.29 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.30 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.31 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.32 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.36 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.37 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.5.39 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.6.1 = STRING: +.1.3.6.1.2.1.2.2.1.6.2 = STRING: Anonymized 210 +.1.3.6.1.2.1.2.2.1.6.3 = STRING: +.1.3.6.1.2.1.2.2.1.6.4 = STRING: +.1.3.6.1.2.1.2.2.1.6.5 = STRING: Anonymized 132 +.1.3.6.1.2.1.2.2.1.6.6 = STRING: Anonymized 026 +.1.3.6.1.2.1.2.2.1.6.7 = STRING: Anonymized 167 +.1.3.6.1.2.1.2.2.1.6.8 = STRING: Anonymized 198 +.1.3.6.1.2.1.2.2.1.6.9 = STRING: Anonymized 085 +.1.3.6.1.2.1.2.2.1.6.10 = STRING: Anonymized 084 +.1.3.6.1.2.1.2.2.1.6.11 = STRING: Anonymized 184 +.1.3.6.1.2.1.2.2.1.6.12 = STRING: Anonymized 072 +.1.3.6.1.2.1.2.2.1.6.13 = STRING: Anonymized 119 +.1.3.6.1.2.1.2.2.1.6.14 = STRING: Anonymized 010 +.1.3.6.1.2.1.2.2.1.6.15 = STRING: Anonymized 172 +.1.3.6.1.2.1.2.2.1.6.16 = STRING: Anonymized 068 +.1.3.6.1.2.1.2.2.1.6.17 = STRING: Anonymized 226 +.1.3.6.1.2.1.2.2.1.6.18 = STRING: Anonymized 038 +.1.3.6.1.2.1.2.2.1.6.19 = STRING: Anonymized 144 +.1.3.6.1.2.1.2.2.1.6.20 = STRING: Anonymized 067 +.1.3.6.1.2.1.2.2.1.6.23 = STRING: +.1.3.6.1.2.1.2.2.1.6.24 = STRING: +.1.3.6.1.2.1.2.2.1.6.25 = STRING: +.1.3.6.1.2.1.2.2.1.6.26 = STRING: Anonymized 250 +.1.3.6.1.2.1.2.2.1.6.27 = STRING: Anonymized 045 +.1.3.6.1.2.1.2.2.1.6.28 = STRING: Anonymized 102 +.1.3.6.1.2.1.2.2.1.6.29 = STRING: Anonymized 229 +.1.3.6.1.2.1.2.2.1.6.30 = STRING: Anonymized 037 +.1.3.6.1.2.1.2.2.1.6.31 = STRING: Anonymized 154 +.1.3.6.1.2.1.2.2.1.6.32 = STRING: Anonymized 135 +.1.3.6.1.2.1.2.2.1.6.36 = STRING: +.1.3.6.1.2.1.2.2.1.6.37 = STRING: +.1.3.6.1.2.1.2.2.1.6.39 = STRING: Anonymized 089 +.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.3 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.5 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.6 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.7 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.8 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.9 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.10 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.11 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.12 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.13 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.14 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.15 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.16 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.17 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.18 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.19 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.20 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.23 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.24 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.25 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.7.26 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.27 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.28 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.29 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.30 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.31 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.32 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.36 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.37 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.7.39 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.3 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.5 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.6 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.7 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.8 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.9 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.10 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.11 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.12 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.13 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.14 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.15 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.16 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.17 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.18 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.19 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.20 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.23 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.24 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.25 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.26 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.27 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.28 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.8.29 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.30 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.31 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.32 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.36 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.37 = INTEGER: up(1) +.1.3.6.1.2.1.2.2.1.8.39 = INTEGER: down(2) +.1.3.6.1.2.1.2.2.1.10.1 = Counter32: 816086386 +.1.3.6.1.2.1.2.2.1.10.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.6 = Counter32: 135035687 +.1.3.6.1.2.1.2.2.1.10.7 = Counter32: 106055395 +.1.3.6.1.2.1.2.2.1.10.8 = Counter32: 894434488 +.1.3.6.1.2.1.2.2.1.10.9 = Counter32: 2266527688 +.1.3.6.1.2.1.2.2.1.10.10 = Counter32: 1771413770 +.1.3.6.1.2.1.2.2.1.10.11 = Counter32: 3700103753 +.1.3.6.1.2.1.2.2.1.10.12 = Counter32: 912751441 +.1.3.6.1.2.1.2.2.1.10.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.14 = Counter32: 3820363530 +.1.3.6.1.2.1.2.2.1.10.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.17 = Counter32: 1080729382 +.1.3.6.1.2.1.2.2.1.10.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.29 = Counter32: 90833859 +.1.3.6.1.2.1.2.2.1.10.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.10.32 = Counter32: 983245010 +.1.3.6.1.2.1.2.2.1.10.36 = Counter32: 3218105718 +.1.3.6.1.2.1.2.2.1.10.37 = Counter32: 2339127288 +.1.3.6.1.2.1.2.2.1.10.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.1 = Counter32: 311235449 +.1.3.6.1.2.1.2.2.1.11.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.6 = Counter32: 608921 +.1.3.6.1.2.1.2.2.1.11.7 = Counter32: 2957603730 +.1.3.6.1.2.1.2.2.1.11.8 = Counter32: 804292572 +.1.3.6.1.2.1.2.2.1.11.9 = Counter32: 724307901 +.1.3.6.1.2.1.2.2.1.11.10 = Counter32: 3611908365 +.1.3.6.1.2.1.2.2.1.11.11 = Counter32: 1461873024 +.1.3.6.1.2.1.2.2.1.11.12 = Counter32: 22522112 +.1.3.6.1.2.1.2.2.1.11.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.14 = Counter32: 7239031 +.1.3.6.1.2.1.2.2.1.11.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.17 = Counter32: 13022379 +.1.3.6.1.2.1.2.2.1.11.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.29 = Counter32: 557016795 +.1.3.6.1.2.1.2.2.1.11.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.11.32 = Counter32: 3984009 +.1.3.6.1.2.1.2.2.1.11.36 = Counter32: 4817280 +.1.3.6.1.2.1.2.2.1.11.37 = Counter32: 5285053 +.1.3.6.1.2.1.2.2.1.11.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.10 = Counter32: 15143971 +.1.3.6.1.2.1.2.2.1.13.11 = Counter32: 1910975 +.1.3.6.1.2.1.2.2.1.13.12 = Counter32: 1177547 +.1.3.6.1.2.1.2.2.1.13.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.14 = Counter32: 817214 +.1.3.6.1.2.1.2.2.1.13.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.17 = Counter32: 692 +.1.3.6.1.2.1.2.2.1.13.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.29 = Counter32: 275 +.1.3.6.1.2.1.2.2.1.13.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.13.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.17 = Counter32: 27194 +.1.3.6.1.2.1.2.2.1.14.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.14.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.1 = Counter32: 816086386 +.1.3.6.1.2.1.2.2.1.16.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.6 = Counter32: 89203602 +.1.3.6.1.2.1.2.2.1.16.7 = Counter32: 3248384140 +.1.3.6.1.2.1.2.2.1.16.8 = Counter32: 2269336382 +.1.3.6.1.2.1.2.2.1.16.9 = Counter32: 4108826730 +.1.3.6.1.2.1.2.2.1.16.10 = Counter32: 1842425322 +.1.3.6.1.2.1.2.2.1.16.11 = Counter32: 2230351444 +.1.3.6.1.2.1.2.2.1.16.12 = Counter32: 29055595 +.1.3.6.1.2.1.2.2.1.16.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.14 = Counter32: 541665149 +.1.3.6.1.2.1.2.2.1.16.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.17 = Counter32: 3459218176 +.1.3.6.1.2.1.2.2.1.16.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.16.27 = Counter32: 660 +.1.3.6.1.2.1.2.2.1.16.28 = Counter32: 220 +.1.3.6.1.2.1.2.2.1.16.29 = Counter32: 2968325899 +.1.3.6.1.2.1.2.2.1.16.30 = Counter32: 491480 +.1.3.6.1.2.1.2.2.1.16.31 = Counter32: 1192796 +.1.3.6.1.2.1.2.2.1.16.32 = Counter32: 2214965357 +.1.3.6.1.2.1.2.2.1.16.36 = Counter32: 2588289726 +.1.3.6.1.2.1.2.2.1.16.37 = Counter32: 2941818072 +.1.3.6.1.2.1.2.2.1.16.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.1 = Counter32: 311235449 +.1.3.6.1.2.1.2.2.1.17.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.6 = Counter32: 563639 +.1.3.6.1.2.1.2.2.1.17.7 = Counter32: 2836151371 +.1.3.6.1.2.1.2.2.1.17.8 = Counter32: 746569775 +.1.3.6.1.2.1.2.2.1.17.9 = Counter32: 804288376 +.1.3.6.1.2.1.2.2.1.17.10 = Counter32: 3787287640 +.1.3.6.1.2.1.2.2.1.17.11 = Counter32: 1186744628 +.1.3.6.1.2.1.2.2.1.17.12 = Counter32: 12481327 +.1.3.6.1.2.1.2.2.1.17.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.14 = Counter32: 8051014 +.1.3.6.1.2.1.2.2.1.17.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.17 = Counter32: 24713191 +.1.3.6.1.2.1.2.2.1.17.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.17.27 = Counter32: 6 +.1.3.6.1.2.1.2.2.1.17.28 = Counter32: 2 +.1.3.6.1.2.1.2.2.1.17.29 = Counter32: 1584253698 +.1.3.6.1.2.1.2.2.1.17.30 = Counter32: 11692 +.1.3.6.1.2.1.2.2.1.17.31 = Counter32: 28390 +.1.3.6.1.2.1.2.2.1.17.32 = Counter32: 8235853 +.1.3.6.1.2.1.2.2.1.17.36 = Counter32: 4102143 +.1.3.6.1.2.1.2.2.1.17.37 = Counter32: 5014348 +.1.3.6.1.2.1.2.2.1.17.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.2 = Counter32: 76759 +.1.3.6.1.2.1.2.2.1.19.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.7 = Counter32: 12 +.1.3.6.1.2.1.2.2.1.19.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.17 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.19.36 = Counter32: 57 +.1.3.6.1.2.1.2.2.1.19.37 = Counter32: 818 +.1.3.6.1.2.1.2.2.1.19.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.6 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.7 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.8 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.9 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.10 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.11 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.12 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.13 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.14 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.15 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.16 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.17 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.18 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.19 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.20 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.23 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.24 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.25 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.26 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.27 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.28 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.29 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.30 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.31 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.32 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.36 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.37 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.39 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.6 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.7 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.8 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.9 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.10 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.11 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.12 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.13 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.14 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.15 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.16 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.17 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.18 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.19 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.20 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.23 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.24 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.25 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.26 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.27 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.28 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.29 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.30 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.31 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.32 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.36 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.37 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.39 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.22.1 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.2 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.3 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.4 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.5 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.6 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.7 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.8 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.9 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.10 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.11 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.12 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.13 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.14 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.15 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.16 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.17 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.18 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.19 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.20 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.23 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.24 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.25 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.26 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.27 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.28 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.29 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.30 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.31 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.32 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.36 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.37 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.39 = OID: .0.0 +.1.3.6.1.2.1.4.20.1.2.1.1.1.1 = INTEGER: 15 +.1.3.6.1.2.1.4.20.1.2.10.0.0.254 = INTEGER: 10 +.1.3.6.1.2.1.4.20.1.2.10.255.0.1 = INTEGER: 27 +.1.3.6.1.2.1.4.20.1.2.127.0.0.1 = INTEGER: 1 +.1.3.6.1.2.1.4.20.1.2.151.12.111.4 = INTEGER: 11 +.1.3.6.1.2.1.4.20.1.2.169.254.192.2 = INTEGER: 17 +.1.3.6.1.2.1.4.20.1.2.169.254.234.5 = INTEGER: 2 +.1.3.6.1.2.1.4.20.1.2.192.168.30.254 = INTEGER: 12 +.1.3.6.1.2.1.4.20.1.2.192.168.40.1 = INTEGER: 36 +.1.3.6.1.2.1.4.20.1.2.192.168.40.129 = INTEGER: 37 +.1.3.6.1.2.1.4.20.1.2.192.168.80.254 = INTEGER: 32 +.1.3.6.1.2.1.4.20.1.2.192.168.201.254 = INTEGER: 29 +.1.3.6.1.2.1.4.20.1.2.192.168.202.254 = INTEGER: 30 +.1.3.6.1.2.1.4.20.1.2.192.168.203.254 = INTEGER: 31 +.1.3.6.1.2.1.4.20.1.2.192.168.217.1 = INTEGER: 14 +.1.3.6.1.2.1.4.20.1.2.192.168.218.4 = INTEGER: 28 +.1.3.6.1.2.1.31.1.1.1.1.1 = STRING: Anonymized 250 +.1.3.6.1.2.1.31.1.1.1.1.2 = STRING: Anonymized 037 +.1.3.6.1.2.1.31.1.1.1.1.3 = STRING: Anonymized 184 +.1.3.6.1.2.1.31.1.1.1.1.4 = STRING: Anonymized 101 +.1.3.6.1.2.1.31.1.1.1.1.5 = STRING: Anonymized 252 +.1.3.6.1.2.1.31.1.1.1.1.6 = STRING: Anonymized 012 +.1.3.6.1.2.1.31.1.1.1.1.7 = STRING: Anonymized 232 +.1.3.6.1.2.1.31.1.1.1.1.8 = STRING: Anonymized 072 +.1.3.6.1.2.1.31.1.1.1.1.9 = STRING: Anonymized 037 +.1.3.6.1.2.1.31.1.1.1.1.10 = STRING: Anonymized 012 +.1.3.6.1.2.1.31.1.1.1.1.11 = STRING: Anonymized 118 +.1.3.6.1.2.1.31.1.1.1.1.12 = STRING: Anonymized 073 +.1.3.6.1.2.1.31.1.1.1.1.13 = STRING: Anonymized 071 +.1.3.6.1.2.1.31.1.1.1.1.14 = STRING: Anonymized 073 +.1.3.6.1.2.1.31.1.1.1.1.15 = STRING: Anonymized 232 +.1.3.6.1.2.1.31.1.1.1.1.16 = STRING: Anonymized 191 +.1.3.6.1.2.1.31.1.1.1.1.17 = STRING: Anonymized 242 +.1.3.6.1.2.1.31.1.1.1.1.18 = STRING: Anonymized 175 +.1.3.6.1.2.1.31.1.1.1.1.19 = STRING: Anonymized 128 +.1.3.6.1.2.1.31.1.1.1.1.20 = STRING: Anonymized 080 +.1.3.6.1.2.1.31.1.1.1.1.23 = STRING: Anonymized 092 +.1.3.6.1.2.1.31.1.1.1.1.24 = STRING: Anonymized 187 +.1.3.6.1.2.1.31.1.1.1.1.25 = STRING: Anonymized 163 +.1.3.6.1.2.1.31.1.1.1.1.26 = STRING: Anonymized 103 +.1.3.6.1.2.1.31.1.1.1.1.27 = STRING: Anonymized 151 +.1.3.6.1.2.1.31.1.1.1.1.28 = STRING: Anonymized 141 +.1.3.6.1.2.1.31.1.1.1.1.29 = STRING: Anonymized 171 +.1.3.6.1.2.1.31.1.1.1.1.30 = STRING: Anonymized 107 +.1.3.6.1.2.1.31.1.1.1.1.31 = STRING: Anonymized 239 +.1.3.6.1.2.1.31.1.1.1.1.32 = STRING: Anonymized 137 +.1.3.6.1.2.1.31.1.1.1.1.36 = STRING: Anonymized 028 +.1.3.6.1.2.1.31.1.1.1.1.37 = STRING: Anonymized 105 +.1.3.6.1.2.1.31.1.1.1.1.39 = STRING: Anonymized 045 +.1.3.6.1.2.1.31.1.1.1.2.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.29 = Counter32: 2169 +.1.3.6.1.2.1.31.1.1.1.2.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.2.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.3.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.4.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.1 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.2 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.3 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.4 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.5 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.6 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.7 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.8 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.9 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.10 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.11 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.12 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.13 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.14 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.15 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.16 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.17 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.18 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.19 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.20 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.23 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.24 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.25 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.26 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.27 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.28 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.29 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.30 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.31 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.32 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.36 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.37 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.5.39 = Counter32: 0 +.1.3.6.1.2.1.31.1.1.1.6.1 = Counter64: 159731655835 +.1.3.6.1.2.1.31.1.1.1.6.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.6 = Counter64: 135035805 +.1.3.6.1.2.1.31.1.1.1.6.7 = Counter64: 3380252424024 +.1.3.6.1.2.1.31.1.1.1.6.8 = Counter64: 5146279094400 +.1.3.6.1.2.1.31.1.1.1.6.9 = Counter64: 5147653913693 +.1.3.6.1.2.1.31.1.1.1.6.10 = Counter64: 3682563614036 +.1.3.6.1.2.1.31.1.1.1.6.11 = Counter64: 1451114931208 +.1.3.6.1.2.1.31.1.1.1.6.12 = Counter64: 13797678926 +.1.3.6.1.2.1.31.1.1.1.6.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.14 = Counter64: 3820364831 +.1.3.6.1.2.1.31.1.1.1.6.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.17 = Counter64: 1080733376 +.1.3.6.1.2.1.31.1.1.1.6.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.29 = Counter64: 1013706131268 +.1.3.6.1.2.1.31.1.1.1.6.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.6.32 = Counter64: 983249543 +.1.3.6.1.2.1.31.1.1.1.6.36 = Counter64: 3218111678 +.1.3.6.1.2.1.31.1.1.1.6.37 = Counter64: 2339438452 +.1.3.6.1.2.1.31.1.1.1.6.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.1 = Counter64: 311238779 +.1.3.6.1.2.1.31.1.1.1.7.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.6 = Counter64: 608922 +.1.3.6.1.2.1.31.1.1.1.7.7 = Counter64: 2957639849 +.1.3.6.1.2.1.31.1.1.1.7.8 = Counter64: 5099307474 +.1.3.6.1.2.1.31.1.1.1.7.9 = Counter64: 724349420 +.1.3.6.1.2.1.31.1.1.1.7.10 = Counter64: 3611938635 +.1.3.6.1.2.1.31.1.1.1.7.11 = Counter64: 1461892794 +.1.3.6.1.2.1.31.1.1.1.7.12 = Counter64: 22522190 +.1.3.6.1.2.1.31.1.1.1.7.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.14 = Counter64: 7239047 +.1.3.6.1.2.1.31.1.1.1.7.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.17 = Counter64: 13022433 +.1.3.6.1.2.1.31.1.1.1.7.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.29 = Counter64: 557042139 +.1.3.6.1.2.1.31.1.1.1.7.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.7.32 = Counter64: 3984024 +.1.3.6.1.2.1.31.1.1.1.7.36 = Counter64: 4817301 +.1.3.6.1.2.1.31.1.1.1.7.37 = Counter64: 5292043 +.1.3.6.1.2.1.31.1.1.1.7.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.29 = Counter64: 2169 +.1.3.6.1.2.1.31.1.1.1.8.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.8.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.9.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 159731655835 +.1.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.6 = Counter64: 89203720 +.1.3.6.1.2.1.31.1.1.1.10.7 = Counter64: 3349033946951 +.1.3.6.1.2.1.31.1.1.1.10.8 = Counter64: 5147653913582 +.1.3.6.1.2.1.31.1.1.1.10.9 = Counter64: 5166676325433 +.1.3.6.1.2.1.31.1.1.1.10.10 = Counter64: 4481502747279 +.1.3.6.1.2.1.31.1.1.1.10.11 = Counter64: 642185108419 +.1.3.6.1.2.1.31.1.1.1.10.12 = Counter64: 8619024942 +.1.3.6.1.2.1.31.1.1.1.10.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.14 = Counter64: 541666193 +.1.3.6.1.2.1.31.1.1.1.10.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.17 = Counter64: 3459240699 +.1.3.6.1.2.1.31.1.1.1.10.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.10.27 = Counter64: 660 +.1.3.6.1.2.1.31.1.1.1.10.28 = Counter64: 220 +.1.3.6.1.2.1.31.1.1.1.10.29 = Counter64: 2240647975939 +.1.3.6.1.2.1.31.1.1.1.10.30 = Counter64: 491480 +.1.3.6.1.2.1.31.1.1.1.10.31 = Counter64: 1193048 +.1.3.6.1.2.1.31.1.1.1.10.32 = Counter64: 2214976596 +.1.3.6.1.2.1.31.1.1.1.10.36 = Counter64: 2588293755 +.1.3.6.1.2.1.31.1.1.1.10.37 = Counter64: 2943757933 +.1.3.6.1.2.1.31.1.1.1.10.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.1 = Counter64: 311238779 +.1.3.6.1.2.1.31.1.1.1.11.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.6 = Counter64: 563640 +.1.3.6.1.2.1.31.1.1.1.11.7 = Counter64: 2836176053 +.1.3.6.1.2.1.31.1.1.1.11.8 = Counter64: 5041574603 +.1.3.6.1.2.1.31.1.1.1.11.9 = Counter64: 804340189 +.1.3.6.1.2.1.31.1.1.1.11.10 = Counter64: 3787315137 +.1.3.6.1.2.1.31.1.1.1.11.11 = Counter64: 1186755765 +.1.3.6.1.2.1.31.1.1.1.11.12 = Counter64: 12481379 +.1.3.6.1.2.1.31.1.1.1.11.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.14 = Counter64: 8051029 +.1.3.6.1.2.1.31.1.1.1.11.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.17 = Counter64: 24713360 +.1.3.6.1.2.1.31.1.1.1.11.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.11.27 = Counter64: 6 +.1.3.6.1.2.1.31.1.1.1.11.28 = Counter64: 2 +.1.3.6.1.2.1.31.1.1.1.11.29 = Counter64: 1584273437 +.1.3.6.1.2.1.31.1.1.1.11.30 = Counter64: 11692 +.1.3.6.1.2.1.31.1.1.1.11.31 = Counter64: 28396 +.1.3.6.1.2.1.31.1.1.1.11.32 = Counter64: 8235886 +.1.3.6.1.2.1.31.1.1.1.11.36 = Counter64: 4102167 +.1.3.6.1.2.1.31.1.1.1.11.37 = Counter64: 5026956 +.1.3.6.1.2.1.31.1.1.1.11.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.6 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.7 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.8 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.9 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.10 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.11 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.12 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.13 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.14 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.15 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.16 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.17 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.18 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.19 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.20 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.23 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.24 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.25 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.26 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.27 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.28 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.29 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.30 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.31 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.32 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.36 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.37 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.39 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.15.1 = Gauge32: 10 +.1.3.6.1.2.1.31.1.1.1.15.2 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.3 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.4 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.5 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.6 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.7 = Gauge32: 10000 +.1.3.6.1.2.1.31.1.1.1.15.8 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.9 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.10 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.11 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.12 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.13 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.14 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.15 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.16 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.17 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.18 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.19 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.20 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.23 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.24 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.25 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.26 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.27 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.28 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.29 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.30 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.31 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.32 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.36 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.37 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.15.39 = Gauge32: 0 +.1.3.6.1.2.1.31.1.1.1.16.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.2 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.3 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.4 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.5 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.6 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.7 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.8 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.9 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.10 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.11 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.12 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.13 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.14 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.15 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.16 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.17 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.18 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.19 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.20 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.23 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.24 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.25 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.26 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.27 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.28 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.29 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.30 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.31 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.32 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.36 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.37 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.16.39 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.1 = INTEGER: false(2) +.1.3.6.1.2.1.31.1.1.1.17.2 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.3 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.4 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.5 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.6 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.7 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.8 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.9 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.10 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.11 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.12 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.13 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.14 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.15 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.16 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.17 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.18 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.19 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.20 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.23 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.24 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.25 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.26 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.27 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.28 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.29 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.30 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.31 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.32 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.36 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.37 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.17.39 = INTEGER: true(1) +.1.3.6.1.2.1.31.1.1.1.18.1 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.2 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.3 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.4 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.5 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.6 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.7 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.8 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.9 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.10 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.11 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.12 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.13 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.14 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.15 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.16 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.17 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.18 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.19 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.20 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.23 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.24 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.25 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.26 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.27 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.28 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.29 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.30 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.31 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.32 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.36 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.37 = STRING: +.1.3.6.1.2.1.31.1.1.1.18.39 = STRING: +.1.3.6.1.2.1.31.1.1.1.19.1 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.2 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.3 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.4 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.5 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.6 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.7 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.8 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.9 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.10 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.11 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.12 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.13 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.14 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.15 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.16 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.17 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.18 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.19 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.20 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.23 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.24 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.25 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.26 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.27 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.28 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.29 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.30 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.31 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.32 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.36 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.37 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.2.1.31.1.1.1.19.39 = Timeticks: (0) 0:00:00.00 +.1.3.6.1.4.1.2604.5.1.2.4.1.0 = Gauge32: 89056 +.1.3.6.1.4.1.2604.5.1.2.4.2.0 = Gauge32: 24 +.1.3.6.1.4.1.2604.5.1.2.5.1.0 = Gauge32: 7791 +.1.3.6.1.4.1.2604.5.1.2.5.2.0 = Gauge32: 58 +.1.3.6.1.4.1.2604.5.1.2.5.3.0 = Gauge32: 7911 +.1.3.6.1.4.1.2604.5.1.2.5.4.0 = Gauge32: 10 +.1.3.6.1.4.1.2604.5.1.2.6.0 = Gauge32: 38 +.1.3.6.1.4.1.2604.5.1.2.7.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.8.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.1.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.2.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.2.9.3.0 = Counter64: 0 +.1.3.6.1.4.1.2604.5.1.3.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.2.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.3.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.4.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.5.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.6.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.7.0 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.3.8.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.9.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.10.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.11.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.12.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.13.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.14.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.15.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.16.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.17.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.18.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.19.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.20.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.3.21.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.4.1.0 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.4.4.0 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.4.5.0 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.4.8.0 = STRING: Anonymized 005 +.1.3.6.1.4.1.2604.5.1.4.9.0 = IpAddress: 192.168.42.189 +.1.3.6.1.4.1.2604.5.1.4.10.0 = IpAddress: 192.168.42.002 +.1.3.6.1.4.1.2604.5.1.5.1.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.1.2.0 = STRING: Dec 31 2999 +.1.3.6.1.4.1.2604.5.1.5.2.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.2.2.0 = STRING: Feb 27 2029 +.1.3.6.1.4.1.2604.5.1.5.3.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.3.2.0 = STRING: Feb 27 2029 +.1.3.6.1.4.1.2604.5.1.5.4.1.0 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.5.4.2.0 = STRING: fail +.1.3.6.1.4.1.2604.5.1.5.5.1.0 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.5.5.2.0 = STRING: Anonymized 009 +.1.3.6.1.4.1.2604.5.1.5.6.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.6.2.0 = STRING: Anonymized 230 +.1.3.6.1.4.1.2604.5.1.5.7.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.7.2.0 = STRING: Anonymized 220 +.1.3.6.1.4.1.2604.5.1.5.8.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.8.2.0 = STRING: Anonymized 188 +.1.3.6.1.4.1.2604.5.1.5.9.1.0 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.5.9.2.0 = STRING: Anonymized 237 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.1 = STRING: Anonymized 093 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.2 = STRING: Anonymized 252 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.3 = STRING: Anonymized 029 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.2.4 = STRING: Anonymized 132 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.1 = STRING: Anonymized 022 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.2 = STRING: Anonymized 070 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.3 = STRING: Anonymized 157 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.3.4 = "" +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.1 = STRING: Anonymized 208 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.2 = STRING: Anonymized 055 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.3 = STRING: Anonymized 151 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.4.4 = STRING: Anonymized 089 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.1 = STRING: Anonymized 245 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.2 = STRING: Anonymized 123 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.3 = STRING: Anonymized 055 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.5.4 = STRING: Anonymized 185 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.1 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.2 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.3 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.6.4 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.1 = STRING: Anonymized 238 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.2 = STRING: Anonymized 076 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.3 = STRING: Anonymized 081 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.7.4 = STRING: Anonymized 172 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.1 = INTEGER: 2 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.2 = INTEGER: 12 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.3 = INTEGER: 12 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.8.4 = INTEGER: 3 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.1 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.2 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.3 = INTEGER: 0 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.9.4 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.1 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.2 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.3 = INTEGER: 1 +.1.3.6.1.4.1.2604.5.1.6.1.1.1.1.10.4 = INTEGER: 1 diff --git a/tests/network/cyberoam/snmp/storage.robot b/tests/network/cyberoam/snmp/storage.robot new file mode 100644 index 0000000000..996df68f2c --- /dev/null +++ b/tests/network/cyberoam/snmp/storage.robot @@ -0,0 +1,30 @@ +*** Settings *** +Documentation Check storage usage. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +storage ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=storage + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --warning-usage=0 WARNING: Storage Usage Total: 86.97 GB Used: 20.87 GB (24.00%) Free: 66.10 GB (76.00%) | 'used'=22411676221.44B;0:0;;0;93381984256 + ... 2 --critical-usage=0 CRITICAL: Storage Usage Total: 86.97 GB Used: 20.87 GB (24.00%) Free: 66.10 GB (76.00%) | 'used'=22411676221.44B;;0:0;0;93381984256 \ No newline at end of file diff --git a/tests/network/cyberoam/snmp/vpn-status.robot b/tests/network/cyberoam/snmp/vpn-status.robot new file mode 100644 index 0000000000..d19a1b41e9 --- /dev/null +++ b/tests/network/cyberoam/snmp/vpn-status.robot @@ -0,0 +1,40 @@ +*** Settings *** +Documentation Check VPN status. VPN-Connection-Status: inactive, active,partiallyActive. + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Test Timeout 120s +Test Setup Ctn Generic Suite Setup + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::cyberoam::snmp::plugin + + +*** Test Cases *** +vpn-status ${tc} + [Tags] network cyberoam + ${command} Catenate + ... ${CMD} + ... --mode=vpn-status + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/cyberoam/snmp/slim_sophos + ... --snmp-timeout=1 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --filter-counters='^total$|^total-normal$' OK: VPN total: 4 - All VPNs are ok | 'total'=4;;;0; + ... 2 --filter-name='Anonymized 029' CRITICAL: VPN 'Anonymized 029' (Anonymized 157) status: inactive | 'total'=1;;;0; 'total_inactive'=1;;;0; 'total_active'=0;;;0; 'total_partially_active'=0;;;0; + ... 3 --filter-name='Anonymized 132' OK: VPN total: 1, inactive: 0, active: 1, partially active: 0 - VPN 'Anonymized 132' status: active | 'total'=1;;;0; 'total_inactive'=0;;;0; 'total_active'=1;;;0; 'total_partially_active'=0;;;0; + ... 4 --filter-vpn-activated='^inactive$' OK: VPN total : skipped (no value(s)), inactive: 0, active: 0, partially active: 0 | 'total_inactive'=0;;;0; 'total_active'=0;;;0; 'total_partially_active'=0;;;0; + ... 5 --filter-vpn-activated='^active$' CRITICAL: VPN 'Anonymized 029' (Anonymized 157) status: inactive | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; + ... 6 --filter-connection-type='host-to-host' OK: VPN total : skipped (no value(s)), inactive: 0, active: 0, partially active: 0 | 'total_inactive'=0;;;0; 'total_active'=0;;;0; 'total_partially_active'=0;;;0; + ... 7 --filter-connection-type='site-to-site' CRITICAL: VPN 'Anonymized 029' (Anonymized 157) status: inactive | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; + ... 8 --filter-connection-type='tunnel-interface' OK: VPN total : skipped (no value(s)), inactive: 0, active: 0, partially active: 0 | 'total_inactive'=0;;;0; 'total_active'=0;;;0; 'total_partially_active'=0;;;0; + ... 9 --critical-status='' --warning-status='\\\%{connection_status} ne "active"' WARNING: VPN 'Anonymized 029' (Anonymized 157) status: inactive | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; + ... 10 --critical-status='' --warning-total=0 --critical-total=20 WARNING: VPN total: 4 | 'total'=4;0:0;0:20;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; + ... 11 --critical-status='' --warning-total-inactive=10 --critical-total-inactive=0 CRITICAL: VPN inactive: 1 | 'total'=4;;;0; 'total_inactive'=1;0:10;0:0;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; + ... 12 --critical-status='' --warning-total-active=0 --critical-total-active=0 CRITICAL: VPN active: 3 | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;0:0;0:0;0; 'total_partially_active'=0;;;0; diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index a8357d4ab9..6d2fb0416f 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -51,6 +51,7 @@ cpu-utilization-1m cpu-utilization-5m cpu-utilization-5s CX +Cyberoam Datacore datasource DC4 @@ -61,12 +62,10 @@ dev df --dfsr dfsrevent ---diskpath --display-transform-dst --display-transform-src dns-resolve-time --dyn-mode -Ekara -EncodedCommand env ESX @@ -99,7 +98,6 @@ ifName --ignore-orgs-api-disabled IMEI in-bcast -includeAllDisks in-crc in-fcserror in-mcast @@ -172,6 +170,7 @@ NLCapacity --noidle -NoLogo --nomachineaccount +notapplicable --ntlmv2 NTLMv2 NTP @@ -190,6 +189,7 @@ out-fc-wait out-mcast out-ucast overprovisioning +partiallyActive --patch-redhat perfdata physicaldrive @@ -214,7 +214,7 @@ Sansymphony SAS scenarii --scope-datacenter -SFDC +SFOS sfp.temperature --skip-ssl-check SkyHigh @@ -226,6 +226,7 @@ space-usage-prct --sql-errors-exit SSDCapacity SSH +standAlone statefile --statefile-concat-cwd SureBackup From 26c4b67d2856793015ce6180b91d7286524f973e Mon Sep 17 00:00:00 2001 From: sfarouq-ext <116093375+sfarouq-ext@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:05:40 +0100 Subject: [PATCH 08/20] enh(fortinet): add option last-update (licenses) (#5399) Refs: CTOR-1126 Co-authored-by: chris.mvila --- .../fortigate/restapi/mode/licenses.pm | 32 ++++++- .../fortigate/restapi/License-api.json | 92 +++++++++++++++++++ .../fortinet/fortigate/restapi/licenses.robot | 35 +++++++ 3 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 tests/network/fortinet/fortigate/restapi/License-api.json create mode 100644 tests/network/fortinet/fortigate/restapi/licenses.robot diff --git a/src/network/fortinet/fortigate/restapi/mode/licenses.pm b/src/network/fortinet/fortigate/restapi/mode/licenses.pm index 54870fe7af..27d97d0b21 100644 --- a/src/network/fortinet/fortigate/restapi/mode/licenses.pm +++ b/src/network/fortinet/fortigate/restapi/mode/licenses.pm @@ -45,6 +45,18 @@ sub custom_expires_perfdata { ); } +sub custom_last_update_threshold { + my ($self, %options) = @_; + + return $self->{perfdata}->threshold_check( + value => floor($self->{result_values}->{last_update_seconds} / $unitdiv->{ $self->{instance_mode}->{option_results}->{unit} }), + threshold => [ + { label => 'critical-' . $self->{thlabel}, exit_litteral => 'critical' }, + { label => 'warning-'. $self->{thlabel}, exit_litteral => 'warning' } + ] + ); +} + sub custom_expires_threshold { my ($self, %options) = @_; @@ -95,7 +107,17 @@ sub set_counters { closure_custom_perfdata => $self->can('custom_expires_perfdata'), closure_custom_threshold_check => $self->can('custom_expires_threshold') } + }, + { label => 'last-update', set => { + key_values => [ { name => 'last_update_seconds' }, { name => 'last_update_human' }, { name => 'name' } ], + output_template => 'last_update is %s', + output_use => 'last_update_human', + #closure_custom_perfdata => $self->can('custom_expires_perfdata'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => $self->can('custom_last_update_threshold') + } } + ]; } @@ -132,6 +154,14 @@ sub add_license { name => $options{name}, status => $options{entry}->{status} }; + + if (defined($options{entry}->{last_update})) { + $self->{licenses}->{ $options{name} }->{last_update_seconds} = time() - $options{entry}->{last_update}; + $self->{licenses}->{ $options{name} }->{last_update_human} = centreon::plugins::misc::change_seconds( + value => $self->{licenses}->{ $options{name} }->{last_update_seconds} + ); + } + if (defined($options{entry}->{expires})) { $self->{licenses}->{ $options{name} }->{expires_seconds} = $options{entry}->{expires} - time(); $self->{licenses}->{ $options{name} }->{expires_seconds} = 0 if ($self->{licenses}->{ $options{name} }->{expires_seconds} < 0); @@ -192,7 +222,7 @@ Select the time unit for the expiration thresholds. May be 's' for seconds, 'm' =item B<--warning-*> B<--critical-*> Thresholds. -Can be: 'expires'. +Can be: 'expires', 'last-update' =back diff --git a/tests/network/fortinet/fortigate/restapi/License-api.json b/tests/network/fortinet/fortigate/restapi/License-api.json new file mode 100644 index 0000000000..8b3505da3c --- /dev/null +++ b/tests/network/fortinet/fortigate/restapi/License-api.json @@ -0,0 +1,92 @@ +{ + "uuid": "edae28cc-0d15-4208-9e84-a3bec3f4032f", + "lastMigration": 32, + "name": "Output api (copy)", + "endpointPrefix": "", + "latency": 0, + "port": 3001, + "hostname": "", + "folders": [], + "routes": [ + { + "uuid": "fd224d5e-66c5-49dc-a1aa-c8f0cc3db291", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "api/v2/monitor/license/status/select/", + "responses": [ + { + "uuid": "700dc720-1251-4d1d-9f18-03e4fa8ffee4", + "body": "{\n \"http_method\": \"GET\",\n \"results\": {\n \"fortiguard\": {\n \"type\": \"cloud_service_status\",\n \"supported\": true,\n \"connected\": true,\n \"has_updated\": true,\n \"update_server_usa\": false,\n \"next_scheduled_update\": 1731938460,\n \"scheduled_updates_enabled\": true,\n \"server_address\": \"xx.xx.xx.xx:443\",\n \"fortigate_wan_ip\": \"xx.xx.xx.xx\"\n },\n \"forticare\": {\n \"type\": \"cloud_service_status\",\n \"status\": \"registered\",\n \"registration_supported\": true,\n \"account\": \"support.xxxxx@xxxxx.fr\",\n \"support\": {\n \"hardware\": {\n \"status\": \"licensed\",\n \"support_level\": \"Advanced HW\",\n \"expires\": 1737244800\n },\n \"enhanced\": {\n \"status\": \"licensed\",\n \"support_level\": \"Premium\",\n \"expires\": 1737244800\n }\n },\n \"company\": \"xxxxxxxxx\",\n \"industry\": \"\"\n },\n \"forticloud\": {\n \"type\": \"cloud_service_status\",\n \"status\": \"cloud_logged_out\"\n },\n \"security_rating\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"no_license\",\n \"version\": \"0.00000\",\n \"entitlement\": \"FGSA\",\n \"last_update\": 978303600\n },\n \"antivirus\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"1.00000\",\n \"expires\": 1515888000,\n \"entitlement\": \"AVDB\",\n \"last_update\": 1523293620,\n \"last_update_attempt\": 1672054760,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\",\n \"db_status\": \"db_type_extended\",\n \"engine\": {\n \"version\": \"6.00298\",\n \"last_update\": 1709239320,\n \"last_update_attempt\": 1567573458,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\"\n }\n },\n \"mobile_malware\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"0.00000\",\n \"expires\": 1515888000,\n \"entitlement\": \"AVDB\",\n \"last_update\": 978303600,\n \"last_update_attempt\": 1672054760,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\"\n },\n \"ai_malware_detection\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"0.00000\",\n \"expires\": 1515888000,\n \"entitlement\": \"AVDB\",\n \"last_update\": 978303600\n },\n \"ips\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"6.00741\",\n \"expires\": 1515888000,\n \"entitlement\": \"NIDS\",\n \"last_update\": 1448933400,\n \"last_update_attempt\": 1567573458,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\",\n \"db_status\": \"db_type_normal\",\n \"engine\": {\n \"version\": \"7.00181\",\n \"last_update\": 1709587380,\n \"last_update_attempt\": 1567573458,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\"\n }\n },\n \"industrial_db\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"no_license\",\n \"version\": \"6.00741\",\n \"entitlement\": \"ISSS\",\n \"last_update\": 1448933400\n },\n \"appctrl\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"licensed\",\n \"version\": \"25.00592\",\n \"expires\": 1737244800,\n \"entitlement\": \"FMWR\",\n \"last_update\": 1620125365,\n \"last_update_attempt\": 1620125372,\n \"last_update_result_status\": \"update_result_no_updates\",\n \"last_update_method_status\": \"update_method_sched\"\n },\n \"internet_service_db\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"licensed\",\n \"version\": \"7.03943\",\n \"last_update\": 1731726154,\n \"last_update_attempt\": 1731934873,\n \"last_update_result_status\": \"update_result_no_updates\",\n \"last_update_method_status\": \"update_method_sched\"\n },\n \"device_os_id\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"licensed\",\n \"version\": \"1.00177\",\n \"expires\": 1737244800,\n \"entitlement\": \"FMWR\",\n \"last_update\": 1726887673,\n \"last_update_attempt\": 1731934873,\n \"last_update_result_status\": \"update_result_no_updates\",\n \"last_update_method_status\": \"update_method_sched\"\n },\n \"botnet_ip\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"licensed\",\n \"version\": \"7.03943\",\n \"last_update\": 1731726154,\n \"last_update_attempt\": 1731934873,\n \"last_update_result_status\": \"update_result_no_updates\",\n \"last_update_method_status\": \"update_method_sched\"\n },\n \"botnet_domain\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"0.00000\",\n \"expires\": 1515888000,\n \"entitlement\": \"AVDB\",\n \"last_update\": 978303600,\n \"last_update_attempt\": 1672054760,\n \"last_update_result_status\": \"update_result_not_authorized\",\n \"last_update_method_status\": \"update_method_manual\"\n },\n \"malicious_urls\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"1.00001\",\n \"expires\": 1515888000,\n \"entitlement\": \"NIDS\",\n \"last_update\": 1672054760,\n \"last_update_attempt\": 1672054760,\n \"last_update_result_status\": \"update_result_success\",\n \"last_update_method_status\": \"update_method_sched\"\n },\n \"blacklisted_certificates\": {\n \"type\": \"downloaded_fds_object\",\n \"status\": \"expired\",\n \"version\": \"0.00000\",\n \"expires\": 1516147200,\n \"entitlement\": \"FURL\",\n \"last_update\": 978303600\n },\n \"web_filtering\": {\n \"type\": \"live_fortiguard_service\",\n \"status\": \"expired\",\n \"expires\": 1516147200,\n \"entitlement\": \"FURL\",\n \"category_list_version\": 9,\n \"running\": false\n },\n \"outbreak_prevention\": {\n \"type\": \"live_fortiguard_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"ZHVO\"\n },\n \"antispam\": {\n \"type\": \"live_fortiguard_service\",\n \"status\": \"expired\",\n \"expires\": 1516147200,\n \"entitlement\": \"SPAM\"\n },\n \"sdwan_network_monitor\": {\n \"type\": \"live_fortiguard_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"SWNM\"\n },\n \"iot_detection\": {\n \"type\": \"live_fortiguard_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"IOTH\"\n },\n \"forticloud_logging\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"free_license\",\n \"used_bytes\": 0,\n \"max_bytes\": 0,\n \"log_retention_days\": 7\n },\n \"forticloud_sandbox\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"free_license\",\n \"expires\": 1515888000,\n \"entitlement\": \"AVDB\",\n \"files_uploaded_daily\": 0,\n \"max_files_daily\": 100\n },\n \"fortianalyzer_cloud\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"FAZC\"\n },\n \"fortianalyzer_cloud_premium\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"AFAC\"\n },\n \"fortimanager_cloud\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"FMGC\"\n },\n \"fortiipam_cloud\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"IPMC\"\n },\n \"fortisandbox_cloud\": {\n \"type\": \"live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"FSAC\"\n },\n \"fortiems_cloud\": {\n \"type\": \"account_level_live_cloud_service\",\n \"status\": \"expires_soon\",\n \"expires\": 1732838400,\n \"entitlement\": \"FCEM\"\n },\n \"fortimanager_cloud_alci\": {\n \"type\": \"account_level_live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"FMGC\"\n },\n \"fortisandbox_cloud_alci\": {\n \"type\": \"account_level_live_cloud_service\",\n \"status\": \"no_license\",\n \"entitlement\": \"FSAP\"\n },\n \"vdom\": {\n \"type\": \"platform\",\n \"can_upgrade\": false,\n \"used\": 2,\n \"max\": 10\n },\n \"sms\": {\n \"type\": \"other\",\n \"status\": \"unavailable\",\n \"used\": 0,\n \"max\": 100\n }\n },\n \"vdom\": \"root\",\n \"path\": \"license\",\n \"name\": \"status\",\n \"action\": \"select\",\n \"status\": \"success\",\n \"serial\": \"FG100E4Q17017027\",\n \"version\": \"v7.0.15\",\n \"build\": 632\n}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null + } + ], + "rootChildren": [ + { + "type": "route", + "uuid": "fd224d5e-66c5-49dc-a1aa-c8f0cc3db291" + } + ], + "proxyMode": false, + "proxyHost": "", + "proxyRemovePrefix": false, + "tlsOptions": { + "enabled": false, + "type": "CERT", + "pfxPath": "", + "certPath": "", + "keyPath": "", + "caPath": "", + "passphrase": "" + }, + "cors": true, + "headers": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + }, + { + "key": "Access-Control-Allow-Methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "Access-Control-Allow-Headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + } + ], + "proxyReqHeaders": [ + { + "key": "", + "value": "" + } + ], + "proxyResHeaders": [ + { + "key": "", + "value": "" + } + ], + "data": [], + "callbacks": [] +} \ No newline at end of file diff --git a/tests/network/fortinet/fortigate/restapi/licenses.robot b/tests/network/fortinet/fortigate/restapi/licenses.robot new file mode 100644 index 0000000000..afb9954c19 --- /dev/null +++ b/tests/network/fortinet/fortigate/restapi/licenses.robot @@ -0,0 +1,35 @@ +*** Settings *** +Documentation Check licenses. + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + +** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}License-api.json + +${CMD} ${CENTREON_PLUGINS} +... --plugin=network::fortinet::fortigate::restapi::plugin +... --hostname=${HOSTNAME} +... --proto='http' +... --access-token=mokoon-token +... --port=${APIPORT} + +*** Test Cases *** +licenses ${tc} + [Tags] network fortinet fortigate restapi + ${command} Catenate + ... ${CMD} + ... --mode=licenses + ... ${extra_options} + Ctn Verify Command Output ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --warning-status='\\\%{name} eq /web_filtering/i' CRITICAL: License 'ai_malware_detection' status: expired - License 'antispam' status: expired - License 'antivirus' status: expired - License 'blacklisted_certificates' status: expired - License 'botnet_domain' status: expired - License 'ips' status: expired - License 'malicious_urls' status: expired - License 'mobile_malware' status: expired - License 'web_filtering' status: expired | 'ai_malware_detection#license.expires.seconds'=0s;;;0; 'antispam#license.expires.seconds'=0s;;;0; 'antivirus#license.expires.seconds'=0s;;;0; 'appctrl#license.expires.seconds'=0s;;;0; 'blacklisted_certificates#license.expires.seconds'=0s;;;0; 'botnet_domain#license.expires.seconds'=0s;;;0; 'device_os_id#license.expires.seconds'=0s;;;0; 'forticare:support:enhanced#license.expires.seconds'=0s;;;0; 'forticare:support:hardware#license.expires.seconds'=0s;;;0; 'forticloud_sandbox#license.expires.seconds'=0s;;;0; 'fortiems_cloud#license.expires.seconds'=0s;;;0; 'ips#license.expires.seconds'=0s;;;0; + ... 2 --critical-status='\\\%{status} =~ /unavailable/i' CRITICAL: License 'sms' status: unavailable | 'ai_malware_detection#license.expires.seconds'=0s;;;0; 'antispam#license.expires.seconds'=0s;;;0; 'antivirus#license.expires.seconds'=0s;;;0; 'appctrl#license.expires.seconds'=0s;;;0; 'blacklisted_certificates#license.expires.seconds'=0s;;;0; 'botnet_domain#license.expires.seconds'=0s;;;0; 'device_os_id#license.expires.seconds'=0s;;;0; 'forticare:support:enhanced#license.expires.seconds'=0s;;;0; 'forticare:support:hardware#license.expires.seconds'=0s;;;0; 'forticloud_sandbox#license.expires.seconds'=0s;;;0; 'fortiems_cloud#license.expires.seconds'=0s;;;0; 'ips#license.expires.seconds'=0s;;;0; 'malicious_urls#license.expires.seconds'=0s;;;0; 'mobile_malware#license.expires.seconds'=0s;;;0; 'web_filtering#license.expires.seconds'=0s;;;0; + ... 3 --filter-name='sms' OK: License 'sms' status: unavailable + ... 4 --unit='w' CRITICAL: License 'ai_malware_detection' status: expired - License 'antispam' status: expired - License 'antivirus' status: expired - License 'blacklisted_certificates' status: expired - License 'botnet_domain' status: expired - License 'ips' status: expired - License 'malicious_urls' status: expired - License 'mobile_malware' status: expired - License 'web_filtering' status: expired | 'ai_malware_detection#license.expires.weeks'=0w;;;0; 'antispam#license.expires.weeks'=0w;;;0; 'antivirus#license.expires.weeks'=0w;;;0; 'appctrl#license.expires.weeks'=0w;;;0; 'blacklisted_certificates#license.expires.weeks'=0w;;;0; 'botnet_domain#license.expires.weeks'=0w;;;0; 'device_os_id#license.expires.weeks'=0w;;;0; 'forticare:support:enhanced#license.expires.weeks'=0w;;;0; 'forticare:support:hardware#license.expires.weeks'=0w;;;0; 'forticloud_sandbox#license.expires.weeks'=0w;;;0; 'fortiems_cloud#license.expires.weeks'=0w;;;0; 'ips#license.expires.weeks'=0w;;;0; 'malicious_urls#license.expires.weeks'=0w;;;0; 'mobile_malware#license.expires.weeks'=0w;;;0; 'web_filtering#license.expires.weeks'=0w;;;0; + ... 5 --critical-status='' --warning-expires=0 --critical-expires=20 OK: All licenses are ok | 'ai_malware_detection#license.expires.seconds'=0s;0:0;0:20;0; 'antispam#license.expires.seconds'=0s;0:0;0:20;0; 'antivirus#license.expires.seconds'=0s;0:0;0:20;0; 'appctrl#license.expires.seconds'=0s;0:0;0:20;0; 'blacklisted_certificates#license.expires.seconds'=0s;0:0;0:20;0; 'botnet_domain#license.expires.seconds'=0s;0:0;0:20;0; 'device_os_id#license.expires.seconds'=0s;0:0;0:20;0; 'forticare:support:enhanced#license.expires.seconds'=0s;0:0;0:20;0; 'forticare:support:hardware#license.expires.seconds'=0s;0:0;0:20;0; 'forticloud_sandbox#license.expires.seconds'=0s;0:0;0:20;0; 'fortiems_cloud#license.expires.seconds'=0s;0:0;0:20;0; 'ips#license.expires.seconds'=0s;0:0;0:20;0; 'malicious_urls#license.expires.seconds'=0s;0:0;0:20;0; 'mobile_malware#license.expires.seconds'=0s;0:0;0:20;0; 'web_filtering#license.expires.seconds'=0s;0:0;0:20;0; + ... 6 --warning-status='' --warning-last-update=0 --critical-last-update=100 --filter-name='forticloud_sandbox' OK: License 'forticloud_sandbox' status: free_license, expires in 0 | 'forticloud_sandbox#license.expires.seconds'=0s;;;0; \ No newline at end of file From 62ca8641f300a1c7b2e7eb8a19fa2f76c3938a00 Mon Sep 17 00:00:00 2001 From: omercier <32134301+omercier@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:08:15 +0100 Subject: [PATCH 09/20] fix(mongodb): added missing dependencies for Debian (#5410) Refs:CTOR-1245 --- .../deb.json | 9 ++++++++- .../rpm.json | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packaging/centreon-plugin-Applications-Databases-Mongodb/deb.json b/packaging/centreon-plugin-Applications-Databases-Mongodb/deb.json index d5572c448e..8dd82444be 100644 --- a/packaging/centreon-plugin-Applications-Databases-Mongodb/deb.json +++ b/packaging/centreon-plugin-Applications-Databases-Mongodb/deb.json @@ -1,6 +1,13 @@ { "dependencies": [ + "libboolean-perl", + "libbson-perl", "libdatetime-perl", - "libmongodb-perl" + "libhash-ordered-perl", + "libmongodb-perl", + "libsafe-isa-perl", + "libtype-tiny-perl", + "libuuid-perl", + "libuuid-urandom-perl" ] } diff --git a/packaging/centreon-plugin-Applications-Databases-Mongodb/rpm.json b/packaging/centreon-plugin-Applications-Databases-Mongodb/rpm.json index e0d73e9dd4..e13e615942 100644 --- a/packaging/centreon-plugin-Applications-Databases-Mongodb/rpm.json +++ b/packaging/centreon-plugin-Applications-Databases-Mongodb/rpm.json @@ -1,9 +1,9 @@ { "dependencies": [ - "perl(Time::HiRes)", "perl(DateTime)", - "perl(MongoDB)", "perl(Hash::Ordered)", - "perl(URI::Encode)" + "perl(MongoDB)", + "perl(Time::HiRes)", + "perl(URI::Encode)" ] } From 08e12b1a77c6ce6a31d36e9694100f1862358920 Mon Sep 17 00:00:00 2001 From: May <110405507+mushroomempires@users.noreply.github.com> Date: Tue, 28 Jan 2025 15:28:03 +0100 Subject: [PATCH 10/20] fix(packaging): update packaging naming scheme for plugins in unstable deliveries (#5415) --- .github/workflows/get-environment.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/get-environment.yml b/.github/workflows/get-environment.yml index d79bc9339e..8c9bbcd351 100644 --- a/.github/workflows/get-environment.yml +++ b/.github/workflows/get-environment.yml @@ -259,6 +259,9 @@ jobs: } else { throw new Error('invalid version'); } + } else if ('${{ steps.get_stability.outputs.stability }}' === 'unstable') { + const currentDate = new Date(); + version = `${currentDate.getFullYear()}${("0" + (currentDate.getMonth() + 1)).slice(-2)}${String(currentDate.getDate()).padStart(2, '0')}`; } else { const currentDate = new Date(); version = `${currentDate.getFullYear()}${("0" + (currentDate.getMonth() + 1)).slice(-2)}00`; From bae0b56ea9c562653e4ea6533438b4aeaed851b0 Mon Sep 17 00:00:00 2001 From: Roman Morandell <46994680+rmorandell-pgum@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:12:43 +0100 Subject: [PATCH 11/20] help(cisco-umbrella): fixed connections threshold names in POD (#5405) --- src/network/cisco/umbrella/snmp/mode/connectivity.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network/cisco/umbrella/snmp/mode/connectivity.pm b/src/network/cisco/umbrella/snmp/mode/connectivity.pm index 2335c8c7c6..6fa58646d4 100644 --- a/src/network/cisco/umbrella/snmp/mode/connectivity.pm +++ b/src/network/cisco/umbrella/snmp/mode/connectivity.pm @@ -116,7 +116,7 @@ Can use special variables like: %{status}, %{display} =item B<--critical-*> Define the conditions to match for the status to be CRITICAL. (default: %{status} =~ /red/). -Can be: 'dns-connectivity', 'localdns-connectivity', 'cloud-connectivity', 'ad-connectivity'. +Can be: 'dns-status', 'localdns-status', 'cloud-status', 'ad-status'. Can use special variables like: %{status}, %{display} From 9115be2fb1d6a4e1b5c4f8ebe640f0888e3fb74c Mon Sep 17 00:00:00 2001 From: Thibault S <48209914+thibaults-centreon@users.noreply.github.com> Date: Tue, 4 Feb 2025 10:02:03 +0100 Subject: [PATCH 12/20] feat(haproxy-web): new plugin for HAProxy Web Stats (#5385) Co-authored-by: omercier <32134301+omercier@users.noreply.github.com> Refs: CTOR-680 --- .../deb.json | 5 + .../pkg.json | 9 + .../rpm.json | 5 + src/apps/haproxy/web/custom/api.pm | 212 ++++++++ src/apps/haproxy/web/mode/backendusage.pm | 505 ++++++++++++++++++ src/apps/haproxy/web/mode/frontendusage.pm | 476 +++++++++++++++++ src/apps/haproxy/web/mode/listobjects.pm | 117 ++++ src/apps/haproxy/web/plugin.pm | 51 ++ tests/apps/haproxy/web/backendusage.robot | 45 ++ tests/apps/haproxy/web/frontendusage.robot | 50 ++ tests/apps/haproxy/web/mockoon.json | 154 ++++++ tests/resources/spellcheck/stopwords.txt | 4 +- 12 files changed, 1632 insertions(+), 1 deletion(-) create mode 100644 packaging/centreon-plugin-Applications-Haproxy-Web/deb.json create mode 100644 packaging/centreon-plugin-Applications-Haproxy-Web/pkg.json create mode 100644 packaging/centreon-plugin-Applications-Haproxy-Web/rpm.json create mode 100644 src/apps/haproxy/web/custom/api.pm create mode 100644 src/apps/haproxy/web/mode/backendusage.pm create mode 100644 src/apps/haproxy/web/mode/frontendusage.pm create mode 100644 src/apps/haproxy/web/mode/listobjects.pm create mode 100644 src/apps/haproxy/web/plugin.pm create mode 100644 tests/apps/haproxy/web/backendusage.robot create mode 100644 tests/apps/haproxy/web/frontendusage.robot create mode 100644 tests/apps/haproxy/web/mockoon.json diff --git a/packaging/centreon-plugin-Applications-Haproxy-Web/deb.json b/packaging/centreon-plugin-Applications-Haproxy-Web/deb.json new file mode 100644 index 0000000000..540c269f3b --- /dev/null +++ b/packaging/centreon-plugin-Applications-Haproxy-Web/deb.json @@ -0,0 +1,5 @@ +{ + "dependencies": [ + "libjson-perl" + ] +} diff --git a/packaging/centreon-plugin-Applications-Haproxy-Web/pkg.json b/packaging/centreon-plugin-Applications-Haproxy-Web/pkg.json new file mode 100644 index 0000000000..7dd3cd1662 --- /dev/null +++ b/packaging/centreon-plugin-Applications-Haproxy-Web/pkg.json @@ -0,0 +1,9 @@ +{ + "pkg_name": "centreon-plugin-Applications-Haproxy-Web", + "pkg_summary": "Centreon Plugin to monitor HAProxy through JSON web stats page", + "plugin_name": "centreon_haproxy_web.pl", + "files": [ + "centreon/plugins/script_custom.pm", + "apps/haproxy/web/" + ] +} \ No newline at end of file diff --git a/packaging/centreon-plugin-Applications-Haproxy-Web/rpm.json b/packaging/centreon-plugin-Applications-Haproxy-Web/rpm.json new file mode 100644 index 0000000000..40759f6e06 --- /dev/null +++ b/packaging/centreon-plugin-Applications-Haproxy-Web/rpm.json @@ -0,0 +1,5 @@ +{ + "dependencies": [ + "perl(JSON::XS)" + ] +} diff --git a/src/apps/haproxy/web/custom/api.pm b/src/apps/haproxy/web/custom/api.pm new file mode 100644 index 0000000000..04a8d82258 --- /dev/null +++ b/src/apps/haproxy/web/custom/api.pm @@ -0,0 +1,212 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::haproxy::web::custom::api; + +use strict; +use warnings; +use centreon::plugins::http; +use JSON::XS; + +sub new { + my ($class, %options) = @_; + my $self = {}; + bless $self, $class; + + if (!defined($options{output})) { + print "Class Custom: Need to specify 'output' argument.\n"; + exit 3; + } + if (!defined($options{options})) { + $options{output}->add_option_msg(short_msg => "Class Custom: Need to specify 'options' argument."); + $options{output}->option_exit(); + } + + if (!defined($options{noptions})) { + $options{options}->add_options(arguments => { + 'basic' => { name => 'basic' }, + 'credentials' => { name => 'credentials' }, + 'hostname:s' => { name => 'hostname' }, + 'ntlmv2' => { name => 'ntlmv2' }, + 'password:s' => { name => 'password' }, + 'port:s' => { name => 'port' }, + 'proto:s' => { name => 'proto' }, + 'timeout:s' => { name => 'timeout' }, + 'urlpath:s' => { name => 'url_path' }, + 'username:s' => { name => 'username' }, + 'critical-http-status:s' => { name => 'critical_http_status' }, + 'unknown-http-status:s' => { name => 'unknown_http_status' }, + 'warning-http-status:s' => { name => 'warning_http_status' } + }); + } + + $options{options}->add_help(package => __PACKAGE__, sections => 'API OPTIONS', once => 1); + + $self->{output} = $options{output}; + $self->{http} = centreon::plugins::http->new(%options, default_backend => 'curl'); + + return $self; +} + +sub set_options { + my ($self, %options) = @_; + + $self->{option_results} = $options{option_results}; +} + +sub set_defaults {} + +sub check_options { + my ($self, %options) = @_; + + $self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : undef; + $self->{port} = (defined($self->{option_results}->{port})) ? $self->{option_results}->{port} : 8404; + $self->{proto} = (defined($self->{option_results}->{proto})) ? $self->{option_results}->{proto} : 'http'; + $self->{timeout} = (defined($self->{option_results}->{timeout})) ? $self->{option_results}->{timeout} : 10; + $self->{url_path} = (defined($self->{option_results}->{url_path})) ? $self->{option_results}->{url_path} : '/stats;json;'; + $self->{unknown_http_status} = (defined($self->{option_results}->{unknown_http_status})) ? $self->{option_results}->{unknown_http_status} : '(%{http_code} < 200 or %{http_code} >= 300) and %{http_code} != 424'; + $self->{warning_http_status} = (defined($self->{option_results}->{warning_http_status})) ? $self->{option_results}->{warning_http_status} : ''; + $self->{critical_http_status} = (defined($self->{option_results}->{critical_http_status})) ? $self->{option_results}->{critical_http_status} : ''; + + if (!defined($self->{hostname}) || $self->{hostname} eq '') { + $self->{output}->add_option_msg(short_msg => "Need to specify --hostname option."); + $self->{output}->option_exit(); + } + return 0; +} + +sub build_options_for_httplib { + my ($self, %options) = @_; + + $self->{option_results}->{hostname} = $self->{hostname}; + $self->{option_results}->{timeout} = $self->{timeout}; + $self->{option_results}->{port} = $self->{port}; + $self->{option_results}->{proto} = $self->{proto}; + $self->{option_results}->{timeout} = $self->{timeout}; + +} + +sub settings { + my ($self, %options) = @_; + + return if (defined($self->{settings_done})); + $self->build_options_for_httplib(); + $self->{http}->add_header(key => 'Accept', value => 'application/json'); + $self->{http}->add_header(key => 'Content-Type', value => 'application/json'); + $self->{http}->set_options(%{$self->{option_results}}); + $self->{settings_done} = 1; +} + +sub get_hostname { + my ($self, %options) = @_; + + return $self->{hostname}; +} + +sub get_stats { + my ($self, %options) = @_; + $self->settings(); + my $response = $self->{http}->request(method => 'GET', url_path => $self->{url_path}); + + if (!defined($response) || $response eq '') { + $self->{output}->add_option_msg(short_msg => "API returns empty content [code: '" . $self->{http}->get_code() . "'] [message: '" . $self->{http}->get_message() . "']"); + $self->{output}->option_exit(); + } + + my $decoded; + eval { + $decoded = JSON::XS->new->decode($response); + }; + + if ($@) { + $self->{output}->add_option_msg(short_msg => "Cannot decode response (add --debug option to display returned content)"); + $self->{output}->option_exit(); + } + + if ($self->{http}->get_code() < 200 || $self->{http}->get_code() >= 300) { + $self->{output}->add_option_msg(short_msg => 'API request error (add --debug option to display returned content)'); + $self->{output}->option_exit(); + } + + return $decoded; +} + +1; + +__END__ + +=head1 NAME + +HAProxy HTTP custom mode for web json stats + +=head1 API OPTIONS + +HAProxy web stats + +=over 8 + +=item B<--hostname> + +IP address or FQDN of the HAProxy server. + +=item B<--port> + +Port used by the web server + +=item B<--proto> + +Specify https if needed (default: 'http') + +=item B<--urlpath> + +Define the path of the web page to get (default: '/stats;json;'). + +=item B<--credentials> + +Specify this option if you are accessing a web page using authentication. + +=item B<--username> + +Specify the username for authentication (mandatory if --credentials is specified). + +=item B<--password> + +Specify the password for authentication (mandatory if --credentials is specified). + +=item B<--basic> + +Specify this option if you are accessing a web page using basic authentication and don't want a '401 UNAUTHORIZED' error to be logged on your web server. + +Specify this option if you are accessing a web page using hidden basic authentication or you'll get a '404 NOT FOUND' error. + +(use with --credentials) + +=item B<--ntlmv2> + +Specify this option if you are accessing a web page using NTLMv2 authentication (use with C<--credentials> and C<--port> options). + +=item B<--timeout> + +Define the timeout in seconds (default: 5). + + +=back + +=cut diff --git a/src/apps/haproxy/web/mode/backendusage.pm b/src/apps/haproxy/web/mode/backendusage.pm new file mode 100644 index 0000000000..de4c384bc2 --- /dev/null +++ b/src/apps/haproxy/web/mode/backendusage.pm @@ -0,0 +1,505 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::haproxy::web::mode::backendusage; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub prefix_backend_output { + my ($self, %options) = @_; + + return "Backend '" . $options{instance_value}->{display} . "' "; +} + +sub prefix_server_output { + my ($self, %options) = @_; + + return "Server '" . $options{instance_value}->{svname} . "' "; +} + +sub prefix_global_backend_output { + my ($self, %options) = @_; + + return 'backend '; +} + +sub backend_long_output { + my ($self, %options) = @_; + + return "Backend '" . $options{instance_value}->{display} . "':"; +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf("status: %s", $self->{result_values}->{status}); +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { + name => 'backends', + type => 3, + cb_prefix_output => 'prefix_backend_output', + cb_long_output => 'backend_long_output', + message_multiple => 'All Backends are ok', + indent_long_output => ' ', + skipped_code => { -10 => 1 }, + group => [ + { + name => 'backend', + type => 0, + cb_prefix_output => 'prefix_global_backend_output' + }, + { + name => 'servers', + type => 1, + display_long => 1, + cb_prefix_output => 'prefix_server_output', + message_multiple => 'Servers are ok', + skipped_code => { -10 => 1 } + } + ] + } + ]; + + $self->{maps_counters}->{backend} = [ + { + label => 'backend-status', + type => 2, + critical_default => '%{status} !~ /UP/i', + set => { + key_values => [ { name => 'status' }, { name => 'pxname' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'backend-current-queue', nlabel => 'backend.queue.current.count', set => { + key_values => [ { name => 'qcur' }, { name => 'pxname' } ], + output_template => 'current queue: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-current-session-rate', nlabel => 'backend.session.current.rate.countpersecond', set => { + key_values => [ { name => 'rate' }, { name => 'pxname' } ], + output_template => 'current session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-max-session-rate', nlabel => 'backend.session.max.rate.countpersecond', set => { + key_values => [ { name => 'rate_max' }, { name => 'pxname' } ], + output_template => 'max session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-current-sessions', nlabel => 'backend.sessions.current.count', set => { + key_values => [ { name => 'scur' }, { name => 'pxname' } ], + output_template => 'current sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-total-sessions', nlabel => 'backend.sessions.total.count', set => { + key_values => [ { name => 'stot', diff => 1 }, { name => 'pxname' } ], + output_template => 'total sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-traffic-in', nlabel => 'backend.traffic.in.bitpersecond', set => { + key_values => [ { name => 'bin', per_second => 1 }, { name => 'pxname' } ], + output_template => 'traffic in: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-traffic-out', nlabel => 'backend.traffic.out.bitpersecond', set => { + key_values => [ { name => 'bout', per_second => 1 }, { name => 'pxname' } ], + output_template => 'traffic out: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-denied-requests', nlabel => 'backend.requests.denied.count', set => { + key_values => [ { name => 'dreq' }, { name => 'pxname' } ], + output_template => 'denied requests: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-denied-responses', nlabel => 'backend.responses.denied.count', set => { + key_values => [ { name => 'dresp' }, { name => 'pxname' } ], + output_template => 'denied responses: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-connections-errors', nlabel => 'backend.connections.error.count', set => { + key_values => [ { name => 'econ' }, { name => 'pxname' } ], + output_template => 'connection errors: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'backend-responses-errors', nlabel => 'backend.responses.error.count', set => { + key_values => [ { name => 'eresp' }, { name => 'pxname' } ], + output_template => 'responses errors: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + } + ]; + $self->{maps_counters}->{servers} = [ + { + label => 'server-status', + type => 2, + critical_default => '%{status} !~ /UP/i', + set => { + key_values => [ { name => 'status' }, { name => 'svname' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'server-current-sessions', nlabel => 'server.sessions.current.count', set => { + key_values => [ { name => 'scur' }, { name => 'svname' } ], + output_template => 'current sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname'} + ] + } + }, + { label => 'server-current-session-rate', nlabel => 'server.session.current.rate.countpersecond', set => { + key_values => [ { name => 'rate' }, { name => 'svname' } ], + output_template => 'current session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'server-max-session-rate', nlabel => 'server.session.max.rate.countpersecond', set => { + key_values => [ { name => 'rate_max' }, { name => 'svname' } ], + output_template => 'max session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'server-denied-responses', nlabel => 'server.responses.denied.count', set => { + key_values => [ { name => 'dresp' }, { name => 'svname' } ], + output_template => 'denied responses: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'server-connections-errors', nlabel => 'server.connections.error.count', set => { + key_values => [ { name => 'econ' }, { name => 'svname' } ], + output_template => 'connection errors: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'server-responses-errors', nlabel => 'server.responses.error.count', set => { + key_values => [ { name => 'eresp' }, { name => 'svname' } ], + output_template => 'responses errors: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'add-servers' => { name => 'add_servers' }, + 'filter-name:s' => { name => 'filter_name' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_stats(); + my $stats; + foreach (@$result) { + foreach my $entry (@$_) { + if ($entry->{objType} eq 'Backend') { + $stats->{$entry->{proxyId}}->{$entry->{field}->{name}} = $entry->{value}->{value}; + } + if ($entry->{objType} eq 'Server') { + $stats->{$entry->{proxyId}}->{servers}->{$entry->{id}}->{$entry->{field}->{name}} = $entry->{value}->{value}; + } + } + } + foreach (keys %$stats) { + my $name; + $name = $stats->{$_}->{pxname}; + + if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $name !~ /$self->{option_results}->{filter_name}/) { + $self->{output}->output_add(long_msg => "skipping Backend '" . $name . "'.", debug => 1); + next; + } + if (defined($self->{option_results}->{add_servers})) { + $self->{backends}->{$_}->{servers} = $stats->{$_}->{servers}; + } + + $self->{backends}->{$_}->{backend} = $stats->{$_}; + $self->{backends}->{$_}->{display} = $name; + } + + if (scalar(keys %{$self->{backends}}) <= 0) { + $self->{output}->add_option_msg(short_msg => "No Backend found."); + $self->{output}->option_exit(); + } + + $self->{cache_name} = 'haproxy_' . $self->{mode} . '_' . $options{custom}->get_hostname() . '_' . + (defined($self->{option_results}->{filter_counters}) ? md5_hex($self->{option_results}->{filter_counters}) : md5_hex('all')) . '_' . + (defined($self->{option_results}->{filter_name}) ? md5_hex($self->{option_results}->{filter_name}) : md5_hex('all')); + +} + +1; + +__END__ + +=head1 MODE + +Check HAProxy backend usage. + +=over 8 + +=item B<--add-servers> + +Also display and monitor Servers related to a given backend. + +=item B<--filter-counters> + +Define which counters should appear in the performance data (metrics). +This option will be treated as a regular expression. + +Example: C<--filter-counters='^total-connections$'>. + +=item B<--filter-name> + +Define which backends should be monitored based on their names. +This option will be treated as a regular expression. + +=item B<--warning-backend-status> + +Define the conditions to match for the backend status to be WARNING. +You can use the following variables: %{status}. + +Example: C<--warning-backend-status='%{status} !~ /UP/i'> + +=item B<--critical-backend-status> + +Define the conditions to match for the backend status to be CRITICAL. +Default: C<'%{status} !~ /UP/i'>. +You can use the following variables: C<%{status}>. + +Example: C<--critical-backend-status='%{status} !~ /UP/i'> + +=item B<--warning-server-status> + +Define the conditions to match for the server status to be WARNING. +You can use the following variables: C<%{status}>. + +Example: C<--warning-backend-status='%{status} !~ /UP/i'> + +=item B<--critical-server-status> + +Define the conditions to match for the status to be CRITICAL. Default: C<'%{status} !~ /UP/i'>. +You can use the following variables: C<%{status}>. + +Example: C<--critical-backend-status='%{status} !~ /UP/i'> + +=item B<--warning-backend-current-queue> + +Thresholds. + +=item B<--critical-backend-current-queue> + +Thresholds. + +=item B<--warning-backend-current-session-rate> + +Thresholds. + +=item B<--critical-backend-current-session-rate> + +Thresholds. + +=item B<--warning-backend-max-session-rate> + +Thresholds. + +=item B<--critical-backend-max-session-rate> + +Thresholds. + +=item B<--warning-backend-current-sessions> + +Thresholds. + +=item B<--critical-backend-current-sessions> + +Thresholds. + +=item B<--warning-backend-total-sessions> + +Thresholds. + +=item B<--critical-backend-total-sessions> + +Thresholds. + +=item B<--warning-backend-traffic-in> + +Thresholds in b/s. + +=item B<--critical-backend-traffic-in> + +Thresholds in b/s. + +=item B<--warning-backend-traffic-out> + +Thresholds in b/s. + +=item B<--critical-backend-traffic-out> + +Thresholds in b/s. + +=item B<--warning-backend-denied-requests> + +Thresholds. + +=item B<--critical-backend-denied-requests> + +Thresholds. + +=item B<--warning-backend-denied-responses> + +Thresholds. + +=item B<--critical-backend-denied-responses> + +Thresholds. + +=item B<--warning-backend-connections-errors> + +Thresholds. + +=item B<--critical-backend-connections-errors> + +Thresholds. + +=item B<--warning-backend-responses-errors> + +Thresholds. + +=item B<--critical-backend-responses-errors> + +Thresholds. + +=item B<--warning-server-current-sessions> + +Thresholds. + +=item B<--critical-server-current-sessions> + +Thresholds. + +=item B<--warning-server-current-session-rate> + +Thresholds. + +=item B<--critical-server-current-session-rate> + +Thresholds. + +=item B<--warning-server-max-session-rate> + +Thresholds. + +=item B<--critical-server-max-session-rate> + +Thresholds. + +=item B<--warning-server-denied-responses> + +Thresholds. + +=item B<--critical-server-denied-responses> + +Thresholds. + +=item B<--warning-server-connections-errors> + +Thresholds. + +=item B<--critical-server-connections-errors> + +Thresholds. + +=item B<--warning-server-responses-errors> + +Thresholds. + +=item B<--critical-server-responses-errors> + +Thresholds. + +=back + +=cut diff --git a/src/apps/haproxy/web/mode/frontendusage.pm b/src/apps/haproxy/web/mode/frontendusage.pm new file mode 100644 index 0000000000..0c4f39535d --- /dev/null +++ b/src/apps/haproxy/web/mode/frontendusage.pm @@ -0,0 +1,476 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::haproxy::web::mode::frontendusage; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub prefix_frontend_output { + my ($self, %options) = @_; + + return "Frontend '" . $options{instance_value}->{display} . "' "; +} + +sub prefix_listener_output { + my ($self, %options) = @_; + + return "Listener '" . $options{instance_value}->{svname} . "' "; +} + +sub prefix_global_frontend_output { + my ($self, %options) = @_; + + return 'frontend '; +} + +sub frontend_long_output { + my ($self, %options) = @_; + + return "Frontend '" . $options{instance_value}->{display} . "':"; +} + +sub custom_status_output { + my ($self, %options) = @_; + + return sprintf("status: %s", $self->{result_values}->{status}); +} + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'frontends', type => 3, cb_prefix_output => 'prefix_frontend_output', cb_long_output => 'frontend_long_output', message_multiple => 'All frontends are ok', indent_long_output => ' ', skipped_code => { -10 => 1 }, + group => [ + { name => 'frontend', type => 0, cb_prefix_output => 'prefix_global_frontend_output' }, + { name => 'listeners', type => 1, display_long => 1, cb_prefix_output => 'prefix_listener_output', message_multiple => 'listeners are ok', skipped_code => { -10 => 1 } } + ] + } + ]; + + $self->{maps_counters}->{frontend} = [ + { + label => 'frontend-status', + type => 2, + critical_default => '%{status} !~ /OPEN/i', + set => { + key_values => [ { name => 'status' }, { name => 'pxname' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'frontend-current-session-rate', nlabel => 'frontend.session.current.rate.countpersecond', set => { + key_values => [ { name => 'rate' }, { name => 'pxname' } ], + output_template => 'current session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-max-session-rate', nlabel => 'frontend.session.max.rate.countpersecond', set => { + key_values => [ { name => 'rate_max' }, { name => 'pxname' } ], + output_template => 'max session rate: %s/s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-current-sessions', nlabel => 'frontend.sessions.current.count', set => { + key_values => [ { name => 'scur' }, { name => 'pxname' } ], + output_template => 'current sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-total-sessions', nlabel => 'frontend.sessions.total.count', set => { + key_values => [ { name => 'stot' }, { name => 'pxname' } ], + output_template => 'total sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-max-sessions', nlabel => 'frontend.sessions.maximum.count', set => { + key_values => [ { name => 'smax' }, { name => 'pxname' } ], + output_template => 'max sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-traffic-in', nlabel => 'frontend.traffic.in.bitpersecond', set => { + key_values => [ { name => 'bin', per_second => 1 }, { name => 'pxname' } ], + output_template => 'traffic in: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-traffic-out', nlabel => 'frontend.traffic.out.bitpersecond', set => { + key_values => [ { name => 'bout', per_second => 1 }, { name => 'pxname' } ], + output_template => 'traffic out: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-denied-requests', nlabel => 'frontend.requests.denied.count', set => { + key_values => [ { name => 'dreq' }, { name => 'pxname' } ], + output_template => 'denied requests: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-denied-responses', nlabel => 'frontend.responses.denied.count', set => { + key_values => [ { name => 'dresp' }, { name => 'pxname' } ], + output_template => 'denied responses: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + }, + { label => 'frontend-errors-requests', nlabel => 'frontend.requests.error.count', set => { + key_values => [ { name => 'ereq' }, { name => 'pxname' } ], + output_template => 'error requests: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'pxname' } + ] + } + } + ]; + $self->{maps_counters}->{listeners} = [ + { + label => 'listener-status', + type => 2, + critical_default => '%{status} !~ /OPEN/i', + set => { + key_values => [ { name => 'status' }, { name => 'pxname' } ], + closure_custom_output => $self->can('custom_status_output'), + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + }, + { label => 'listener-current-sessions', nlabel => 'listener.sessions.current.count', set => { + key_values => [ { name => 'scur' }, { name => 'svname' } ], + output_template => 'current sessions: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'listener-denied-requests', nlabel => 'listener.requests.denied.count', set => { + key_values => [ { name => 'dreq' }, { name => 'svname' } ], + output_template => 'denied requests: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'listener-denied-responses', nlabel => 'listener.responses.denied.count', set => { + key_values => [ { name => 'dresp' }, { name => 'svname' } ], + output_template => 'denied responses: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'listener-errors-requests', nlabel => 'listener.requests.error.count', set => { + key_values => [ { name => 'ereq' }, { name => 'svname' } ], + output_template => 'error requests: %s', + perfdatas => [ + { template => '%s', min => 0, label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'listener-traffic-in', nlabel => 'listener.traffic.in.bitpersecond', set => { + key_values => [ { name => 'bin', per_second => 1 }, { name => 'pxname' } ], + output_template => 'traffic in: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'svname' } + ] + } + }, + { label => 'listener-traffic-out', nlabel => 'listener.traffic.out.bitpersecond', set => { + key_values => [ { name => 'bout', per_second => 1 }, { name => 'svname' } ], + output_template => 'traffic out: %s %s/s', + output_change_bytes => 2, + perfdatas => [ + { template => '%.2f', min => 0, unit => 'b/s', label_extra_instance => 1, instance_use => 'svname' } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, statefile => 1, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'add-listeners' => { name => 'add_listeners' }, + 'filter-name:s' => { name => 'filter_name' } + }); + + return $self; +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_stats(); + my $stats; + foreach (@$result) { + foreach my $entry (@$_) { + if ($entry->{objType} eq 'Frontend') { + $stats->{$entry->{proxyId}}->{$entry->{field}->{name}} = $entry->{value}->{value}; + } + if ($entry->{objType} eq 'Listener') { + $stats->{$entry->{proxyId}}->{listeners}->{$entry->{id}}->{$entry->{field}->{name}} = $entry->{value}->{value}; + } + } + } + foreach (keys %$stats) { + my $name; + $name = $stats->{$_}->{pxname}; + + if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && + $name !~ /$self->{option_results}->{filter_name}/) { + $self->{output}->output_add(long_msg => "skipping frontend '" . $name . "'.", debug => 1); + next; + } + + if (defined($self->{option_results}->{add_listeners})) { + $self->{frontends}->{$_}->{listeners} = $stats->{$_}->{listeners}; + } + $self->{frontends}->{$_}->{frontend} = $stats->{$_}; + $self->{frontends}->{$_}->{display} = $name; + } + + if (scalar(keys %{$self->{frontends}}) <= 0) { + $self->{output}->add_option_msg(short_msg => "No Frontend found."); + $self->{output}->option_exit(); + } + + $self->{cache_name} = 'haproxy_' . $self->{mode} . '_' . $options{custom}->get_hostname() . '_' . + (defined($self->{option_results}->{filter_counters}) ? md5_hex($self->{option_results}->{filter_counters}) : md5_hex('all')) . '_' . + (defined($self->{option_results}->{filter_name}) ? md5_hex($self->{option_results}->{filter_name}) : md5_hex('all')); + +} + +1; + +__END__ + +=head1 MODE + +Check HAProxy frontend usage. + +=over 8 + +=item B<--add-listeners> + +Also display and monitor listeners related to a given frontend. + +=item B<--filter-counters> + +Define which counters should appear in the performance data (metrics). +This option will be treated as a regular expression. + +Example: --filter-counters='^total-connections$'. + +=item B<--filter-name> + +Define which frontends should be monitored based on their names. +This option will be treated as a regular expression. + +=item B<--warning-frontend-status> + +Define the conditions to match for the status to be B. + +You can use the following variables: C<%{status}>. + +Example: C<--warning-frontend-status='%{status} !~ /UP/i'> + +=item B<--critical-frontend-status> + +Define the conditions to match for the status to be B. Default: C<%{status} !~ /OPEN/i>. + +You can use the following variables: C<%{status}>. + +Example: C<--critical-frontend-status='%{status} !~ /UP/i'> + +=item B<--warning-listener-status> + +Define the conditions to match for the status to be B + +You can use the following variables: C<%{status}>. + +Example: C<--warning-listener-status='%{status} !~ /UP/i'> + +=item B<--critical-listener-status> + +Define the conditions to match for the status to be B. Default: C<%{status} !~ /OPEN/i>. + +You can use the following variables: C<%{status}>. + +Example: C<--critical-listener-status='%{status} !~ /UP/i'> + +=item B<--warning-frontend-current-session-rate> + +Thresholds. + +=item B<--critical-frontend-current-session-rate> + +Thresholds. + +=item B<--warning-frontend-max-session-rate> + +Thresholds. + +=item B<--critical-frontend-max-session-rate> + +Thresholds. + +=item B<--warning-frontend-current-sessions> + +Thresholds. + +=item B<--critical-frontend-current-sessions> + +Thresholds. + +=item B<--warning-frontend-total-sessions> + +Thresholds. + +=item B<--critical-frontend-total-sessions> + +Thresholds. + +=item B<--warning-frontend-max-sessions> + +Thresholds. + +=item B<--critical-frontend-max-sessions> + +Thresholds. + +=item B<--warning-frontend-traffic-in> + +Thresholds in b/s. + +=item B<--critical-frontend-traffic-in> + +Thresholds in b/s. + +=item B<--warning-frontend-traffic-out> + +Thresholds in b/s. + +=item B<--critical-frontend-traffic-out> + +Thresholds in b/s. + +=item B<--warning-frontend-denied-requests> + +Thresholds. + +=item B<--critical-frontend-denied-requests> + +Thresholds. + +=item B<--warning-frontend-denied-responses> + +Thresholds. + +=item B<--critical-frontend-denied-responses> + +Thresholds. + +=item B<--warning-frontend-errors-requests> + +Thresholds. + +=item B<--critical-frontend-errors-requests> + +Thresholds. + +=item B<--warning-listener-current-sessions> + +Thresholds. + +=item B<--critical-listener-current-sessions> + +Thresholds. + +=item B<--warning-listener-denied-requests> + +Thresholds. + +=item B<--critical-listener-denied-requests> + +Thresholds. + +=item B<--warning-listener-denied-responses> + +Thresholds. + +=item B<--critical-listener-denied-responses> + +Thresholds. + +=item B<--warning-listener-errors-requests> + +Thresholds. + +=item B<--critical-listener-errors-requests> + +Thresholds. + +=item B<--warning-listener-traffic-in> + +Thresholds in b/s. + +=item B<--critical-listener-traffic-in> + +Thresholds in b/s. + +=item B<--warning-listener-traffic-out> + +Thresholds in b/s. + +=item B<--critical-listener-traffic-out> + +Thresholds in b/s. + +=back + +=cut diff --git a/src/apps/haproxy/web/mode/listobjects.pm b/src/apps/haproxy/web/mode/listobjects.pm new file mode 100644 index 0000000000..4966c90d5b --- /dev/null +++ b/src/apps/haproxy/web/mode/listobjects.pm @@ -0,0 +1,117 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::haproxy::web::mode::listobjects; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'filter-name:s' => { name => 'filter_name' }, + 'filter-object-type:s' => { name => 'filter_objtype', default => 'frontend|backend' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $results = $options{custom}->get_stats(); + my $backends; + foreach (@$results) { + foreach my $entry (@$_) { + next if (defined($self->{option_results}->{filter_objtype}) && $self->{option_results}->{filter_objtype} ne '' + && lc($entry->{objType}) !~ /$self->{option_results}->{filter_objtype}/); + + $backends->{$entry->{proxyId}}->{type} = lc($entry->{objType}); + next if ($entry->{field}->{name} !~ /^(pxname|status)$/); + $backends->{$entry->{proxyId}}->{$entry->{field}->{name}} = $entry->{value}->{value}; + } + } + return $backends; +} + +sub run { + my ($self, %options) = @_; + + my $backends = $self->manage_selection(%options); + foreach (sort keys %$backends) { + $self->{output}->output_add( + long_msg => sprintf("[name = %s][status = %s][type = %s]", $backends->{$_}->{pxname}, $backends->{$_}->{status}, $backends->{$_}->{type}) + ); + } + + $self->{output}->output_add(severity => 'OK', short_msg => 'HAProxy objects:'); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => ['name','status','type']); +} + +sub disco_show { + my ($self, %options) = @_; + + my $backends = $self->manage_selection(%options); + foreach (sort keys %$backends) { + $self->{output}->add_disco_entry( + name => $backends->{$_}->{pxname}, + status => $backends->{$_}->{status}, + type => $backends->{$_}->{type}, + ); + } +} +1; + +__END__ + +=head1 MODE + +List HAProxy objects (Backends & Frontends). + +=over 8 + +=item B<--filter-object-type> + +Filter object type (can be a regexp). + +=item B<--filter-name> + +Filter object name (can be a regexp). + +=back + +=cut \ No newline at end of file diff --git a/src/apps/haproxy/web/plugin.pm b/src/apps/haproxy/web/plugin.pm new file mode 100644 index 0000000000..94537011bc --- /dev/null +++ b/src/apps/haproxy/web/plugin.pm @@ -0,0 +1,51 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::haproxy::web::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_custom); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $self->{modes} = { + 'backend-usage' => 'apps::haproxy::web::mode::backendusage', + 'frontend-usage' => 'apps::haproxy::web::mode::frontendusage', + 'list-objects' => 'apps::haproxy::web::mode::listobjects' + }; + + $self->{custom_modes}->{api} = 'apps::haproxy::web::custom::api'; + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check HAProxy stats using HTTP stats page. + +=cut diff --git a/tests/apps/haproxy/web/backendusage.robot b/tests/apps/haproxy/web/backendusage.robot new file mode 100644 index 0000000000..508e33540e --- /dev/null +++ b/tests/apps/haproxy/web/backendusage.robot @@ -0,0 +1,45 @@ +*** Settings *** +Documentation HAProxy Backend Usage Monitoring + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::haproxy::web::plugin +... --mode=backend-usage +... --hostname=${HOSTNAME} +... --username='username' +... --password='password' +... --proto='http' +... --port=${APIPORT} + + +*** Test Cases *** +backend-usage ${tc} + [Tags] mockoon restapi + ${command} Catenate + ... ${CMD} + ... --filter-name='${filter_name}' + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc filter_name extra_options expected_result -- + ... 1 STATIC_BG_IMAGE ${EMPTY} OK: Backend 'STATIC_BG_IMAGE' backend status: UP, current queue: 0, current session rate: 0/s, max session rate: 1/s, current sessions: 0, backend-total-sessions : Buffer creation, backend-traffic-in : Buffer creation, backend-traffic-out : Buffer creation, denied requests: 0, denied responses: 0, connection errors: 0, responses errors: 0 | 'STATIC_BG_IMAGE#backend.queue.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.session.current.rate.countpersecond'=0;;;0; 'STATIC_BG_IMAGE#backend.session.max.rate.countpersecond'=1;;;0; 'STATIC_BG_IMAGE#backend.sessions.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.requests.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.connections.error.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.error.count'=0;;;0; + ... 2 STATIC_BG_IMAGE --warning-backend-max-session-rate=0:0 WARNING: Backend 'STATIC_BG_IMAGE' backend max session rate: 1/s | 'STATIC_BG_IMAGE#backend.queue.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.session.current.rate.countpersecond'=0;;;0; 'STATIC_BG_IMAGE#backend.session.max.rate.countpersecond'=1;0:0;;0; 'STATIC_BG_IMAGE#backend.sessions.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.sessions.total.count'=0;;;0; 'STATIC_BG_IMAGE#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'STATIC_BG_IMAGE#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'STATIC_BG_IMAGE#backend.requests.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.connections.error.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.error.count'=0;;;0; + ... 3 STATIC_BG_IMAGE --critical-backend-max-session-rate=0:0 CRITICAL: Backend 'STATIC_BG_IMAGE' backend max session rate: 1/s | 'STATIC_BG_IMAGE#backend.queue.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.session.current.rate.countpersecond'=0;;;0; 'STATIC_BG_IMAGE#backend.session.max.rate.countpersecond'=1;;0:0;0; 'STATIC_BG_IMAGE#backend.sessions.current.count'=0;;;0; 'STATIC_BG_IMAGE#backend.sessions.total.count'=0;;;0; 'STATIC_BG_IMAGE#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'STATIC_BG_IMAGE#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'STATIC_BG_IMAGE#backend.requests.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.denied.count'=0;;;0; 'STATIC_BG_IMAGE#backend.connections.error.count'=0;;;0; 'STATIC_BG_IMAGE#backend.responses.error.count'=0;;;0; + ... 4 APP-IHM ${EMPTY} OK: Backend 'APP-IHM' backend status: UP, current queue: 0, current session rate: 1/s, max session rate: 25/s, current sessions: 0, backend-total-sessions : Buffer creation, backend-traffic-in : Buffer creation, backend-traffic-out : Buffer creation, denied requests: 0, denied responses: 0, connection errors: 1, responses errors: 0 | 'APP-IHM#backend.queue.current.count'=0;;;0; 'APP-IHM#backend.session.current.rate.countpersecond'=1;;;0; 'APP-IHM#backend.session.max.rate.countpersecond'=25;;;0; 'APP-IHM#backend.sessions.current.count'=0;;;0; 'APP-IHM#backend.requests.denied.count'=0;;;0; 'APP-IHM#backend.responses.denied.count'=0;;;0; 'APP-IHM#backend.connections.error.count'=1;;;0; 'APP-IHM#backend.responses.error.count'=0;;;0; + ... 5 APP-IHM --warning-backend-current-session-rate=0:0 WARNING: Backend 'APP-IHM' backend current session rate: 1/s | 'APP-IHM#backend.queue.current.count'=0;;;0; 'APP-IHM#backend.session.current.rate.countpersecond'=1;0:0;;0; 'APP-IHM#backend.session.max.rate.countpersecond'=25;;;0; 'APP-IHM#backend.sessions.current.count'=0;;;0; 'APP-IHM#backend.sessions.total.count'=0;;;0; 'APP-IHM#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'APP-IHM#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'APP-IHM#backend.requests.denied.count'=0;;;0; 'APP-IHM#backend.responses.denied.count'=0;;;0; 'APP-IHM#backend.connections.error.count'=1;;;0; 'APP-IHM#backend.responses.error.count'=0;;;0; + ... 6 APP-IHM --critical-backend-current-session-rate=0:0 CRITICAL: Backend 'APP-IHM' backend current session rate: 1/s | 'APP-IHM#backend.queue.current.count'=0;;;0; 'APP-IHM#backend.session.current.rate.countpersecond'=1;;0:0;0; 'APP-IHM#backend.session.max.rate.countpersecond'=25;;;0; 'APP-IHM#backend.sessions.current.count'=0;;;0; 'APP-IHM#backend.sessions.total.count'=0;;;0; 'APP-IHM#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'APP-IHM#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'APP-IHM#backend.requests.denied.count'=0;;;0; 'APP-IHM#backend.responses.denied.count'=0;;;0; 'APP-IHM#backend.connections.error.count'=1;;;0; 'APP-IHM#backend.responses.error.count'=0;;;0; + ... 7 APP-RIA ${EMPTY} OK: Backend 'APP-RIA' backend status: UP, current queue: 0, current session rate: 0/s, max session rate: 0/s, current sessions: 0, backend-total-sessions : Buffer creation, backend-traffic-in : Buffer creation, backend-traffic-out : Buffer creation, denied requests: 0, denied responses: 0, connection errors: 0, responses errors: 0 | 'APP-RIA#backend.queue.current.count'=0;;;0; 'APP-RIA#backend.session.current.rate.countpersecond'=0;;;0; 'APP-RIA#backend.session.max.rate.countpersecond'=0;;;0; 'APP-RIA#backend.sessions.current.count'=0;;;0; 'APP-RIA#backend.requests.denied.count'=0;;;0; 'APP-RIA#backend.responses.denied.count'=0;;;0; 'APP-RIA#backend.connections.error.count'=0;;;0; 'APP-RIA#backend.responses.error.count'=0;;;0; + ... 8 APP-RIA --warning-backend-denied-requests=1:1 WARNING: Backend 'APP-RIA' backend denied requests: 0 | 'APP-RIA#backend.queue.current.count'=0;;;0; 'APP-RIA#backend.session.current.rate.countpersecond'=0;;;0; 'APP-RIA#backend.session.max.rate.countpersecond'=0;;;0; 'APP-RIA#backend.sessions.current.count'=0;;;0; 'APP-RIA#backend.sessions.total.count'=0;;;0; 'APP-RIA#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'APP-RIA#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'APP-RIA#backend.requests.denied.count'=0;1:1;;0; 'APP-RIA#backend.responses.denied.count'=0;;;0; 'APP-RIA#backend.connections.error.count'=0;;;0; 'APP-RIA#backend.responses.error.count'=0;;;0; + ... 9 APP-RIA --critical-backend-denied-requests=1:1 CRITICAL: Backend 'APP-RIA' backend denied requests: 0 | 'APP-RIA#backend.queue.current.count'=0;;;0; 'APP-RIA#backend.session.current.rate.countpersecond'=0;;;0; 'APP-RIA#backend.session.max.rate.countpersecond'=0;;;0; 'APP-RIA#backend.sessions.current.count'=0;;;0; 'APP-RIA#backend.sessions.total.count'=0;;;0; 'APP-RIA#backend.traffic.in.bitpersecond'=0.00b/s;;;0; 'APP-RIA#backend.traffic.out.bitpersecond'=0.00b/s;;;0; 'APP-RIA#backend.requests.denied.count'=0;;1:1;0; 'APP-RIA#backend.responses.denied.count'=0;;;0; 'APP-RIA#backend.connections.error.count'=0;;;0; 'APP-RIA#backend.responses.error.count'=0;;;0; + + + diff --git a/tests/apps/haproxy/web/frontendusage.robot b/tests/apps/haproxy/web/frontendusage.robot new file mode 100644 index 0000000000..d31ad434ef --- /dev/null +++ b/tests/apps/haproxy/web/frontendusage.robot @@ -0,0 +1,50 @@ +*** Settings *** +Documentation HAProxy Frontend Usage Monitoring + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}mockoon.json +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::haproxy::web::plugin +... --mode=frontend-usage +... --hostname=${HOSTNAME} +... --username='username' +... --password='password' +... --proto='http' +... --port=${APIPORT} + + +*** Test Cases *** +frontend-usage ${tc} + [Tags] mockoon restapi + ${command} Catenate + ... ${CMD} + ... --filter-name='${filter_name}' + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc filter_name extra_options expected_result -- + ... 1 ${EMPTY} ${EMPTY} OK: Frontend 'hafrontend' frontend status: OPEN, current session rate: 1/s, max session rate: 6/s, current sessions: 10, total sessions: 3980, max sessions: 16, frontend-traffic-in : Buffer creation, frontend-traffic-out : Buffer creation, denied requests: 0, denied responses: 0, error requests: 42 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 2 hafrontend ${EMPTY} OK: Frontend 'hafrontend' frontend status: OPEN, current session rate: 1/s, max session rate: 6/s, current sessions: 10, total sessions: 3980, max sessions: 16, frontend-traffic-in : Buffer creation, frontend-traffic-out : Buffer creation, denied requests: 0, denied responses: 0, error requests: 42 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 3 none ${EMPTY} UNKNOWN: No Frontend found. + ... 4 hafrontend --warning-frontend-current-session-rate=0:0 WARNING: Frontend 'hafrontend' frontend current session rate: 1/s | 'hafrontend#frontend.session.current.rate.countpersecond'=1;0:0;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 5 hafrontend --critical-frontend-current-session-rate=0:0 CRITICAL: Frontend 'hafrontend' frontend current session rate: 1/s | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;0:0;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 6 hafrontend --warning-frontend-max-session-rate=0:0 WARNING: Frontend 'hafrontend' frontend max session rate: 6/s | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;0:0;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 7 hafrontend --critical-frontend-max-session-rate=0:0 CRITICAL: Frontend 'hafrontend' frontend max session rate: 6/s | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;0:0;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 8 hafrontend --warning-frontend-current-sessions=0:0 WARNING: Frontend 'hafrontend' frontend current sessions: 10 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;0:0;;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 9 hafrontend --critical-frontend-current-sessions=0:0 CRITICAL: Frontend 'hafrontend' frontend current sessions: 10 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;0:0;0; 'hafrontend#frontend.sessions.total.count'=3980;;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 10 hafrontend --warning-frontend-total-sessions=0:0 WARNING: Frontend 'hafrontend' frontend total sessions: 3980 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;0:0;;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + ... 11 hafrontend --critical-frontend-total-sessions=0:0 CRITICAL: Frontend 'hafrontend' frontend total sessions: 3980 | 'hafrontend#frontend.session.current.rate.countpersecond'=1;;;0; 'hafrontend#frontend.session.max.rate.countpersecond'=6;;;0; 'hafrontend#frontend.sessions.current.count'=10;;;0; 'hafrontend#frontend.sessions.total.count'=3980;;0:0;0; 'hafrontend#frontend.sessions.maximum.count'=16;;;0; 'hafrontend#frontend.traffic.in.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.traffic.out.bitpersecond'=0.00b/s;;;0; 'hafrontend#frontend.requests.denied.count'=0;;;0; 'hafrontend#frontend.responses.denied.count'=0;;;0; 'hafrontend#frontend.requests.error.count'=42;;;0; + + + + + + diff --git a/tests/apps/haproxy/web/mockoon.json b/tests/apps/haproxy/web/mockoon.json new file mode 100644 index 0000000000..73606fb0b3 --- /dev/null +++ b/tests/apps/haproxy/web/mockoon.json @@ -0,0 +1,154 @@ +{ + "uuid": "18c6b01d-a90c-4b23-b0b3-fe8373fce6dc", + "lastMigration": 33, + "name": "Mockoon", + "endpointPrefix": "", + "latency": 0, + "port": 3000, + "hostname": "", + "folders": [], + "routes": [ + { + "uuid": "843586f6-5ead-4ea3-bd48-3a4c8ec3272b", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "", + "responses": [ + { + "uuid": "420e43ce-824e-4e80-a9a8-d3ac257c0608", + "body": "{}", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": true, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + }, + { + "uuid": "bf219176-5880-47ba-b32e-b51004cc32a5", + "type": "http", + "documentation": "", + "method": "get", + "endpoint": "stats;json;", + "responses": [ + { + "uuid": "bf12e240-4fc5-4117-b001-8898d49bafd1", + "body": "[\n [\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"hafrontend\"\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"FRONTEND\"\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 10\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 16\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 6,\n \"name\": \"slim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2000\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3980\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 190502571\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 155033362\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 10,\n \"name\": \"dreq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 12,\n \"name\": \"ereq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 42\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"OPEN\"\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 34,\n \"name\": \"rate_lim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 12182\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 494\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 163\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 46,\n \"name\": \"req_rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 47,\n \"name\": \"req_rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 26\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 12841\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 51,\n \"name\": \"comp_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 52,\n \"name\": \"comp_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 53,\n \"name\": \"comp_byp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 54,\n \"name\": \"comp_rsp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 77,\n \"name\": \"conn_rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 78,\n \"name\": \"conn_rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 21\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 79,\n \"name\": \"conn_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4271\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 80,\n \"name\": \"intercepted\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1511\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 81,\n \"name\": \"dcon\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 82,\n \"name\": \"dses\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 86,\n \"name\": \"cache_lookups\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 87,\n \"name\": \"cache_hits\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 104,\n \"name\": \"sess_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 105,\n \"name\": \"h1sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3980\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 106,\n \"name\": \"h2sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 107,\n \"name\": \"h3sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 108,\n \"name\": \"req_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 109,\n \"name\": \"h1req\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 12841\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 110,\n \"name\": \"h2req\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 111,\n \"name\": \"h3req\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3222\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 181\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 291\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 116,\n \"name\": \"h2_headers_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 117,\n \"name\": \"h2_data_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 118,\n \"name\": \"h2_settings_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 119,\n \"name\": \"h2_rst_stream_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 120,\n \"name\": \"h2_goaway_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 121,\n \"name\": \"h2_detected_conn_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 122,\n \"name\": \"h2_detected_strm_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 123,\n \"name\": \"h2_rst_stream_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 124,\n \"name\": \"h2_goaway_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 125,\n \"name\": \"h2_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 126,\n \"name\": \"h2_backend_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 127,\n \"name\": \"h2_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 128,\n \"name\": \"h2_backend_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 129,\n \"name\": \"h1_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 10\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 130,\n \"name\": \"h1_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 131,\n \"name\": \"h1_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3980\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 132,\n \"name\": \"h1_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 12799\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 133,\n \"name\": \"h1_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 191110148\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 134,\n \"name\": \"h1_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 155351981\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 135,\n \"name\": \"h1_spliced_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Frontend\",\n \"proxyId\": 2,\n \"id\": 0,\n \"field\": {\n \"pos\": 136,\n \"name\": \"h1_spliced_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-RIA\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB49\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": -1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 3,\n \"id\": 1,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-RIA\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"BACKEND\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 6,\n \"name\": \"slim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 10,\n \"name\": \"dreq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 51,\n \"name\": \"comp_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 52,\n \"name\": \"comp_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 53,\n \"name\": \"comp_byp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 54,\n \"name\": \"comp_rsp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": -1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 86,\n \"name\": \"cache_lookups\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 87,\n \"name\": \"cache_hits\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 100,\n \"name\": \"agg_server_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 101,\n \"name\": \"agg_server_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 102,\n \"name\": \"agg_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 116,\n \"name\": \"h2_headers_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 117,\n \"name\": \"h2_data_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 118,\n \"name\": \"h2_settings_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 119,\n \"name\": \"h2_rst_stream_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 120,\n \"name\": \"h2_goaway_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 121,\n \"name\": \"h2_detected_conn_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 122,\n \"name\": \"h2_detected_strm_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 123,\n \"name\": \"h2_rst_stream_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 124,\n \"name\": \"h2_goaway_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 125,\n \"name\": \"h2_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 126,\n \"name\": \"h2_backend_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 127,\n \"name\": \"h2_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 128,\n \"name\": \"h2_backend_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 129,\n \"name\": \"h1_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 130,\n \"name\": \"h1_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 131,\n \"name\": \"h1_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3765\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 132,\n \"name\": \"h1_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3765\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 133,\n \"name\": \"h1_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4661070\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 134,\n \"name\": \"h1_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 143070\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 135,\n \"name\": \"h1_spliced_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 3,\n \"id\": 0,\n \"field\": {\n \"pos\": 136,\n \"name\": \"h1_spliced_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB41_tomcat1\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 28092816\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 24317266\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1163\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 44\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 12\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 120\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 7146\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 558\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 653\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 17\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 25401\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 286985\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 1,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB41_tomcat2\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 28223007\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 24289689\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1170\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 36\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1211\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 102\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 7319\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 557\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 654\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 8749\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 283296\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 2,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB42_tomcat1\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 28567593\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 21667124\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1168\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 39\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 13\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 101\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 8624\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 568\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 642\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 16\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5800\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 275924\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 3,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB42_tomcat2\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 38865031\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 26650593\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1171\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 35\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 13\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 308\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6966\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 542\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 668\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 10\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 189754\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 276231\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 4,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB43_tomcat1\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1209\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 28697028\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 20995655\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 33988\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 40\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1209\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1171\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 33\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1209\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 13\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 98\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6761\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 561\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 648\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 12\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 7302\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 275874\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 5,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB43_tomcat2\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1213\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 29405088\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 21627009\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1210\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1169\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 40\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1209\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 13\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 111\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 8429\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 571\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 642\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 10\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 11366\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 279021\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 4,\n \"id\": 6,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-IHM\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"BACKEND\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 7\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 6,\n \"name\": \"slim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 7527\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 181894863\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 139584782\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 10,\n \"name\": \"dreq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 7261\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 25\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 7012\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 493\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 21\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 7527\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 7\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 51,\n \"name\": \"comp_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 52,\n \"name\": \"comp_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 53,\n \"name\": \"comp_byp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 54,\n \"name\": \"comp_rsp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 122\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 9842\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3357\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3907\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 86,\n \"name\": \"cache_lookups\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 87,\n \"name\": \"cache_hits\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 17\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 189754\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 286985\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 100,\n \"name\": \"agg_server_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 101,\n \"name\": \"agg_server_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 102,\n \"name\": \"agg_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 116,\n \"name\": \"h2_headers_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 117,\n \"name\": \"h2_data_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 118,\n \"name\": \"h2_settings_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 119,\n \"name\": \"h2_rst_stream_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 120,\n \"name\": \"h2_goaway_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 121,\n \"name\": \"h2_detected_conn_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 122,\n \"name\": \"h2_detected_strm_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 123,\n \"name\": \"h2_rst_stream_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 124,\n \"name\": \"h2_goaway_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 125,\n \"name\": \"h2_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 126,\n \"name\": \"h2_backend_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 127,\n \"name\": \"h2_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 128,\n \"name\": \"h2_backend_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 129,\n \"name\": \"h1_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 130,\n \"name\": \"h1_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 131,\n \"name\": \"h1_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 25940\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 132,\n \"name\": \"h1_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 29847\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 133,\n \"name\": \"h1_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 147113881\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 134,\n \"name\": \"h1_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 183368341\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 135,\n \"name\": \"h1_spliced_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 4,\n \"id\": 0,\n \"field\": {\n \"pos\": 136,\n \"name\": \"h1_spliced_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-BATCH\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB41_tomcat3\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2849646\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1965661\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1217\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 34\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 678\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 28150\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 987\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 264\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 9348\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 275377\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 1,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-BATCH\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB42_tomcat3\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2724055\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1911164\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1222\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 29\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1251\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 620\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 27330\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 973\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 278\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6084\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 138000\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 2,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-BATCH\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"DCERPWEB43_tomcat3\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1250\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2731720\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1980660\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 21,\n \"name\": \"chkfail\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1250\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 36,\n \"name\": \"check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"L7OK\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 37,\n \"name\": \"check_code\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 38,\n \"name\": \"check_duration\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Duration\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1214\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 36\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 1250\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 12\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 56,\n \"name\": \"last_chk\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 653\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 26148\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 65,\n \"name\": \"check_desc\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Output\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"Layer7 check passed\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 67,\n \"name\": \"check_rise\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 68,\n \"name\": \"check_fall\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 69,\n \"name\": \"check_health\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 985\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 265\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 10046\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 241642\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 5,\n \"id\": 3,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"APP-BATCH\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"BACKEND\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 6,\n \"name\": \"slim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3752\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 8305421\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 5857485\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 10,\n \"name\": \"dreq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3752\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 4\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3653\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 99\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3752\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 51,\n \"name\": \"comp_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 52,\n \"name\": \"comp_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 53,\n \"name\": \"comp_byp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 54,\n \"name\": \"comp_rsp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 5\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 410\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 30609\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2945\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 807\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 86,\n \"name\": \"cache_lookups\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 87,\n \"name\": \"cache_hits\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 10046\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 275377\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 100,\n \"name\": \"agg_server_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 101,\n \"name\": \"agg_server_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 102,\n \"name\": \"agg_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 116,\n \"name\": \"h2_headers_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 117,\n \"name\": \"h2_data_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 118,\n \"name\": \"h2_settings_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 119,\n \"name\": \"h2_rst_stream_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 120,\n \"name\": \"h2_goaway_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 121,\n \"name\": \"h2_detected_conn_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 122,\n \"name\": \"h2_detected_strm_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 123,\n \"name\": \"h2_rst_stream_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 124,\n \"name\": \"h2_goaway_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 125,\n \"name\": \"h2_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 126,\n \"name\": \"h2_backend_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 127,\n \"name\": \"h2_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 128,\n \"name\": \"h2_backend_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 129,\n \"name\": \"h1_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 130,\n \"name\": \"h1_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 131,\n \"name\": \"h1_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 14236\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 132,\n \"name\": \"h1_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 15043\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 133,\n \"name\": \"h1_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9403968\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 134,\n \"name\": \"h1_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9059621\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 135,\n \"name\": \"h1_spliced_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 5,\n \"id\": 0,\n \"field\": {\n \"pos\": 136,\n \"name\": \"h1_spliced_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"STATIC_BG_IMAGE\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"NGINX_BG_IMAGE\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 22693\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2934\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"no check\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 2\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Rate\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 2048\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 90\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 88,\n \"name\": \"srv_icur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 248\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 95,\n \"name\": \"idle_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 96,\n \"name\": \"safe_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 97,\n \"name\": \"used_conn_cur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 98,\n \"name\": \"need_conn_est\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 103,\n \"name\": \"srid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Server\",\n \"proxyId\": 6,\n \"id\": 1,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ],\n [\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 0,\n \"name\": \"pxname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"STATIC_BG_IMAGE\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 1,\n \"name\": \"svname\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Name\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"BACKEND\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 2,\n \"name\": \"qcur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 3,\n \"name\": \"qmax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 4,\n \"name\": \"scur\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 5,\n \"name\": \"smax\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 6,\n \"name\": \"slim\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Limit\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 200\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 7,\n \"name\": \"stot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 8,\n \"name\": \"bin\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 22693\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 9,\n \"name\": \"bout\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 2934\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 10,\n \"name\": \"dreq\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 11,\n \"name\": \"dresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 13,\n \"name\": \"econ\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 14,\n \"name\": \"eresp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 15,\n \"name\": \"wretr\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 16,\n \"name\": \"wredis\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 17,\n \"name\": \"status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Status\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"UP\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 18,\n \"name\": \"weight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 19,\n \"name\": \"act\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 20,\n \"name\": \"bck\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 22,\n \"name\": \"chkdown\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 23,\n \"name\": \"lastchg\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 75315\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 24,\n \"name\": \"downtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 26,\n \"name\": \"pid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 27,\n \"name\": \"iid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 6\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 28,\n \"name\": \"sid\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Key\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 30,\n \"name\": \"lbtot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 32,\n \"name\": \"type\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 33,\n \"name\": \"rate\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 35,\n \"name\": \"rate_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 39,\n \"name\": \"hrsp_1xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 40,\n \"name\": \"hrsp_2xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 41,\n \"name\": \"hrsp_3xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 42,\n \"name\": \"hrsp_4xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 43,\n \"name\": \"hrsp_5xx\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 44,\n \"name\": \"hrsp_other\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 48,\n \"name\": \"req_tot\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 49,\n \"name\": \"cli_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 50,\n \"name\": \"srv_abrt\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 51,\n \"name\": \"comp_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 52,\n \"name\": \"comp_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 53,\n \"name\": \"comp_byp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 54,\n \"name\": \"comp_rsp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 55,\n \"name\": \"lastsess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Age\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"s32\",\n \"value\": 2048\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 58,\n \"name\": \"qtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 59,\n \"name\": \"ctime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 60,\n \"name\": \"rtime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 61,\n \"name\": \"ttime\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 90\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 75,\n \"name\": \"mode\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Config\",\n \"nature\": \"Gauge\",\n \"scope\": \"Service\"\n },\n \"value\": {\n \"type\": \"str\",\n \"value\": \"http\"\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 83,\n \"name\": \"wrew\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 84,\n \"name\": \"connect\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 85,\n \"name\": \"reuse\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 86,\n \"name\": \"cache_lookups\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 87,\n \"name\": \"cache_hits\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 90,\n \"name\": \"qtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 91,\n \"name\": \"ctime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 92,\n \"name\": \"rtime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 93,\n \"name\": \"ttime_max\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Max\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 248\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 94,\n \"name\": \"eint\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 99,\n \"name\": \"uweight\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Avg\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 1\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 100,\n \"name\": \"agg_server_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 101,\n \"name\": \"agg_server_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 102,\n \"name\": \"agg_check_status\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u32\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 113,\n \"name\": \"ssl_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 114,\n \"name\": \"ssl_reused_sess\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 115,\n \"name\": \"ssl_failed_handshake\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 116,\n \"name\": \"h2_headers_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 117,\n \"name\": \"h2_data_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 118,\n \"name\": \"h2_settings_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 119,\n \"name\": \"h2_rst_stream_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 120,\n \"name\": \"h2_goaway_rcvd\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 121,\n \"name\": \"h2_detected_conn_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 122,\n \"name\": \"h2_detected_strm_protocol_errors\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 123,\n \"name\": \"h2_rst_stream_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 124,\n \"name\": \"h2_goaway_resp\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 125,\n \"name\": \"h2_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 126,\n \"name\": \"h2_backend_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 127,\n \"name\": \"h2_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 128,\n \"name\": \"h2_backend_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 129,\n \"name\": \"h1_open_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 130,\n \"name\": \"h1_open_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Gauge\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 131,\n \"name\": \"h1_total_connections\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 132,\n \"name\": \"h1_total_streams\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 9\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 133,\n \"name\": \"h1_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 3267\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 134,\n \"name\": \"h1_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 23248\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 135,\n \"name\": \"h1_spliced_bytes_in\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n },\n {\n \"objType\": \"Backend\",\n \"proxyId\": 6,\n \"id\": 0,\n \"field\": {\n \"pos\": 136,\n \"name\": \"h1_spliced_bytes_out\"\n },\n \"processNum\": 1,\n \"tags\": {\n \"origin\": \"Metric\",\n \"nature\": \"Counter\",\n \"scope\": \"Process\"\n },\n \"value\": {\n \"type\": \"u64\",\n \"value\": 0\n }\n }\n ]\n]\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [ + { + "key": "access-control-allow-headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + }, + { + "key": "access-control-allow-methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "access-control-allow-origin", + "value": "*" + }, + { + "key": "content-security-policy", + "value": "default-src 'none'" + }, + { + "key": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "key": "x-content-type-options", + "value": "nosniff" + } + ], + "bodyType": "INLINE", + "filePath": "", + "databucketID": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false, + "default": false, + "crudKey": "id", + "callbacks": [] + } + ], + "responseMode": null, + "streamingMode": null, + "streamingInterval": 0 + } + ], + "rootChildren": [ + { + "type": "route", + "uuid": "843586f6-5ead-4ea3-bd48-3a4c8ec3272b" + }, + { + "type": "route", + "uuid": "bf219176-5880-47ba-b32e-b51004cc32a5" + } + ], + "proxyMode": false, + "proxyHost": "", + "proxyRemovePrefix": false, + "tlsOptions": { + "enabled": false, + "type": "CERT", + "pfxPath": "", + "certPath": "", + "keyPath": "", + "caPath": "", + "passphrase": "" + }, + "cors": true, + "headers": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Access-Control-Allow-Origin", + "value": "*" + }, + { + "key": "Access-Control-Allow-Methods", + "value": "GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS" + }, + { + "key": "Access-Control-Allow-Headers", + "value": "Content-Type, Origin, Accept, Authorization, Content-Length, X-Requested-With" + } + ], + "proxyReqHeaders": [ + { + "key": "", + "value": "" + } + ], + "proxyResHeaders": [ + { + "key": "", + "value": "" + } + ], + "data": [], + "callbacks": [] +} \ No newline at end of file diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 6d2fb0416f..d70a90881d 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -84,9 +84,11 @@ FCCapacity --force-oid Fortigate Fortinet +FQDN FreeBSD frsevent --get-param +HAProxy HashiCorp hashicorpvault HPE @@ -260,11 +262,11 @@ v2 VDSL2 Veeam VeloCloud -Vserver VM VMware VPN vSAN +Vserver vSphere --warning-authserver-clients-timeout --warning-authserver-packets-access-accepts From 0dae1d946074b27dc3e0881205659d2da0d08bbb Mon Sep 17 00:00:00 2001 From: Evan-Adam <152897682+Evan-Adam@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:17:55 +0100 Subject: [PATCH 13/20] CTOR-644-plugin-network-moxa-switch-snmp-mode-interfaces-option-add-duplex-status-duplex-unknown (#5420) Refs: CTOR-644 --- .../moxa/switch/snmp/mode/interfaces.pm | 201 ++++++++++++++++++ src/network/moxa/switch/snmp/plugin.pm | 2 +- tests/README.md | 18 +- .../network/moxa/switch/snmp/interfaces.robot | 27 +++ .../moxa/switch/snmp/interfaces.snmpwalk | 103 +++++++++ tests/resources/spellcheck/stopwords.txt | 1 + 6 files changed, 349 insertions(+), 3 deletions(-) create mode 100644 src/network/moxa/switch/snmp/mode/interfaces.pm create mode 100644 tests/network/moxa/switch/snmp/interfaces.robot create mode 100644 tests/network/moxa/switch/snmp/interfaces.snmpwalk diff --git a/src/network/moxa/switch/snmp/mode/interfaces.pm b/src/network/moxa/switch/snmp/mode/interfaces.pm new file mode 100644 index 0000000000..49e76ae9bb --- /dev/null +++ b/src/network/moxa/switch/snmp/mode/interfaces.pm @@ -0,0 +1,201 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package network::moxa::switch::snmp::mode::interfaces; + +use base qw(snmp_standard::mode::interfaces); + +use strict; +use warnings; +sub set_oids_status { + my ($self, %options) = @_; + $self->SUPER::set_oids_status(%options); + + # Standard duplex oid don't work on moxa industrial switches (eds405a) + $self->{oid_duplexstatus} = '.1.3.6.1.4.1.8691.7.6.1.10.3.1.3'; + # Moxa provide a specific oid for speed/duplex, with this values definition: + # speed100M-Full(3), + # speed100M-Half(2), + # speed10M-Full(1), + # speed10M-Half(0), + # na(-1) + $self->{oid_duplexstatus_mapping} = { + -1 => 'unknown', 0 => 'halfDuplex', 2 => 'halfDuplex', 3 => 'fullDuplex',1 => 'fullDuplex' + }; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + return $self; +} + +1; + +__END__ + +=head1 MODE + +Check interfaces of moxa industrial switches. + +=over 8 + +=item B<--add-global> + +Check global port statistics (by default if no --add-* option is set). + +=item B<--add-status> + +Check interface status. + +=item B<--add-duplex-status> + +Check duplex status (with --warning-status and --critical-status). + +=item B<--add-traffic> + +Check interface traffic. + +=item B<--add-errors> + +Check interface errors. + +=item B<--add-cast> + +Check interface cast. + +=item B<--add-speed> + +Check interface speed. + +=item B<--add-volume> + +Check interface data volume between two checks (not supposed to be graphed, useful for BI reporting). + +=item B<--check-metrics> + +If the expression is true, metrics are checked (default: '%{opstatus} eq "up"'). + +=item B<--warning-status> + +Define the conditions to match for the status to be WARNING. +You can use the following variables: %{admstatus}, %{opstatus}, %{duplexstatus}, %{display} + +=item B<--critical-status> + +Define the conditions to match for the status to be CRITICAL (default: '%{admstatus} eq "up" and %{opstatus} ne "up"'). +You can use the following variables: %{admstatus}, %{opstatus}, %{duplexstatus}, %{display} + +=item B<--warning-*> B<--critical-*> + +Thresholds. +Can be: 'total-port', 'total-admin-up', 'total-admin-down', 'total-oper-up', 'total-oper-down', +'in-traffic', 'out-traffic', 'in-error', 'in-discard', 'out-error', 'out-discard', +'in-ucast', 'in-bcast', 'in-mcast', 'out-ucast', 'out-bcast', 'out-mcast', +'speed' (b/s). + +=item B<--units-traffic> + +Units of thresholds for the traffic (default: 'percent_delta') ('percent_delta', 'bps', 'counter'). + +=item B<--units-errors> + +Units of thresholds for errors/discards (default: 'percent_delta') ('percent_delta', 'percent', 'delta', 'deltaps', 'counter'). + +=item B<--units-cast> + +Units of thresholds for communication types (default: 'percent_delta') ('percent_delta', 'percent', 'delta', 'deltaps', 'counter'). + +=item B<--nagvis-perfdata> + +Display traffic perfdata to be compatible with NagVis widget. + +=item B<--interface> + +Check only the interfaces with the specified IDs (OID indexes, e.g.: 1,2,...). If empty, all interfaces will be monitored. +To filter on interface names, see --name. + +=item B<--name> + +With this option, the interfaces will be filtered by name (given in option --interface) instead of OID index. The name matching mode supports regular expressions. + +=item B<--regex-id> + +With this option, interface IDs will be filtered using the --interface parameter as a regular expression instead of a list of IDs. + +=item B<--speed> + +Set interface speed for incoming/outgoing traffic (in Mb). + +=item B<--speed-in> + +Set interface speed for incoming traffic (in Mb). + +=item B<--speed-out> + +Set interface speed for outgoing traffic (in Mb). + +=item B<--map-speed-dsl> + +Get interface speed configuration for interfaces of type 'ADSL' and 'VDSL2'. + +Syntax: --map-speed-dsl=interface-src-name,interface-dsl-name + +E.g: --map-speed-dsl=Et0.835,Et0-vdsl2 + +=item B<--force-counters64> + +Force to use 64 bits counters only. Can be used to improve performance. + +=item B<--force-counters32> + +Force to use 32-bit counters (even with SNMP versions 2c and 3). To use when 64 bits counters are buggy. + +=item B<--reload-cache-time> + +Time in minutes before reloading cache file (default: 180). + +=item B<--oid-filter> + +Define the OID to be used to filter interfaces (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr). + +=item B<--oid-display> + +Define the OID that will be used to name the interfaces (default: ifName) (values: ifDesc, ifAlias, ifName, IpAddr). + +=item B<--oid-extra-display> + +Add an OID to display. + +=item B<--display-transform-src> B<--display-transform-dst> + +Modify the interface name displayed by using a regular expression. + +Example: adding --display-transform-src='eth' --display-transform-dst='ens' will replace all occurrences of 'eth' with 'ens' + +=item B<--show-cache> + +Display cache interface data. + +=back + +=cut diff --git a/src/network/moxa/switch/snmp/plugin.pm b/src/network/moxa/switch/snmp/plugin.pm index 68db9c7459..d7c22536e5 100644 --- a/src/network/moxa/switch/snmp/plugin.pm +++ b/src/network/moxa/switch/snmp/plugin.pm @@ -32,7 +32,7 @@ sub new { $self->{version} = '0.1'; %{$self->{modes}} = ( 'cpu' => 'network::moxa::switch::snmp::mode::cpu', - 'interfaces' => 'snmp_standard::mode::interfaces', + 'interfaces' => 'network::moxa::switch::snmp::mode::interfaces', 'list-interfaces' => 'snmp_standard::mode::listinterfaces', 'memory' => 'network::moxa::switch::snmp::mode::memory', 'uptime' => 'snmp_standard::mode::uptime', diff --git a/tests/README.md b/tests/README.md index bb7e28886f..1d42b40b1e 100644 --- a/tests/README.md +++ b/tests/README.md @@ -2,7 +2,7 @@ ## Robot tests -In this project robot is used to order the integration tests. +In this project robot Framework is used to order the integration tests. ### install snmpsim @@ -30,6 +30,21 @@ robot tests/ you can filter the tests run by specifying -e to exclude and -i to include a specific tag before the file path. +## Get new data + +### Http + +Any `curl -v` command should give enough info to create new tests/plugins on new http services. + +If the plugin already exists, you can use the plugin to gater the data with the `--debug --verbose` options. + +### Snmp + +To get snmp data, you can use the snmpwalk command on the host you want to monitor. +```bash +snmpwalk -ObentU -v2c -c 'public' localhost .1 +``` + ## Anonymize tests @@ -40,7 +55,6 @@ the option `--no-anonymization` allow to not anonymize the data and only remove perl ./tests/scripts/slim_walk.pl --snmpwalk-path=tests/hardware/client.snmpwalk > smaller-file.snmpwalk ``` - ## unit tests In this project perl test::v0 is used to run unit tests. diff --git a/tests/network/moxa/switch/snmp/interfaces.robot b/tests/network/moxa/switch/snmp/interfaces.robot new file mode 100644 index 0000000000..f097fcdd6b --- /dev/null +++ b/tests/network/moxa/switch/snmp/interfaces.robot @@ -0,0 +1,27 @@ +*** Settings *** +Documentation Network moxa SNMP plugin + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource +Suite Setup Ctn Generic Suite Setup + +Test Timeout 120s + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} +... --plugin=network::moxa::switch::snmp::plugin +... --mode=interfaces +... --hostname=${HOSTNAME} +... --snmp-port=${SNMPPORT} +... --snmp-community=network/moxa/switch/snmp/interfaces + +*** Test Cases *** +network interface ${tc} + [Tags] network moxa snmp + ${command} Catenate + ... ${CMD} + ... ${arguments} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc arguments expected_result -- + ... 1 --verbose --add-duplex-status OK: All interfaces are ok Interface 'lo' Status : up (admin: up) (duplex: fullDuplex) Interface 'eth0' Status : up (admin: up) (duplex: halfDuplex) Interface 'eth1' Status : up (admin: up) (duplex: unknown) Interface 'eth2' Status : up (admin: up) (duplex: fullDuplex) Interface 'eth3' Status : up (admin: up) (duplex: fullDuplex) \ No newline at end of file diff --git a/tests/network/moxa/switch/snmp/interfaces.snmpwalk b/tests/network/moxa/switch/snmp/interfaces.snmpwalk new file mode 100644 index 0000000000..98dde03592 --- /dev/null +++ b/tests/network/moxa/switch/snmp/interfaces.snmpwalk @@ -0,0 +1,103 @@ +.1.3.6.1.2.1.1.1.0 = STRING: "Linux server-debian11 5.10.0-28-amd64 #1 SMP Debian 5.10.209-2 (2024-01-31) x86_64" +.1.3.6.1.2.1.1.3.0 = 8074 +.1.3.6.1.2.1.2.2.1.2.1 = STRING: "lo" +.1.3.6.1.2.1.2.2.1.2.2 = STRING: "Intel Corporation 82540EM Gigabit Ethernet Controller" +.1.3.6.1.2.1.2.2.1.2.3 = STRING: "Intel Corporation 82540EM Gigabit Ethernet Controller" +.1.3.6.1.2.1.2.2.1.2.4 = STRING: "Intel Corporation 82540EM Gigabit Ethernet Controller" +.1.3.6.1.2.1.2.2.1.2.5 = STRING: "Intel Corporation 82540EM Gigabit Ethernet Controller" +.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: 24 +.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: 6 +.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: 6 +.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: 6 +.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: 6 +.1.3.6.1.2.1.2.2.1.5.1 = Gauge32: 10000000 +.1.3.6.1.2.1.2.2.1.5.2 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.3 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.4 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.5.5 = Gauge32: 1000000000 +.1.3.6.1.2.1.2.2.1.6.1 = "" +.1.3.6.1.2.1.2.2.1.6.2 = Hex-STRING: 08 00 27 8D C0 4D +.1.3.6.1.2.1.2.2.1.6.3 = Hex-STRING: 08 00 27 3C 26 92 +.1.3.6.1.2.1.2.2.1.6.4 = Hex-STRING: 08 00 27 FE 8E E3 +.1.3.6.1.2.1.2.2.1.6.5 = Hex-STRING: 08 00 27 A4 62 F7 +.1.3.6.1.2.1.2.2.1.7.1 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.7.2 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.7.3 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.7.4 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.7.5 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.8.1 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.8.2 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.8.3 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.8.4 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.8.5 = INTEGER: 1 +.1.3.6.1.2.1.2.2.1.20.1 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.2 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.3 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.4 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.20.5 = Counter32: 0 +.1.3.6.1.2.1.2.2.1.21.1 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.2 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.3 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.4 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.21.5 = Gauge32: 0 +.1.3.6.1.2.1.2.2.1.22.1 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.2 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.3 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.4 = OID: .0.0 +.1.3.6.1.2.1.2.2.1.22.5 = OID: .0.0 +.1.3.6.1.2.1.25.1.1.0 = 48160 +.1.3.6.1.2.1.31.1.1.1.1.1 = STRING: "lo" +.1.3.6.1.2.1.31.1.1.1.1.2 = STRING: "eth0" +.1.3.6.1.2.1.31.1.1.1.1.3 = STRING: "eth1" +.1.3.6.1.2.1.31.1.1.1.1.4 = STRING: "eth2" +.1.3.6.1.2.1.31.1.1.1.1.5 = STRING: "eth3" +.1.3.6.1.2.1.31.1.1.1.10.1 = Counter64: 1904 +.1.3.6.1.2.1.31.1.1.1.10.2 = Counter64: 192208 +.1.3.6.1.2.1.31.1.1.1.10.3 = Counter64: 647510 +.1.3.6.1.2.1.31.1.1.1.10.4 = Counter64: 1592 +.1.3.6.1.2.1.31.1.1.1.10.5 = Counter64: 1592 +.1.3.6.1.2.1.31.1.1.1.11.1 = Counter64: 20 +.1.3.6.1.2.1.31.1.1.1.11.2 = Counter64: 1339 +.1.3.6.1.2.1.31.1.1.1.11.3 = Counter64: 5865 +.1.3.6.1.2.1.31.1.1.1.11.4 = Counter64: 20 +.1.3.6.1.2.1.31.1.1.1.11.5 = Counter64: 20 +.1.3.6.1.2.1.31.1.1.1.12.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.12.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.1 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.2 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.3 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.4 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.13.5 = Counter64: 0 +.1.3.6.1.2.1.31.1.1.1.15.1 = Gauge32: 10 +.1.3.6.1.2.1.31.1.1.1.15.2 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.3 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.4 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.15.5 = Gauge32: 1000 +.1.3.6.1.2.1.31.1.1.1.16.1 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.16.2 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.16.3 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.16.4 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.16.5 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.17.1 = INTEGER: 2 +.1.3.6.1.2.1.31.1.1.1.17.2 = INTEGER: 1 +.1.3.6.1.2.1.31.1.1.1.17.3 = INTEGER: 1 +.1.3.6.1.2.1.31.1.1.1.17.4 = INTEGER: 1 +.1.3.6.1.2.1.31.1.1.1.17.5 = INTEGER: 1 +.1.3.6.1.2.1.31.1.1.1.18.1 = "" +.1.3.6.1.2.1.31.1.1.1.18.2 = "" +.1.3.6.1.2.1.31.1.1.1.18.3 = "" +.1.3.6.1.2.1.31.1.1.1.18.4 = "" +.1.3.6.1.2.1.31.1.1.1.18.5 = "" +.1.3.6.1.2.1.31.1.1.1.19.1 = 0 +.1.3.6.1.2.1.31.1.1.1.19.2 = 0 +.1.3.6.1.2.1.31.1.1.1.19.3 = 0 +.1.3.6.1.2.1.31.1.1.1.19.4 = 0 +.1.3.6.1.2.1.31.1.1.1.19.5 = 0 +.1.3.6.1.4.1.8691.7.6.1.10.3.1.3.1 = INTEGER: 3 +.1.3.6.1.4.1.8691.7.6.1.10.3.1.3.2 = INTEGER: 2 +.1.3.6.1.4.1.8691.7.6.1.10.3.1.3.3 = INTEGER: -1 +.1.3.6.1.4.1.8691.7.6.1.10.3.1.3.4 = INTEGER: 1 +.1.3.6.1.4.1.8691.7.6.1.10.3.1.3.5 = INTEGER: 3 diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index d70a90881d..6a4440a8cb 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -98,6 +98,7 @@ ifAlias ifDesc ifName --ignore-orgs-api-disabled +IKS IMEI in-bcast in-crc From c6b31bce7d2519408dba72ccccc8edf03257fb48 Mon Sep 17 00:00:00 2001 From: omercier <32134301+omercier@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:19:18 +0100 Subject: [PATCH 14/20] help(cyberoam-snmp): remove uppercase chars in options (#5425) Refs: CTOR-102 --- src/network/cyberoam/snmp/mode/vpnstatus.pm | 4 ++-- tests/network/cyberoam/snmp/vpn-status.robot | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/network/cyberoam/snmp/mode/vpnstatus.pm b/src/network/cyberoam/snmp/mode/vpnstatus.pm index b5e1277ba5..d17c96c4be 100644 --- a/src/network/cyberoam/snmp/mode/vpnstatus.pm +++ b/src/network/cyberoam/snmp/mode/vpnstatus.pm @@ -365,11 +365,11 @@ Thresholds. Thresholds. -=item B<--warning-total-partiallyActive> +=item B<--warning-total-partially-active> Thresholds. -=item B<--critical-total-partiallyActive> +=item B<--critical-total-partially-active> Thresholds. diff --git a/tests/network/cyberoam/snmp/vpn-status.robot b/tests/network/cyberoam/snmp/vpn-status.robot index d19a1b41e9..9ed8c243e1 100644 --- a/tests/network/cyberoam/snmp/vpn-status.robot +++ b/tests/network/cyberoam/snmp/vpn-status.robot @@ -38,3 +38,6 @@ vpn-status ${tc} ... 10 --critical-status='' --warning-total=0 --critical-total=20 WARNING: VPN total: 4 | 'total'=4;0:0;0:20;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; ... 11 --critical-status='' --warning-total-inactive=10 --critical-total-inactive=0 CRITICAL: VPN inactive: 1 | 'total'=4;;;0; 'total_inactive'=1;0:10;0:0;0; 'total_active'=3;;;0; 'total_partially_active'=0;;;0; ... 12 --critical-status='' --warning-total-active=0 --critical-total-active=0 CRITICAL: VPN active: 3 | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;0:0;0:0;0; 'total_partially_active'=0;;;0; + ... 13 --critical-status='0' --warning-total-partially-active=1:1 WARNING: VPN partially active: 0 | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;1:1;;0; + ... 14 --critical-status='0' --critical-total-partially-active=1:1 CRITICAL: VPN partially active: 0 | 'total'=4;;;0; 'total_inactive'=1;;;0; 'total_active'=3;;;0; 'total_partially_active'=0;;1:1;0; + From 4e10376ec78a40d885651a734bec4d2b2d193b90 Mon Sep 17 00:00:00 2001 From: Lucie Dubrunfaut <123162035+lucie-dubrunfaut@users.noreply.github.com> Date: Wed, 5 Feb 2025 10:23:39 +0100 Subject: [PATCH 15/20] enh(network::fortinet::fortigate::restapi): rebuild to add option and counter last-update CTOR-1126 (#5426) Co-authored-by: Lucie Dubrunfaut --- src/network/fortinet/fortigate/restapi/mode/licenses.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network/fortinet/fortigate/restapi/mode/licenses.pm b/src/network/fortinet/fortigate/restapi/mode/licenses.pm index 27d97d0b21..4898d523ca 100644 --- a/src/network/fortinet/fortigate/restapi/mode/licenses.pm +++ b/src/network/fortinet/fortigate/restapi/mode/licenses.pm @@ -217,7 +217,8 @@ You can use the following variables: %{name}, %{status}. =item B<--unit> -Select the time unit for the expiration thresholds. May be 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days, 'w' for weeks. Default is seconds. +Select the time unit for the expiration thresholds. May be 's' for seconds, 'm' for minutes, 'h' for hours, 'd' for days, 'w' for weeks. +Default is seconds. =item B<--warning-*> B<--critical-*> From ee48767a11a437830c78c5461ae97766ad2c8ec8 Mon Sep 17 00:00:00 2001 From: sfarouq-ext <116093375+sfarouq-ext@users.noreply.github.com> Date: Wed, 5 Feb 2025 11:43:25 +0100 Subject: [PATCH 16/20] enh(add new test mode): network::fortinet::fortigate::snmp, Mode(sdwan) (#5421) Co-authored-by: Patrick Refs:CTOR-1322 --- .../fortinet/fortigate/snmp/mode/sdwan.pm | 6 ++-- .../snmp/fortinet-fortigate.snmpwalk | 11 ++++++ .../fortinet/fortigate/snmp/sdawn.robot | 36 +++++++++++++++++++ tests/resources/spellcheck/stopwords.txt | 2 ++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 tests/network/fortinet/fortigate/snmp/fortinet-fortigate.snmpwalk create mode 100644 tests/network/fortinet/fortigate/snmp/sdawn.robot diff --git a/src/centreon/common/fortinet/fortigate/snmp/mode/sdwan.pm b/src/centreon/common/fortinet/fortigate/snmp/mode/sdwan.pm index 7fb29f1669..50411049fe 100644 --- a/src/centreon/common/fortinet/fortigate/snmp/mode/sdwan.pm +++ b/src/centreon/common/fortinet/fortigate/snmp/mode/sdwan.pm @@ -314,9 +314,9 @@ sub manage_selection { name => $self->{sdwan}->{$_}->{name}, vdom => $result->{vdom}, ifName => $result->{ifName}, - in => $result->{traffic_in} * 1000 * 1000, - out => $result->{traffic_out} * 1000 * 1000, - bi => $result->{traffic_bi} * 1000 * 1000, + in => $result->{traffic_in} * 1000, + out => $result->{traffic_out} * 1000, + bi => $result->{traffic_bi} * 1000, }; $self->{sdwan}->{$_}->{jitter} = { diff --git a/tests/network/fortinet/fortigate/snmp/fortinet-fortigate.snmpwalk b/tests/network/fortinet/fortigate/snmp/fortinet-fortigate.snmpwalk new file mode 100644 index 0000000000..4901e04e5d --- /dev/null +++ b/tests/network/fortinet/fortigate/snmp/fortinet-fortigate.snmpwalk @@ -0,0 +1,11 @@ +.1.3.6.1.4.1.12356.101.4.9.2.1.2.7 = STRING: fgVWLHealthCheckLinkName +.1.3.6.1.4.1.12356.101.4.9.2.1.4.7 = INTEGER: 0 +.1.3.6.1.4.1.12356.101.4.9.2.1.5.7 = STRING: 8.617 +.1.3.6.1.4.1.12356.101.4.9.2.1.6.7 = STRING: 0.065 +.1.3.6.1.4.1.12356.101.4.9.2.1.9.7 = STRING: 0.000 +.1.3.6.1.4.1.12356.101.4.9.2.1.10.7 = STRING: root +.1.3.6.1.4.1.12356.101.4.9.2.1.11.7 = INTEGER: 27453 +.1.3.6.1.4.1.12356.101.4.9.2.1.12.7 = INTEGER: 29552 +.1.3.6.1.4.1.12356.101.4.9.2.1.13.7 = INTEGER: 57005 +.1.3.6.1.4.1.12356.101.4.9.2.1.14.7 = STRING: wan1 +.2.3.6.1.4.1.12356.101.4.9.2.1.2.7 = STRING: INTERNET \ No newline at end of file diff --git a/tests/network/fortinet/fortigate/snmp/sdawn.robot b/tests/network/fortinet/fortigate/snmp/sdawn.robot new file mode 100644 index 0000000000..0792cc5d0d --- /dev/null +++ b/tests/network/fortinet/fortigate/snmp/sdawn.robot @@ -0,0 +1,36 @@ +*** Settings *** +Documentation Check sd-wan links. + +Resource ${CURDIR}${/}..${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Ctn Generic Suite Setup +Test Timeout 120s + + +*** Variables *** +${CMD} ${CENTREON_PLUGINS} --plugin=network::fortinet::fortigate::snmp::plugin + +*** Test Cases *** +sdwan ${tc} + [Tags] network sdwan + ${command} Catenate + ... ${CMD} + ... --mode=sdwan + ... --hostname=${HOSTNAME} + ... --snmp-version=${SNMPVERSION} + ... --snmp-port=${SNMPPORT} + ... --snmp-community=network/fortinet/fortigate/snmp/fortinet-fortigate + ... --snmp-timeout=10 + ... --snmp-retries=3 + ... ${extra_options} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extra_options expected_result -- + ... 1 --filter-vdom='root' OK: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up - traffic traffic-in : Buffer creation, traffic-out : Buffer creation, traffic-bi : Buffer creation - latency: 8.617ms - jitter: 0.065ms - packet loss: 0.000% | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 2 --unknown-status='\\\%{vdom} eq "root"' UNKNOWN: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 3 --warning-status='\\\%{state} eq "up"' WARNING: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.in.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.out.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.bi.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 4 --critical-status='\\\%{state} eq "up"' CRITICAL: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.in.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.out.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.bi.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 5 --critical-status='\\\%{vdom} eq "root"' --warning-traffic-in=0 --critical-traffic-in=8 CRITICAL: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.in.bitspersecond'=0.00b/s;0:0;0:8;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.out.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.bi.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 6 ${EMPTY} OK: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up - traffic in: 0.00 b/s, out: 0.00 b/s, bi: 0.00 b/s - latency: 8.617ms - jitter: 0.065ms - packet loss: 0.000% | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.in.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.out.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.bi.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 + ... 7 --warning-status='\\\%{vdom} eq "root"' --warning-latency=8 --critical-latency=16 WARNING: sd-wan 'fgVWLHealthCheckLinkName' [vdom: root] [interface: wan1] state: up - latency: 8.617ms | 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.in.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.out.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.traffic.bi.bitspersecond'=0.00b/s;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.latency.milliseconds'=8.62ms;0:8;0:16;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.jitter.milliseconds'=0.07ms;;;0; 'root~fgVWLHealthCheckLinkName~wan1#sdwan.packetloss.percentage'=0.000%;;;0;100 \ No newline at end of file diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 6a4440a8cb..193162aeeb 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -192,6 +192,7 @@ out-fc-wait out-mcast out-ucast overprovisioning +packetloss partiallyActive --patch-redhat perfdata @@ -260,6 +261,7 @@ userpass --use-ucd v1 v2 +vdom VDSL2 Veeam VeloCloud From 5751ee1bfdb6702c20e26789429e40b2066fe477 Mon Sep 17 00:00:00 2001 From: Lucie Dubrunfaut <123162035+lucie-dubrunfaut@users.noreply.github.com> Date: Thu, 6 Feb 2025 09:53:49 +0100 Subject: [PATCH 17/20] enh(iplabel-ekara): change status match and timeframe option default value (#5429) Refs: CTOR-1387 --- .../iplabel/ekara/restapi/mode/scenarios.pm | 13 +++++++------ tests/resources/spellcheck/stopwords.txt | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm index 10046f1682..8af4d7b4f7 100644 --- a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm +++ b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm @@ -61,8 +61,9 @@ sub set_counters { $self->{maps_counters}->{global} = [ { label => 'scenario-status', type => 2, - warning_default => '%{status} !~ "Success"', + warning_default => '%{status} =~ /(Aborted|Stopped|Excluded|Degraded)/', critical_default => '%{status} =~ "Failure"', + unknown_default => '%{status} =~ /(Unknown|No execution)/', set => { key_values => [ { name => 'status' }, { name => 'num_status' }, { name => 'display' } ], closure_custom_output => $self->can('custom_status_output'), @@ -133,7 +134,7 @@ sub check_options { my ($self, %options) = @_; $self->SUPER::check_options(%options); - $self->{timeframe} = defined($self->{option_results}->{timeframe}) && $self->{option_results}->{timeframe} ne '' ? $self->{option_results}->{timeframe} : '900'; + $self->{timeframe} = defined($self->{option_results}->{timeframe}) && $self->{option_results}->{timeframe} ne '' ? $self->{option_results}->{timeframe} : '7500'; } my $status_mapping = { @@ -220,10 +221,10 @@ Check ip-label Ekara scenarios. =item B<--timeframe> -Set timeframe period in seconds. (default: 900) -Example: --timeframe='3600' will check the last hour - - +Set timeframe period in seconds. (default: 7500) +Example: C<--timeframe='3600'> will check the last hour. +Note: If the API/Poller is overloaded, it is preferable to refine +this value according to the highest check frequency in the scenario. =item B<--filter-type> diff --git a/tests/resources/spellcheck/stopwords.txt b/tests/resources/spellcheck/stopwords.txt index 193162aeeb..1918836dc9 100644 --- a/tests/resources/spellcheck/stopwords.txt +++ b/tests/resources/spellcheck/stopwords.txt @@ -66,6 +66,7 @@ dfsrevent --display-transform-src dns-resolve-time --dyn-mode +Ekara -EncodedCommand env ESX From 3469fc328db57cea409be9553311d3e3f2506099 Mon Sep 17 00:00:00 2001 From: Lucie Dubrunfaut <123162035+lucie-dubrunfaut@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:46:08 +0100 Subject: [PATCH 18/20] help(iplabel::ekara): improve help on scenario mode (#5430) Refs: CTOR-1387 --- .../monitoring/iplabel/ekara/restapi/mode/scenarios.pm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm index 8af4d7b4f7..740d244431 100644 --- a/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm +++ b/src/apps/monitoring/iplabel/ekara/restapi/mode/scenarios.pm @@ -231,10 +231,14 @@ this value according to the highest check frequency in the scenario. Filter by scenario type. Can be: 'WEB', 'HTTPR', 'BROWSER PAGE LOAD' +=item B<--unknown-scenario-status> +Unknown threshold for scenario status (default: C<%{status} !~ /(Unknown|No execution)/>). +Syntax: C<--unknown-scenario-status='%{status} =~ "xxx"'> + =item B<--warning-scenario-status> -Warning threshold for scenario status (default: '%{status} !~ "Success"'). -Syntax: --warning-scenario-status='%{status} =~ "xxx"' +Warning threshold for scenario status (default: C<%{status} !~ /(Aborted|Stopped|Excluded|Degraded)/>). +Syntax: C<--warning-scenario-status='%{status} =~ "xxx"'> =item B<--critical-scenario-status> From b9986d6478cb7fd9493da015ab011447e7057dc3 Mon Sep 17 00:00:00 2001 From: sdepassio <114986849+sdepassio@users.noreply.github.com> Date: Thu, 6 Feb 2025 14:16:07 +0100 Subject: [PATCH 19/20] feat(podman-restapi): new plugin for Podman (#5427) Co-authored-by: omercier <32134301+omercier@users.noreply.github.com> Refs: CTOR-187 --- .../deb.json | 4 + .../pkg.json | 9 + .../rpm.json | 4 + src/apps/podman/restapi/custom/api.pm | 322 ++++++++++++++++++ .../podman/restapi/mode/containerusage.pm | 247 ++++++++++++++ .../podman/restapi/mode/listcontainers.pm | 94 +++++ src/apps/podman/restapi/mode/listpods.pm | 92 +++++ src/apps/podman/restapi/mode/podstatus.pm | 224 ++++++++++++ src/apps/podman/restapi/mode/systemstatus.pm | 240 +++++++++++++ src/apps/podman/restapi/plugin.pm | 53 +++ .../apps/podman/restapi/containerusage.robot | 62 ++++ .../apps/podman/restapi/listcontainers.robot | 36 ++ tests/apps/podman/restapi/listpods.robot | 36 ++ tests/apps/podman/restapi/podman.json | 257 ++++++++++++++ tests/apps/podman/restapi/podstatus.robot | 60 ++++ tests/apps/podman/restapi/systemstatus.robot | 46 +++ tests/resources/spellcheck/stopwords.txt | 1 + 17 files changed, 1787 insertions(+) create mode 100644 packaging/centreon-plugin-Applications-Podman-Restapi/deb.json create mode 100644 packaging/centreon-plugin-Applications-Podman-Restapi/pkg.json create mode 100644 packaging/centreon-plugin-Applications-Podman-Restapi/rpm.json create mode 100644 src/apps/podman/restapi/custom/api.pm create mode 100644 src/apps/podman/restapi/mode/containerusage.pm create mode 100644 src/apps/podman/restapi/mode/listcontainers.pm create mode 100644 src/apps/podman/restapi/mode/listpods.pm create mode 100644 src/apps/podman/restapi/mode/podstatus.pm create mode 100644 src/apps/podman/restapi/mode/systemstatus.pm create mode 100644 src/apps/podman/restapi/plugin.pm create mode 100644 tests/apps/podman/restapi/containerusage.robot create mode 100644 tests/apps/podman/restapi/listcontainers.robot create mode 100644 tests/apps/podman/restapi/listpods.robot create mode 100644 tests/apps/podman/restapi/podman.json create mode 100644 tests/apps/podman/restapi/podstatus.robot create mode 100644 tests/apps/podman/restapi/systemstatus.robot diff --git a/packaging/centreon-plugin-Applications-Podman-Restapi/deb.json b/packaging/centreon-plugin-Applications-Podman-Restapi/deb.json new file mode 100644 index 0000000000..d1383e463f --- /dev/null +++ b/packaging/centreon-plugin-Applications-Podman-Restapi/deb.json @@ -0,0 +1,4 @@ +{ + "dependencies": [ + ] +} diff --git a/packaging/centreon-plugin-Applications-Podman-Restapi/pkg.json b/packaging/centreon-plugin-Applications-Podman-Restapi/pkg.json new file mode 100644 index 0000000000..9432bf6fbe --- /dev/null +++ b/packaging/centreon-plugin-Applications-Podman-Restapi/pkg.json @@ -0,0 +1,9 @@ +{ + "pkg_name": "centreon-plugin-Applications-Podman-Restapi", + "pkg_summary": "Centreon Plugin", + "plugin_name": "centreon_podman_restapi.pl", + "files": [ + "centreon/plugins/script_custom.pm", + "apps/podman/restapi/" + ] +} diff --git a/packaging/centreon-plugin-Applications-Podman-Restapi/rpm.json b/packaging/centreon-plugin-Applications-Podman-Restapi/rpm.json new file mode 100644 index 0000000000..d1383e463f --- /dev/null +++ b/packaging/centreon-plugin-Applications-Podman-Restapi/rpm.json @@ -0,0 +1,4 @@ +{ + "dependencies": [ + ] +} diff --git a/src/apps/podman/restapi/custom/api.pm b/src/apps/podman/restapi/custom/api.pm new file mode 100644 index 0000000000..2ae7eff74b --- /dev/null +++ b/src/apps/podman/restapi/custom/api.pm @@ -0,0 +1,322 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::custom::api; + +use strict; +use warnings; +use centreon::plugins::http; +use centreon::plugins::misc; +use JSON::XS; + +sub new { + my ($class, %options) = @_; + my $self = {}; + bless $self, $class; + + if (!defined($options{output})) { + print "Class Custom: Need to specify 'output' argument.\n"; + exit 3; + } + if (!defined($options{options})) { + $options{output}->add_option_msg(short_msg => "Class Custom: Need to specify 'options' argument."); + $options{output}->option_exit(); + } + + if (!defined($options{noptions})) { + $options{options}->add_options(arguments => { + 'hostname:s' => { name => 'hostname' }, + 'port:s' => { name => 'port' }, + 'proto:s' => { name => 'proto' }, + 'url-path:s' => { name => 'url_path' }, + 'timeout:s' => { name => 'timeout' } + }); + # curl --cacert /path/to/ca.crt --cert /path/to/podman.crt --key /path/to/podman.key https://localhost:8080/v5.0.0/libpod/info + # curl --unix-socket $XDG_RUNTIME_DIR/podman/podman.sock 'http://d/v5.0.0/libpod/pods/stats?namesOrIDs=blog' | jq + } + $options{options}->add_help(package => __PACKAGE__, sections => 'REST API OPTIONS', once => 1); + + $self->{output} = $options{output}; + $self->{http} = centreon::plugins::http->new(%options, default_backend => 'curl'); + + return $self; +} + +sub set_options { + my ($self, %options) = @_; + + $self->{option_results} = $options{option_results}; +} + +sub set_defaults {} + +sub check_options { + my ($self, %options) = @_; + + $self->{hostname} = (defined($self->{option_results}->{hostname})) ? $self->{option_results}->{hostname} : ''; + $self->{proto} = (defined($self->{option_results}->{proto})) ? $self->{option_results}->{proto} : 'https'; + $self->{port} = (defined($self->{option_results}->{port})) ? $self->{option_results}->{port} : 443; + $self->{url_path} = (defined($self->{option_results}->{url_path})) ? $self->{option_results}->{url_path} : '/v5.0.0/libpod/'; + $self->{timeout} = (defined($self->{option_results}->{timeout})) ? $self->{option_results}->{timeout} : 30; + + if ($self->{hostname} eq '') { + $self->{output}->add_option_msg(short_msg => 'Need to specify hostname option.'); + $self->{output}->option_exit(); + } + + $self->{http}->set_options(%{$self->{option_results}}); + + return 0; +} + +sub json_decode { + my ($self, %options) = @_; + + $options{content} =~ s/\r//mg; + my $decoded; + eval { + $decoded = JSON::XS->new->utf8->decode($options{content}); + }; + if ($@) { + $self->{output}->add_option_msg(short_msg => "Cannot decode json response: $@"); + $self->{output}->option_exit(); + } + + return $decoded; +} + +sub build_options_for_httplib { + my ($self, %options) = @_; + + $self->{option_results}->{hostname} = $self->{hostname}; + $self->{option_results}->{port} = $self->{port}; + $self->{option_results}->{proto} = $self->{proto}; + $self->{option_results}->{timeout} = $self->{timeout}; +} + +sub settings { + my ($self, %options) = @_; + + $self->build_options_for_httplib(); + $self->{http}->add_header(key => 'Accept', value => 'application/json'); + $self->{http}->set_options(%{$self->{option_results}}); +} + +sub request { + my ($self, %options) = @_; + + my $endpoint = $options{full_endpoint}; + if (!defined($endpoint)) { + $endpoint = $self->{url_path} . $options{endpoint}; + } + + $self->settings(); + + my $content = $self->{http}->request( + method => $options{method}, + url_path => $endpoint, + get_param => $options{get_param}, + header => [ + 'Accept: application/json' + ], + warning_status => '', + unknown_status => '', + critical_status => '' + ); + + my $decoded = $self->json_decode(content => $content); + if (!defined($decoded)) { + $self->{output}->add_option_msg(short_msg => 'Error while retrieving data (add --debug option for detailed message)'); + $self->{output}->option_exit(); + } + return $decoded; +} + +sub system_info { + my ($self, %options) = @_; + + my $results = $self->request( + endpoint => 'info', + method => 'GET' + ); + + return $results; +} + +sub list_containers { + my ($self, %options) = @_; + + my $results = $self->request( + endpoint => 'containers/json', + method => 'GET' + ); + + my $containers = {}; + foreach my $container (@{$results}) { + $containers->{$container->{Id}} = { + Name => $container->{Names}->[0], + PodName => $container->{PodName}, + State => $container->{State} + }; + } + + return $containers; +} + +sub list_pods { + my ($self, %options) = @_; + + my $results = $self->request( + endpoint => 'pods/json', + method => 'GET' + ); + + my $pods = {}; + foreach my $pod (@{$results}) { + $pods->{$pod->{Id}} = { + Name => $pod->{Name}, + Status => $pod->{Status} + }; + } + + return $pods; +} + +sub get_pod_infos { + my ($self, %options) = @_; + + my $inspect = $self->request( + endpoint => 'pods/' . $options{pod_name} . '/json', + method => 'GET' + ); + + my $stats = $self->request( + endpoint => 'pods/stats?namesOrIDs=' . $options{pod_name}, + method => 'GET' + ); + + my $pod = { + cpu => 0, + memory => 0, + running_containers => 0, + stopped_containers => 0, + paused_containers => 0, + state => @{$inspect}[0]->{State} + }; + + foreach my $container (@{$inspect->[0]->{Containers}}) { + $pod->{running_containers}++ if ($container->{State} eq 'running'); + $pod->{stopped_containers}++ if ($container->{State} eq 'exited'); + $pod->{paused_containers}++ if ($container->{State} eq 'paused'); + } + + foreach my $container (@{$stats}) { + my $cpu = $container->{CPU}; + if ($cpu =~ /^(\d+\.\d+)%/) { + $pod->{cpu} += $1; + } + my $memory = $container->{MemUsage}; + if ($memory =~ /^(\d+\.?\d*)([a-zA-Z]+)/) { + $memory = centreon::plugins::misc::convert_bytes(value => $1, unit => $2); + } + $pod->{memory} += $memory; + } + + return $pod; +} + +sub get_container_infos { + my ($self, %options) = @_; + + my $stats = $self->request( + endpoint => 'containers/stats?stream=false&containers=' . $options{container_name}, + method => 'GET' + ); + + my $containers = $self->list_containers(); + my $state; + foreach my $container_id (sort keys %{$containers}) { + if ($containers->{$container_id}->{Name} eq $options{container_name}) { + $state = $containers->{$container_id}->{State}; + } + } + + my $container = { + cpu_usage => $stats->{Stats}->[0]->{CPU}, + memory_usage => $stats->{Stats}->[0]->{MemUsage}, + io_read => $stats->{Stats}->[0]->{BlockInput}, + io_write => $stats->{Stats}->[0]->{BlockOutput}, + network_in => $stats->{Stats}->[0]->{NetInput}, + network_out => $stats->{Stats}->[0]->{NetOutput}, + state => $state + }; + + return $container; +} + +1; + +__END__ + +=head1 NAME + +Podman REST API. + +=head1 SYNOPSIS + +Podman Rest API custom mode. +To connect to the API with a socket, you must add the following command: +C<--curl-opt="CURLOPT_UNIX_SOCKET_PATH => 'PATH_TO_THE_SOCKET'"> +If you use a certificate, you must add the following commands: +C<--curl-opt="CURLOPT_CAINFO = 'PATH_TO_THE_CA_CERTIFICATE'"> +C<--curl-opt="CURLOPT_SSLCERT => 'PATH_TO_THE_CERTIFICATE'"> +C<--curl-opt="CURLOPT_SSLKEY => 'PATH_TO_THE_KEY'"> + +=head1 REST API OPTIONS + +=over 8 + +=item B<--hostname> + +Podman Rest API hostname. + +=item B<--port> + +Port used (Default: 443) + +=item B<--proto> + +Specify https if needed (Default: 'https') + +=item B<--url-path> + +Set path to get Podman Rest API information (Default: '/v5.0.0/libpod/') + +=item B<--timeout> + +Set timeout in seconds (Default: 30) + +=back + +=head1 DESCRIPTION + +B. + +=cut diff --git a/src/apps/podman/restapi/mode/containerusage.pm b/src/apps/podman/restapi/mode/containerusage.pm new file mode 100644 index 0000000000..c51657a8c8 --- /dev/null +++ b/src/apps/podman/restapi/mode/containerusage.pm @@ -0,0 +1,247 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::mode::containerusage; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'container', type => 0 } + ]; + + $self->{maps_counters}->{container} = [ + { label => 'cpu-usage', + nlabel => 'podman.container.cpu.usage.percent', + set => { + key_values => [ { name => 'cpu_usage' } ], + output_template => 'CPU: %.2f%%', + perfdatas => [ + { label => 'cpu', + value => 'cpu_usage', + template => '%.2f', + unit => '%', + min => 0, + max => 100 } + ] + } + }, + { label => 'memory-usage', + nlabel => 'podman.container.memory.usage.bytes', + set => { + key_values => [ { name => 'memory_usage' } ], + output_template => 'Memory: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'memory', + value => 'memory_usage', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'read-io', + nlabel => 'podman.container.io.read', + set => { + key_values => [ { name => 'io_read' } ], + output_template => 'Read : %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'read.io', + value => 'io_read', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'write-io', + nlabel => 'podman.container.io.write', + set => { + key_values => [ { name => 'io_write' } ], + output_template => 'Write : %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'write.io', + value => 'io_write', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'network-in', + nlabel => 'podman.container.network.in', + set => { + key_values => [ { name => 'network_in' } ], + output_template => 'Network in: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'network_in', + value => 'network_in', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'network-out', + nlabel => 'podman.container.network.out', + set => { + key_values => [ { name => 'network_out' } ], + output_template => 'Network out: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'network_out', + value => 'network_out', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'state', + type => 2, + warning_default => '%{state} =~ /Paused/', + critical_default => '%{state} =~ /Exited/', + set => { + key_values => [ { name => 'state' } ], + output_template => 'State: %s', + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'container-name:s' => { name => 'container_name' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (centreon::plugins::misc::is_empty($self->{option_results}->{container_name})) { + $self->{output}->add_option_msg(short_msg => "Need to specify --container-name option."); + $self->{output}->option_exit(); + } +} + +sub manage_selection { + my ($self, %options) = @_; + + my $container = $options{custom}->get_container_infos( + container_name => $self->{option_results}->{container_name} + ); + + $self->{container} = $container; +} + +1; + +__END__ + +=head1 MODE + +Check container usage. + +=over 8 + +=item B<--container-name> + +Container name. + +=item B<--warning-cpu-usage> + +Threshold warning for CPU usage. + +=item B<--critical-cpu-usage> + +Threshold critical for CPU usage. + +=item B<--warning-memory-usage> + +Threshold warning for memory usage. + +=item B<--critical-memory-usage> + +Threshold critical for memory usage. + +=item B<--warning-read-io> + +Threshold warning for read IO. + +=item B<--critical-read-io> + +Threshold critical for read IO. + +=item B<--warning-write-io> + +Threshold warning for write IO. + +=item B<--critical-write-io> + +Threshold critical for write IO. + +=item B<--warning-network-in> + +Threshold warning for network in. + +=item B<--critical-network-in> + +Threshold critical for network in. + +=item B<--warning-network-out> + +Threshold warning for network out. + +=item B<--critical-network-out> + +Threshold critical for network out. + +=item B<--warning-container-state> + +Define the conditions to match for the state to be WARNING (default: C<'%{state} =~ /Paused/'>). +You can use the following variables: C<%{state}> + +=item B<--critical-container-state> + +Define the conditions to match for the state to be CRITICAL (default: C<'%{state} =~ /Exited/'>). +You can use the following variables: C<%{state}> + +=back + +=cut diff --git a/src/apps/podman/restapi/mode/listcontainers.pm b/src/apps/podman/restapi/mode/listcontainers.pm new file mode 100644 index 0000000000..69a355830d --- /dev/null +++ b/src/apps/podman/restapi/mode/listcontainers.pm @@ -0,0 +1,94 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::mode::listcontainers; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => + { + }); + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub run { + my ($self, %options) = @_; + + my $containers = $options{custom}->list_containers(); + foreach my $container_id (sort keys %{$containers}) { + $self->{output}->output_add(long_msg => '[id = ' . $container_id . "]" . + " [name = '" . $containers->{$container_id}->{Name} . "']" . + " [pod = '" . $containers->{$container_id}->{PodName} . "']" . + " [state = '" . $containers->{$container_id}->{State} . "']" + ); + } + + $self->{output}->output_add(severity => 'OK', + short_msg => 'Containers:'); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ 'id', 'name', 'pod', 'state' ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $containers = $options{custom}->list_containers(); + foreach my $container_id (sort keys %{$containers}) { + $self->{output}->add_disco_entry(name => $containers->{$container_id}->{Name}, + pod => $containers->{$container_id}->{PodName}, + state => $containers->{$container_id}->{State}, + id => $container_id, + ); + } +} + +1; + +__END__ + +=head1 MODE + +List containers. + +=over 8 + +=back + +=cut + diff --git a/src/apps/podman/restapi/mode/listpods.pm b/src/apps/podman/restapi/mode/listpods.pm new file mode 100644 index 0000000000..517e734e3e --- /dev/null +++ b/src/apps/podman/restapi/mode/listpods.pm @@ -0,0 +1,92 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::mode::listpods; + +use base qw(centreon::plugins::mode); + +use strict; +use warnings; + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $options{options}->add_options(arguments => + { + }); + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::init(%options); +} + +sub run { + my ($self, %options) = @_; + + my $pods = $options{custom}->list_pods(); + foreach my $pod_id (sort keys %{$pods}) { + $self->{output}->output_add(long_msg => '[id = ' . $pod_id . "]" . + " [name = '" . $pods->{$pod_id}->{Name} . "']" . + " [status = '" . $pods->{$pod_id}->{Status} . "']" + ); + } + + $self->{output}->output_add(severity => 'OK', + short_msg => 'Pods:'); + $self->{output}->display(nolabel => 1, force_ignore_perfdata => 1, force_long_output => 1); + $self->{output}->exit(); +} + +sub disco_format { + my ($self, %options) = @_; + + $self->{output}->add_disco_format(elements => [ 'id', 'name', 'status' ]); +} + +sub disco_show { + my ($self, %options) = @_; + + my $pods = $options{custom}->list_pods(); + foreach my $pod_id (sort keys %{$pods}) { + $self->{output}->add_disco_entry(name => $pods->{$pod_id}->{Name}, + state => $pods->{$pod_id}->{Status}, + id => $pod_id, + ); + } +} + +1; + +__END__ + +=head1 MODE + +List pods. + +=over 8 + +=back + +=cut + diff --git a/src/apps/podman/restapi/mode/podstatus.pm b/src/apps/podman/restapi/mode/podstatus.pm new file mode 100644 index 0000000000..1dd4939107 --- /dev/null +++ b/src/apps/podman/restapi/mode/podstatus.pm @@ -0,0 +1,224 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::mode::podstatus; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold_ng); + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'pod', type => 0 } + ]; + + $self->{maps_counters}->{pod} = [ + { label => 'cpu-usage', + nlabel => 'podman.pod.cpu.usage.percent', + set => { + key_values => [ { name => 'cpu' } ], + output_template => 'CPU: %.2f%%', + perfdatas => [ + { label => 'cpu', + value => 'cpu', + template => '%.2f', + unit => '%', + min => 0, + max => 100 } + ] + } + }, + { label => 'memory-usage', + nlabel => 'podman.pod.memory.usage.bytes', set => { + key_values => [ { name => 'memory' } ], + output_template => 'Memory: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'memory', + value => 'memory', + template => '%s', + unit => 'B', + min => 0 } + ] + } + }, + { label => 'running-containers', + nlabel => 'podman.pod.containers.running.count', + set => { + key_values => [ { name => 'containers_running' } ], + output_template => 'Running containers: %s', + perfdatas => [ + { label => 'containers_running', + value => 'containers_running', + template => '%s', + min => 0 } + ] + } + }, + { label => 'stopped-containers', + nlabel => 'podman.pod.containers.stopped.count', + set => { + key_values => [ { name => 'containers_stopped' } ], + output_template => 'Stopped containers: %s', + perfdatas => [ + { label => 'containers_stopped', + value => 'containers_stopped', + template => '%s', + min => 0 } + ] + } + }, + { label => 'paused-containers', + nlabel => 'podman.pod.containers.paused.count', + set => { + key_values => [ { name => 'containers_paused' } ], + output_template => 'Paused containers: %s', + perfdatas => [ + { label => 'containers_paused', + value => 'containers_paused', + template => '%s', + min => 0 } + ] + } + }, + { label => 'state', + type => 2, + warning_default => '%{state} =~ /Exited/', + critical_default => '%{state} =~ /Degraded/', + set => { + key_values => [ { name => 'state' } ], + output_template => 'State: %s', + closure_custom_perfdata => sub { return 0; }, + closure_custom_threshold_check => \&catalog_status_threshold_ng + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => { + 'pod-name:s' => { name => 'pod_name' } + }); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); + + if (centreon::plugins::misc::is_empty($self->{option_results}->{pod_name})) { + $self->{output}->add_option_msg(short_msg => "Need to specify --pod-name option."); + $self->{output}->option_exit(); + } +} + +sub manage_selection { + my ($self, %options) = @_; + + my $result = $options{custom}->get_pod_infos( + pod_name => $self->{option_results}->{pod_name} + ); + + $self->{pod} = { + cpu => $result->{cpu}, + memory => $result->{memory}, + containers_running => $result->{running_containers}, + containers_stopped => $result->{stopped_containers}, + containers_paused => $result->{paused_containers}, + state => $result->{state} + }; +} + +1; + +__END__ + +=head1 MODE + +Check node status. + +=over 8 + +=item B<--pod-name> + +Pod name. + +=item B<--warning-cpu-usage> + +Threshold warning for CPU usage. + +=item B<--critical-cpu-usage> + +Threshold critical for CPU usage. + +=item B<--warning-memory-usage> + +Threshold warning for memory usage. + +=item B<--critical-memory-usage> + +Threshold critical for memory usage. + +=item B<--warning-running-containers> + +Threshold warning for running containers. + +=item B<--critical-running-containers> + +Threshold critical for running containers. + +=item B<--warning-stopped-containers> + +Threshold warning for stopped containers. + +=item B<--critical-stopped-containers> + +Threshold critical for stopped containers. + +=item B<--warning-paused-containers> + +Threshold warning for paused containers. + +=item B<--critical-paused-containers> + +Threshold critical for paused containers. + +=item B<--warning-state> + +Define the conditions to match for the state to be WARNING (default: C<'%{state} =~ /Exited/'>). +You can use the following variables: C<%{state}> + +=item B<--critical-state> + +Define the conditions to match for the state to be CRITICAL (default: C<'%{state} =~ /Degraded/'>). +You can use the following variables: C<%{state}> + +=back + +=cut diff --git a/src/apps/podman/restapi/mode/systemstatus.pm b/src/apps/podman/restapi/mode/systemstatus.pm new file mode 100644 index 0000000000..a4731c2cf5 --- /dev/null +++ b/src/apps/podman/restapi/mode/systemstatus.pm @@ -0,0 +1,240 @@ +# +# Copyright 2025 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::mode::systemstatus; + +use base qw(centreon::plugins::templates::counter); + +use strict; +use warnings; +use centreon::plugins::templates::catalog_functions qw(catalog_status_threshold); + +sub set_counters { + my ($self, %options) = @_; + + $self->{maps_counters_type} = [ + { name => 'system', type => 0 } + ]; + + $self->{maps_counters}->{system} = [ + { label => 'cpu-usage', + nlabel => 'podman.system.cpu.usage.percent', + set => { + key_values => [ + { name => 'cpu_usage' } + ], + output_template => 'CPU: %.2f%%', + perfdatas => [ + { label => 'cpu', + template => '%.2f', + min => 0, + max => 100, + unit => '%' } + ] + } + }, + { label => 'memory-usage', + nlabel => 'podman.system.memory.usage.bytes', + set => { + key_values => [ + { name => 'memory_usage' } + ], + output_template => 'Memory: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'memory', + template => '%s', + min => 0, + unit => 'B' } + ] + } + }, + { label => 'swap-usage', + nlabel => 'podman.system.swap.usage.bytes', + set => { + key_values => [ + { name => 'swap_usage' } + ], + output_template => 'Swap: %s%s', + output_change_bytes => 1, + perfdatas => [ + { label => 'swap', + template => '%s', + min => 0, + unit => 'B' } + ] + } + }, + { label => 'containers-running', + nlabel => 'podman.system.containers.running.count', + set => { + key_values => [ + { name => 'running_containers' }, + { name => 'total_containers' } + ], + output_template => 'Running containers: %s', + perfdatas => [ + { label => 'running_containers', + template => '%s', + min => 0, + max => 'total_containers', + unit => '' } + ] + } + }, + { label => 'containers-stopped', + nlabel => 'podman.system.containers.stopped.count', + set => { + key_values => [ + { name => 'stopped_containers' }, + { name => 'total_containers' } + ], + output_template => 'Stopped containers: %s', + perfdatas => [ + { label => 'stopped_containers', + template => '%s', + min => 0, + max => 'total_containers', + unit => '' } + ] + } + }, + { label => 'uptime', + nlabel => 'podman.system.uptime.seconds', + set => { + key_values => [ + { name => 'uptime' } + ], + output_template => 'Uptime: %s s', + perfdatas => [ + { label => 'uptime', + template => '%s', + min => 0, + unit => 's' } + ] + } + } + ]; +} + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options, force_new_perfdata => 1); + bless $self, $class; + + $options{options}->add_options(arguments => {}); + + return $self; +} + +sub check_options { + my ($self, %options) = @_; + $self->SUPER::check_options(%options); +} + +sub manage_selection { + my ($self, %options) = @_; + + my $results = $options{custom}->system_info(); + + my $uptime_string = $results->{host}->{uptime}; + my $uptime = 0; + if ($uptime_string =~ /(\d+)h/) { + $uptime += $1 * 3600; + } + if ($uptime_string =~ /(\d+)m/) { + $uptime += $1 * 60; + } + if ($uptime_string =~ /(\d+)s/) { + $uptime += $1; + } + + $self->{system} = { + cpu_usage => $results->{host}->{cpuUtilization}->{userPercent} + $results->{host}->{cpuUtilization}->{systemPercent}, + memory_usage => $results->{host}->{memTotal} - $results->{host}->{memFree}, + swap_usage => $results->{host}->{swapTotal} - $results->{host}->{swapFree}, + running_containers => $results->{store}->{containerStore}->{running}, + stopped_containers => $results->{store}->{containerStore}->{stopped}, + total_containers => $results->{store}->{containerStore}->{number}, + uptime => $uptime + }; +} + +1; + +__END__ + +=head1 MODE + +Check Podman system status. + +=over 8 + +=item B<--warning-cpu-usage> + +Threshold warning in percent for CPU usage. + +=item B<--critical-cpu-usage> + +Threshold critical in percent for CPU usage. + +=item B<--warning-memory-usage> + +Threshold warning in bytes for memory usage. + +=item B<--critical-memory-usage> + +Threshold critical in bytes for memory usage. + +=item B<--warning-swap-usage> + +Threshold warning in bytes for swap usage. + +=item B<--critical-swap-usage> + +Threshold critical in bytes for swap usage. + +=item B<--warning-containers-running> + +Threshold warning for the number of running containers. + +=item B<--critical-containers-running> + +Threshold critical for the number of running containers. + +=item B<--warning-containers-stopped> + +Threshold warning for the number of stopped containers. + +=item B<--critical-containers-stopped> + +Threshold critical for the number of stopped containers. + +=item B<--warning-uptime> + +Threshold warning for uptime in seconds. + +=item B<--critical-uptime> + +Threshold critical for uptime in seconds. + +=back + +=cut diff --git a/src/apps/podman/restapi/plugin.pm b/src/apps/podman/restapi/plugin.pm new file mode 100644 index 0000000000..91afd62e89 --- /dev/null +++ b/src/apps/podman/restapi/plugin.pm @@ -0,0 +1,53 @@ +# +# Copyright 2024 Centreon (http://www.centreon.com/) +# +# Centreon is a full-fledged industry-strength solution that meets +# the needs in IT infrastructure and application monitoring for +# service performance. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package apps::podman::restapi::plugin; + +use strict; +use warnings; +use base qw(centreon::plugins::script_custom); + +sub new { + my ($class, %options) = @_; + my $self = $class->SUPER::new(package => __PACKAGE__, %options); + bless $self, $class; + + $self->{version} = '1.0'; + $self->{modes} = { + 'container-usage' => 'apps::podman::restapi::mode::containerusage', + 'list-containers' => 'apps::podman::restapi::mode::listcontainers', + 'list-pods' => 'apps::podman::restapi::mode::listpods', + 'pod-status' => 'apps::podman::restapi::mode::podstatus', + 'system-status' => 'apps::podman::restapi::mode::systemstatus' + }; + + $self->{custom_modes}->{api} = 'apps::podman::restapi::custom::api'; + return $self; +} + +1; + +__END__ + +=head1 PLUGIN DESCRIPTION + +Check Podman and containers through its HTTPS Rest API (https://docs.podman.io/en/latest/_static/api.html). + +=cut diff --git a/tests/apps/podman/restapi/containerusage.robot b/tests/apps/podman/restapi/containerusage.robot new file mode 100644 index 0000000000..252756525b --- /dev/null +++ b/tests/apps/podman/restapi/containerusage.robot @@ -0,0 +1,62 @@ +*** Settings *** +Documentation Test the Podman container-usage mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}podman.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::podman::restapi::plugin +... --custommode=api +... --mode=container-usage +... --hostname=${HOSTNAME} +... --port=${APIPORT} +... --proto=http + + +*** Test Cases *** +Container usage ${tc} + [Documentation] Check the container usage + [Tags] apps podman restapi + + ${command} Catenate + ... ${cmd} + ... --container-name=wordpress + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} OK: CPU: 0.11%, Memory: 10.85MB, Read : 435.65MB, Write : 941.43MB, Network in: 1006.00B, Network out: 2.10KB, State: running | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 2 --warning-cpu-usage=0.1 WARNING: CPU: 0.11% | 'podman.container.cpu.usage.percent'=0.11%;0:0.1;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 3 --critical-cpu-usage=0.1 CRITICAL: CPU: 0.11% | 'podman.container.cpu.usage.percent'=0.11%;;0:0.1;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 4 --warning-memory-usage=10000000 WARNING: Memory: 10.85MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;0:10000000;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 5 --critical-memory-usage=10000000 CRITICAL: Memory: 10.85MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;0:10000000;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 6 --warning-read-io=200000000 WARNING: Read : 435.65MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;0:200000000;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 7 --critical-read-io=400000000 CRITICAL: Read : 435.65MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;0:400000000;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 8 --warning-write-io=500000000 WARNING: Write : 941.43MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;0:500000000;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 9 --critical-write-io=750000000 CRITICAL: Write : 941.43MB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;0:750000000;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + +Container usage ${tc} + [Documentation] Check the container usage + [Tags] apps podman restapi + + ${command} Catenate + ... ${cmd} + ... --container-name=wordpress + ... ${extraoptions} + + Ctn Run Command And Check Result As Strings ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 10 --warning-network-in=500 WARNING: Network in: 1006.00B | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;0:500;;0; 'podman.container.network.out'=2146B;;;0; + ... 11 --critical-network-in=1000 CRITICAL: Network in: 1006.00B | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;0:1000;0; 'podman.container.network.out'=2146B;;;0; + ... 12 --warning-network-out=1000 WARNING: Network out: 2.10KB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;0:1000;;0; + ... 13 --critical-network-out=2000 CRITICAL: Network out: 2.10KB | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;0:2000;0; + ... 14 --warning-state='\\\%{state} =~ /running/' WARNING: State: running | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; + ... 15 --critical-state='\\\%{state} =~ /running/' CRITICAL: State: running | 'podman.container.cpu.usage.percent'=0.11%;;;0;100 'podman.container.memory.usage.bytes'=11374592B;;;0; 'podman.container.io.read'=456812354B;;;0; 'podman.container.io.write'=987156423B;;;0; 'podman.container.network.in'=1006B;;;0; 'podman.container.network.out'=2146B;;;0; diff --git a/tests/apps/podman/restapi/listcontainers.robot b/tests/apps/podman/restapi/listcontainers.robot new file mode 100644 index 0000000000..9226940cfa --- /dev/null +++ b/tests/apps/podman/restapi/listcontainers.robot @@ -0,0 +1,36 @@ +*** Settings *** +Documentation Test the Podman list-containers mode + +Resource ${CURDIR}${/}..${/}..${/}..${/}resources/import.resource + +Suite Setup Start Mockoon ${MOCKOON_JSON} +Suite Teardown Stop Mockoon +Test Timeout 120s + + +*** Variables *** +${MOCKOON_JSON} ${CURDIR}${/}podman.json + +${cmd} ${CENTREON_PLUGINS} +... --plugin=apps::podman::restapi::plugin +... --custommode=api +... --mode=list-containers +... --hostname=${HOSTNAME} +... --port=${APIPORT} +... --proto=http + +*** Test Cases *** +List-Containers ${tc} + [Documentation] Check list-containers results + [Tags] apps podman restapi + + ${command} Catenate + ... ${cmd} + ... ${extraoptions} + + Ctn Run Command And Check Result As Regexp ${command} ${expected_result} + + Examples: tc extraoptions expected_result -- + ... 1 ${EMPTY} ^Containers: (\\\\n\\\\[.*\\\\]){3}\\\\Z + ... 2 --disco-show \\\\<\\\\?xml version="1.0" encoding="utf-8"\\\\?\\\\>\\\\n\\\\(\\\\n\\\\s*\\\\