RHEL7環境でDatadogAgentの構成ファイルを別ディレクトリで管理する。

## 最初に

Datadog Agent(以下dd-agent)はそのインストールの簡単さが一つ有名なポイントです。
例えばLinux環境でdd-agentをインストールしたい場合、以下のようにワンライナーでインストールが可能で、そのあとはDatadogのUIからhostの状況を確認することが可能です。

```
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=xxxxxxxxxxxxxxx DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
```

ちなみにMacBookにいれてみるとこんな感じです。簡単！おもしろい！
![Screenshot 2021-12-06 at 18.11.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/7c5f6da9-b6a5-c38a-343a-6f29655fbe9f.png)

Freeプランでも最大5台までhostが登録可能なので、お遊びで使うとしても良い環境だと思います。

## 本編

<img width="500" alt="undraw_Programming_re_kg9v.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/ffddb1f9-0172-8cdc-1663-4a422b5ad632.png">

本題に触れる前にdd-agentのディレクトリ構造について少し触れたいと思います。
通常インストール後、dd-agentは以下のように追加されます。(他にもありますが今回は重要な部分だけ)

| ファイル詳細 | Path | ディレクトリの変更可否 |
|:-:|:-:|:-:|
| datadog.yamlを含む構成ファイル | /etc/datadog-agent/ | できる |
| datadog-agentのアプリケーションファイル | /opt/datadog-agent/ | できない |

今回は **datadog.yamlを含む構成ファイル** を別ディレクトリに移動してみたいと思います。

ディスクの空き容量は何かと問題になりがちなので、もしこの記事がどこかで有用になれば幸いです。

### 環境と手順

#### 環境

host: RHEL 7 Amazon EC2 based
datadog-agent: Agent v7

#### 手順

1. dd-agentをhostにインストールする(稼働は後ほど)
1. /etc/datadog-agent 配下を別ディレクトリに移動しシンボリックリンクをはる
1. dd-agent起動時のpathの読み込みをオーバーライドするファイルを作成
1. dd-agentの起動

### 設定してみる
#### 1. dd-agentをhostにインストールする(稼働は後ほど)
なんにせよインストールしないと始まりません。初めに書いたようにワンライナーでdd-agentをhostにインストールします。
インストールのみ行いたいので、 `DD_INSTALL_ONLY=true` のオプションを追加します。

```
DD_AGENT_MAJOR_VERSION=7 DD_INSTALL_ONLY=true DD_API_KEY=xxxxxxxxxxxxxxxxxxx DD_SITE="datadoghq.com" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
```

実はココにも書いてます↓
![Screenshot 2021-12-06 at 19.41.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/4fa0c84d-ebf7-a854-574f-8c6094b22931.png)

下記のように表示されたらインストール成功です。
下でstatusを確認していますが、ちゃんとdeadですね。
![Screenshot 2021-12-06 at 18.33.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/cd0d4225-ee76-4987-48c4-c6cc985198f3.png)

#### 2. /etc/datadog-agent 配下を別ディレクトリに移動しシンボリックリンクをはる
今回はなんとなく `/var/opt/datadog-agent` に移動させてみました。
管理簡単にしたければ `/opt/datadog-agent` に置くのが良いかもですね。
あとついでに変更前と後でシンボリックリンクをはります。

```
mv /etc/datadog-agent/ /var/opt/
ln -sf /var/opt /etc/datadog-agent
```

#### 3. dd-agent起動時のpathの読み込みをオーバーライドするためのファイルを作成
ファイルは `/etc/systemd/system/datadog-agent.service.d` 配下に作成します。

```
mkdir /etc/systemd/system/datadog-agent.service.d
vi /etc/systemd/system/datadog-agent.service.d/override.conf
```

```conf:override.conf
[Service] 
ExecStart= 
ExecStart=/opt/datadog-agent/bin/agent/agent run -p /opt/datadog-agent/run/agent.pid --cfgpath=/var/opt/datadog-agent/datadog.yaml
```

一応言っておくと空の `ExecStart=` は必要なので消さないでくださいね。約束しましたよ！

一通りの設定が済んだので設定を浸透させます。

```
systemctl daemon-reload
```

#### 4. dd-agentの起動
それではさんざん寝かせたdd-agentの起動です。

```
systemctl start datadog-agent // 起動
systemctl status datadog-agent // status確認
```

![Screenshot 2021-12-06 at 18.57.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/b64ee64f-c9c1-91e2-afae-04ac72eecc57.png)

うんうん、よく動いてますね。
ちなみに下の方をよく見ると `--cfgpath=` がちゃんとオーバーライドされてますね。

![Screenshot 2021-12-06 at 19.17.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/0ccd6764-9d15-9561-42e8-1e9471485a1a.png)

Datadog UI上でもhostからデータが送信されていることが確認できました。

### 最後に
そんな感じで構成ファイルを別ディレクトリに移動させてみました。
今回は環境的にRHELで行いましたが、Linux distributionのため通常のLinux環境でも同様のことができると思います。
他は試してないのでわかりませんが、やってること自体は『なるほどね』って感じだと思うので他のOSでも応用できそうですね。

それでは

## 参考資料

[Red Hat 用 Agent の基本的な使用方法
](https://docs.datadoghq.com/ja/agent/basic_agent_usage/redhat/?tab=agentv6v7)
[基本的な Agent の利用方法
](https://docs.datadoghq.com/ja/agent/basic_agent_usage/?tab=agentv6v7)

<img width="700" alt="a" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/382072/89b27a0e-8880-b2f4-497e-e2eddd6ee326.png">