朝日ネット 技術者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマで書きます。

phpIPAMでデータセンターの見える化をしてみた

はじめに

朝日ネットのaibaです。 前回のサーバラックでのケーブリングについて の記事に引き続きデータセンターに関係する話題について書いていきたいと思います。
今回は、データセンター内の機器管理手法について検討したいと思います。

DCIMとは

DCIMとは「Data Center Infrastructure Management」の略でデータセンター内の資産管理を行うことです。
IT資産を可視化し効率的に運用することにより、運用コスト削減を目的としているものです。

今回は、なかでも「IPアドレス管理」と「ラック管理」について焦点を当てていきたいと思います。

管理手法の検討

方法は様々ありますが、今回は、以下の機能要件を満たすことを視野に入れて検討していこうと思います。

機能要件

  • 複数人で編集、閲覧ができる
  • ラック図は Front/Back で表現できるものが良い
  • IPアドレスはサブネット単位で管理したい

いくつかソフトウェアを選定し、使用するソフトウェアを検討してみます。

OpenDCIM (Opensource Data Center Infrastructure Management )

  • 公式サイト
  • ステンシルを埋め込むことができるのでとても見やすい
  • 配置図も作れるため実際のラックの位置を見取図ベースに描画可能
  • 電力値等細かい情報が入力可能
  • ラック図は Front/Backで表現できる
  • 日本語化されていない
  • IPアドレス管理機能はない

Netbox

  • 公式サイト
  • IPアドレス管理ができる
  • ラック図は Front/Backで表現できる
  • デバイス間のネットワーク、コンソール、および電源接続を記録できる
  • 仮想マシンとクラスターを管理できる
  • データ回線 -長距離通信回線およびプロバイダーを管理できる

phpIPAM (php IP Address Management)

  • 公式サイト
  • 元々はIPアドレスを管理するソフトウェアとして開発されているためIPアドレスを用いたホストの監視等の機能は充実している
  • ラック図は Front/Backで表現できる
  • 多言語に対応していて日本語化できる(一部非対応あり)
  • 見た目かっこいい

Google スプレッドシート

  • 公式サイト
  • 共同編集が可能
  • 編集が衝突しやすい
  • 閲覧/編集 制限が容易

Microsoft Office Excel

  • 公式サイト
  • 誰でも簡単に扱える
  • 誰かが開いていると編集できない(共同編集モードもあるが有力ではない)

管理ソフトウェアの決定

ここまでみるとどれも最低限の機能は備わっているといえます。
なかでもOpenDCIMはデータセンターのフロア見取り図をインポートすることができるので、ラックがデータセンターのどの位置にあるかを正確に把握することができるのが有力であると感じました。
また、ステンシル表示が可能なので実際の見た目と同じように記載でき、作業者に指示を出すうえでも「この見た目のサーバね」といった指示も出しやすいと感じました。
しかし、ステンシルが公式的に必ずあるわけでもなく、ない場合は自作する必要があり、かつ、機器のfrontとbackの画像を拾ってきてステンシルを作成→追加、とやっていってたらとても工数がかかってしまい、誰もやりたがりません。
今回は部門を問わずに使用することを前提とするので、このやり方は適切とは言えません。(※実際に朝日ネットでも試験運用してみましたが更新されないまま数年経っていました・・・orz)

別の方法を、ということでphpIPAMを使ってみることにします。
決め手となったのが、IPアドレスの管理機能です。
朝日ネットではISP事業だけでなくVNE事業も行っており、膨大な数のIPアドレスを管理する必要があり、現在用途ごとに管理手法がバラバラになっているため、集約したいという想いもありこちらを選びました。

実際に触ってみた

Dockerで即席試用

手元のUbuntu環境を用いてDockerで即席構築して実際に触ってみました。
Docker Hub にイメージがあったのでこれを 使用します。

docker-compose.yml を以下のように作成

# docker-compose.yml

