LoginSignup
0
0

More than 1 year has passed since last update.

DynatraceのExtensions 2.0でカスタムSNMPを試してみた

Last updated at Posted at 2021-05-19

はじめに

Dynatraceの機能を拡張し、より多くの機器の監視を可能とするExtensions 2.0 がリリースされました。
本記事では、Extensions 2.0で対応可能なSNMPについて実際の設定についてまとめました。

15日間の無料トライアルを利用することができるので、自分の環境でも簡単に試してみることができます。
Dynatraceフリートライアル

参考URL

Dynatraceの公式サイトに必要な情報がまとまっています。

Extensions 2.0 | Dynatrace Documentation

前提条件

SNMPのリクエストはActiveGateから行われるため、監視対象のデバイスはActiveGateからアクセスできる必要があります。

設定手順

API Token の発行

Extension 2.0はAPI経由で設定する必要があるため、API Tokenの発行を行う。

Dynatrace GUI上のSettings > Integration > Dynatrace APIを選んでいく
image.png

Generate tokenをクリック
image.png

任意の名前を入力
image.png

API v2で以下を有効にする。

  • Read extensions
  • Write extensions
  • Read extension environment configurations
  • Write extension environment configurations
  • Read extension monitoring configurations
  • Write extension monitoring configurations

image.png

GenerateボタンをクリックするとAPIが生成される。

image.png

Extensionの作成

Schemeファイルのダウンロード

以下のコマンドを実行することでschemaファイルのダウンロードをすることが可能。

curl -X GET "https://${ENV_ID}.live.dynatrace.com/api/v2/extensions/schemas/1.215/extension.schema.json" \
-H "accept: application/json; charset=utf-8" \
-H "Authorization: Api-Token ${API_TOKEN}" | jq . > extension.schema.json
curl -X GET "https://${ENV_ID}.live.dynatrace.com/api/v2/extensions/schemas/1.215/snmp.schema.json" \
-H "accept: application/json; charset=utf-8" \
-H "Authorization: Api-Token ${API_TOKEN}" | jq . > snmp.schema.json

${ENV_ID}は自分に割り当てられているテナントのID、${API_TOKEN}は先ほど生成したAPI_TOKENにそれぞれ置き換えます。

Extensionの作成

schemaファイルの定義や公式サイトのドキュメントに従ってyaml形式で設定をしていく。

extension.yaml
name: custom:katsu.snmp.extension
version: 1.0.0
minDynatraceVersion: "1.215"
author:
  name: "sukatsu"

snmp:
  - group: Linux-Server
    interval: 5m
    dimensions:
      - id: snmp.generic.device.name
        value: oid:1.3.6.1.2.1.1.5.0
      - id: snmp.generic.device.address
        value: this:device.address
      - id: snmp.generic.device.port
        value: this:device.port

    subgroups:
      - subgroup: SNMP health
        table: false
        metrics:
          - id: snmp.generic.snmp.in.pkts
            value: oid:1.3.6.1.2.1.11.1.0
            type: count
            metadata:
              displayName: The total number of messages delivered from the transport service
              unit: Count 
          - id: snmp.generic.silentdrops
            value: oid:1.3.6.1.2.1.11.31.0
            type: count
            metadata:
              displayName: The number of silently dropped PDUs due to the large reply size
              unit: Count
      - subgroup: NIC status
        table: true
        dimensions:
          - id: snmp.generic.if.descr
            value: oid:1.3.6.1.2.1.2.2.1.2
          - id: snmp.generic.if.type
            value: oid:1.3.6.1.2.1.2.2.1.3
        metrics:
          - id: snmp.generic.if.lastchange
            value: oid:1.3.6.1.2.1.2.2.1.9
            type: gauge
            metadata:
              displayName: The value of sysUpTime when the interface entered its current state
              unit: Count
          - id: snmp.generic.if.in.errors
            value: oid:1.3.6.1.2.1.2.2.1.14
            type: count
            metadata:
              displayName: The number of inbound packets/transmission units with errors
              unit: Count

extensionを作成したらzipファイルに圧縮する。

extensionへの署名

Sign extension | Dynatrace Documentation

自己ルート証明書の作成

opensslが入っているサーバー等で以下のコマンドを実行し、ルート証明書を作成する。

openssl genrsa -out ca_one.key 2048
openssl req -days 10000 -new -x509 -key ca_one.key -out ca_one.crt
openssl rsa -in ca_one.key -pubout -out ca_one.pub.key

