DatadogでFortiGateを監視する

aws
Published: 2016-12-29

背景

サーバの監視をDatadogに集約した場合、オンプレミスのネットワーク機器もDatadogで監視したくなります。DatadogにはSNMP Integrationがあるので、自宅のFortiGateで試してみました。

実践

Datadogエージェントをインストールする

Datadogで監視するためには、Datadogのエージェントを使ってメトリクスを送信する必要があります。FortiGateにはDatadogのエージェントがインストールできないため、適当なサーバにDatadogのエージェントをインストールします。このサーバが、ネットワーク機器監視サーバの役割を担います。

SNMP Intergartionを設定する

/etc/dd-agent/conf.d配下にsnmp.yamlを用意します。今回は次のsnmp.ymlを使います。

init_config:
#    #You can specify an additional folder for your custom mib files (python format)
#    mibs_folder: /path/to/your/mibs/folder
#    ignore_nonincreasing_oid: False
instances:
- ip_address: xxx.xxx.xxx.xxx
  port: 161
  community_string: hogehoge
  snmp_version: 2
  timeout: 1
  retries: 5
  enforce_mib_constraints: true
  tags:
    - Fortigate50B
  metrics:
    - OID: 1.3.6.1.4.1.12356.101.4.1.3.0
      name: fgSysCpuUsage
    - OID: 1.3.6.1.2.1.2.2.1.10.3
      name: ifInOctets
      forced_type: counter
    - OID: 1.3.6.1.2.1.2.2.1.16.3
      name: ifOutOctets
      forced_type: counter
    - OID: 1.3.6.1.4.1.12356.101.4.1.4.0
      name: fgSysMemUsage
    - OID: 1.3.6.1.4.1.12356.101.4.1.8.0
      name: fgSysSesCount

metricsの箇所は、OIDを直接指定する方法を選択しました。MIBファイルを読み込ませた上でMIBシンボル名を指定する方法もあります。ただし、カスタムMIBは設定が大変そうです。

参考:カスタムmibファイルのSMNP Integration用のpythonファイルへの変換し、yamlへ設定する)。

また、tagsをつけることで、Datadogのタグ機能を活用できます。ただし、tagsをつけなくても、SNMP Integrationで取得した情報にはsnmp_device:xxx.xxx.xxx.xxxという識別子がつきますので、どの機器のメトリクスかを区別できます。

監視する

Datadogにメトリクスを送っていますので、サーバと同様にメトリクスの値を利用した監視ができます。また、メトリクスの値が取れていない際にエラーとみなす設定をつむことで、単純な死活監視もできます。

ダッシュボードを作る

それっぽいダッシュボードができました。

ifInOctetsとifOutOctetsの値をそのままグラフにすると、単位がOctetsPerSecondになってしまいます。そこで、グラフに秒する値を8倍してBitPerSecondにします。

FortiGate50Bのダッシュボードにしたいので、タグでフィルタをかけます。snmp.yamlに設定したtagsがここで活きてきます。snmp_device:xxx.xxx.xxx.xxxという識別子でフィルタをかけることもできます。

長期間のグラフを描画すると、データが丸まります(参考:4) メトリクスの値のロールアップ(値を丸める))。デフォルトは平均値で丸められます。最大値で丸めるためには、明示的に最大値でのrollupを設定します。

Datadogのダッシュボードは変数が使えます。タグでフィルタをかける部分を変数にすることで、1つのダッシュボードをつかって、複数のネットワーク機器のメトリクスを見られそうです。

感想

DatadogのSNMP Integrationをつかうことで、ネットワーク機器の監視や可視化でおなじみのMRTGやCactiと同じことができそうです。サーバの監視ツールとしてDatadogを利用している環境であれば、ネットワーク機器の監視をDatadogに集約するのはありだと思いました。

今回は技術的にできるのかを確認しました。そのため、費用に関する部分は未確認です。別途、SNMP Integrationの課金周り、特にSNMP Integrationがカスタムメトリクスに該当するのかを確認します。

参考:課金に関するFAQ