Datadog agent(以後DD-agent)が、Raspberry Piであっさり動いてしまったので、流行のIntel Galileo(以降Galileo)でもあっさり動くのではと思い挑戦してみました。 結果から言うと「問題なく出来ます」、しかし、Raspberry Pi(Rasbian)の時のように、Datadogが用意してくれている1行コマンド行を実行すれば完成ということには成りませんでした。
こういう時こそ情報の供給がだいじだと思うのでインストール方法を書き残しておくとにします。尚今回は、DD-agentとDogtatsDを起動させ、メトリックスをDatadogに送信しするところまでの手順を書きます。これらのスクリプトをGalileoの起動時に自動で起動する方法やGPIOからの情報を読み込み送信する方法は、後編で書こうと思います。
起動用のSDイメージについて
個人的に利用頻度が最も多いTokoro’s Tech-Noteで公開されているSDフルイメージを利用します。
このイメージの特徴は、arduino IDEは使えなくなるものの、linux系のlibでちょっとこれがあると便利かもというものがrepoから簡単に入手できることです。(Tokoro氏の善意に感謝します。)
先のSDフルイメージをPCにダウンロードし解凍後、fat32でフォーマットした4G SDカート(4G以上のSDの場合は、4Gのパーティションを作成してください)に書き込めば、起動用のSDカードの準備は完了です。
以下が解凍したSDフルイメージの中身です。
準備ができたSDカードをGalileに差し込んで、LANケーブルと電源を指すとYocto linuxが起動してきます。LAN(eth0)は、IP addressを自動で取得する設定に成っているので、Galileoを接続したネットワークにDHCPサーバーが存在している必要があります。IP addressは、OSが起動したのを見計らってIPスキャナーLanScanなどでIntel GalileoのMACアドレスを探してIP addressを確認します。MACアドレスの情報は、LANコネクター口の上にシールで張られています。
OSが起動しIP addressが分かったら、sshでGalileoに接続していきます。
1
|
|
rootにはpasswordは設定されてないので、sshの接続手順が完了すると、一気に管理者権限のコンソールが表示されます。
1 2 3 4 5 |
|
DD-agent起動に足りないPackageのインストール
sshで接続ができたところで、まず最初にする作業は、Tokoroさんが提供してくれているPackageをopkgコマンドでインストールするためのrepo情報の追記です。
既にrepo情報が追記された設定ファイルも公開されているので、下記のコマンドを実行して既存のrepo設定ファイルをTokoroさんのrepoの設定情報が記載された設定ファイルに置き換えます。
1
|
|
詳細に関しては、「IntelのGalileoでパッケージマネージャopkgを使う」を参照してください。
次に、Package情報を更新し、新しいバージョンのパッケージがあるものは最新に入れ替えておくことにします。
1 2 |
|
起動時にDateコマンドで毎回時間を設定するのは非常に手間なので、簡単に時間が設定されるようにします。自動で時間を設定してくれるntpdateをPackageインストールします。
1 2 |
|
次に、ntpdもインストールして設定しておきます。
1
|
|
ntpの設定ファイルを編集します。
1
|
|
# server time.server.example.comと書かれている行をコメントアウトし、次のように公開されているntpサーバー名を記載します。
1 2 3 |
|
次に、システムの状態を定期的に監視するためのsysstatをPackageインストールします。
1
|
|
DD-agentを起動するためのPackageの追加インストールは、これで終了です。
DD-agentのダウンロード
OSの準備ができたので、DD-agentをGithubから取得し、Galileoに設置します。 Githubのサイトで、DD-agentを検索すると、次のような検索結果が表示されます。
赤枠で囲った項目をダブルクリックして、Datadogが管理しているdd-agentのページに移動します。
Download ZIP
ボタンを見つけ、右クリックを使ってリンク先URLをクリップボードに保存ます。
Galileoのwgetコマンドでは、githubのCAの情報がうまく処理でないようなので—no-check-certificateをコマンドオプションに追記し実行します。
1
|
|
ダウンロードが終わったらファイルを解凍し、起動の準備に入ります。
1
|
|
master.zipは、dd-agent-master
というディレクトリ以下に展開されます。
1
|
|
ディレクトリをls
で表示してみると次の様になっているはずです。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
API keyの取得
DatadogのAPIアクセスは、API keyを使って認証しています。このkey(文字列)情報は、DD-agentの起動時に設定ファイルから読み込む仕様になっているので、設置ファイルに事前に記述しておく必要があります。
設定ファイルのサンプルが、dd-agent-masterディレクトリにあるので、このサンプルファイルをコピーして作業を始めます。
1
|
|
次に、設定ファイルに書き込むためのAPI keyをDatadog APIsページから取得します。
API keyの文字列が分かったところで、設定ファイルの編集をします
1
|
|
設定ファイルの18行目にある、api_key:
の後ろに先のページで取得したAPI keyをペーストします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
これで設定ファイルの追記も完了です。
Agentの動作確認
Agentを起動する前にdatadog関連のデーモンがlogを出力する先のディレクトリーを準備しておきます。
1
|
|
それでは、Agentを起動してみます。
1 2 |
|
しばらくすると、DatadogのInfrastrucureページ上にclanton(Galileoに設定したホスト名)というホスト名が追加されます。
ホスト名をダブルクリックすると、sysstatが収集しているGalileoの基本メトリックスがグラフ化されて表示されるはずです。
DogtatsDの動作確認
次に、任意のメトリックスを手軽に転送するためにDogStatsを起動することにします。
DogStatsDは、NYC発祥の物販サイトEtsyがFOSS化しているStatsDのプロトコルを利用した派生バージョンです。StatsDは、DevOpsを実践している欧米企業で各種のメトリックスを収集するために広く使われているソフトウェアです。
同様の目的でDogStatsDを使うことで、プログラムの中からDatadogのサービスに任意のメトリックスを簡単に転送することができます。メトリックスさえ転送できてしまえば、後はDatadogのダッシュボード機能を使って、集めたメトリックスをリアルタイムに処理&可視化できるという文脈になります。
既に設定ファイルへのAPI keyの追記は済んでいるので、次のように起動します。
1 2 |
|
任意のメトリックスをプログラムの中からDogStatsDを介してDatadogに送信ができたかを確認するためには、次のような簡単なプログムを書きます。
pythonの場合は、Datadogが提供しているDogStatsDのラッパーライブラリーがPIPにあるので次のようにインストールすることにします。
1 2 3 4 |
|
dogstatsd-pythonのインストールが無事インストールが成功したら、dogstatsd-test.pyなどのファイル名で次のファイルのようなpythonスクリプトを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
pythonスクリプトが書き上がったところで実行してみます。
1
|
|
コンソールに大量のsleep文字列が出力されます。バックグラウンドではsleepが表示された回数をカウントして、一定時間ごとにそのカウント値をDatadogに転送しています。
先に見たDatadogのInfrastrucureページのclantonの行の右端にmyappという青いラベルが増えていることが確認できたら、ダブルクリックしmyappの名前スペースのメトリックスを表示するページに移動します。
今は、myappの名前スペースに1種類のメトリックスしかないので、次のようなグラフが表示されれば、動作確認は完了です。
まとめ
ここまでで前編は終わりです。内容が理解できれば30分以内でできてしまうインストール作業ではないかと思います。こんな簡単な作業で、GPIOで集めた情報も可視化できるなんて素晴しいと思いませんか。後半では、GalileoのGPIO関連ライブラリーと任意のメトリックスの取り扱いに関して書いていこうと思います。
- 2014/04/18 ntpdate、及びntpの設定に関連する記述を変更しました。