DynatraceではPFX, P12, PEM形式のみ対応しているので、以下のコマンドで変換を行う。

openssl pkcs12 -export -in ca_one.crt -nokeys -out ca_one.p12

Dynatraceへのアップロード

Dynatrace GUI上のSettings > Web and mobile monitoring > Credential vault を選んでいく。

image.png

Add new credentialをクリックし、証明書のアップロードを行う。

image.png

ActiveGate側にも同じルート証明書をアップロードする。

  • Linux: <CONFIG>/remotepluginmodule/agent/conf/certificates/ (default: /var/lib/dynatrace/remotepluginmodule/agent/conf/certificates/)
  • Windows: %PROGRAMDATA%\dynatrace\remotepluginmodule\agent\conf\certificates

開発者用の証明書の発行とextensionsへの署名

先ほど作成したルート証明書を用いて、extensionに署名するための証明書を作成する。

openssl genrsa -out developer.key 2048
openssl rsa -in developer.key -pubout -out developer.pub.key
openssl req -new -key developer.key -out developer.csr
openssl x509 -req -days 10000 -in developer.csr -CA ca_one.crt -CAkey ca_one.key -CAcreateserial -out developer.crt

以下のコマンドを実行し、extensionへ署名する。

openssl cms -sign -signer developer.crt -inkey developer.key -binary -in extension.zip -outform PEM -out extension.zip.sig

※extensionの内容を変更した場合には、改めて署名をする必要がある。

extension.zipextension.zip.sigを1つのzipファイルにまとめる。

snmp-custom-extension.zip
│   extension.zip
│   extension.zip.sig

extensionsのアップロード

以下のコマンドを実行して、extensionsのアップロードと使用するバージョンの指定をします。

curl -X POST "https://${ENV_ID}.live.dynatrace.com/api/v2/extensions" \
-H "accept: application/json; charset=utf-8" \
-H "Authorization: Api-Token ${API_TOKEN}" \
-H "Content-Type: multipart/form-data" \
-F "file=@snmp_extension.zip;type=application/zip"
curl -X PUT "https://${ENV_ID}.live.dynatrace.com/api/v2/extensions/<extension_name>/environmentConfiguration" \
-H "accept: application/json; charset=utf-8" \
-H "Authorization: Api-Token ${API_TOKEN}" \
-H "Content-Type: application/json; charset=utf-8" \
-d "{\"version\":\"1.0.0\"}"

<extension_name>はextension.yamlで設定した名前を指定する。

Monitoring Configurationの作成とアップロード

Monitoring 設定の作成

監視対象デバイスの情報を記載したjsonファイルを作成する。

snmp_monitoring.json
[
  {
    "scope": "ag_group",
    "value": {
      "version": "1.0.0",
      "description": "SNMP monitoring configuration",
      "enabled": true,
      "snmp": {
        "devices": [
          {
            "ip": "<Device IP Address>",
            "port": 161,
            "timeoutSecs": 5,
            "retries": 0,
            "maxRepetitions": 50,
            "authentication": {
              "type": "SNMPv2c",
              "community": "public"
            }
          }
        ]
      }
    }
  }
]

<Device IP Address>には監視対象のデバイスのアドレスを指定する。
scope にはActiveGateのグループ名を指定する。

Monitoring 設定のアップロード

以下のコマンドを実行して設定をアップロードする。

curl -X POST "https://${ENV_ID}.live.dynatrace.com/api/v2/extensions/<extension_name>/monitoringConfigurations" \
-H "accept: application/json; charset=utf-8" \
-H "Authorization: Api-Token ${API_TOKEN}" \
-H "Content-Type: application/json; charset=utf-8" \
--data @snmp_monitoring.json -i

以下のようなレスポンスが返ってくれば正常にアップロードできています。

[{"objectId":"xxxxx","code":200}]

Metricの確認

Dynatrace GUIのMetricsの画面で設定したextensionsの情報を確認可能。

image.pngimage.png

Details の矢印メニューからCreate chartをクリックすることでカスタムチャートの設定とダッシュボードへのピン付けが可能。

image.png

まとめ

本記事ではDynatraceで新しく導入されたExtensions 2.0 のカスタムSNMPについて設定方法をまとめました。
SNMPはネットワーク機器を中心に今でも使われており、様々なデータを収集できるのでDynatraceで一元管理ができるとより便利に使うことができると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0