はじめに
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を選んでいく
API v2で以下を有効にする。
- Read extensions
- Write extensions
- Read extension environment configurations
- Write extension environment configurations
- Read extension monitoring configurations
- Write extension monitoring configurations
Generate
ボタンをクリックするとAPIが生成される。
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形式で設定をしていく。
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 を選んでいく。
Add new credential
をクリックし、証明書のアップロードを行う。
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.zip
とextension.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ファイルを作成する。
[
{
"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の情報を確認可能。
Details
の矢印メニューからCreate chart
をクリックすることでカスタムチャートの設定とダッシュボードへのピン付けが可能。
まとめ
本記事ではDynatraceで新しく導入されたExtensions 2.0 のカスタムSNMPについて設定方法をまとめました。
SNMPはネットワーク機器を中心に今でも使われており、様々なデータを収集できるのでDynatraceで一元管理ができるとより便利に使うことができると思います。