├── .gitignore ├── pics ├── Disks.png ├── Logs.png ├── Main.png ├── Cooling.png ├── Network.png └── System.png ├── docker ├── entrypoint.sh ├── Makefile ├── Dockerfile └── QTS.mib ├── charts └── qnap-exporter │ ├── Chart.yaml │ ├── Makefile │ ├── templates │ ├── serviceaccount.yaml │ ├── service.yaml │ ├── tests │ │ └── test-connection.yaml │ ├── configmap_grafana_dashboard.yaml │ ├── servicemonitor.yaml │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── deployment.yaml │ └── configmap_telegraf.yaml │ ├── .helmignore │ └── values.yaml ├── .github └── workflows │ ├── build-docker.yml │ ├── build.yml │ └── build-helm-chart.yml ├── README.md └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/* 2 | 3 | # Local History for Visual Studio Code 4 | .history/ -------------------------------------------------------------------------------- /pics/Disks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/Disks.png -------------------------------------------------------------------------------- /pics/Logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/Logs.png -------------------------------------------------------------------------------- /pics/Main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/Main.png -------------------------------------------------------------------------------- /pics/Cooling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/Cooling.png -------------------------------------------------------------------------------- /pics/Network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/Network.png -------------------------------------------------------------------------------- /pics/System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bsosnowski/qnap-exporter/HEAD/pics/System.png -------------------------------------------------------------------------------- /docker/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if [ "${1:0:1}" = '-' ]; then 5 | set -- telegraf "$@" 6 | fi 7 | 8 | exec "$@" -------------------------------------------------------------------------------- /charts/qnap-exporter/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: qnap-exporter 3 | description: Qnap Export Helm Chart for Kubernetes 4 | type: application 5 | version: 0.1.1 6 | appVersion: "v0.1.1" 7 | -------------------------------------------------------------------------------- /docker/Makefile: -------------------------------------------------------------------------------- 1 | build: 2 | DOCKER_BUILDKIT=1 docker buildx build \ 3 | --platform linux/amd64,linux/arm64 \ 4 | --build-arg TELEGRAF_VERSION=1.32.2 \ 5 | --build-arg VERSION=9.9.9 \ 6 | -t telegraf-qnap:9.9.9 \ 7 | --output="type=image" \ 8 | --no-cache \ 9 | --load \ 10 | . -------------------------------------------------------------------------------- /charts/qnap-exporter/Makefile: -------------------------------------------------------------------------------- 1 | template: 2 | clear & helm template . --name-template qnap-exporter --namespace qnap-monitoring --values values.yaml 3 | 4 | install: 5 | helm install qnap-exporter oci://ghcr.io/bsosnowski/charts/qnap-exporter 6 | 7 | upgrade: 8 | helm upgrade qnap-exporter oci://ghcr.io/bsosnowski/charts/qnap-exporter 9 | 10 | delete: 11 | helm delete qnap-exporter -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "telegraf-qnap.serviceAccountName" . }} 6 | labels: 7 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /charts/qnap-exporter/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "telegraf-qnap.fullname" . }} 5 | labels: 6 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: {{ .Values.service.port }} 12 | protocol: TCP 13 | name: metrics 14 | selector: 15 | {{- include "telegraf-qnap.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "telegraf-qnap.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "telegraf-qnap.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/configmap_grafana_dashboard.yaml: -------------------------------------------------------------------------------- 1 | {{- $values := .Values -}} 2 | {{ range $path, $_ := .Files.Glob "dashboards/*.json" }} 3 | apiVersion: v1 4 | kind: ConfigMap 5 | metadata: 6 | labels: 7 | # app: kube-prometheus-stack-grafana 8 | grafana_dashboard: '1' 9 | # release: kube-monitoring 10 | name: {{ base $path | replace (ext $path) "" }} 11 | namespace: "{{ $values.metrics.prometheusNamespace }}" 12 | data: 13 | {{ base $path }}: | 14 | {{ $.Files.Get $path | indent 4}} 15 | --- 16 | {{- end }} -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/servicemonitor.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.metrics.enabled }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: ServiceMonitor 4 | metadata: 5 | name: {{ include "telegraf-qnap.fullname" . }} 6 | labels: 7 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 8 | {{- with .Values.metrics.serviceMonitor.labels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | spec: 12 | selector: 13 | matchLabels: 14 | {{- include "telegraf-qnap.selectorLabels" . | nindent 6 }} 15 | namespaceSelector: 16 | matchNames: 17 | - {{ .Release.Namespace }} 18 | endpoints: 19 | - port: metrics 20 | {{- with .Values.metrics.serviceMonitor.interval }} 21 | interval: {{ . }} 22 | {{- end }} 23 | {{- with .Values.metrics.serviceMonitor.scrapeTimeout }} 24 | scrapeTimeout: {{ . }} 25 | {{- end }} 26 | path: /metrics 27 | {{- end }} -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG TELEGRAF_VERSION 2 | FROM telegraf:$TELEGRAF_VERSION 3 | 4 | ARG TELEGRAF_VERSION 5 | ARG TARGETPLATFORM 6 | ARG BUILD_DATE 7 | ARG REVISION 8 | ARG VERSION 9 | ARG REF 10 | 11 | ENV TELEGRAF_VERSION=$TELEGRAF_VERSION 12 | ENV TARGETPLATFORM=${TARGETPLATFORM} 13 | ENV BUILD_DATE=${BUILD_DATE} 14 | ENV REVISION=${REVISION} 15 | ENV VERSION=${VERSION} 16 | ENV REF=${REF} 17 | 18 | LABEL org.opencontainers.image.version="${VERSION}" \ 19 | org.opencontainers.image.authors="bartosz.sosnowski" \ 20 | org.opencontainers.image.created="${BUILD_DATE}" \ 21 | org.opencontainers.image.url="https://github.com/bsosnowski/qnap-exporter" \ 22 | org.opencontainers.image.documentation="https://github.com/bsosnowski/qnap-exporter/blob/main/README.md" \ 23 | org.opencontainers.image.source="https://raw.githubusercontent.com/bsosnowski/qnap-exporter/refs/heads/main/docker/Dockerfile" \ 24 | org.opencontainers.image.revision="${REVISION}" \ 25 | org.opencontainers.image.ref.name="${REF}" \ 26 | org.opencontainers.image.title="Qnap Exporter" \ 27 | org.opencontainers.image.description="SNMP Qnap Exporter" \ 28 | arch="${TARGETPLATFORM}" \ 29 | telegraf.version="${TELEGRAF_VERSION}" 30 | 31 | RUN echo "deb http://deb.debian.org/debian bookworm main contrib non-free" >> /etc/apt/sources.list && \ 32 | apt-get update && \ 33 | apt-get install --yes --no-install-recommends snmp-mibs-downloader && \ 34 | rm -rf /var/lib/apt/lists/* 35 | 36 | COPY NAS.mib QTS.mib /usr/share/snmp/mibs/ 37 | 38 | COPY --chmod=755 entrypoint.sh /entrypoint.sh 39 | 40 | RUN chmod +x /entrypoint.sh 41 | 42 | RUN download-mibs && sed -i "s/^\(mibs *:\).*/#\1/" /etc/snmp/snmp.conf 43 | 44 | ENTRYPOINT ["/entrypoint.sh"] 45 | CMD ["telegraf"] 46 | -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application URL by running these commands: 2 | {{- if .Values.ingress.enabled }} 3 | {{- range $host := .Values.ingress.hosts }} 4 | {{- range .paths }} 5 | http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} 6 | {{- end }} 7 | {{- end }} 8 | {{- else if contains "NodePort" .Values.service.type }} 9 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "telegraf-qnap.fullname" . }}) 10 | export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") 11 | echo http://$NODE_IP:$NODE_PORT 12 | {{- else if contains "LoadBalancer" .Values.service.type }} 13 | NOTE: It may take a few minutes for the LoadBalancer IP to be available. 14 | You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "telegraf-qnap.fullname" . }}' 15 | export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "telegraf-qnap.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") 16 | echo http://$SERVICE_IP:{{ .Values.service.port }} 17 | {{- else if contains "ClusterIP" .Values.service.type }} 18 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "telegraf-qnap.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 19 | export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") 20 | echo "Visit http://127.0.0.1:8080 to use your application" 21 | kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /charts/qnap-exporter/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for qnap-exporter 2 | replicaCount: 1 3 | 4 | image: 5 | repository: ghcr.io/bsosnowski/docker/qnap-exporter 6 | pullPolicy: IfNotPresent 7 | # Overrides the image tag whose default is the chart appVersion. 8 | tag: 9 | 10 | imagePullSecrets: [] 11 | nameOverride: "" 12 | fullnameOverride: "" 13 | 14 | serviceAccount: 15 | # Specifies whether a service account should be created 16 | create: false 17 | # Annotations to add to the service account 18 | annotations: {} 19 | # The name of the service account to use. 20 | # If not set and create is true, a name is generated using the fullname template 21 | name: "" 22 | 23 | podAnnotations: {} 24 | 25 | podSecurityContext: {} 26 | # fsGroup: 2000 27 | 28 | securityContext: {} 29 | # capabilities: 30 | # drop: 31 | # - ALL 32 | # readOnlyRootFilesystem: true 33 | # runAsNonRoot: true 34 | # runAsUser: 1000 35 | 36 | service: 37 | type: ClusterIP 38 | port: 9273 39 | 40 | ingress: 41 | enabled: false 42 | className: "" 43 | annotations: {} 44 | # kubernetes.io/ingress.class: nginx 45 | # kubernetes.io/tls-acme: "true" 46 | hosts: 47 | - host: chart-example.local 48 | paths: 49 | - path: / 50 | pathType: ImplementationSpecific 51 | tls: [] 52 | # - secretName: chart-example-tls 53 | # hosts: 54 | # - chart-example.local 55 | 56 | resources: {} 57 | # limits: 58 | # cpu: 500m 59 | # memory: 256Mi 60 | # requests: 61 | # cpu: 200m 62 | # memory: 256Mi 63 | 64 | nodeSelector: {} 65 | 66 | tolerations: [] 67 | 68 | affinity: {} 69 | 70 | nas: 71 | hostname: NAS453D 72 | snmp: 73 | agent: "udp://192.168.1.100:161" 74 | timeout: "110s" 75 | version: 2 76 | community: "snmp-telegraf" 77 | retries: 0 78 | 79 | metrics: 80 | enabled: true 81 | serviceMonitor: 82 | interval: 120s 83 | scrapeTimeout: 30s 84 | labels: 85 | release: kube-monitoring -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "telegraf-qnap.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "telegraf-qnap.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if contains $name .Release.Name }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 22 | {{- end }} 23 | {{- end }} 24 | {{- end }} 25 | 26 | {{/* 27 | Create chart name and version as used by the chart label. 28 | */}} 29 | {{- define "telegraf-qnap.chart" -}} 30 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 31 | {{- end }} 32 | 33 | {{/* 34 | Common labels 35 | */}} 36 | {{- define "telegraf-qnap.labels" -}} 37 | helm.sh/chart: {{ include "telegraf-qnap.chart" . }} 38 | {{ include "telegraf-qnap.selectorLabels" . }} 39 | {{- if .Chart.AppVersion }} 40 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 41 | {{- end }} 42 | app.kubernetes.io/managed-by: {{ .Release.Service }} 43 | {{- end }} 44 | 45 | {{/* 46 | Selector labels 47 | */}} 48 | {{- define "telegraf-qnap.selectorLabels" -}} 49 | app.kubernetes.io/name: {{ include "telegraf-qnap.name" . }} 50 | app.kubernetes.io/instance: {{ .Release.Name }} 51 | {{- end }} 52 | 53 | {{/* 54 | Create the name of the service account to use 55 | */}} 56 | {{- define "telegraf-qnap.serviceAccountName" -}} 57 | {{- if .Values.serviceAccount.create }} 58 | {{- default (include "telegraf-qnap.fullname" .) .Values.serviceAccount.name }} 59 | {{- else }} 60 | {{- default "default" .Values.serviceAccount.name }} 61 | {{- end }} 62 | {{- end }} 63 | -------------------------------------------------------------------------------- /.github/workflows/build-docker.yml: -------------------------------------------------------------------------------- 1 | name: .Docker builder 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | docker-image-name: 7 | required: true 8 | type: string 9 | description: Name of Container image 10 | docker-registry: 11 | required: true 12 | type: string 13 | description: Docker registry name 14 | docker-repository: 15 | required: true 16 | type: string 17 | description: Docker repository directory name 18 | version: 19 | required: true 20 | type: string 21 | description: Container image version 22 | context-path: 23 | required: false 24 | type: string 25 | default: . 26 | description: Context path 27 | 28 | jobs: 29 | build: 30 | name: Build 31 | runs-on: ubuntu-latest 32 | steps: 33 | - name: Checkout repository 34 | uses: actions/checkout@v4 35 | 36 | - name: Docker Setup Buildx 37 | uses: docker/setup-buildx-action@v3 38 | with: 39 | install: true 40 | 41 | - name: Login to Container registry 42 | uses: docker/login-action@v3 43 | with: 44 | registry: ${{ inputs.docker-registry }} 45 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 46 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 47 | 48 | - name: Get build date 49 | id: date 50 | run: echo "date=$(date +'%Y-%m-%d %H:%m:%S')" >> $GITHUB_OUTPUT 51 | 52 | - name: Build and push Docker image 53 | uses: docker/build-push-action@v6 54 | with: 55 | context: ${{ inputs.context-path }} 56 | push: true 57 | platforms: linux/amd64,linux/arm64 58 | tags: ${{ inputs.docker-registry }}/${{ inputs.docker-repository }}/${{ inputs.docker-image-name }}:${{ inputs.version }},${{ inputs.docker-registry }}/${{ inputs.docker-repository }}/${{ inputs.docker-image-name }}:latest 59 | build-args: | 60 | "APP_NAME=${{ inputs.docker-image-name }}" 61 | "VERSION=${{ inputs.version }}" 62 | "BUILD_DATE=${{ steps.date.outputs.date }}" 63 | "TELEGRAF_VERSION=1.32.2" 64 | "REVISION=${{ github.sha }}" 65 | "REF=${{ github.ref }}" -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "telegraf-qnap.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} 5 | {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} 6 | {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} 7 | {{- end }} 8 | {{- end }} 9 | {{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} 10 | apiVersion: networking.k8s.io/v1 11 | {{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 12 | apiVersion: networking.k8s.io/v1beta1 13 | {{- else -}} 14 | apiVersion: extensions/v1beta1 15 | {{- end }} 16 | kind: Ingress 17 | metadata: 18 | name: {{ $fullName }} 19 | labels: 20 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 21 | {{- with .Values.ingress.annotations }} 22 | annotations: 23 | {{- toYaml . | nindent 4 }} 24 | {{- end }} 25 | spec: 26 | {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} 27 | ingressClassName: {{ .Values.ingress.className }} 28 | {{- end }} 29 | {{- if .Values.ingress.tls }} 30 | tls: 31 | {{- range .Values.ingress.tls }} 32 | - hosts: 33 | {{- range .hosts }} 34 | - {{ . | quote }} 35 | {{- end }} 36 | secretName: {{ .secretName }} 37 | {{- end }} 38 | {{- end }} 39 | rules: 40 | {{- range .Values.ingress.hosts }} 41 | - host: {{ .host | quote }} 42 | http: 43 | paths: 44 | {{- range .paths }} 45 | - path: {{ .path }} 46 | {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} 47 | pathType: {{ .pathType }} 48 | {{- end }} 49 | backend: 50 | {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} 51 | service: 52 | name: {{ $fullName }} 53 | port: 54 | number: {{ $svcPort }} 55 | {{- else }} 56 | serviceName: {{ $fullName }} 57 | servicePort: {{ $svcPort }} 58 | {{- end }} 59 | {{- end }} 60 | {{- end }} 61 | {{- end }} 62 | -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "telegraf-qnap.fullname" . }} 5 | labels: 6 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 7 | spec: 8 | replicas: {{ .Values.replicaCount }} 9 | selector: 10 | matchLabels: 11 | {{- include "telegraf-qnap.selectorLabels" . | nindent 6 }} 12 | template: 13 | metadata: 14 | {{- with .Values.podAnnotations }} 15 | annotations: 16 | {{- toYaml . | nindent 8 }} 17 | {{- end }} 18 | labels: 19 | {{- include "telegraf-qnap.selectorLabels" . | nindent 8 }} 20 | spec: 21 | {{- with .Values.imagePullSecrets }} 22 | imagePullSecrets: 23 | {{- toYaml . | nindent 8 }} 24 | {{- end }} 25 | serviceAccountName: {{ include "telegraf-qnap.serviceAccountName" . }} 26 | securityContext: 27 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 28 | containers: 29 | - name: {{ .Chart.Name }} 30 | securityContext: 31 | {{- toYaml .Values.securityContext | nindent 12 }} 32 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 33 | imagePullPolicy: {{ .Values.image.pullPolicy }} 34 | ports: 35 | - name: http 36 | containerPort: {{ .Values.service.port }} 37 | protocol: TCP 38 | livenessProbe: 39 | httpGet: 40 | path: /metrics 41 | port: http 42 | readinessProbe: 43 | httpGet: 44 | path: /metrics 45 | port: http 46 | resources: 47 | {{- toYaml .Values.resources | nindent 12 }} 48 | volumeMounts: 49 | - name: {{ include "telegraf-qnap.fullname" . }}-volume 50 | mountPath: /etc/telegraf/telegraf.conf 51 | subPath: telegraf.conf 52 | {{- with .Values.nodeSelector }} 53 | nodeSelector: 54 | {{- toYaml . | nindent 8 }} 55 | {{- end }} 56 | {{- with .Values.affinity }} 57 | affinity: 58 | {{- toYaml . | nindent 8 }} 59 | {{- end }} 60 | {{- with .Values.tolerations }} 61 | tolerations: 62 | {{- toYaml . | nindent 8 }} 63 | {{- end }} 64 | volumes: 65 | - name: {{ include "telegraf-qnap.fullname" . }}-volume 66 | configMap: 67 | name: {{ include "telegraf-qnap.fullname" . }} 68 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build and Release 2 | 3 | run-name: ${{ github.actor }} is building new image 🚀 4 | on: 5 | workflow_dispatch: 6 | push: 7 | branches: 8 | - main 9 | 10 | jobs: 11 | sem-version: 12 | name: Semantic versioning 13 | runs-on: ubuntu-latest 14 | outputs: 15 | version_tag: ${{ steps.semver.outputs.version_tag }} 16 | version: ${{ steps.semver.outputs.version }} 17 | steps: 18 | - run: echo "🔎 Relesing from branch ${{ github.ref }}." 19 | - name: Checkout repository 20 | uses: actions/checkout@v4 21 | with: 22 | fetch-depth: 0 23 | fetch-tags: 'true' 24 | - name: Semantic versioning 25 | uses: paulhatch/semantic-version@v5.4.0 26 | id: semver 27 | with: 28 | tag_prefix: "v" 29 | enable_prerelease_mode: true 30 | debug: false 31 | # bump_each_commit: true 32 | - name: Log version 33 | run: | 34 | echo "::notice::Version: ${{ steps.semver.outputs.version_tag }}" 35 | 36 | docker-build: 37 | name: Build Container 38 | uses: ./.github/workflows/build-docker.yml 39 | secrets: inherit 40 | needs: sem-version 41 | with: 42 | docker-image-name: qnap-exporter 43 | docker-registry: ghcr.io 44 | docker-repository: bsosnowski/docker 45 | version: ${{ needs.sem-version.outputs.version_tag }} 46 | context-path: docker 47 | 48 | helm-build: 49 | name: Build Helm chart 50 | uses: ./.github/workflows/build-helm-chart.yml 51 | secrets: inherit 52 | needs: sem-version 53 | with: 54 | version: ${{ needs.sem-version.outputs.version }} 55 | context-path: charts/qnap-exporter 56 | helm-registry-directory: charts 57 | helm-registry: oci://ghcr.io/bsosnowski 58 | 59 | release: 60 | name: Create Release 61 | needs: [sem-version,docker-build,helm-build] 62 | runs-on: ubuntu-latest 63 | steps: 64 | - name: Checkout repository 65 | uses: actions/checkout@v4 66 | # https://github.blog/2022-04-12-git-security-vulnerability-announced/ 67 | - name: Set git repository ownership 68 | run: | 69 | # this is to fix GIT not liking owner of the checkout dir 70 | chown -R $(id -u):$(id -g) $PWD 71 | - name: Create GitHub Release 72 | run: | 73 | gh release create ${{ needs.sem-version.outputs.version_tag }} -t qnap-exporter-${{ needs.sem-version.outputs.version_tag }} --generate-notes 74 | env: 75 | GH_TOKEN: ${{ github.token }} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QNAP exporter 2 | 3 | ## Description 4 | This repository provides a metrics exporter for Qnap NAS. It uses Telegraf with SNMP input and Prometheus output. Grafana Dashboard is included as k8's ConfigMap. 5 | 6 | ## Container image ![qnap-exporter](https://github.com/bsosnowski/qnap-exporter/actions/workflows/build.yml/badge.svg) 7 | qnap-exporter container images are built for architectures: 8 | - linux/amd64 9 | - linux/arm64 10 | 11 | ## How to configure NAS 12 | 13 | * Open Control Panel and locate the SNMP section 14 | * Enable SNMP with options: 15 | * Port: 161 16 | * SNMP Version: SNMP V1/V2 17 | * Community: snmp-telegraf 18 | 19 | ## Grafana dashboard overview 20 | 21 | ### Main 22 | ![Main](./pics/Main.png) 23 | ### System 24 | ![Main](./pics/System.png) 25 | ### Cooling 26 | ![Main](./pics/Cooling.png) 27 | ### Disks 28 | ![Main](./pics/Disks.png) 29 | ### Network 30 | ![Main](./pics/Network.png) 31 | ### Logs 32 | This section queries Loki for syslog logs. Logs should be sent in a separate process. 33 | ![Main](./pics/Logs.png) 34 | 35 | ## Helm Chart Configuration 36 | Most important Helm configuration properties. 37 | 38 | | Property | Description | Example | 39 | | --------------------------------------| ------------------------------------ | ------------------------ | 40 | | nas.hostname | Hostname of you NAS | NAS453D | 41 | | nas.snmp.agent | URL for SNMP agent | udp://192.168.1.100:161 | 42 | | nas.snmp.timeout | SNMP timeout | 110s | 43 | | nas.snmp.version | SNMP version | 2 | 44 | | nas.snmp.community | SNMP community name | snmp-telegraf | 45 | | nas.snmp.retries | Number of retries | 0 | 46 | | metrics.enabled | Enable metrics scraping | true | 47 | | metrics.serviceMonitor.labels.release | Release name for Prometheus operator | kube-monitoring | 48 | 49 | ## Helm install 50 | ```shell 51 | helm install qnap-exporter oci://ghcr.io/bsosnowski/charts/qnap-exporter --version 0.1.1 52 | ``` 53 | or just pull: 54 | ```shell 55 | helm pull oci://ghcr.io/bsosnowski/charts/qnap-exporter --version 0.1.1 56 | ``` 57 | 58 | ## TODO 59 | - [ ] add support for Syslog -> Loki 60 | - [ ] add support for Prometheus rules -------------------------------------------------------------------------------- /.github/workflows/build-helm-chart.yml: -------------------------------------------------------------------------------- 1 | name: .Build Helm chart 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | version: 7 | required: true 8 | type: string 9 | description: Chart version to release 10 | context-path: 11 | required: true 12 | type: string 13 | description: Path to Chart in Git repository 14 | helm-registry: 15 | required: true 16 | type: string 17 | description: Helm remote repository name 18 | helm-registry-directory: 19 | required: true 20 | type: string 21 | description: Helm remote repository directory 22 | 23 | jobs: 24 | build: 25 | name: Build 26 | runs-on: ubuntu-latest 27 | steps: 28 | - name: Checkout repository 29 | uses: actions/checkout@v4 30 | 31 | # https://github.blog/2022-04-12-git-security-vulnerability-announced/ 32 | - name: Set git settings and fix repository ownership 33 | run: | 34 | # this is to fix GIT not liking owner of the checkout dir 35 | chown -R $(id -u):$(id -g) $PWD 36 | git config user.email "actions@github.com" 37 | git config user.name "GitHub Actions" 38 | git config --global --add --bool push.autoSetupRemote true 39 | 40 | - name: Set variables 41 | id: vars 42 | shell: bash 43 | working-directory: ${{ inputs.context-path }} 44 | run: | 45 | echo "chart-name=$(yq -r '.name' Chart.yaml)" >> $GITHUB_OUTPUT 46 | 47 | - name: Update Chart version 48 | shell: bash 49 | working-directory: ${{ inputs.context-path }} 50 | run: | 51 | yq e -i '.appVersion = "v${{ inputs.version }}"' Chart.yaml 52 | yq e -i '.version = "${{ inputs.version }}"' Chart.yaml 53 | 54 | - name: Login to Docker Registry 55 | id: docker-login 56 | uses: docker/login-action@v3 57 | with: 58 | registry: ghcr.io 59 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 60 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 61 | 62 | - name: Deploy chart 63 | shell: bash 64 | working-directory: ${{ inputs.context-path }} 65 | run: | 66 | helm package . 67 | helm push ${{ steps.vars.outputs.chart-name}}-${{ inputs.version }}.tgz ${{ inputs.helm-registry }}/${{ inputs.helm-registry-directory }} 68 | 69 | - name: Commit and push 70 | shell: bash 71 | working-directory: ${{ inputs.context-path }} 72 | run: | 73 | git add Chart.yaml 74 | git commit -a -m "Helm chart version bumped to ${{ inputs.version }}" 75 | git push 76 | 77 | - name: Summary Helm release 78 | run: | 79 | echo "### Helm Chart :white_check_mark:" >> $GITHUB_STEP_SUMMARY 80 | echo "| | |" >> $GITHUB_STEP_SUMMARY 81 | echo "|-------------|-------------|" >> $GITHUB_STEP_SUMMARY 82 | echo "|Name |${{ steps.vars.outputs.chart-name}}|" >> $GITHUB_STEP_SUMMARY 83 | echo "|Version |${{ inputs.version }}|" >> $GITHUB_STEP_SUMMARY 84 | echo "|URL |${{ inputs.helm-registry }}/${{ inputs.helm-registry-directory }}/${{ steps.vars.outputs.chart-name}}/${{ steps.vars.outputs.chart-name}}-${{ inputs.version }}.tgz|" >> $GITHUB_STEP_SUMMARY -------------------------------------------------------------------------------- /charts/qnap-exporter/templates/configmap_telegraf.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | labels: 5 | {{- include "telegraf-qnap.labels" . | nindent 4 }} 6 | name: {{ include "telegraf-qnap.fullname" . }} 7 | data: 8 | telegraf.conf: | 9 | [agent] 10 | interval = "{{ .Values.metrics.serviceMonitor.interval }}" 11 | round_interval = true 12 | metric_batch_size = 5000 13 | metric_buffer_limit = 20000 14 | collection_jitter = "0s" 15 | flush_interval = "30s" 16 | flush_jitter = "1s" 17 | precision = "" 18 | hostname = "{{ .Values.nas.hostname }}" 19 | omit_hostname = false 20 | 21 | [[outputs.prometheus_client]] 22 | listen = ":9273" 23 | expiration_interval = 0 24 | 25 | [[inputs.snmp]] 26 | agents = ["{{ .Values.nas.snmp.agent }}"] 27 | timeout = "{{ .Values.nas.snmp.timeout }}" 28 | # ## SNMP version; can be 1, 2, or 3. 29 | version = {{ .Values.nas.snmp.version }} 30 | community = "{{ .Values.nas.snmp.community }}" 31 | retries = {{ .Values.nas.snmp.retries }} 32 | [[inputs.snmp.table]] 33 | name = "snmp.QNAP.cpuTable" 34 | oid = "NAS-MIB::cpuTable" 35 | [[inputs.snmp.table.field]] 36 | name = "cpuIndex" 37 | oid = "NAS-MIB::cpuIndex" 38 | is_tag = true 39 | [[inputs.snmp.table.field]] 40 | name = "cpuID" 41 | oid = "NAS-MIB::cpuID" 42 | is_tag = true 43 | [[inputs.snmp.table.field]] 44 | name = "cpuUsage" 45 | oid = "NAS-MIB::cpuUsage" 46 | 47 | [[inputs.snmp.table]] 48 | name = "snmp.QNAP.systemTable" 49 | # Memory 50 | [[inputs.snmp.table.field]] 51 | name = "systemTotalMemEX" 52 | oid = "NAS-MIB::systemTotalMemEX" 53 | [[inputs.snmp.table.field]] 54 | name = "systemFreeMemEX" 55 | oid = "NAS-MIB::systemFreeMemEX" 56 | # System temp 57 | [[inputs.snmp.table.field]] 58 | name = "cpu-TemperatureEX" 59 | oid = "NAS-MIB::cpu-TemperatureEX" 60 | [[inputs.snmp.table.field]] 61 | name = "systemTemperatureEX" 62 | oid = "NAS-MIB::systemTemperatureEX" 63 | # Uptime 64 | [[inputs.snmp.field]] 65 | name = "systemUptime" 66 | oid = "NAS-MIB::systemUptimeEX" 67 | # Uptime 68 | [[inputs.snmp.field]] 69 | name = "systemCPU-UsageEX" 70 | oid = "NAS-MIB::systemCPU-UsageEX" 71 | 72 | # Enclosures 73 | [[inputs.snmp.table]] 74 | name = "snmp.QNAP.enclosureTable" 75 | oid = "NAS-MIB::enclosureTable" 76 | # Memory 77 | [[inputs.snmp.table.field]] 78 | name = "enclosureID" 79 | oid = "NAS-MIB::enclosureID" 80 | is_tag = true 81 | [[inputs.snmp.table.field]] 82 | name = "enclosureModel" 83 | oid = "NAS-MIB::enclosureModel" 84 | is_tag = true 85 | [[inputs.snmp.table.field]] 86 | name = "enclosureName" 87 | oid = "NAS-MIB::enclosureName" 88 | is_tag = true 89 | [[inputs.snmp.table.field]] 90 | name = "enclosureSystemTemp" 91 | oid = "NAS-MIB::enclosureSystemTemp" 92 | # Fan 93 | [[inputs.snmp.table]] 94 | name = "snmp.QNAP.systemFanTableEx" 95 | oid = "NAS-MIB::systemFanTableEx" 96 | [[inputs.snmp.table.field]] 97 | name = "sysFanIndexEX" 98 | oid = "NAS-MIB::sysFanIndexEX" 99 | is_tag = true 100 | [[inputs.snmp.table.field]] 101 | name = "sysFanDescrEX" 102 | oid = "NAS-MIB::sysFanDescrEX" 103 | is_tag = true 104 | [[inputs.snmp.table.field]] 105 | name = "sysFanSpeedEX" 106 | oid = "NAS-MIB::sysFanSpeedEX" 107 | 108 | # Disk 109 | [[inputs.snmp.table]] 110 | name = "snmp.QNAP.diskTable" 111 | oid = "NAS-MIB::diskTable" 112 | [[inputs.snmp.table.field]] 113 | name = "diskIndex" 114 | oid = "NAS-MIB::diskIndex" 115 | is_tag = true 116 | [[inputs.snmp.table.field]] 117 | name = "diskID" 118 | oid = "NAS-MIB::diskID" 119 | is_tag = true 120 | [[inputs.snmp.table.field]] 121 | name = "diskEnclosureID" 122 | oid = "NAS-MIB::diskEnclosureID" 123 | is_tag = true 124 | [[inputs.snmp.table.field]] 125 | name = "diskSummary" 126 | oid = "NAS-MIB::diskSummary" 127 | [[inputs.snmp.table.field]] 128 | name = "diskSmartInfo" 129 | oid = "NAS-MIB::diskSmartInfo" 130 | [[inputs.snmp.table.field]] 131 | name = "diskTemperture" 132 | oid = "NAS-MIB::diskTemperture" 133 | [[inputs.snmp.table.field]] 134 | name = "diskGlobalSpare" 135 | oid = "NAS-MIB::diskGlobalSpare" 136 | [[inputs.snmp.table.field]] 137 | name = "diskModel" 138 | oid = "NAS-MIB::diskModel" 139 | is_tag = true 140 | [[inputs.snmp.table.field]] 141 | name = "diskCapacity" 142 | oid = "NAS-MIB::diskCapacity" 143 | is_tag = true 144 | 145 | # Volumes 146 | [[inputs.snmp.table]] 147 | name = "snmp.QNAP.systemVolumeTableEx" 148 | oid = "NAS-MIB::systemVolumeTableEx" 149 | [[inputs.snmp.table.field]] 150 | name = "sysVolumeIndexEX" 151 | oid = "NAS-MIB::sysVolumeIndexEX" 152 | is_tag = true 153 | [[inputs.snmp.table.field]] 154 | name = "sysVolumeDescrEX" 155 | oid = "NAS-MIB::sysVolumeDescrEX" 156 | is_tag = true 157 | [[inputs.snmp.table.field]] 158 | name = "sysVolumeFSEX" 159 | oid = "NAS-MIB::sysVolumeFSEX" 160 | is_tag = true 161 | [[inputs.snmp.table.field]] 162 | name = "sysVolumeTotalSizeEX" 163 | oid = "NAS-MIB::sysVolumeTotalSize" 164 | [[inputs.snmp.table.field]] 165 | name = "sysVolumeFreeSize" 166 | oid = "NAS-MIB::sysVolumeFreeSizeEX" 167 | [[inputs.snmp.table.field]] 168 | name = "sysVolumeStatus" 169 | oid = "NAS-MIB::sysVolumeStatusEX" 170 | 171 | # Disk Performance 172 | [[inputs.snmp.table]] 173 | name = "snmp.QNAP.diskPerformanceTable" 174 | oid = "NAS-MIB::diskPerformanceTable" 175 | [[inputs.snmp.table.field]] 176 | name = "diskPerformanceIndex" 177 | oid = "NAS-MIB::diskPerformanceIndex" 178 | is_tag = true 179 | [[inputs.snmp.table.field]] 180 | name = "blvID" 181 | oid = "NAS-MIB::blvID" 182 | is_tag = true 183 | [[inputs.snmp.table.field]] 184 | name = "iops" 185 | oid = "NAS-MIB::iops" 186 | [[inputs.snmp.table.field]] 187 | name = "latency" 188 | oid = "NAS-MIB::latency" 189 | 190 | # JBOD 191 | [[inputs.snmp.table]] 192 | name = "snmp.QNAP.jBODHdTable1" 193 | oid = "NAS-MIB::jBODHdTable1" 194 | [[inputs.snmp.table.field]] 195 | name = "jBODHdIndex1" 196 | oid = "NAS-MIB::jBODHdIndex1" 197 | is_tag = true 198 | [[inputs.snmp.table.field]] 199 | name = "jBODHdDescr1" 200 | oid = "NAS-MIB::jBODHdDescr1" 201 | is_tag = true 202 | [[inputs.snmp.table.field]] 203 | name = "jBODHdTemperature1" 204 | oid = "NAS-MIB::sysVolumeFSEX" 205 | [[inputs.snmp.table.field]] 206 | name = "jBODHdStatus1" 207 | oid = "NAS-MIB::jBODHdStatus1" 208 | [[inputs.snmp.table.field]] 209 | name = "jBODHdModel1" 210 | oid = "NAS-MIB::jBODHdModel1" 211 | is_tag = true 212 | [[inputs.snmp.table.field]] 213 | name = "jBODHdCapacity1 " 214 | oid = "NAS-MIB::jBODHdCapacity1" 215 | [[inputs.snmp.table.field]] 216 | name = "jBODHdSmartInfo1" 217 | oid = "NAS-MIB::jBODHdSmartInfo1" 218 | 219 | # Power 220 | [[inputs.snmp.table]] 221 | name = "snmp.QNAP.systemPowerTable" 222 | oid = "NAS-MIB::systemPowerTable" 223 | [[inputs.snmp.table.field]] 224 | name = "systemPowerIndex" 225 | oid = "NAS-MIB::systemPowerIndex" 226 | is_tag = true 227 | [[inputs.snmp.table.field]] 228 | name = "systemPowerID" 229 | oid = "NAS-MIB::systemPowerID" 230 | is_tag = true 231 | [[inputs.snmp.table.field]] 232 | name = "systemPowerEnclosureID" 233 | oid = "NAS-MIB::systemPowerEnclosureID" 234 | is_tag = true 235 | [[inputs.snmp.table.field]] 236 | name = "systemPowerStatus" 237 | oid = "NAS-MIB::systemPowerStatus" 238 | [[inputs.snmp.table.field]] 239 | name = "systemPowerFanSpeed" 240 | oid = "NAS-MIB::systemPowerFanSpeed" 241 | [[inputs.snmp.table.field]] 242 | name = "systemPowerFanSpeed" 243 | oid = "NAS-MIB::systemPowerFanSpeed" 244 | [[inputs.snmp.table.field]] 245 | name = "systemPowerTemp" 246 | oid = "NAS-MIB::systemPowerTemp" 247 | 248 | # Interfaces 249 | [[inputs.snmp.table]] 250 | name = "snmp.QNAP.systemIfTableEx" 251 | oid = "NAS-MIB::systemIfTableEx" 252 | [[inputs.snmp.table.field]] 253 | name = "ifIndexEX" 254 | oid = "NAS-MIB::ifIndexEX" 255 | is_tag = true 256 | [[inputs.snmp.table.field]] 257 | name = "ifDescrEX" 258 | oid = "NAS-MIB::ifDescrEX" 259 | is_tag = true 260 | [[inputs.snmp.table.field]] 261 | name = "ifPacketsReceivedEX" 262 | oid = "NAS-MIB::ifPacketsReceivedEX" 263 | [[inputs.snmp.table.field]] 264 | name = "ifPacketsSentEX" 265 | oid = "NAS-MIB::ifPacketsSentEX" 266 | [[inputs.snmp.table.field]] 267 | name = "ifErrorPacketsEX" 268 | oid = "NAS-MIB::ifErrorPacketsEX" 269 | 270 | # QTS-MIB 271 | # System total memory 272 | [[inputs.snmp.field]] 273 | name = "QTS.systemTotalMem" 274 | oid = "QTS-MIB::systemTotalMem.0" 275 | # System free memory 276 | [[inputs.snmp.field]] 277 | name = "QTS.systemFreeMem" 278 | oid = "QTS-MIB::systemFreeMem.0" 279 | # System available memory 280 | [[inputs.snmp.field]] 281 | name = "QTS.systemAvailableMem" 282 | oid = "QTS-MIB::systemAvailableMem.0" 283 | # System used memory 284 | [[inputs.snmp.field]] 285 | name = "QTS.systemUsedMemory" 286 | oid = "QTS-MIB::systemUsedMemory.0" 287 | # System cached memory 288 | [[inputs.snmp.field]] 289 | name = "QTS.systemCacheMemory" 290 | oid = "QTS-MIB::systemCacheMemory.0" 291 | # System buffered memory 292 | [[inputs.snmp.field]] 293 | name = "QTS.systemBufferMemory" 294 | oid = "QTS-MIB::systemBufferMemory.0" 295 | 296 | # Uptime 297 | [[inputs.snmp.field]] 298 | name = "QTS.sysUptime" 299 | oid = "QTS-MIB::sysUptime.0" 300 | 301 | # Services status 302 | [[inputs.snmp.field]] 303 | name = "QTS.nfsV2V3IsEnabled" 304 | oid = "QTS-MIB::nfsV2V3IsEnabled.0" 305 | 306 | [[inputs.snmp.field]] 307 | name = "QTS.nfsV4IsEnabled" 308 | oid = "QTS-MIB::nfsV4IsEnabled.0" 309 | 310 | [[inputs.snmp.field]] 311 | name = "QTS.sshIsEnabled" 312 | oid = "QTS-MIB::sshIsEnabled.0" 313 | 314 | [[inputs.snmp.field]] 315 | name = "QTS.sshSFTPEnabled" 316 | oid = "QTS-MIB::sshSFTPEnabled.0" 317 | 318 | [[inputs.snmp.field]] 319 | name = "QTS.telnetIsEnabled" 320 | oid = "QTS-MIB::telnetIsEnabled.0" 321 | 322 | [[inputs.snmp.field]] 323 | name = "QTS.ftpEnabled" 324 | oid = "QTS-MIB::ftpEnabled.0" 325 | 326 | # Interfaces 327 | [[inputs.snmp.table]] 328 | name = "snmp.IF.ifTable" 329 | oid = "IF-MIB::ifTable" 330 | [[inputs.snmp.table.field]] 331 | name = "ifIndex" 332 | oid = "IF-MIB::ifIndex" 333 | [[inputs.snmp.table.field]] 334 | name = "ifDescr" 335 | oid = "IF-MIB::ifDescr" 336 | is_tag = true 337 | [[inputs.snmp.table.field]] 338 | name = "ifType" 339 | oid = "IF-MIB::ifType" 340 | [[inputs.snmp.table.field]] 341 | name = "ifMtu" 342 | oid = "IF-MIB::ifMtu" 343 | [[inputs.snmp.table.field]] 344 | name = "ifSpeed" 345 | oid = "IF-MIB::ifSpeed" 346 | [[inputs.snmp.table.field]] 347 | name = "ifPhysAddress" 348 | oid = "IF-MIB::ifPhysAddress" 349 | [[inputs.snmp.table.field]] 350 | name = "ifAdminStatus" 351 | oid = "IF-MIB::ifAdminStatus" 352 | [[inputs.snmp.table.field]] 353 | name = "ifOperStatus" 354 | oid = "IF-MIB::ifOperStatus" 355 | [[inputs.snmp.table.field]] 356 | name = "ifLastChange" 357 | oid = "IF-MIB::ifLastChange" 358 | [[inputs.snmp.table.field]] 359 | name = "ifInOctets" 360 | oid = "IF-MIB::ifInOctets" 361 | [[inputs.snmp.table.field]] 362 | name = "ifInUcastPkts" 363 | oid = "IF-MIB::ifInUcastPkts" 364 | [[inputs.snmp.table.field]] 365 | name = "ifInDiscards" 366 | oid = "IF-MIB::ifInDiscards" 367 | [[inputs.snmp.table.field]] 368 | name = "ifInErrors" 369 | oid = "IF-MIB::ifInErrors" 370 | [[inputs.snmp.table.field]] 371 | name = "ifInUnknownProtos" 372 | oid = "IF-MIB::ifInUnknownProtos" 373 | [[inputs.snmp.table.field]] 374 | name = "ifOutOctets" 375 | oid = "IF-MIB::ifOutOctets" 376 | [[inputs.snmp.table.field]] 377 | name = "ifOutUcastPkts" 378 | oid = "IF-MIB::ifOutUcastPkts" 379 | [[inputs.snmp.table.field]] 380 | name = "ifOutDiscards" 381 | oid = "IF-MIB::ifOutDiscards" 382 | [[inputs.snmp.table.field]] 383 | name = "ifOutErrors" 384 | oid = "IF-MIB::ifOutErrors" -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /docker/QTS.mib: -------------------------------------------------------------------------------- 1 | QTS-MIB DEFINITIONS ::= BEGIN 2 | 3 | IMPORTS 4 | enterprises, TimeTicks 5 | FROM SNMPv2-SMI 6 | OBJECT-GROUP, MODULE-COMPLIANCE 7 | FROM SNMPv2-CONF 8 | Integer32, IpAddress, Counter64, OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY 9 | FROM SNMPv2-SMI; 10 | 11 | qnap MODULE-IDENTITY 12 | LAST-UPDATED "202002200000Z" 13 | ORGANIZATION "www.qnap.com" 14 | CONTACT-INFO 15 | "support@qnap.com" 16 | DESCRIPTION 17 | "NAS mib" 18 | REVISION "202002200000Z" 19 | DESCRIPTION 20 | "NAS mib ver 2.0" 21 | ::= { enterprises 55062 } 22 | 23 | qts OBJECT IDENTIFIER ::= { qnap 1 } 24 | 25 | -- Frame Relay Multiplexer MIB groups 26 | 27 | -- Storage 28 | storage OBJECT IDENTIFIER ::= { qts 10 } 29 | 30 | diskCount OBJECT-TYPE 31 | SYNTAX Integer32 32 | MAX-ACCESS read-only 33 | STATUS current 34 | DESCRIPTION 35 | "The number of hard drive." 36 | ::= { storage 1 } 37 | diskTable OBJECT-TYPE 38 | SYNTAX SEQUENCE OF DiskTableEntryDef 39 | MAX-ACCESS not-accessible 40 | STATUS current 41 | DESCRIPTION 42 | "A list of hard drive entries. The number of 43 | entries is given by the value of diskCount." 44 | ::= { storage 2 } 45 | diskTableEntry OBJECT-TYPE 46 | SYNTAX DiskTableEntryDef 47 | MAX-ACCESS not-accessible 48 | STATUS current 49 | DESCRIPTION 50 | "An disk entry containing objects at the disk." 51 | INDEX { diskIndex } 52 | ::= { diskTable 1 } 53 | 54 | DiskTableEntryDef ::= 55 | SEQUENCE { 56 | diskIndex Integer32 , 57 | diskID Integer32 , 58 | diskManufacturer OCTET STRING, 59 | diskModel OCTET STRING, 60 | diskSerialNumber OCTET STRING, 61 | diskType OCTET STRING, 62 | diskStatus OCTET STRING, 63 | diskTemperature OCTET STRING, 64 | diskCapacity Counter64 65 | } 66 | diskIndex OBJECT-TYPE 67 | SYNTAX Integer32 (1..4094) 68 | MAX-ACCESS not-accessible 69 | STATUS current 70 | DESCRIPTION 71 | "A unique value for each hard drive. Its value 72 | ranges between 1 and the value of diskCount. The 73 | value for each hard drive must remain constant at 74 | least from one re-initialization of the entity's 75 | management system to the next re-initialization." 76 | ::= { diskTableEntry 1 } 77 | 78 | diskID OBJECT-TYPE 79 | SYNTAX Integer32 80 | MAX-ACCESS read-only 81 | STATUS current 82 | DESCRIPTION 83 | "A unique value for each hard drive." 84 | ::= { diskTableEntry 2 } 85 | 86 | diskManufacturer OBJECT-TYPE 87 | SYNTAX OCTET STRING (SIZE (0..255)) 88 | MAX-ACCESS read-only 89 | STATUS current 90 | DESCRIPTION 91 | "The manufacturer of hard drive." 92 | ::= { diskTableEntry 3 } 93 | 94 | diskModel OBJECT-TYPE 95 | SYNTAX OCTET STRING 96 | MAX-ACCESS read-only 97 | STATUS current 98 | DESCRIPTION 99 | "Hard disk Model" 100 | ::= { diskTableEntry 4 } 101 | 102 | diskSerialNumber OBJECT-TYPE 103 | SYNTAX OCTET STRING 104 | MAX-ACCESS read-only 105 | STATUS current 106 | DESCRIPTION 107 | "The serialNumber of hard drive." 108 | ::= { diskTableEntry 5 } 109 | 110 | diskType OBJECT-TYPE 111 | SYNTAX OCTET STRING 112 | MAX-ACCESS read-only 113 | STATUS current 114 | DESCRIPTION "The type of hard drive." 115 | ::= { diskTableEntry 6} 116 | 117 | diskStatus OBJECT-TYPE 118 | SYNTAX OCTET STRING 119 | MAX-ACCESS read-only 120 | STATUS current 121 | DESCRIPTION "The status of hard drive." 122 | ::= { diskTableEntry 7 } 123 | 124 | diskTemperature OBJECT-TYPE 125 | SYNTAX OCTET STRING 126 | MAX-ACCESS read-only 127 | STATUS current 128 | DESCRIPTION "The temperature of hard drive." 129 | ::= { diskTableEntry 8 } 130 | 131 | diskCapacity OBJECT-TYPE 132 | SYNTAX Counter64 133 | MAX-ACCESS read-only 134 | STATUS current 135 | DESCRIPTION "The capacity in byte of hard drive." 136 | ::= { diskTableEntry 9 } 137 | 138 | 139 | --raid table 140 | raidCount OBJECT-TYPE 141 | SYNTAX Integer32 142 | MAX-ACCESS read-only 143 | STATUS current 144 | DESCRIPTION 145 | "The number of RAID." 146 | ::= { storage 4 } 147 | 148 | raidTable OBJECT-TYPE 149 | SYNTAX SEQUENCE OF RaidTableEntryDef 150 | MAX-ACCESS not-accessible 151 | STATUS current 152 | DESCRIPTION 153 | "A list of RAID entries. The number of 154 | entries is given by the value of raidCount." 155 | ::= { storage 5 } 156 | 157 | raidTableEntry OBJECT-TYPE 158 | SYNTAX RaidTableEntryDef 159 | MAX-ACCESS not-accessible 160 | STATUS current 161 | DESCRIPTION 162 | "RAID table" 163 | INDEX { raidIndex } 164 | ::= { raidTable 1 } 165 | 166 | RaidTableEntryDef ::= 167 | SEQUENCE { 168 | raidIndex Integer32 , 169 | raidID Integer32 , 170 | raidName OCTET STRING, 171 | raidStatus OCTET STRING, 172 | raidCapacity Counter64, 173 | raidBitmap Integer32 , 174 | raidLevel OCTET STRING 175 | } 176 | raidIndex OBJECT-TYPE 177 | SYNTAX Integer32 (0..4096) 178 | MAX-ACCESS not-accessible 179 | STATUS current 180 | DESCRIPTION 181 | "A unique value for each RAID. Its value 182 | ranges between 1 and the value of raidCount. The 183 | value for each RAID must remain constant at 184 | least from one re-initialization of the entity's 185 | RAID to the next re-initialization." 186 | ::= { raidTableEntry 1 } 187 | 188 | raidID OBJECT-TYPE 189 | SYNTAX Integer32 190 | MAX-ACCESS read-only 191 | STATUS current 192 | DESCRIPTION 193 | "A unique value for each RAID." 194 | ::= { raidTableEntry 2 } 195 | 196 | raidName OBJECT-TYPE 197 | SYNTAX OCTET STRING (SIZE (0..255)) 198 | MAX-ACCESS read-only 199 | STATUS current 200 | DESCRIPTION 201 | "The name of RAID" 202 | ::= { raidTableEntry 3 } 203 | 204 | raidStatus OBJECT-TYPE 205 | SYNTAX OCTET STRING (SIZE (0..255)) 206 | MAX-ACCESS read-only 207 | STATUS current 208 | DESCRIPTION 209 | "The status of RAID" 210 | ::= { raidTableEntry 4 } 211 | 212 | raidCapacity OBJECT-TYPE 213 | SYNTAX Counter64 214 | MAX-ACCESS read-only 215 | STATUS current 216 | DESCRIPTION "The total capacity in byte of RAID." 217 | ::= { raidTableEntry 5 } 218 | 219 | raidBitmap OBJECT-TYPE 220 | SYNTAX Integer32 221 | MAX-ACCESS read-only 222 | STATUS current 223 | DESCRIPTION 224 | "RAID bit map" 225 | ::= { raidTableEntry 6 } 226 | 227 | raidLevel OBJECT-TYPE 228 | SYNTAX OCTET STRING (SIZE (0..255)) 229 | MAX-ACCESS read-only 230 | STATUS current 231 | DESCRIPTION 232 | "RAID level" 233 | ::= { raidTableEntry 7 } 234 | 235 | -- pool 236 | storagepoolCount OBJECT-TYPE 237 | SYNTAX Integer32 238 | MAX-ACCESS read-only 239 | STATUS current 240 | DESCRIPTION 241 | "The number of pool." 242 | ::= { storage 6 } 243 | 244 | storagepoolTable OBJECT-TYPE 245 | SYNTAX SEQUENCE OF StoragepoolTableEntryDef 246 | MAX-ACCESS not-accessible 247 | STATUS current 248 | DESCRIPTION 249 | "A list of storage pool entries. The number of 250 | entries is given by the value of storagepoolCount." 251 | ::= { storage 7 } 252 | 253 | storagepoolTableEntry OBJECT-TYPE 254 | SYNTAX StoragepoolTableEntryDef 255 | MAX-ACCESS not-accessible 256 | STATUS current 257 | DESCRIPTION 258 | "Pool table" 259 | INDEX { storagepoolIndex } 260 | ::= { storagepoolTable 1 } 261 | 262 | StoragepoolTableEntryDef ::= 263 | SEQUENCE { 264 | storagepoolIndex Integer32 , 265 | storagepoolID Integer32 , 266 | storagepoolCapacity Counter64, 267 | storagepoolFreeSize Counter64, 268 | storagepoolStatus Integer32 269 | } 270 | storagepoolIndex OBJECT-TYPE 271 | SYNTAX Integer32 (0..4096) 272 | MAX-ACCESS not-accessible 273 | STATUS current 274 | DESCRIPTION 275 | "A unique value for each storage pool. Its value 276 | ranges between 1 and the value of storagepoolCount. The 277 | value for each interface must remain constant at 278 | least from one re-initialization of the entity's 279 | Pool to the next re-initialization." 280 | ::= { storagepoolTableEntry 1 } 281 | 282 | storagepoolID OBJECT-TYPE 283 | SYNTAX Integer32 284 | MAX-ACCESS read-only 285 | STATUS current 286 | DESCRIPTION 287 | "Pool ID" 288 | ::= { storagepoolTableEntry 2 } 289 | 290 | storagepoolCapacity OBJECT-TYPE 291 | SYNTAX Counter64 292 | MAX-ACCESS read-only 293 | STATUS current 294 | DESCRIPTION "Pool capacity in byte." 295 | ::= { storagepoolTableEntry 3 } 296 | 297 | storagepoolFreeSize OBJECT-TYPE 298 | SYNTAX Counter64 299 | MAX-ACCESS read-only 300 | STATUS current 301 | DESCRIPTION "Pool free size in byte." 302 | ::= { storagepoolTableEntry 4 } 303 | 304 | storagepoolStatus OBJECT-TYPE 305 | SYNTAX INTEGER { 306 | error(-3), 307 | notReady(-2), 308 | warning(-1), 309 | ready(0) 310 | } 311 | MAX-ACCESS read-only 312 | STATUS current 313 | DESCRIPTION 314 | " 315 | ** QuTS version 316 | SED_LOCKED = -6, 317 | DETACHING = -5, 318 | REMOVING = -4, 319 | ERROR = -3, 320 | NOT_READY = -2, 321 | WARNING = -1, 322 | READY = 0, 323 | ENABLE_QTIER = 1, 324 | SED_LOCKING = 2, 325 | SED_UNLOCKING = 3, 326 | KS-Redmine#39712. 327 | REMOVING_TIER = 4, 328 | NONE_STATUS = 0xFF, 329 | 330 | ** for QuHERO version 331 | SED_LOCKED = -4, 332 | ERROR = -3, 333 | NOT_READY = -2, 334 | WARNING = -1, 335 | READY = 0, 336 | RESILVERING = 1, 337 | EXPORTING = 2, 338 | REMOVING = 3, 339 | SCRUBBING = 4, 340 | CREATING = 5, 341 | SED_LOCKING = 6, 342 | SED_UNLOCKING = 7, 343 | STOPPING = 8, 344 | STOPPED = 9, 345 | STARTING = 10, 346 | IMPORTING = 11, 347 | READONLY = 12, 348 | PRUNING = 13, 349 | TUNING = 14, 350 | NONE_STATUS = 0xFF," 351 | ::= { storagepoolTableEntry 5} 352 | 353 | --volume 354 | volumeCount OBJECT-TYPE 355 | SYNTAX Integer32 356 | MAX-ACCESS read-only 357 | STATUS current 358 | DESCRIPTION 359 | "The number of system volumes (regardless of 360 | their current state) present on this system." 361 | ::= { storage 8 } 362 | 363 | volumeTable OBJECT-TYPE 364 | SYNTAX SEQUENCE OF VolumeTableEntryDef 365 | MAX-ACCESS not-accessible 366 | STATUS current 367 | DESCRIPTION 368 | "A list of volume entries. The number of 369 | entries is given by the value of SysVolumeNumber." 370 | ::= { storage 9 } 371 | 372 | volumeTableEntry OBJECT-TYPE 373 | SYNTAX VolumeTableEntryDef 374 | MAX-ACCESS not-accessible 375 | STATUS current 376 | DESCRIPTION 377 | "An system volume entry" 378 | INDEX { volumeIndex } 379 | ::= { volumeTable 1 } 380 | 381 | VolumeTableEntryDef ::= 382 | SEQUENCE { 383 | volumeIndex Integer32 , 384 | volumeID Integer32 , 385 | volumeCapacity Counter64, 386 | volumeFreeSize Counter64, 387 | volumeStatus OCTET STRING, 388 | volumeSSDCache Integer32 , 389 | volumeThin Integer32 , 390 | volumeName OCTET STRING 391 | } 392 | volumeIndex OBJECT-TYPE 393 | SYNTAX Integer32 (0..4096) 394 | MAX-ACCESS not-accessible 395 | STATUS current 396 | DESCRIPTION 397 | "A unique value for each system volume. Its value 398 | ranges between 1 and the value of volumeCount. The 399 | value for each volume must remain constant at 400 | least from one re-initialization of the entity's 401 | volume system to the next re-initialization." 402 | ::= { volumeTableEntry 1 } 403 | 404 | volumeID OBJECT-TYPE 405 | SYNTAX Integer32 406 | MAX-ACCESS read-only 407 | STATUS current 408 | DESCRIPTION 409 | "volume ID" 410 | ::= { volumeTableEntry 2 } 411 | 412 | volumeCapacity OBJECT-TYPE 413 | SYNTAX Counter64 414 | MAX-ACCESS read-only 415 | STATUS current 416 | DESCRIPTION "System Volume total size in byte." 417 | ::= { volumeTableEntry 3 } 418 | 419 | volumeFreeSize OBJECT-TYPE 420 | SYNTAX Counter64 421 | MAX-ACCESS read-only 422 | STATUS current 423 | DESCRIPTION "System Volume free size in byte." 424 | ::= { volumeTableEntry 4 } 425 | 426 | volumeStatus OBJECT-TYPE 427 | SYNTAX OCTET STRING (SIZE (0..255)) 428 | MAX-ACCESS read-only 429 | STATUS current 430 | DESCRIPTION "Volume status" 431 | ::= { volumeTableEntry 5 } 432 | 433 | volumeSSDCache OBJECT-TYPE 434 | SYNTAX Integer32 435 | MAX-ACCESS read-only 436 | STATUS current 437 | DESCRIPTION "If volume enable SSDCache acceleration." 438 | ::= { volumeTableEntry 6 } 439 | 440 | volumeThin OBJECT-TYPE 441 | SYNTAX Integer32 442 | MAX-ACCESS read-only 443 | STATUS current 444 | DESCRIPTION "If volume is thin type." 445 | ::= { volumeTableEntry 7 } 446 | 447 | volumeName OBJECT-TYPE 448 | SYNTAX OCTET STRING (SIZE (0..255)) 449 | MAX-ACCESS read-only 450 | STATUS current 451 | DESCRIPTION "Volume Name." 452 | ::= { volumeTableEntry 8 } 453 | 454 | --cache 455 | cacheAccelerationServiceEnabled OBJECT-TYPE 456 | SYNTAX INTEGER { 457 | no(0), 458 | yes(1) 459 | } 460 | MAX-ACCESS read-only 461 | STATUS current 462 | DESCRIPTION 463 | "If acceleration service of cache is enabled." 464 | ::= { storage 10 } 465 | 466 | cacheAvailablePercent OBJECT-TYPE 467 | SYNTAX Integer32 468 | MAX-ACCESS read-only 469 | STATUS current 470 | DESCRIPTION 471 | "Available percent of cache." 472 | ::= { storage 11 } 473 | 474 | cacheReadHitRate OBJECT-TYPE 475 | SYNTAX Integer32 476 | MAX-ACCESS read-only 477 | STATUS current 478 | DESCRIPTION 479 | "Read hit rate percent of cache." 480 | ::= { storage 12 } 481 | 482 | cacheWriteHitRate OBJECT-TYPE 483 | SYNTAX Integer32 484 | MAX-ACCESS read-only 485 | STATUS current 486 | DESCRIPTION 487 | "Write hit rate percent of cache." 488 | ::= { storage 13 } 489 | 490 | cacheStatus OBJECT-TYPE 491 | SYNTAX Integer32 492 | MAX-ACCESS read-only 493 | STATUS current 494 | DESCRIPTION 495 | "Status of cache." 496 | ::= { storage 14 } 497 | 498 | cacheType OBJECT-TYPE 499 | SYNTAX INTEGER 500 | { 501 | readOnly (0), 502 | readWrite (1), 503 | writeOnly (2) 504 | } 505 | MAX-ACCESS read-only 506 | STATUS current 507 | DESCRIPTION 508 | "Cache Type. 0: Read-Only, 1: Read-Write, 2: Write-Only" 509 | ::= { storage 15 } 510 | 511 | cacheRAIDType OBJECT-TYPE 512 | SYNTAX OCTET STRING 513 | MAX-ACCESS read-only 514 | STATUS current 515 | DESCRIPTION 516 | "RAID Type : Single, RAID 0, RAID 1, RAID 5, etc" 517 | ::= { storage 16 } 518 | 519 | cacheMode OBJECT-TYPE 520 | SYNTAX OCTET STRING 521 | MAX-ACCESS read-only 522 | STATUS current 523 | DESCRIPTION 524 | "Random I/O, All I/O" 525 | ::= { storage 17 } 526 | 527 | iSCSIServiceEnabled OBJECT-TYPE 528 | SYNTAX INTEGER { 529 | no(0), 530 | yes(1) 531 | } 532 | MAX-ACCESS read-only 533 | STATUS current 534 | DESCRIPTION "iSCSI Service enable or not." 535 | ::= { storage 18 } 536 | 537 | iSCSIServicePort OBJECT-TYPE 538 | SYNTAX Integer32 539 | MAX-ACCESS read-only 540 | STATUS current 541 | DESCRIPTION "iSCSI Service Port." 542 | ::= { storage 23 } 543 | 544 | iSNSService OBJECT-TYPE 545 | SYNTAX INTEGER { 546 | no(0), 547 | yes(1) 548 | } 549 | MAX-ACCESS read-only 550 | STATUS current 551 | DESCRIPTION "iSNS Service." 552 | ::= { storage 24 } 553 | 554 | iSNSIP OBJECT-TYPE 555 | SYNTAX IpAddress 556 | MAX-ACCESS read-only 557 | STATUS current 558 | DESCRIPTION "iSNS IP." 559 | ::= { storage 25 } 560 | 561 | lunCount OBJECT-TYPE 562 | SYNTAX Integer32 563 | MAX-ACCESS read-only 564 | STATUS current 565 | DESCRIPTION 566 | "The number of LUNs (regardless of 567 | their current state) present on this system." 568 | ::= { storage 19 } 569 | 570 | lunTable OBJECT-TYPE 571 | SYNTAX SEQUENCE OF LUNTableEntryDef 572 | MAX-ACCESS not-accessible 573 | STATUS current 574 | DESCRIPTION 575 | "LUN table" 576 | ::= { storage 20 } 577 | 578 | lunTableEntry OBJECT-TYPE 579 | SYNTAX LUNTableEntryDef 580 | MAX-ACCESS not-accessible 581 | STATUS current 582 | DESCRIPTION 583 | "An LUN entry." 584 | INDEX { lunIndex } 585 | ::= { lunTable 1 } 586 | 587 | LUNTableEntryDef ::= 588 | SEQUENCE { 589 | lunIndex Integer32 , 590 | lunID Integer32 , 591 | lunCapacity Counter64, 592 | lunUsedPercent Integer32 , 593 | lunStatus OCTET STRING, 594 | lunName OCTET STRING, 595 | lunBackupStatus INTEGER , 596 | lunIsMap INTEGER 597 | } 598 | lunIndex OBJECT-TYPE 599 | SYNTAX Integer32 (0..4096) 600 | MAX-ACCESS not-accessible 601 | STATUS current 602 | DESCRIPTION "LUN Index." 603 | ::= { lunTableEntry 1 } 604 | 605 | lunID OBJECT-TYPE 606 | SYNTAX Integer32 607 | MAX-ACCESS read-only 608 | STATUS current 609 | DESCRIPTION "LUN ID." 610 | ::= { lunTableEntry 2 } 611 | 612 | lunCapacity OBJECT-TYPE 613 | SYNTAX Counter64 614 | MAX-ACCESS read-only 615 | STATUS current 616 | DESCRIPTION "LUN capacity in byte." 617 | ::= { lunTableEntry 3 } 618 | 619 | lunUsedPercent OBJECT-TYPE 620 | SYNTAX Integer32 621 | MAX-ACCESS read-only 622 | STATUS current 623 | DESCRIPTION "LUN used percent." 624 | ::= { lunTableEntry 4 } 625 | 626 | lunStatus OBJECT-TYPE 627 | SYNTAX OCTET STRING (SIZE (0..255)) 628 | MAX-ACCESS read-only 629 | STATUS current 630 | DESCRIPTION "LUN status." 631 | ::= { lunTableEntry 5 } 632 | 633 | lunName OBJECT-TYPE 634 | SYNTAX OCTET STRING (SIZE (0..255)) 635 | MAX-ACCESS read-only 636 | STATUS current 637 | DESCRIPTION "LUN name." 638 | ::= { lunTableEntry 6 } 639 | 640 | lunBackupStatus OBJECT-TYPE 641 | SYNTAX INTEGER { 642 | none(0), 643 | backup(1), 644 | restore(2), 645 | snapshot(3) 646 | } 647 | MAX-ACCESS read-only 648 | STATUS current 649 | DESCRIPTION "LUN backup status." 650 | ::= { lunTableEntry 7 } 651 | 652 | lunIsMap OBJECT-TYPE 653 | SYNTAX INTEGER { 654 | unmapped(0), 655 | mapped(1) 656 | } 657 | MAX-ACCESS read-only 658 | STATUS current 659 | DESCRIPTION "LUN is Mapped or not." 660 | ::= { lunTableEntry 8 } 661 | 662 | targetCount OBJECT-TYPE 663 | SYNTAX Integer32 664 | MAX-ACCESS read-only 665 | STATUS current 666 | DESCRIPTION 667 | "The number of Targets (regardless of 668 | their current state) present on this system." 669 | ::= { storage 21 } 670 | 671 | targeTable OBJECT-TYPE 672 | SYNTAX SEQUENCE OF TargeTableEntryDef 673 | MAX-ACCESS not-accessible 674 | STATUS current 675 | DESCRIPTION 676 | "A list of Target entries. The number of 677 | entries is given by the value of TargetNumber." 678 | ::= { storage 22 } 679 | 680 | targeTableEntry OBJECT-TYPE 681 | SYNTAX TargeTableEntryDef 682 | MAX-ACCESS not-accessible 683 | STATUS current 684 | DESCRIPTION 685 | "A target entry." 686 | INDEX { targetIndex } 687 | ::= { targeTable 1 } 688 | 689 | TargeTableEntryDef ::= 690 | SEQUENCE { 691 | targetIndex Integer32 , 692 | targetID Integer32 , 693 | targetName OCTET STRING, 694 | targetIQN OCTET STRING, 695 | targetServerIP OCTET STRING, 696 | targetStatus INTEGER 697 | } 698 | 699 | targetIndex OBJECT-TYPE 700 | SYNTAX Integer32 (0..4096) 701 | MAX-ACCESS not-accessible 702 | STATUS current 703 | DESCRIPTION "TargetIndex." 704 | ::= { targeTableEntry 1 } 705 | 706 | targetID OBJECT-TYPE 707 | SYNTAX Integer32 708 | MAX-ACCESS read-only 709 | STATUS current 710 | DESCRIPTION "Target ID." 711 | ::= { targeTableEntry 2 } 712 | 713 | targetName OBJECT-TYPE 714 | SYNTAX OCTET STRING (SIZE (0..255)) 715 | MAX-ACCESS read-only 716 | STATUS current 717 | DESCRIPTION "Target name." 718 | ::= { targeTableEntry 3 } 719 | 720 | targetIQN OBJECT-TYPE 721 | SYNTAX OCTET STRING (SIZE (0..255)) 722 | MAX-ACCESS read-only 723 | STATUS current 724 | DESCRIPTION "TargetIQN." 725 | ::= { targeTableEntry 4 } 726 | 727 | targetServerIP OBJECT-TYPE 728 | SYNTAX OCTET STRING (SIZE (0..255)) 729 | MAX-ACCESS read-only 730 | STATUS current 731 | DESCRIPTION "Target Server IP Address." 732 | ::= { targeTableEntry 5 } 733 | 734 | targetStatus OBJECT-TYPE 735 | SYNTAX INTEGER { 736 | offline(-1), 737 | ready(0), 738 | connected(1) 739 | } 740 | MAX-ACCESS read-only 741 | STATUS current 742 | DESCRIPTION "Target status." 743 | ::= { targeTableEntry 6 } 744 | 745 | --FC 746 | fiberChannelPortsCount OBJECT-TYPE 747 | SYNTAX Integer32 748 | MAX-ACCESS read-only 749 | STATUS current 750 | DESCRIPTION 751 | "The number of Targets (regardless of their current state) present on this system." 752 | ::= { storage 27 } 753 | 754 | fcPortsTable OBJECT-TYPE 755 | SYNTAX SEQUENCE OF FCPortsTableEntryDef 756 | MAX-ACCESS not-accessible 757 | STATUS current 758 | DESCRIPTION 759 | "A list of msatadisks. The number of 760 | entries is given by the value of msataDiskNumber." 761 | ::= { storage 28 } 762 | fcPortsTableEntry OBJECT-TYPE 763 | SYNTAX FCPortsTableEntryDef 764 | MAX-ACCESS not-accessible 765 | STATUS current 766 | DESCRIPTION 767 | "A fc ports entry." 768 | INDEX { fcPortIndex } 769 | ::= { fcPortsTable 1 } 770 | FCPortsTableEntryDef ::= 771 | SEQUENCE { 772 | fcPortIndex Integer32 , 773 | fcAdapter OCTET STRING, 774 | fcAdapterManufacturer OCTET STRING, 775 | fcStatus OCTET STRING, 776 | fcAdapterSpeed OCTET STRING, 777 | fcPortWWPN OCTET STRING, 778 | fcPortAlias OCTET STRING, 779 | fcPortInitiators Integer32 780 | } 781 | fcPortIndex OBJECT-TYPE 782 | SYNTAX Integer32 (0..4096) 783 | MAX-ACCESS not-accessible 784 | STATUS current 785 | DESCRIPTION "fcPortIndex." 786 | ::= { fcPortsTableEntry 1 } 787 | 788 | fcAdapter OBJECT-TYPE 789 | SYNTAX OCTET STRING 790 | MAX-ACCESS read-only 791 | STATUS current 792 | DESCRIPTION "fcAdapter." 793 | ::= { fcPortsTableEntry 2 } 794 | 795 | fcAdapterManufacturer OBJECT-TYPE 796 | SYNTAX OCTET STRING 797 | MAX-ACCESS read-only 798 | STATUS current 799 | DESCRIPTION "fcAdapterManufacturer." 800 | ::= { fcPortsTableEntry 3 } 801 | 802 | fcStatus OBJECT-TYPE 803 | SYNTAX OCTET STRING 804 | MAX-ACCESS read-only 805 | STATUS current 806 | DESCRIPTION "fcStatus." 807 | ::= { fcPortsTableEntry 4 } 808 | 809 | fcAdapterSpeed OBJECT-TYPE 810 | SYNTAX OCTET STRING 811 | MAX-ACCESS read-only 812 | STATUS current 813 | DESCRIPTION "fcAdapterSpeed." 814 | ::= { fcPortsTableEntry 5 } 815 | 816 | fcPortWWPN OBJECT-TYPE 817 | SYNTAX OCTET STRING 818 | MAX-ACCESS read-only 819 | STATUS current 820 | DESCRIPTION "fcPortWWPN." 821 | ::= { fcPortsTableEntry 6 } 822 | 823 | fcPortAlias OBJECT-TYPE 824 | SYNTAX OCTET STRING 825 | MAX-ACCESS read-only 826 | STATUS current 827 | DESCRIPTION "fcPortAlias." 828 | ::= { fcPortsTableEntry 7 } 829 | 830 | fcPortInitiators OBJECT-TYPE 831 | SYNTAX Integer32 832 | MAX-ACCESS read-only 833 | STATUS current 834 | DESCRIPTION "fcPortInitiators." 835 | ::= { fcPortsTableEntry 8 } 836 | 837 | fcPortGroupCount OBJECT-TYPE 838 | SYNTAX Integer32 839 | MAX-ACCESS read-only 840 | STATUS current 841 | DESCRIPTION 842 | "The number of Targets (regardless of their current state) present on this system." 843 | ::= { storage 29 } 844 | 845 | fcPortGroupTable OBJECT-TYPE 846 | SYNTAX SEQUENCE OF FCPortsGroupTableEntryDef 847 | MAX-ACCESS not-accessible 848 | STATUS current 849 | DESCRIPTION 850 | "A list of msatadisks. The number of 851 | entries is given by the value of msataDiskNumber." 852 | ::= { storage 30 } 853 | fcPortGroupTableEntry OBJECT-TYPE 854 | SYNTAX FCPortsGroupTableEntryDef 855 | MAX-ACCESS not-accessible 856 | STATUS current 857 | DESCRIPTION 858 | "A fc ports entry." 859 | INDEX { fcPortIndex } 860 | ::= { fcPortGroupTable 1 } 861 | FCPortsGroupTableEntryDef ::= 862 | SEQUENCE { 863 | fcPortGrouptIndex Integer32, 864 | fcPortGroupName OCTET STRING, 865 | fcPortGroupType OCTET STRING, 866 | fcPortGroupStorageCapacity Counter64, 867 | fcPortGroupStorageAllocation Counter64, 868 | fcPortGroupStatus OCTET STRING 869 | } 870 | fcPortGrouptIndex OBJECT-TYPE 871 | SYNTAX Integer32 (0..4096) 872 | MAX-ACCESS not-accessible 873 | STATUS current 874 | DESCRIPTION "fcPortGrouptIndex." 875 | ::= { fcPortGroupTableEntry 1 } 876 | 877 | fcPortGroupName OBJECT-TYPE 878 | SYNTAX OCTET STRING 879 | MAX-ACCESS read-only 880 | STATUS current 881 | DESCRIPTION "fcPortGroupName." 882 | ::= { fcPortGroupTableEntry 2 } 883 | 884 | fcPortGroupType OBJECT-TYPE 885 | SYNTAX OCTET STRING 886 | MAX-ACCESS read-only 887 | STATUS current 888 | DESCRIPTION "fcPortGroupType." 889 | ::= { fcPortGroupTableEntry 3 } 890 | 891 | fcPortGroupStorageCapacity OBJECT-TYPE 892 | SYNTAX Counter64 893 | MAX-ACCESS read-only 894 | STATUS current 895 | DESCRIPTION "fcPortGroupStorageCapacity." 896 | ::= { fcPortGroupTableEntry 4 } 897 | 898 | fcPortGroupStorageAllocation OBJECT-TYPE 899 | SYNTAX Counter64 900 | MAX-ACCESS read-only 901 | STATUS current 902 | DESCRIPTION "fcPortGroupStorageAllocation." 903 | ::= { fcPortGroupTableEntry 5 } 904 | 905 | fcPortGroupStatus OBJECT-TYPE 906 | SYNTAX OCTET STRING 907 | MAX-ACCESS read-only 908 | STATUS current 909 | DESCRIPTION "fcPortGroupStatus." 910 | ::= { fcPortGroupTableEntry 6 } 911 | 912 | -- msataDiskTable 913 | msataDiskCount OBJECT-TYPE 914 | SYNTAX Integer32 915 | MAX-ACCESS read-only 916 | STATUS current 917 | DESCRIPTION 918 | "The number of msatadisks (regardless of 919 | their current state) present on this system." 920 | ::= { storage 31 } 921 | 922 | msataDiskTable OBJECT-TYPE 923 | SYNTAX SEQUENCE OF MsataDiskTableEntryDef 924 | MAX-ACCESS not-accessible 925 | STATUS current 926 | DESCRIPTION 927 | "A list of msatadisks. The number of 928 | entries is given by the value of msataDiskNumber." 929 | ::= { storage 32 } 930 | 931 | msataDiskTableEntry OBJECT-TYPE 932 | SYNTAX MsataDiskTableEntryDef 933 | MAX-ACCESS not-accessible 934 | STATUS current 935 | DESCRIPTION 936 | "A disk entry." 937 | INDEX { msataDiskIndex } 938 | ::= { msataDiskTable 1 } 939 | 940 | MsataDiskTableEntryDef ::= 941 | SEQUENCE { 942 | msataDiskIndex Integer32 , 943 | msataDiskID Integer32 , 944 | msataDiskEnclosureID Integer32 , 945 | msataDiskSummary OCTET STRING, 946 | msataDiskSmartInfo INTEGER , 947 | msataDiskTemperture Integer32 , 948 | msataDiskGlobalSpare INTEGER , 949 | msataDiskModel OCTET STRING, 950 | msataDiskCapacity Counter64 951 | } 952 | msataDiskIndex OBJECT-TYPE 953 | SYNTAX Integer32 (0..4096) 954 | MAX-ACCESS not-accessible 955 | STATUS current 956 | DESCRIPTION "DiskIndex." 957 | ::= { msataDiskTableEntry 1 } 958 | 959 | msataDiskID OBJECT-TYPE 960 | SYNTAX Integer32 961 | MAX-ACCESS read-only 962 | STATUS current 963 | DESCRIPTION "mSATA DiskID." 964 | ::= { msataDiskTableEntry 2 } 965 | 966 | msataDiskEnclosureID OBJECT-TYPE 967 | SYNTAX Integer32 968 | MAX-ACCESS read-only 969 | STATUS current 970 | DESCRIPTION "mSATA disk EnclosureID." 971 | ::= { msataDiskTableEntry 3 } 972 | 973 | msataDiskSummary OBJECT-TYPE 974 | SYNTAX OCTET STRING (SIZE (0..255)) 975 | MAX-ACCESS read-only 976 | STATUS current 977 | DESCRIPTION "mSATA Disk status summary. 'Good',''Warning','Abnormal'" 978 | ::= { msataDiskTableEntry 4 } 979 | 980 | msataDiskSmartInfo OBJECT-TYPE 981 | SYNTAX INTEGER { 982 | error(-1), 983 | good(0), 984 | warning(1), 985 | abnormal(2) 986 | } 987 | MAX-ACCESS read-only 988 | STATUS current 989 | DESCRIPTION "mSATA Disk smart information." 990 | ::= { msataDiskTableEntry 5 } 991 | 992 | msataDiskTemperture OBJECT-TYPE 993 | SYNTAX Integer32 994 | MAX-ACCESS read-only 995 | STATUS current 996 | DESCRIPTION "mSATA Disk temperture." 997 | ::= { msataDiskTableEntry 6 } 998 | 999 | msataDiskGlobalSpare OBJECT-TYPE 1000 | SYNTAX INTEGER { 1001 | no(0), 1002 | yes(1) 1003 | } 1004 | MAX-ACCESS read-only 1005 | STATUS current 1006 | DESCRIPTION "mSATA Disk global spare." 1007 | ::= { msataDiskTableEntry 7 } 1008 | 1009 | msataDiskModel OBJECT-TYPE 1010 | SYNTAX OCTET STRING (SIZE (0..255)) 1011 | MAX-ACCESS read-only 1012 | STATUS current 1013 | DESCRIPTION "mSATA Disk model." 1014 | ::= { msataDiskTableEntry 8 } 1015 | 1016 | msataDiskCapacity OBJECT-TYPE 1017 | SYNTAX Counter64 1018 | MAX-ACCESS read-only 1019 | STATUS current 1020 | DESCRIPTION "mSATA Disk Capacity in bytes." 1021 | ::= { msataDiskTableEntry 9 } 1022 | 1023 | enclosurelCount OBJECT-TYPE 1024 | SYNTAX Integer32 1025 | MAX-ACCESS read-only 1026 | STATUS current 1027 | DESCRIPTION 1028 | "The number of Enclosures (regardless of 1029 | their current state) present on this system." 1030 | ::= { storage 33 } 1031 | 1032 | enclosureTable OBJECT-TYPE 1033 | SYNTAX SEQUENCE OF EnclosureTableEntryDef 1034 | MAX-ACCESS not-accessible 1035 | STATUS current 1036 | DESCRIPTION 1037 | "A list of enclosures. The number of 1038 | entries is given by the value of EnclosureNumber." 1039 | ::= { storage 34 } 1040 | enclosureTableEntry OBJECT-TYPE 1041 | SYNTAX EnclosureTableEntryDef 1042 | MAX-ACCESS not-accessible 1043 | STATUS current 1044 | DESCRIPTION 1045 | "An enclosure entry." 1046 | INDEX { enclosureIndex } 1047 | ::= { enclosureTable 1 } 1048 | EnclosureTableEntryDef ::= 1049 | SEQUENCE { 1050 | enclosureIndex Integer32 , 1051 | enclosureID Integer32 , 1052 | enclosureModel OCTET STRING, 1053 | enclosureSerialNum OCTET STRING, 1054 | enclosureSlot Integer32 , 1055 | enclosureName OCTET STRING, 1056 | enclosureSystemTemp Integer32 1057 | } 1058 | 1059 | enclosureIndex OBJECT-TYPE 1060 | SYNTAX Integer32 (0..4096) 1061 | MAX-ACCESS not-accessible 1062 | STATUS current 1063 | DESCRIPTION "EnclosureIndex." 1064 | ::= { enclosureTableEntry 1 } 1065 | 1066 | enclosureID OBJECT-TYPE 1067 | SYNTAX Integer32 1068 | MAX-ACCESS read-only 1069 | STATUS current 1070 | DESCRIPTION "enclosureID." 1071 | ::= { enclosureTableEntry 2 } 1072 | 1073 | enclosureModel OBJECT-TYPE 1074 | SYNTAX OCTET STRING (SIZE (0..255)) 1075 | MAX-ACCESS read-only 1076 | STATUS current 1077 | DESCRIPTION "EnclosureModel." 1078 | ::= { enclosureTableEntry 3 } 1079 | 1080 | enclosureSerialNum OBJECT-TYPE 1081 | SYNTAX OCTET STRING (SIZE (0..255)) 1082 | MAX-ACCESS read-only 1083 | STATUS current 1084 | DESCRIPTION "EnclosureSerialNum." 1085 | ::= { enclosureTableEntry 4 } 1086 | 1087 | enclosureSlot OBJECT-TYPE 1088 | SYNTAX Integer32 1089 | MAX-ACCESS read-only 1090 | STATUS current 1091 | DESCRIPTION "EnclosureSlot." 1092 | ::= { enclosureTableEntry 5 } 1093 | 1094 | enclosureName OBJECT-TYPE 1095 | SYNTAX OCTET STRING 1096 | MAX-ACCESS read-only 1097 | STATUS current 1098 | DESCRIPTION "Enclosure Name." 1099 | ::= { enclosureTableEntry 6 } 1100 | 1101 | enclosureSystemTemp OBJECT-TYPE 1102 | SYNTAX Integer32 1103 | MAX-ACCESS read-only 1104 | STATUS current 1105 | DESCRIPTION "Enclosure System temperature in centigrade." 1106 | ::= { enclosureTableEntry 7 } 1107 | 1108 | 1109 | 1110 | -- diskSMARTInfoTable 1111 | 1112 | diskSMARTInfoTable OBJECT-TYPE 1113 | SYNTAX SEQUENCE OF DiskSMARTInfoTableEntryDef 1114 | MAX-ACCESS not-accessible 1115 | STATUS current 1116 | DESCRIPTION 1117 | "Disk smart information table." 1118 | ::= { storage 3 } 1119 | diskSMARTInfoTableEntry OBJECT-TYPE 1120 | SYNTAX DiskSMARTInfoTableEntryDef 1121 | MAX-ACCESS not-accessible 1122 | STATUS current 1123 | DESCRIPTION 1124 | "A smartinfo entry." 1125 | INDEX { diskSMARTInfoIndex } 1126 | ::= { diskSMARTInfoTable 1 } 1127 | DiskSMARTInfoTableEntryDef ::= 1128 | SEQUENCE { 1129 | diskSMARTInfoIndex Integer32 , 1130 | diskSMARTInfoDeviceName OCTET STRING, 1131 | diskSMARTInfoAttributeName OCTET STRING, 1132 | diskSMARTInfoAttributeID Integer32 , 1133 | diskSMARTInfoAttributeCurrent Integer32 , 1134 | diskSMARTInfoAttributeWorst Integer32 , 1135 | diskSMARTInfoAttributeThreshold Integer32 , 1136 | diskSMARTInfoAttributeRAW Integer32 , 1137 | diskSMARTInfoAttributeStatus OCTET STRING 1138 | } 1139 | diskSMARTInfoIndex OBJECT-TYPE 1140 | SYNTAX Integer32 (0..2147483647) 1141 | MAX-ACCESS not-accessible 1142 | STATUS current 1143 | DESCRIPTION "diskSMARTInfoIndex." 1144 | ::= { diskSMARTInfoTableEntry 1 } 1145 | 1146 | diskSMARTInfoDeviceName OBJECT-TYPE 1147 | SYNTAX OCTET STRING 1148 | MAX-ACCESS read-only 1149 | STATUS current 1150 | DESCRIPTION "diskSMARTInfoDeviceName." 1151 | ::= { diskSMARTInfoTableEntry 2 } 1152 | 1153 | diskSMARTInfoAttributeName OBJECT-TYPE 1154 | SYNTAX OCTET STRING 1155 | MAX-ACCESS read-only 1156 | STATUS current 1157 | DESCRIPTION "diskSMARTInfoAttributeName." 1158 | ::= { diskSMARTInfoTableEntry 3 } 1159 | 1160 | diskSMARTInfoAttributeID OBJECT-TYPE 1161 | SYNTAX Integer32 1162 | MAX-ACCESS read-only 1163 | STATUS current 1164 | DESCRIPTION "diskSMARTInfoAttributeID." 1165 | ::= { diskSMARTInfoTableEntry 4 } 1166 | 1167 | diskSMARTInfoAttributeCurrent OBJECT-TYPE 1168 | SYNTAX Integer32 1169 | MAX-ACCESS read-only 1170 | STATUS current 1171 | DESCRIPTION "diskSMARTInfoAttributeCurrent." 1172 | ::= { diskSMARTInfoTableEntry 5 } 1173 | 1174 | diskSMARTInfoAttributeWorst OBJECT-TYPE 1175 | SYNTAX Integer32 1176 | MAX-ACCESS read-only 1177 | STATUS current 1178 | DESCRIPTION "diskSMARTInfoAttributeCurrent." 1179 | ::= { diskSMARTInfoTableEntry 6 } 1180 | 1181 | diskSMARTInfoAttributeThreshold OBJECT-TYPE 1182 | SYNTAX Integer32 1183 | MAX-ACCESS read-only 1184 | STATUS current 1185 | DESCRIPTION "diskSMARTInfoAttributeCurrent." 1186 | ::= { diskSMARTInfoTableEntry 7} 1187 | 1188 | diskSMARTInfoAttributeRAW OBJECT-TYPE 1189 | SYNTAX Integer32 1190 | MAX-ACCESS read-only 1191 | STATUS current 1192 | DESCRIPTION "diskSMARTInfoAttributeCurrent." 1193 | ::= { diskSMARTInfoTableEntry 8} 1194 | 1195 | diskSMARTInfoAttributeStatus OBJECT-TYPE 1196 | SYNTAX OCTET STRING 1197 | MAX-ACCESS read-only 1198 | STATUS current 1199 | DESCRIPTION "diskSMARTInfoAttributeCurrent." 1200 | ::= { diskSMARTInfoTableEntry 9} 1201 | 1202 | -- JBOD 1203 | jBODInfo OBJECT IDENTIFIER ::= { storage 26 } 1204 | 1205 | jBODBitmap OBJECT-TYPE 1206 | SYNTAX OCTET STRING 1207 | MAX-ACCESS read-only 1208 | STATUS current 1209 | DESCRIPTION 1210 | "The bitmap of JBOD (regardless of 1211 | their current state) present on this system." 1212 | ::= { jBODInfo 1 } 1213 | 1214 | 1215 | jBODInfos OBJECT-TYPE 1216 | SYNTAX SEQUENCE OF JBODInfosEntryDef 1217 | MAX-ACCESS not-accessible 1218 | STATUS current 1219 | DESCRIPTION 1220 | "JBOD information." 1221 | ::= { jBODInfo 2 } 1222 | jBODInfosEntry OBJECT-TYPE 1223 | SYNTAX JBODInfosEntryDef 1224 | MAX-ACCESS not-accessible 1225 | STATUS current 1226 | DESCRIPTION 1227 | "JBOD infomation entry" 1228 | INDEX { jBODid } 1229 | ::= { jBODInfos 1 } 1230 | 1231 | JBODInfosEntryDef ::= 1232 | SEQUENCE { 1233 | jBODid Integer32 , 1234 | jBODHdNumber Integer32 1235 | } 1236 | 1237 | jBODid OBJECT-TYPE 1238 | SYNTAX Integer32 (0..128) 1239 | MAX-ACCESS read-only 1240 | STATUS current 1241 | DESCRIPTION 1242 | "JBOD ID" 1243 | ::= { jBODInfosEntry 1 } 1244 | 1245 | jBODHdNumber OBJECT-TYPE 1246 | SYNTAX Integer32 1247 | MAX-ACCESS read-only 1248 | STATUS current 1249 | DESCRIPTION 1250 | "JBOD port." 1251 | ::= { jBODInfosEntry 2 } 1252 | 1253 | jBODHdTable1 OBJECT-TYPE 1254 | SYNTAX SEQUENCE OF JBODHdEntry1Def 1255 | MAX-ACCESS not-accessible 1256 | STATUS current 1257 | DESCRIPTION 1258 | "JBOD table" 1259 | ::= { jBODInfo 3 } 1260 | jBODHdEntry1 OBJECT-TYPE 1261 | SYNTAX JBODHdEntry1Def 1262 | MAX-ACCESS not-accessible 1263 | STATUS current 1264 | DESCRIPTION 1265 | "JBOD entry" 1266 | INDEX { jBODHdIndex1 } 1267 | ::= { jBODHdTable1 1 } 1268 | JBODHdEntry1Def ::= 1269 | SEQUENCE { 1270 | jBODHdIndex1 Integer32 , 1271 | jBODHdDescr1 OCTET STRING, 1272 | jBODHdTemperature1 OCTET STRING, 1273 | jBODHdStatus1 INTEGER , 1274 | jBODHdModel1 OCTET STRING, 1275 | jBODHdCapacity1 OCTET STRING, 1276 | jBODHdSmartInfo1 OCTET STRING 1277 | } 1278 | jBODHdIndex1 OBJECT-TYPE 1279 | SYNTAX Integer32 (0..512) 1280 | MAX-ACCESS not-accessible 1281 | STATUS current 1282 | DESCRIPTION 1283 | "JBOD table index" 1284 | ::= { jBODHdEntry1 1 } 1285 | jBODHdDescr1 OBJECT-TYPE 1286 | SYNTAX OCTET STRING (SIZE (0..255)) 1287 | MAX-ACCESS read-only 1288 | STATUS current 1289 | DESCRIPTION 1290 | "JBOD description" 1291 | ::= { jBODHdEntry1 2 } 1292 | jBODHdTemperature1 OBJECT-TYPE 1293 | SYNTAX OCTET STRING 1294 | MAX-ACCESS read-only 1295 | STATUS current 1296 | DESCRIPTION 1297 | "JBOD disk temperature." 1298 | ::= { jBODHdEntry1 3 } 1299 | jBODHdStatus1 OBJECT-TYPE 1300 | SYNTAX INTEGER { 1301 | rwError(-9), 1302 | invalid(-6), 1303 | noDisk(-5), 1304 | unknown(-4), 1305 | ready(0) 1306 | } 1307 | MAX-ACCESS read-only 1308 | STATUS current 1309 | DESCRIPTION 1310 | "JBOD disk status" 1311 | ::= { jBODHdEntry1 4 } 1312 | 1313 | jBODHdModel1 OBJECT-TYPE 1314 | SYNTAX OCTET STRING 1315 | MAX-ACCESS read-only 1316 | STATUS current 1317 | DESCRIPTION "JBOD disk model" 1318 | ::= { jBODHdEntry1 5 } 1319 | 1320 | jBODHdCapacity1 OBJECT-TYPE 1321 | SYNTAX OCTET STRING 1322 | MAX-ACCESS read-only 1323 | STATUS current 1324 | DESCRIPTION "JBOD disk capacity." 1325 | ::= { jBODHdEntry1 6 } 1326 | jBODHdSmartInfo1 OBJECT-TYPE 1327 | SYNTAX OCTET STRING 1328 | MAX-ACCESS read-only 1329 | STATUS current 1330 | DESCRIPTION "JBOD disk SMART information." 1331 | ::= { jBODHdEntry1 7 } 1332 | 1333 | jBODHdTable2 OBJECT-TYPE 1334 | SYNTAX SEQUENCE OF JBODHdEntry2Def 1335 | MAX-ACCESS not-accessible 1336 | STATUS current 1337 | DESCRIPTION 1338 | "JBOD table" 1339 | ::= { jBODInfo 4} 1340 | jBODHdEntry2 OBJECT-TYPE 1341 | SYNTAX JBODHdEntry2Def 1342 | MAX-ACCESS not-accessible 1343 | STATUS current 1344 | DESCRIPTION 1345 | "JBOD entry" 1346 | INDEX { jBODHdIndex2 } 1347 | ::= { jBODHdTable2 1 } 1348 | JBODHdEntry2Def ::= 1349 | SEQUENCE { 1350 | jBODHdIndex2 Integer32 , 1351 | jBODHdDescr2 OCTET STRING, 1352 | jBODHdTemperature2 OCTET STRING, 1353 | jBODHdStatus2 INTEGER , 1354 | jBODHdModel2 OCTET STRING, 1355 | jBODHdCapacity2 OCTET STRING, 1356 | jBODHdSmartInfo2 OCTET STRING 1357 | } 1358 | jBODHdIndex2 OBJECT-TYPE 1359 | SYNTAX Integer32 (0..512) 1360 | MAX-ACCESS not-accessible 1361 | STATUS current 1362 | DESCRIPTION 1363 | "JBOD table index" 1364 | ::= { jBODHdEntry2 1 } 1365 | jBODHdDescr2 OBJECT-TYPE 1366 | SYNTAX OCTET STRING (SIZE (0..255)) 1367 | MAX-ACCESS read-only 1368 | STATUS current 1369 | DESCRIPTION 1370 | "JBOD disk description." 1371 | ::= { jBODHdEntry2 2 } 1372 | jBODHdTemperature2 OBJECT-TYPE 1373 | SYNTAX OCTET STRING 1374 | MAX-ACCESS read-only 1375 | STATUS current 1376 | DESCRIPTION 1377 | "JBOD disk temperature." 1378 | ::= { jBODHdEntry2 3 } 1379 | jBODHdStatus2 OBJECT-TYPE 1380 | SYNTAX INTEGER { 1381 | rwError(-9), 1382 | invalid(-6), 1383 | noDisk(-5), 1384 | unknown(-4), 1385 | ready(0) 1386 | } 1387 | MAX-ACCESS read-only 1388 | STATUS current 1389 | DESCRIPTION 1390 | "JBOD disk status" 1391 | ::= { jBODHdEntry2 4 } 1392 | jBODHdModel2 OBJECT-TYPE 1393 | SYNTAX OCTET STRING 1394 | MAX-ACCESS read-only 1395 | STATUS current 1396 | DESCRIPTION "JBOD disk model." 1397 | ::= { jBODHdEntry2 5 } 1398 | jBODHdCapacity2 OBJECT-TYPE 1399 | SYNTAX OCTET STRING 1400 | MAX-ACCESS read-only 1401 | STATUS current 1402 | DESCRIPTION "JBOD disk capacity." 1403 | ::= { jBODHdEntry2 6 } 1404 | jBODHdSmartInfo2 OBJECT-TYPE 1405 | SYNTAX OCTET STRING 1406 | MAX-ACCESS read-only 1407 | STATUS current 1408 | DESCRIPTION "JBOD disk SMART information." 1409 | ::= { jBODHdEntry2 7 } 1410 | 1411 | jBODHdTable3 OBJECT-TYPE 1412 | SYNTAX SEQUENCE OF JBODHdEntry3Def 1413 | MAX-ACCESS not-accessible 1414 | STATUS current 1415 | DESCRIPTION 1416 | "JBOD table" 1417 | ::= { jBODInfo 5 } 1418 | 1419 | jBODHdEntry3 OBJECT-TYPE 1420 | SYNTAX JBODHdEntry3Def 1421 | MAX-ACCESS not-accessible 1422 | STATUS current 1423 | DESCRIPTION 1424 | "JBOD entry" 1425 | INDEX { jBODHdIndex3 } 1426 | ::= { jBODHdTable3 1 } 1427 | JBODHdEntry3Def ::= 1428 | SEQUENCE { 1429 | jBODHdIndex3 Integer32 , 1430 | jBODHdDescr3 OCTET STRING, 1431 | jBODHdTemperature3 OCTET STRING, 1432 | jBODHdStatus3 INTEGER , 1433 | jBODHdModel3 OCTET STRING, 1434 | jBODHdCapacity3 OCTET STRING, 1435 | jBODHdSmartInfo3 OCTET STRING 1436 | } 1437 | jBODHdIndex3 OBJECT-TYPE 1438 | SYNTAX Integer32 (0..512) 1439 | MAX-ACCESS not-accessible 1440 | STATUS current 1441 | DESCRIPTION 1442 | "JBOD table index" 1443 | ::= { jBODHdEntry3 1 } 1444 | jBODHdDescr3 OBJECT-TYPE 1445 | SYNTAX OCTET STRING (SIZE (0..255)) 1446 | MAX-ACCESS read-only 1447 | STATUS current 1448 | DESCRIPTION 1449 | "JBOD disk description" 1450 | ::= { jBODHdEntry3 2 } 1451 | jBODHdTemperature3 OBJECT-TYPE 1452 | SYNTAX OCTET STRING 1453 | MAX-ACCESS read-only 1454 | STATUS current 1455 | DESCRIPTION 1456 | "JBOD disk temperature." 1457 | ::= { jBODHdEntry3 3 } 1458 | jBODHdStatus3 OBJECT-TYPE 1459 | SYNTAX INTEGER { 1460 | rwError(-9), 1461 | invalid(-6), 1462 | noDisk(-5), 1463 | unknown(-4), 1464 | ready(0) 1465 | } 1466 | MAX-ACCESS read-only 1467 | STATUS current 1468 | DESCRIPTION 1469 | "JBOD disk status." 1470 | ::= { jBODHdEntry3 4 } 1471 | jBODHdModel3 OBJECT-TYPE 1472 | SYNTAX OCTET STRING 1473 | MAX-ACCESS read-only 1474 | STATUS current 1475 | DESCRIPTION "JBOD disk model." 1476 | ::= { jBODHdEntry3 5 } 1477 | jBODHdCapacity3 OBJECT-TYPE 1478 | SYNTAX OCTET STRING 1479 | MAX-ACCESS read-only 1480 | STATUS current 1481 | DESCRIPTION "JBOD disk capacity." 1482 | ::= { jBODHdEntry3 6 } 1483 | jBODHdSmartInfo3 OBJECT-TYPE 1484 | SYNTAX OCTET STRING 1485 | MAX-ACCESS read-only 1486 | STATUS current 1487 | DESCRIPTION "JBOD disk SMART information." 1488 | ::= { jBODHdEntry3 7 } 1489 | 1490 | jBODHdTable4 OBJECT-TYPE 1491 | SYNTAX SEQUENCE OF JBODHdEntry4Def 1492 | MAX-ACCESS not-accessible 1493 | STATUS current 1494 | DESCRIPTION 1495 | "A list of interface entries. The number of 1496 | entries is given by the value of IfNumber." 1497 | ::= { jBODInfo 6 } 1498 | 1499 | jBODHdEntry4 OBJECT-TYPE 1500 | SYNTAX JBODHdEntry4Def 1501 | MAX-ACCESS not-accessible 1502 | STATUS current 1503 | DESCRIPTION 1504 | "JBOD disk entry" 1505 | INDEX { jBODHdIndex4 } 1506 | ::= { jBODHdTable4 1 } 1507 | JBODHdEntry4Def ::= 1508 | SEQUENCE { 1509 | jBODHdIndex4 Integer32 , 1510 | jBODHdDescr4 OCTET STRING, 1511 | jBODHdTemperature4 OCTET STRING, 1512 | jBODHdStatus4 INTEGER , 1513 | jBODHdModel4 OCTET STRING, 1514 | jBODHdCapacity4 OCTET STRING, 1515 | jBODHdSmartInfo4 OCTET STRING 1516 | } 1517 | jBODHdIndex4 OBJECT-TYPE 1518 | SYNTAX Integer32 (0..512) 1519 | MAX-ACCESS not-accessible 1520 | STATUS current 1521 | DESCRIPTION 1522 | "JBOD table index" 1523 | ::= { jBODHdEntry4 1 } 1524 | jBODHdDescr4 OBJECT-TYPE 1525 | SYNTAX OCTET STRING (SIZE (0..255)) 1526 | MAX-ACCESS read-only 1527 | STATUS current 1528 | DESCRIPTION 1529 | "JBOD disk description." 1530 | ::= { jBODHdEntry4 2 } 1531 | jBODHdTemperature4 OBJECT-TYPE 1532 | SYNTAX OCTET STRING 1533 | MAX-ACCESS read-only 1534 | STATUS current 1535 | DESCRIPTION 1536 | "JBOD disk temperature." 1537 | ::= { jBODHdEntry4 3 } 1538 | jBODHdStatus4 OBJECT-TYPE 1539 | SYNTAX INTEGER { 1540 | rwError(-9), 1541 | invalid(-6), 1542 | noDisk(-5), 1543 | unknown(-4), 1544 | ready(0) 1545 | } 1546 | MAX-ACCESS read-only 1547 | STATUS current 1548 | DESCRIPTION 1549 | "JBOD disk status" 1550 | ::= { jBODHdEntry4 4 } 1551 | jBODHdModel4 OBJECT-TYPE 1552 | SYNTAX OCTET STRING 1553 | MAX-ACCESS read-only 1554 | STATUS current 1555 | DESCRIPTION "JBOD disk model." 1556 | ::= { jBODHdEntry4 5 } 1557 | jBODHdCapacity4 OBJECT-TYPE 1558 | SYNTAX OCTET STRING 1559 | MAX-ACCESS read-only 1560 | STATUS current 1561 | DESCRIPTION "JBOD disk capacity." 1562 | ::= { jBODHdEntry4 6 } 1563 | jBODHdSmartInfo4 OBJECT-TYPE 1564 | SYNTAX OCTET STRING 1565 | MAX-ACCESS read-only 1566 | STATUS current 1567 | DESCRIPTION "JBOD disk SMART information." 1568 | ::= { jBODHdEntry4 7 } 1569 | 1570 | jBODHdTable5 OBJECT-TYPE 1571 | SYNTAX SEQUENCE OF JBODHdEntry5Def 1572 | MAX-ACCESS not-accessible 1573 | STATUS current 1574 | DESCRIPTION 1575 | "JBOD table" 1576 | ::= { jBODInfo 7 } 1577 | 1578 | jBODHdEntry5 OBJECT-TYPE 1579 | SYNTAX JBODHdEntry5Def 1580 | MAX-ACCESS not-accessible 1581 | STATUS current 1582 | DESCRIPTION 1583 | "JBOD disk entry" 1584 | INDEX { jBODHdIndex5 } 1585 | ::= { jBODHdTable5 1 } 1586 | JBODHdEntry5Def ::= 1587 | SEQUENCE { 1588 | jBODHdIndex5 Integer32 , 1589 | jBODHdDescr5 OCTET STRING, 1590 | jBODHdTemperature5 OCTET STRING, 1591 | jBODHdStatus5 INTEGER , 1592 | jBODHdModel5 OCTET STRING, 1593 | jBODHdCapacity5 OCTET STRING, 1594 | jBODHdSmartInfo5 OCTET STRING 1595 | } 1596 | jBODHdIndex5 OBJECT-TYPE 1597 | SYNTAX Integer32 (0..512) 1598 | MAX-ACCESS not-accessible 1599 | STATUS current 1600 | DESCRIPTION 1601 | "JBOD table index." 1602 | ::= { jBODHdEntry5 1 } 1603 | jBODHdDescr5 OBJECT-TYPE 1604 | SYNTAX OCTET STRING (SIZE (0..255)) 1605 | MAX-ACCESS read-only 1606 | STATUS current 1607 | DESCRIPTION 1608 | "JBOD disk desription." 1609 | ::= { jBODHdEntry5 2 } 1610 | jBODHdTemperature5 OBJECT-TYPE 1611 | SYNTAX OCTET STRING 1612 | MAX-ACCESS read-only 1613 | STATUS current 1614 | DESCRIPTION 1615 | "Hard disk temperature." 1616 | ::= { jBODHdEntry5 3 } 1617 | jBODHdStatus5 OBJECT-TYPE 1618 | SYNTAX INTEGER { 1619 | rwError(-9), 1620 | invalid(-6), 1621 | noDisk(-5), 1622 | unknown(-4), 1623 | ready(0) 1624 | } 1625 | MAX-ACCESS read-only 1626 | STATUS current 1627 | DESCRIPTION 1628 | "JBOD disk status." 1629 | ::= { jBODHdEntry5 4 } 1630 | jBODHdModel5 OBJECT-TYPE 1631 | SYNTAX OCTET STRING 1632 | MAX-ACCESS read-only 1633 | STATUS current 1634 | DESCRIPTION "JBOD disk model." 1635 | ::= { jBODHdEntry5 5 } 1636 | jBODHdCapacity5 OBJECT-TYPE 1637 | SYNTAX OCTET STRING 1638 | MAX-ACCESS read-only 1639 | STATUS current 1640 | DESCRIPTION "JBOD disk capacity." 1641 | ::= { jBODHdEntry5 6 } 1642 | jBODHdSmartInfo5 OBJECT-TYPE 1643 | SYNTAX OCTET STRING 1644 | MAX-ACCESS read-only 1645 | STATUS current 1646 | DESCRIPTION "JBOD disk SMART information." 1647 | ::= { jBODHdEntry5 7 } 1648 | 1649 | jBODHdTable6 OBJECT-TYPE 1650 | SYNTAX SEQUENCE OF JBODHdEntry6Def 1651 | MAX-ACCESS not-accessible 1652 | STATUS current 1653 | DESCRIPTION 1654 | "JBOD table" 1655 | ::= { jBODInfo 8 } 1656 | 1657 | jBODHdEntry6 OBJECT-TYPE 1658 | SYNTAX JBODHdEntry6Def 1659 | MAX-ACCESS not-accessible 1660 | STATUS current 1661 | DESCRIPTION 1662 | "JBOD disk entry" 1663 | INDEX { jBODHdIndex6 } 1664 | ::= { jBODHdTable6 1 } 1665 | JBODHdEntry6Def ::= 1666 | SEQUENCE { 1667 | jBODHdIndex6 Integer32 , 1668 | jBODHdDescr6 OCTET STRING, 1669 | jBODHdTemperature6 OCTET STRING, 1670 | jBODHdStatus6 INTEGER , 1671 | jBODHdModel6 OCTET STRING, 1672 | jBODHdCapacity6 OCTET STRING, 1673 | jBODHdSmartInfo6 OCTET STRING 1674 | } 1675 | jBODHdIndex6 OBJECT-TYPE 1676 | SYNTAX Integer32 (0..512) 1677 | MAX-ACCESS not-accessible 1678 | STATUS current 1679 | DESCRIPTION 1680 | "JBOD table index" 1681 | ::= { jBODHdEntry6 1 } 1682 | jBODHdDescr6 OBJECT-TYPE 1683 | SYNTAX OCTET STRING (SIZE (0..255)) 1684 | MAX-ACCESS read-only 1685 | STATUS current 1686 | DESCRIPTION 1687 | "JBOD disk description." 1688 | ::= { jBODHdEntry6 2 } 1689 | jBODHdTemperature6 OBJECT-TYPE 1690 | SYNTAX OCTET STRING 1691 | MAX-ACCESS read-only 1692 | STATUS current 1693 | DESCRIPTION 1694 | "JBOD disk temperature." 1695 | ::= { jBODHdEntry6 3 } 1696 | jBODHdStatus6 OBJECT-TYPE 1697 | SYNTAX INTEGER { 1698 | rwError(-9), 1699 | invalid(-6), 1700 | noDisk(-5), 1701 | unknown(-4), 1702 | ready(0) 1703 | } 1704 | MAX-ACCESS read-only 1705 | STATUS current 1706 | DESCRIPTION 1707 | "JBOD status." 1708 | ::= { jBODHdEntry6 4 } 1709 | jBODHdModel6 OBJECT-TYPE 1710 | SYNTAX OCTET STRING 1711 | MAX-ACCESS read-only 1712 | STATUS current 1713 | DESCRIPTION "JBOD disk model." 1714 | ::= { jBODHdEntry6 5 } 1715 | jBODHdCapacity6 OBJECT-TYPE 1716 | SYNTAX OCTET STRING 1717 | MAX-ACCESS read-only 1718 | STATUS current 1719 | DESCRIPTION "JBOD disk capacity." 1720 | ::= { jBODHdEntry6 6 } 1721 | jBODHdSmartInfo6 OBJECT-TYPE 1722 | SYNTAX OCTET STRING 1723 | MAX-ACCESS read-only 1724 | STATUS current 1725 | DESCRIPTION "JBOD disk SMART information." 1726 | ::= { jBODHdEntry6 7 } 1727 | 1728 | jBODHdTable7 OBJECT-TYPE 1729 | SYNTAX SEQUENCE OF JBODHdEntry7Def 1730 | MAX-ACCESS not-accessible 1731 | STATUS current 1732 | DESCRIPTION 1733 | "JBOD table." 1734 | ::= { jBODInfo 9 } 1735 | 1736 | jBODHdEntry7 OBJECT-TYPE 1737 | SYNTAX JBODHdEntry7Def 1738 | MAX-ACCESS not-accessible 1739 | STATUS current 1740 | DESCRIPTION 1741 | "JBOD disk entry" 1742 | INDEX { jBODHdIndex7 } 1743 | ::= { jBODHdTable7 1 } 1744 | JBODHdEntry7Def ::= 1745 | SEQUENCE { 1746 | jBODHdIndex7 Integer32 , 1747 | jBODHdDescr7 OCTET STRING, 1748 | jBODHdTemperature7 OCTET STRING, 1749 | jBODHdStatus7 INTEGER , 1750 | jBODHdModel7 OCTET STRING, 1751 | jBODHdCapacity7 OCTET STRING, 1752 | jBODHdSmartInfo7 OCTET STRING 1753 | } 1754 | jBODHdIndex7 OBJECT-TYPE 1755 | SYNTAX Integer32 (0..512) 1756 | MAX-ACCESS not-accessible 1757 | STATUS current 1758 | DESCRIPTION 1759 | "JBOD table index." 1760 | ::= { jBODHdEntry7 1 } 1761 | jBODHdDescr7 OBJECT-TYPE 1762 | SYNTAX OCTET STRING (SIZE (0..255)) 1763 | MAX-ACCESS read-only 1764 | STATUS current 1765 | DESCRIPTION 1766 | "JBOD disk description." 1767 | ::= { jBODHdEntry7 2 } 1768 | jBODHdTemperature7 OBJECT-TYPE 1769 | SYNTAX OCTET STRING 1770 | MAX-ACCESS read-only 1771 | STATUS current 1772 | DESCRIPTION 1773 | "JBOD disk temperature." 1774 | ::= { jBODHdEntry7 3 } 1775 | jBODHdStatus7 OBJECT-TYPE 1776 | SYNTAX INTEGER { 1777 | rwError(-9), 1778 | invalid(-6), 1779 | noDisk(-5), 1780 | unknown(-4), 1781 | ready(0) 1782 | } 1783 | MAX-ACCESS read-only 1784 | STATUS current 1785 | DESCRIPTION 1786 | "JBOD disk status." 1787 | ::= { jBODHdEntry7 4 } 1788 | jBODHdModel7 OBJECT-TYPE 1789 | SYNTAX OCTET STRING 1790 | MAX-ACCESS read-only 1791 | STATUS current 1792 | DESCRIPTION "JBOD disk model." 1793 | ::= { jBODHdEntry7 5 } 1794 | jBODHdCapacity7 OBJECT-TYPE 1795 | SYNTAX OCTET STRING 1796 | MAX-ACCESS read-only 1797 | STATUS current 1798 | DESCRIPTION "JBOD disk capacity." 1799 | ::= { jBODHdEntry7 6 } 1800 | jBODHdSmartInfo7 OBJECT-TYPE 1801 | SYNTAX OCTET STRING 1802 | MAX-ACCESS read-only 1803 | STATUS current 1804 | DESCRIPTION "JBOD disk SMART information." 1805 | ::= { jBODHdEntry7 7 } 1806 | 1807 | jBODHdTable8 OBJECT-TYPE 1808 | SYNTAX SEQUENCE OF JBODHdEntry8Def 1809 | MAX-ACCESS not-accessible 1810 | STATUS current 1811 | DESCRIPTION 1812 | "JBOD table." 1813 | ::= { jBODInfo 10 } 1814 | 1815 | jBODHdEntry8 OBJECT-TYPE 1816 | SYNTAX JBODHdEntry8Def 1817 | MAX-ACCESS not-accessible 1818 | STATUS current 1819 | DESCRIPTION 1820 | "JBOD disk entry" 1821 | INDEX { jBODHdIndex8 } 1822 | ::= { jBODHdTable8 1 } 1823 | JBODHdEntry8Def ::= 1824 | SEQUENCE { 1825 | jBODHdIndex8 Integer32 , 1826 | jBODHdDescr8 OCTET STRING, 1827 | jBODHdTemperature8 OCTET STRING, 1828 | jBODHdStatus8 INTEGER , 1829 | jBODHdModel8 OCTET STRING, 1830 | jBODHdCapacity8 OCTET STRING, 1831 | jBODHdSmartInfo8 OCTET STRING 1832 | } 1833 | jBODHdIndex8 OBJECT-TYPE 1834 | SYNTAX Integer32 (0..512) 1835 | MAX-ACCESS not-accessible 1836 | STATUS current 1837 | DESCRIPTION 1838 | "JBOD table index." 1839 | ::= { jBODHdEntry8 1 } 1840 | jBODHdDescr8 OBJECT-TYPE 1841 | SYNTAX OCTET STRING (SIZE (0..255)) 1842 | MAX-ACCESS read-only 1843 | STATUS current 1844 | DESCRIPTION 1845 | "JBOD disk description." 1846 | ::= { jBODHdEntry8 2 } 1847 | jBODHdTemperature8 OBJECT-TYPE 1848 | SYNTAX OCTET STRING 1849 | MAX-ACCESS read-only 1850 | STATUS current 1851 | DESCRIPTION 1852 | "JBOD disk temperature." 1853 | ::= { jBODHdEntry8 3 } 1854 | jBODHdStatus8 OBJECT-TYPE 1855 | SYNTAX INTEGER { 1856 | rwError(-9), 1857 | invalid(-6), 1858 | noDisk(-5), 1859 | unknown(-4), 1860 | ready(0) 1861 | } 1862 | MAX-ACCESS read-only 1863 | STATUS current 1864 | DESCRIPTION 1865 | "JBOD disk status." 1866 | ::= { jBODHdEntry8 4 } 1867 | jBODHdModel8 OBJECT-TYPE 1868 | SYNTAX OCTET STRING 1869 | MAX-ACCESS read-only 1870 | STATUS current 1871 | DESCRIPTION "JBOD disk model." 1872 | ::= { jBODHdEntry8 5 } 1873 | jBODHdCapacity8 OBJECT-TYPE 1874 | SYNTAX OCTET STRING 1875 | MAX-ACCESS read-only 1876 | STATUS current 1877 | DESCRIPTION "JBOD disk capacity." 1878 | ::= { jBODHdEntry8 6 } 1879 | jBODHdSmartInfo8 OBJECT-TYPE 1880 | SYNTAX OCTET STRING 1881 | MAX-ACCESS read-only 1882 | STATUS current 1883 | DESCRIPTION "JBOD disk SMART information." 1884 | ::= { jBODHdEntry8 7 } 1885 | -- system 1886 | system OBJECT IDENTIFIER ::= { qts 12 } 1887 | 1888 | -- system Event 1889 | systemEventMsg OBJECT IDENTIFIER ::= { system 1 } 1890 | 1891 | -- system event 1892 | eventInformMsg OBJECT-TYPE 1893 | SYNTAX OCTET STRING 1894 | MAX-ACCESS read-only 1895 | STATUS current 1896 | DESCRIPTION 1897 | "Information event of NAS system." 1898 | ::= { systemEventMsg 101 } 1899 | 1900 | eventWarningMsg OBJECT-TYPE 1901 | SYNTAX OCTET STRING 1902 | MAX-ACCESS read-only 1903 | STATUS current 1904 | DESCRIPTION 1905 | "Warning event of NAS system." 1906 | ::= { systemEventMsg 102 } 1907 | 1908 | eventErrorMsg OBJECT-TYPE 1909 | SYNTAX OCTET STRING 1910 | MAX-ACCESS read-only 1911 | STATUS current 1912 | DESCRIPTION 1913 | "Error event of NAS system." 1914 | ::= { systemEventMsg 103 } 1915 | 1916 | systemTraps OBJECT IDENTIFIER ::= { system 2 } 1917 | 1918 | eventInform NOTIFICATION-TYPE 1919 | OBJECTS { eventInformMsg } 1920 | STATUS current 1921 | DESCRIPTION 1922 | "Info: %s" 1923 | ::= { systemTraps 1 } 1924 | 1925 | eventWarning NOTIFICATION-TYPE 1926 | OBJECTS { eventWarningMsg } 1927 | STATUS current 1928 | DESCRIPTION 1929 | "Warn: %s" 1930 | ::= { systemTraps 2 } 1931 | 1932 | eventError NOTIFICATION-TYPE 1933 | OBJECTS { eventErrorMsg } 1934 | STATUS current 1935 | DESCRIPTION 1936 | "Error: %s" 1937 | ::= { systemTraps 4 } 1938 | 1939 | systemModel OBJECT-TYPE 1940 | SYNTAX OCTET STRING 1941 | MAX-ACCESS read-only 1942 | STATUS current 1943 | DESCRIPTION 1944 | "System model name" 1945 | ::= { system 3 } 1946 | 1947 | hostname OBJECT-TYPE 1948 | SYNTAX OCTET STRING 1949 | MAX-ACCESS read-only 1950 | STATUS current 1951 | DESCRIPTION 1952 | "Host name" 1953 | ::= { system 4 } 1954 | 1955 | serialNumber OBJECT-TYPE 1956 | SYNTAX OCTET STRING (SIZE (0..255)) 1957 | MAX-ACCESS read-only 1958 | STATUS current 1959 | DESCRIPTION 1960 | "Enclosure Serial Number." 1961 | ::= { system 5 } 1962 | 1963 | firmwareVersion OBJECT-TYPE 1964 | SYNTAX OCTET STRING 1965 | MAX-ACCESS read-only 1966 | STATUS current 1967 | DESCRIPTION 1968 | "Firmware Version" 1969 | ::= { system 6 } 1970 | 1971 | firmwareUpgradeAvailable OBJECT-TYPE 1972 | SYNTAX Integer32 1973 | MAX-ACCESS read-only 1974 | STATUS current 1975 | DESCRIPTION 1976 | "Firmware can upgrade or not" 1977 | ::= { system 7 } 1978 | 1979 | sysFanNumber OBJECT-TYPE 1980 | SYNTAX Integer32 1981 | MAX-ACCESS read-only 1982 | STATUS current 1983 | DESCRIPTION 1984 | "The number of system fan (regardless of 1985 | their current state) present on this system." 1986 | ::= { system 8 } 1987 | 1988 | systemFanTable OBJECT-TYPE 1989 | SYNTAX SEQUENCE OF SysFanEntryDef 1990 | MAX-ACCESS not-accessible 1991 | STATUS current 1992 | DESCRIPTION 1993 | "A list of interface entries. The number of 1994 | entries is given by the value of SysFanNumber." 1995 | ::= { system 9 } 1996 | 1997 | systemFanEntry OBJECT-TYPE 1998 | SYNTAX SysFanEntryDef 1999 | MAX-ACCESS not-accessible 2000 | STATUS current 2001 | DESCRIPTION 2002 | "An system fan entry containing objects at the 2003 | subnetwork layer and below for a particular 2004 | interface." 2005 | INDEX { sysFanIndex } 2006 | ::= { systemFanTable 1 } 2007 | 2008 | SysFanEntryDef ::= 2009 | SEQUENCE { 2010 | sysFanIndex 2011 | Integer32 , 2012 | sysFanDescr 2013 | OCTET STRING, 2014 | sysFanSpeed 2015 | Integer32 2016 | } 2017 | 2018 | sysFanIndex OBJECT-TYPE 2019 | SYNTAX Integer32 (0..512) 2020 | MAX-ACCESS not-accessible 2021 | STATUS current 2022 | DESCRIPTION 2023 | "A unique value for each system fan. Its value 2024 | ranges between 1 and the value of SysFanNumber. The 2025 | value for each interface must remain constant at 2026 | least from one re-initialization of the entity's 2027 | network management system to the next re- 2028 | initialization." 2029 | ::= { systemFanEntry 1 } 2030 | 2031 | sysFanDescr OBJECT-TYPE 2032 | SYNTAX OCTET STRING (SIZE (0..255)) 2033 | MAX-ACCESS read-only 2034 | STATUS current 2035 | DESCRIPTION 2036 | "A textual string containing information about the 2037 | interface. This string should include the name of 2038 | the manufacturer, the product name and the version 2039 | of the hardware interface." 2040 | ::= { systemFanEntry 2 } 2041 | 2042 | sysFanSpeed OBJECT-TYPE 2043 | SYNTAX Integer32 2044 | MAX-ACCESS read-only 2045 | STATUS current 2046 | DESCRIPTION 2047 | "System fan speed." 2048 | ::= { systemFanEntry 3 } 2049 | 2050 | cpuTemperature OBJECT-TYPE 2051 | SYNTAX Integer32 2052 | MAX-ACCESS read-only 2053 | STATUS current 2054 | DESCRIPTION 2055 | "CPU temperature" 2056 | ::= { system 10 } 2057 | 2058 | systemTemperature OBJECT-TYPE 2059 | SYNTAX Integer32 2060 | MAX-ACCESS read-only 2061 | STATUS current 2062 | DESCRIPTION 2063 | "System temperature" 2064 | ::= { system 11 } 2065 | 2066 | systemCPU-Usage OBJECT-TYPE 2067 | SYNTAX Integer32 2068 | MAX-ACCESS read-only 2069 | STATUS current 2070 | DESCRIPTION 2071 | "System CPU usage" 2072 | ::= { system 12 } 2073 | 2074 | systemTotalMem OBJECT-TYPE 2075 | SYNTAX Counter64 2076 | MAX-ACCESS read-only 2077 | STATUS current 2078 | DESCRIPTION 2079 | "System total memory" 2080 | ::= { system 13} 2081 | 2082 | systemFreeMem OBJECT-TYPE 2083 | SYNTAX Counter64 2084 | MAX-ACCESS read-only 2085 | STATUS current 2086 | DESCRIPTION 2087 | "System free memory" 2088 | ::= { system 14 } 2089 | 2090 | systemAvailableMem OBJECT-TYPE 2091 | SYNTAX Counter64 2092 | MAX-ACCESS read-only 2093 | STATUS current 2094 | DESCRIPTION 2095 | "System available memory" 2096 | ::= { system 15 } 2097 | 2098 | systemUsedMemory OBJECT-TYPE 2099 | SYNTAX Counter64 2100 | MAX-ACCESS read-only 2101 | STATUS current 2102 | DESCRIPTION 2103 | "System used memory" 2104 | ::= { system 16 } 2105 | 2106 | systemCacheMemory OBJECT-TYPE 2107 | SYNTAX Counter64 2108 | MAX-ACCESS read-only 2109 | STATUS current 2110 | DESCRIPTION 2111 | "System cached memory" 2112 | ::= { system 17 } 2113 | 2114 | systemBufferMemory OBJECT-TYPE 2115 | SYNTAX Counter64 2116 | MAX-ACCESS read-only 2117 | STATUS current 2118 | DESCRIPTION 2119 | "System buffered memory" 2120 | ::= { system 18 } 2121 | 2122 | sysPowerStatus OBJECT-TYPE 2123 | SYNTAX INTEGER { 2124 | failed(-1), 2125 | ok(0) 2126 | } 2127 | MAX-ACCESS read-only 2128 | STATUS current 2129 | DESCRIPTION 2130 | "System power status." 2131 | ::= { system 19 } 2132 | 2133 | sysUPSStatus OBJECT-TYPE 2134 | SYNTAX Integer32 2135 | MAX-ACCESS read-only 2136 | STATUS current 2137 | DESCRIPTION 2138 | "System UPS status." 2139 | ::= { system 20 } 2140 | 2141 | sysUptime OBJECT-TYPE 2142 | SYNTAX TimeTicks 2143 | MAX-ACCESS read-only 2144 | STATUS current 2145 | DESCRIPTION 2146 | "The amount of time since this host was last 2147 | initialized. Note that this is different from 2148 | sysUpTime in the SNMPv2-MIB [RFC1907] because 2149 | sysUpTime is the uptime of the network management 2150 | portion of the system." 2151 | ::= { system 21 } 2152 | 2153 | -- external 2154 | external OBJECT IDENTIFIER ::= { qts 13 } 2155 | 2156 | upsStatus OBJECT-TYPE 2157 | SYNTAX OCTET STRING 2158 | MAX-ACCESS read-only 2159 | STATUS current 2160 | DESCRIPTION 2161 | "ups status" 2162 | ::= { external 1 } 2163 | 2164 | upsModel OBJECT-TYPE 2165 | SYNTAX OCTET STRING 2166 | MAX-ACCESS read-only 2167 | STATUS current 2168 | DESCRIPTION 2169 | "ups model name" 2170 | ::= { external 2 } 2171 | 2172 | upsDeviceManufacturer OBJECT-TYPE 2173 | SYNTAX OCTET STRING 2174 | MAX-ACCESS read-only 2175 | STATUS current 2176 | DESCRIPTION 2177 | "ups manufacturer name" 2178 | ::= { external 3 } 2179 | 2180 | upsDeviceSerial OBJECT-TYPE 2181 | SYNTAX OCTET STRING 2182 | MAX-ACCESS read-only 2183 | STATUS current 2184 | DESCRIPTION 2185 | "ups serial number" 2186 | ::= { external 4 } 2187 | 2188 | upsManufacturerDate OBJECT-TYPE 2189 | SYNTAX OCTET STRING 2190 | MAX-ACCESS read-only 2191 | STATUS current 2192 | DESCRIPTION 2193 | "ups manufacturer date" 2194 | ::= { external 5 } 2195 | 2196 | upsLoadPercentage OBJECT-TYPE 2197 | SYNTAX OCTET STRING 2198 | MAX-ACCESS read-only 2199 | STATUS current 2200 | DESCRIPTION 2201 | "ups manufacturer date" 2202 | ::= { external 6 } 2203 | 2204 | upsBatteryCharge OBJECT-TYPE 2205 | SYNTAX OCTET STRING 2206 | MAX-ACCESS read-only 2207 | STATUS current 2208 | DESCRIPTION 2209 | "ups battery charge" 2210 | ::= { external 7 } 2211 | 2212 | upsBatteryChargeWarningLevel OBJECT-TYPE 2213 | SYNTAX OCTET STRING 2214 | MAX-ACCESS read-only 2215 | STATUS current 2216 | DESCRIPTION 2217 | "ups battery charge warning level" 2218 | ::= { external 8 } 2219 | 2220 | upsBatteryType OBJECT-TYPE 2221 | SYNTAX OCTET STRING 2222 | MAX-ACCESS read-only 2223 | STATUS current 2224 | DESCRIPTION 2225 | "ups battery type" 2226 | ::= { external 9 } 2227 | 2228 | usbPrinterTable OBJECT-TYPE 2229 | SYNTAX SEQUENCE OF UsbPrinterTableEntryDef 2230 | MAX-ACCESS not-accessible 2231 | STATUS current 2232 | DESCRIPTION 2233 | "A list of printer entries." 2234 | ::= { external 10 } 2235 | 2236 | usbPrinterTableEntry OBJECT-TYPE 2237 | SYNTAX UsbPrinterTableEntryDef 2238 | MAX-ACCESS not-accessible 2239 | STATUS current 2240 | DESCRIPTION 2241 | "An system fan entry containing objects at the 2242 | subnetwork layer and below for a particular 2243 | interface." 2244 | INDEX { usbPrinterIndex } 2245 | ::= { usbPrinterTable 1 } 2246 | 2247 | UsbPrinterTableEntryDef ::= 2248 | SEQUENCE { 2249 | usbPrinterIndex 2250 | Integer32 , 2251 | usbPrinterName 2252 | OCTET STRING, 2253 | usbPrinterManufacturer 2254 | OCTET STRING, 2255 | usbPrinterModel 2256 | OCTET STRING, 2257 | usbPrinterStatus 2258 | INTEGER , 2259 | usbPrinterBonjourPrinterSupportEnabled 2260 | INTEGER , 2261 | usbPrinterSharingEnabled 2262 | INTEGER 2263 | } 2264 | 2265 | usbPrinterIndex OBJECT-TYPE 2266 | SYNTAX Integer32 (0..512) 2267 | MAX-ACCESS not-accessible 2268 | STATUS current 2269 | DESCRIPTION 2270 | "A unique value for each usb printer." 2271 | ::= { usbPrinterTableEntry 1 } 2272 | 2273 | usbPrinterName OBJECT-TYPE 2274 | SYNTAX OCTET STRING 2275 | MAX-ACCESS read-only 2276 | STATUS current 2277 | DESCRIPTION 2278 | "printer name." 2279 | ::= { usbPrinterTableEntry 2 } 2280 | 2281 | usbPrinterManufacturer OBJECT-TYPE 2282 | SYNTAX OCTET STRING 2283 | MAX-ACCESS read-only 2284 | STATUS current 2285 | DESCRIPTION 2286 | "printer name." 2287 | ::= { usbPrinterTableEntry 3 } 2288 | 2289 | usbPrinterModel OBJECT-TYPE 2290 | SYNTAX OCTET STRING 2291 | MAX-ACCESS read-only 2292 | STATUS current 2293 | DESCRIPTION 2294 | "printer model." 2295 | ::= { usbPrinterTableEntry 4 } 2296 | 2297 | usbPrinterStatus OBJECT-TYPE 2298 | SYNTAX INTEGER { 2299 | notDetected(0), 2300 | detected(1), 2301 | unknown(2) 2302 | } 2303 | MAX-ACCESS read-only 2304 | STATUS current 2305 | DESCRIPTION 2306 | "printer status." 2307 | ::= { usbPrinterTableEntry 5 } 2308 | 2309 | usbPrinterBonjourPrinterSupportEnabled OBJECT-TYPE 2310 | SYNTAX INTEGER { 2311 | no(0), 2312 | yes(1) 2313 | } 2314 | MAX-ACCESS read-only 2315 | STATUS current 2316 | DESCRIPTION 2317 | "flag of bonjour printer support." 2318 | ::= { usbPrinterTableEntry 6 } 2319 | 2320 | usbPrinterSharingEnabled OBJECT-TYPE 2321 | SYNTAX INTEGER { 2322 | no(0), 2323 | yes(1) 2324 | } 2325 | MAX-ACCESS read-only 2326 | STATUS current 2327 | DESCRIPTION 2328 | "flag of printer sharing." 2329 | ::= { usbPrinterTableEntry 7 } 2330 | 2331 | -- services 2332 | services OBJECT IDENTIFIER ::= { qts 14 } 2333 | 2334 | nfsV2V3IsEnabled OBJECT-TYPE 2335 | SYNTAX INTEGER { 2336 | no(0), 2337 | yes(1) 2338 | } 2339 | MAX-ACCESS read-only 2340 | STATUS current 2341 | DESCRIPTION 2342 | "NFS V2/V3 enable flag" 2343 | ::= { services 1 } 2344 | 2345 | nfsV4IsEnabled OBJECT-TYPE 2346 | SYNTAX INTEGER { 2347 | no(0), 2348 | yes(1) 2349 | } 2350 | MAX-ACCESS read-only 2351 | STATUS current 2352 | DESCRIPTION 2353 | "NFS V4 enable flag" 2354 | ::= { services 2 } 2355 | 2356 | httpPort OBJECT-TYPE 2357 | SYNTAX Integer32 2358 | MAX-ACCESS read-only 2359 | STATUS current 2360 | DESCRIPTION 2361 | "HTTP port" 2362 | ::= { services 3 } 2363 | 2364 | httpsPort OBJECT-TYPE 2365 | SYNTAX Integer32 2366 | MAX-ACCESS read-only 2367 | STATUS current 2368 | DESCRIPTION 2369 | "HTTPs port" 2370 | ::= { services 4 } 2371 | 2372 | sshIsEnabled OBJECT-TYPE 2373 | SYNTAX INTEGER { 2374 | no(0), 2375 | yes(1) 2376 | } 2377 | MAX-ACCESS read-only 2378 | STATUS current 2379 | DESCRIPTION 2380 | "SSH enable flag" 2381 | ::= { services 5 } 2382 | 2383 | sshSFTPEnabled OBJECT-TYPE 2384 | SYNTAX INTEGER { 2385 | no(0), 2386 | yes(1) 2387 | } 2388 | MAX-ACCESS read-only 2389 | STATUS current 2390 | DESCRIPTION 2391 | "SFTP enable flag" 2392 | ::= { services 6 } 2393 | 2394 | sshPortNumber OBJECT-TYPE 2395 | SYNTAX Integer32 2396 | MAX-ACCESS read-only 2397 | STATUS current 2398 | DESCRIPTION 2399 | "SSH port number" 2400 | ::= { services 7 } 2401 | 2402 | telnetIsEnabled OBJECT-TYPE 2403 | SYNTAX INTEGER { 2404 | no(0), 2405 | yes(1) 2406 | } 2407 | MAX-ACCESS read-only 2408 | STATUS current 2409 | DESCRIPTION 2410 | "Telnet enable flag" 2411 | ::= { services 8 } 2412 | 2413 | telnetPortNumber OBJECT-TYPE 2414 | SYNTAX Integer32 2415 | MAX-ACCESS read-only 2416 | STATUS current 2417 | DESCRIPTION 2418 | "Telnet port number" 2419 | ::= { services 9 } 2420 | 2421 | ftpEnabled OBJECT-TYPE 2422 | SYNTAX INTEGER { 2423 | no(0), 2424 | yes(1) 2425 | } 2426 | MAX-ACCESS read-only 2427 | STATUS current 2428 | DESCRIPTION 2429 | "FTP enable flag" 2430 | ::= { services 10 } 2431 | 2432 | ftpProtocolStandardEnabled OBJECT-TYPE 2433 | SYNTAX INTEGER { 2434 | no(0), 2435 | yes(1) 2436 | } 2437 | MAX-ACCESS read-only 2438 | STATUS current 2439 | DESCRIPTION 2440 | "FTP standard protocol flag" 2441 | ::= { services 11 } 2442 | 2443 | ftpProtocolSSL-TLSEnabled OBJECT-TYPE 2444 | SYNTAX INTEGER { 2445 | no(0), 2446 | yes(1) 2447 | } 2448 | MAX-ACCESS read-only 2449 | STATUS current 2450 | DESCRIPTION 2451 | "FTP SSL/TLS protocol flag" 2452 | ::= { services 12 } 2453 | 2454 | ftpPortNumber OBJECT-TYPE 2455 | SYNTAX Integer32 2456 | MAX-ACCESS read-only 2457 | STATUS current 2458 | DESCRIPTION 2459 | "FTP port number" 2460 | ::= { services 13 } 2461 | 2462 | ftpUnicodeSupportEnabled OBJECT-TYPE 2463 | SYNTAX INTEGER { 2464 | no(0), 2465 | yes(1) 2466 | } 2467 | MAX-ACCESS read-only 2468 | STATUS current 2469 | DESCRIPTION 2470 | "FTP support unicode flag" 2471 | ::= { services 14 } 2472 | 2473 | ftpAnnonymousaccessEnabled OBJECT-TYPE 2474 | SYNTAX INTEGER { 2475 | no(0), 2476 | yes(1) 2477 | } 2478 | MAX-ACCESS read-only 2479 | STATUS current 2480 | DESCRIPTION 2481 | "FTP annonymous access flag" 2482 | ::= { services 15 } 2483 | 2484 | ftpMaxConnectionsAllowed OBJECT-TYPE 2485 | SYNTAX Integer32 2486 | MAX-ACCESS read-only 2487 | STATUS current 2488 | DESCRIPTION 2489 | "FTP max connections" 2490 | ::= { services 16 } 2491 | 2492 | ftpMaxConnectionsPerAccount OBJECT-TYPE 2493 | SYNTAX Integer32 2494 | MAX-ACCESS read-only 2495 | STATUS current 2496 | DESCRIPTION 2497 | "FTP max connections per account" 2498 | ::= { services 17 } 2499 | 2500 | ftpMaxUploadRate OBJECT-TYPE 2501 | SYNTAX INTEGER { 2502 | unlimited(0) 2503 | } 2504 | MAX-ACCESS read-only 2505 | STATUS current 2506 | DESCRIPTION 2507 | "FTP max upload rate (KB/s)" 2508 | ::= { services 18 } 2509 | 2510 | ftpMaxDownloadRate OBJECT-TYPE 2511 | SYNTAX INTEGER { 2512 | unlimited(0) 2513 | } 2514 | MAX-ACCESS read-only 2515 | STATUS current 2516 | DESCRIPTION 2517 | "FTP max download rate (KB/s)" 2518 | ::= { services 19 } 2519 | 2520 | -- applications 2521 | applications OBJECT IDENTIFIER ::= { qts 15 } 2522 | 2523 | applicationsTable OBJECT-TYPE 2524 | SYNTAX SEQUENCE OF ApplicationsTableEntryDef 2525 | MAX-ACCESS not-accessible 2526 | STATUS current 2527 | DESCRIPTION 2528 | "A list of application entries." 2529 | ::= { applications 1 } 2530 | 2531 | applicationsTableEntry OBJECT-TYPE 2532 | SYNTAX ApplicationsTableEntryDef 2533 | MAX-ACCESS not-accessible 2534 | STATUS current 2535 | DESCRIPTION 2536 | "An application entry containing the 2537 | meta of an application include app 2538 | name, version..." 2539 | INDEX { appIndex } 2540 | ::= { applicationsTable 1 } 2541 | 2542 | ApplicationsTableEntryDef ::= 2543 | SEQUENCE { 2544 | appIndex 2545 | Integer32 , 2546 | appName 2547 | OCTET STRING, 2548 | appVersion 2549 | OCTET STRING, 2550 | appInstallationDate 2551 | OCTET STRING, 2552 | appLatestVersion 2553 | OCTET STRING, 2554 | appDisplayPermission 2555 | Integer32 2556 | } 2557 | 2558 | appIndex OBJECT-TYPE 2559 | SYNTAX Integer32 (0..512) 2560 | MAX-ACCESS not-accessible 2561 | STATUS current 2562 | DESCRIPTION 2563 | "A unique value for each application." 2564 | ::= { applicationsTableEntry 1 } 2565 | 2566 | appName OBJECT-TYPE 2567 | SYNTAX OCTET STRING 2568 | MAX-ACCESS read-only 2569 | STATUS current 2570 | DESCRIPTION 2571 | "application name." 2572 | ::= { applicationsTableEntry 2 } 2573 | 2574 | appVersion OBJECT-TYPE 2575 | SYNTAX OCTET STRING 2576 | MAX-ACCESS read-only 2577 | STATUS current 2578 | DESCRIPTION 2579 | "application version." 2580 | ::= { applicationsTableEntry 3 } 2581 | 2582 | appInstallationDate OBJECT-TYPE 2583 | SYNTAX OCTET STRING 2584 | MAX-ACCESS read-only 2585 | STATUS current 2586 | DESCRIPTION 2587 | "application installation date." 2588 | ::= { applicationsTableEntry 4 } 2589 | 2590 | appLatestVersion OBJECT-TYPE 2591 | SYNTAX OCTET STRING 2592 | MAX-ACCESS read-only 2593 | STATUS current 2594 | DESCRIPTION 2595 | "application lated version." 2596 | ::= { applicationsTableEntry 5 } 2597 | 2598 | appDisplayPermission OBJECT-TYPE 2599 | SYNTAX INTEGER { 2600 | adminOnly(0), 2601 | adminGroup(1), 2602 | everyUser(2) 2603 | } 2604 | MAX-ACCESS read-only 2605 | STATUS current 2606 | DESCRIPTION 2607 | "application can browse by whom." 2608 | ::= { applicationsTableEntry 6 } 2609 | 2610 | 2611 | 2612 | END --------------------------------------------------------------------------------