Open8

Raspberry Pi 4にDatadogAgentをインストールする

astkastk

公式で紹介されている手順(ただし非公式サポート)を見ながらやる。監視対象のホスト名は pi4b にしている(2枚目のraspi4)。

https://docs.datadoghq.com/developers/faq/deploying-the-agent-on-raspberrypi/

環境情報

root@pi4b:~# cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
root@pi4b:~# uname -r
5.10.17-v7l+
root@pi4b:~# uname a
uname: extra operand 'a'
Try 'uname --help' for more information.
root@pi4b:~# uname -a
Linux pi4b 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
astkastk

Datadogは5ホストまでのFree Trialを利用している。サイドメニューの [Integrations] → [APIs] でAPIキーを生成する。

astkastk

監視対象にクライアントをインストールする。

デフォルトだと ~/.datadog-agent にインストールされるが /root/ にインストールされるのに抵抗があったので適当に DD_HOME=/opt/datadog-agent を指定した。

実行ファイルが入っているので /etc ではなく、/var/lib に置くにしては設定ファイルも入っているしで、こういうディレクトリにパッケージングされたアプリケーションはどこに置くのが適切なんだろう。

sudo -i
apt install sysstat
mkdir /opt/datadog-agent

# datadog-agentのインストール
# 全部で30分程度、特にSetting up Integrationで時間がかかる
DD_API_KEY=$(systemd-ask-password) DD_HOME=/opt/datadog-agent \
  sh -c "$(curl -L https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh)"
# password: <Your Datadog API Key>

cat << EOF > /etc/systemd/system/datadog-agent.service
[Unit]
Description=Datadog Agent
Wants=network-online.target
After=network-online.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/datadog-agent/bin/agent

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start datadog-agent
systemctl status datadog-agent
systemctl enable datadog-agent

起動に成功すると以下のようなログが出力される。

root@pi4b:~# systemctl status datadog-agent
● datadog-agent.service - Datadog Agent
   Loaded: loaded (/etc/systemd/system/datadog-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2021-05-24 13:14:31 BST; 14s ago
 Main PID: 15945 (sh)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/datadog-agent.service
           ├─15945 sh /opt/datadog-agent/bin/agent
           ├─15947 /opt/datadog-agent/venv/bin/python /opt/datadog-agent/bin/../venv/bin/supervisord -c agent/supervisor.conf
           ├─15950 python agent/dogstatsd.py --use-local-forwarder
           ├─15951 python agent/ddagent.py --use_simple_http_client=1
           └─15952 python agent/agent.py foreground --use-local-forwarder

May 24 13:14:39 pi4b dd.forwarder[15951]: INFO (transaction.py:190): No transaction to flush during flush #1
May 24 13:14:39 pi4b dd.collector[15952]: INFO (collector.py:415): Running check disk
May 24 13:14:39 pi4b dd.collector[15952]: INFO (collector.py:858): gohai file not found
May 24 13:14:40 pi4b dd.collector[15952]: INFO (cloud_metadata.py:275): Attempting to get OpenStack meta_data.json
May 24 13:14:40 pi4b dd.collector[15952]: INFO (cloud_metadata.py:295): Could not load meta_data.json, not OpenStack EC2 instance
May 24 13:14:40 pi4b dd.collector[15952]: INFO (collector.py:737): Hostnames: {'socket-hostname': 'pi4b', 'timezones': ('GMT', 'BST'), 'hostname': 'pi4b', 'host_aliases': [], 'socket-fqdn': 'pi4b'}, tags: {}
May 24 13:14:40 pi4b dd.forwarder[15951]: INFO (transaction.py:177): Flushing 1 transaction during flush #2
May 24 13:14:41 pi4b dd.collector[15952]: INFO (collector.py:571): Finished run #1. Collection time: 6.17s. Emit time: 0.35s
May 24 13:14:44 pi4b dd.forwarder[15951]: INFO (transaction.py:177): Flushing 2 transactions during flush #3
May 24 13:14:44 pi4b dd.dogstatsd[15950]: INFO (dogstatsd.py:276): Flush #1: flushed 0 metrics, 0 events, and 0 service check runs
astkastk

ダッシュボードで表示してみる。$host 変数を定義する。詳しいことはよく調べていないがメトリクスに付随する host という属性に対する変数として機能するらしい。

変数を定義したらグラフを作成する。時系列グラフを選択し

avg:system.cpu.user{$host} by {host}

というクエリで複数台のホストのメトリクスをホストごとの平均値で表示できる。

無事表示された。今回は pi2b に加え pi2a という2台のホストで、それぞれdatadog-agentを動作させている。

astkastk

Raspberry PI 2BとZero Wにもインストールしてみたところ結構時間がかかっている。クロック周波数基準の単純計算だと最大6-8倍くらいの時間がかかりそう。同時並行で進めたのでネットワーク帯域を圧迫したせいかもしれない。

  • 4B: 1.5GHz x4 core
  • 2B: 750MHz
  • Zero W: 1GHz
astkastk

何度やってもZero Wへのインストールが失敗する。スクリプトを覗いてみると DD_SKIP_INTEGRATIONS というフラグがあったので指定してみる。

https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh

curl -LO https://raw.githubusercontent.com/DataDog/dd-agent/master/packaging/datadog-agent/source/setup_agent.sh
DD_API_KEY=$(systemd-ask-password) DD_HOME=/opt/datadog-agent DD_SKIP_INTEGRATIONS=1 sh setup_agent.sh
# password: <Your Datadog API Key>
astkastk

無事インストールはできたけれどバージョンがv 5.32.7で、これだと datadog-agent integration コマンドが使えない。とりあえずintegrationsがなくてもCPU使用率程度のメトリクスは送れているようなので、一旦これで良しとする。

気が向いたら https://github.com/DataDog/datadog-agent#getting-started に書かれている通りに最新版をビルドしてみたい。PythonからGoになったのかな。