# WARNING: Replace the example passwords with secure secrets.
# WARNING: 'my_secret_phpipam_pass' and 'my_secret_mysql_root_pass'
# docker-compose -p phpIPAM up -d

version: '3'

services:
# web server
  phpipam-web:
    image: phpipam/phpipam-www:latest
    ports:
      - "8080:80"
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - IPAM_DATABASE_WEBHOST=%
    restart: unless-stopped
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
    depends_on:
      - phpipam-mariadb

# cron
  phpipam-cron:
    image: phpipam/phpipam-cron:latest
    environment:
      - TZ=Asia/Tokyo
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=my_secret_phpipam_pass
      - SCAN_INTERVAL=1h
    restart: unless-stopped
    depends_on:
      - phpipam-mariadb

# database
  phpipam-mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
    restart: unless-stopped
    volumes:
      - phpipam-db-data:/var/lib/mysql

volumes:
  phpipam-db-data:
  phpipam-logo:

上記ファイルを作り

docker-compose -p phpIPAM up -d

で起動させ http:/localhost:8080 でアクセス可能です。

f:id:at4t3:20191201194053p:plain
トップ画面はこのような感じになります、
※寄付ボタンが下にありますが設定で非表示にできます。

f:id:at4t3:20191201202032p:plain
メニューを見るとネットワークに特化した項目が多いことが分かります。

できること

  • IPアドレス管理
    • プロジェクトごと・サブネットごとのIPアドレス管理が可能です。
    • CSVから取り込むこともできるので導入は容易です。
  • 拠点単位のラック管理
    • ウィザード式に登録ができます。
    • IPアドレス管理機能と併せてSNMPによる死活監視も可能です。

IPアドレス管理

  • 元々この機能に特化しているということもあって、とても充実していると感じました
    • [Section ]という単位でサービスごとにアドレス管理が可能です。
    • [Scan]機能でping応答があれば、アドレスを自動追加できます。
      (DNSに到達性があればhost名も自動取得可能)
    • prefix当たりの利用状況の確認もできるようになっています。

f:id:at4t3:20191208112819p:plain
DHCPの利用状況を確認した画面

ラック管理

  • 最近のバージョンアップで追加された機能です。
    • ラック単位で作成可能で、デバイス追加時に指定もできます。
    • ウィザード形式で登録できるので、だれでも簡単に登録が可能です。
      f:id:at4t3:20191214062458p:plain
      デバイスを登録した際の表示画面 (筆者自宅環境を再現)

実際に使ってみて

  • IPアドレスは登録処理さえやってしまえば、管理は楽になりそうだと感じました。
  • ラック図に関しては、基本[Device] 登録時に場所を選択できるので、処理を分ける必要もなく、スムーズに行えました。

導入するにあたっての課題

  • 複数人で使用するため、誰でも同じように利用できるよう、「ルール決め」を行い、「マニュアルを作成」し、共有する必要があります。
    • これを怠ってしまうと複数人で利用するという前提が崩れてしまう可能性が高いので必ず行う必要があります。
  • データベースに登録したデータが正しいものかを複数人でチェック、若しくは機械的にチェックする必要があります。
    • 運用に乗せてしまえばそれほど難しい問題ではありませんが、構築段階では登録するデータ量が多いため膨大な工数がかかってしまいます。

将来的な展望

  • 管理ソフトウェアを極力まとめていき、部署異動で担当者が変わったとしても社内外インフラを把握できるようにしていければと考えています。
  • IPドレスの管理はAPI等を活用してなるべく人の手を介さない管理手法を目指していきたいと思います。

まとめ

今回、試してみて感じたことは、「アドレス管理はこれ」「ラック管理はこれ」とアプリケーションが分かれていたりやり方が違ったりと管理が大変だったものが、可能な限り一つのソフトウェアで実現できたほうが、管理コストも運用コストも節約できるなと感じました。

採用情報

朝日ネットでは新卒採用・キャリア採用を行っております。