プロキシ環境下での Datadog インストール（Nginx版 [未完成]）

## :bookmark: 説明
インターネットに直接接続できない、プロキシ越しでしか外部にアクセスできない環境下での Datadog エージェントのインストールと `dd-agent` 設定方法を説明。

## :bookmark: 結論
以下の４つのポイントがある

### :notebook: ①Datadog エージェントをインストールするために

 - POINT :one:： 環境変数 `HTTP_PROXY` `HTTPS_PROXY` `NO_PROXY` にプロキシ設定
 - POINT :two:： 環境変数 `DD_HTTP_PROXY` `DD_HTTPS_PROXY` `DD_PROXY_NO_PROXY` にプロキシ設定
 - POINT :three:： `/etc/yum.conf` にプロキシ設定する

### :notebook: ②Datadog 画面上にがメトリクスが表示されるようになるまで

 - POINT :four:： `/etc/datadog-agent/datadog.yaml` にもプロキシを明示し、`datadog agent` 再起動


```
proxy:
    https: http://[プロキシサーバのプライベートIP]:[プロキシサーバのポート]
    http: http://[プロキシサーバのプライベートIP]:[プロキシサーバのポート]
```

## :dog: Datadog の初期状態
どのページに行ってもなにもありません。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/18351/bd2c690e-a92e-454b-6d42-d536ef2851a2.png)


## :seedling: AWS インスタンスの初期状態
以下のような構成。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/18351/133ab5b8-858c-85d7-a9c2-485194e3bb50.png)

private サーバから直でインターネットには行けない。

## :sparkles: プロキシサーバの構築

```
# yum update
$ sudo yum update -y

# リポジトリにあるバージョン確認
# (AmazonLinux2にはExtrasリポジトリというものがあり、パッケージの導入ができる)
$ amazon-linux-extras | grep nginx
4  nginx1.12                available    [ =1.12.2 ]

# install nginx
sudo amazon-linux-extras install nginx1.12 -y

# conf の編集
$ sudo vi /etc/nginx/nginx.conf
```

以下の部分を変更し、フォワードプロキシとして機能するようにする

```
resolver 8.8.8.8; <-追記
location / {
    proxy_pass $scheme://$http_host$request_uri;
}
```

Nginxを起動＆自動起動設定させておく

```
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
```

正常に起動していることを確認

```
$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-03-23 16:39:09 UTC; 17s ago
 Main PID: 6298 (nginx)
   CGroup: /system.slice/nginx.service
           tq6298 nginx: master process /usr/sbin/nginx
           mq6299 nginx: worker process
```

自動起動設定が有効になっていることの確認

```
$ sudo systemctl is-enabled nginx.service
enabled
```

## :a: プロキシ設定をせず、Datadog Agent をインストールしようとする

Google に `curl` はできる状態

```
[ec2-user@ip-10-X-Y-Z ~]$ curl --dump-header - http://www.google.com -x http://[プロキシサーバのプライベートIP]:8080
HTTP/1.1 200 OK
Date: Wed, 20 Mar 2019 19:04:30 GMT
(以下略)
```


しかしDatadogエージェントインストールは失敗

```
DD_API_KEY=abcdefghijklmnopq bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:02:08 --:--:--     0curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection timed out
```



## :b: プロキシ設定をして、Datadog Agent をインストールする

プロキシ設定

```
$ export HTTP_PROXY=http://[プロキシサーバのプライベートIP]:80
$ export HTTPS_PROXY=http://[プロキシサーバのプライベートIP]:80
$ export NO_PROXY=169.254.169.254
```


Datadogエージェントインストール、、はまだ成功しない

```
DD_API_KEY=abcdefghijklmnopq bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11280  100 11280    0     0  71531      0 --:--:-- --:--:-- --:--:-- 71847

* Installing YUM sources for Datadog

* Installing the Datadog Agent package

Loaded plugins: priorities, update-motd, upgrade-helper
Cleaning repos: amzn-main amzn-updates datadog
0 metadata files removed
0 sqlite files removed
0 metadata files removed
Loaded plugins: priorities, update-motd, upgrade-helper
https://yum.datadoghq.com/stable/6/x86_64/repodata/repomd.xml: [Errno 12] Timeout on https://yum.datadoghq.com/stable/6/x86_64/repodata/repomd.xml: (28, 'Connection timed out after 5001 milliseconds')
Trying other mirror.
```

ドキュメントを見ると「DD_PROXY～」も設定しなくてはいけないようだ。

[Agent proxy configuration](https://docs.datadoghq.com/agent/proxy/?tab=agentv6)

ということでプロキシ設定再トライ

```
$ export DD_PROXY_HTTP=http://[プロキシサーバのプライベートIP]:80
$ export DD_PROXY_HTTPS=http://[プロキシサーバのプライベートIP]:80
$ export DD_PROXY_NO_PROXY=169.254.169.254
```

インストール再トライ

```
(同様のエラー)
```

yum ができていないようなので、`/etc/yum.conf` にプロキシ設定する

```
(略)
proxy=http://[プロキシサーバのプライベートIP]:80
(略)
```


3度目の正直

```
DD_API_KEY=abcdefghijklmnopq bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

(略)

Installed:
  datadog-agent.x86_64 1:6.10.2-1

Complete!

* Adding your API key to the Agent configuration: /etc/datadog-agent/datadog.yaml

* Starting the Agent...

datadog-agent start/running, process 29223


Your Agent is running and functioning properly. It will continue to run in the
background and submit metrics to Datadog.

If you ever want to stop the Agent, run:

    sudo stop datadog-agent

And to run it again run:

    sudo start datadog-agent
```

インストール成功！


## :cactus: Datadog 画面上にがメトリクスが表示されるようにする

しかし、いつまで経ってもDatadog画面上で見えない。

`/etc/datadog-agent/datadog.yaml` にもプロキシを明示することにした。

```
proxy:
    https: http://[プロキシサーバのプライベートIP]:80
    http: http://[プロキシサーバのプライベートIP]:80
```

datadog agent 再起動
`sudo restart datadog-agent` 


やっとDatadog 画面上にも表れた💡
![image.png](https://qiita-image-store.s3.amazonaws.com/0/18351/825d396f-f791-87fe-600b-a9429de48593.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/18351/bed96415-6f1b-abd8-4dd1-47d2d9abe923.png)

## トラブルシューティング
`/var/log/datadog/`
に吐かれているログを見ましょう。


## :notebook_with_decorative_cover: 参考ドキュメント
[Amazon Linux2にnginxをinstallするメモ - Qiita](https://qiita.com/takayuki_tk/items/aa8e1898743458cebd45)

[Nginxでyumやwget用のフォワードプロキシ | A Convenient Engineer's Note](http://blog.memolib.com/memo/265/)

[Agent proxy configuration](https://docs.datadoghq.com/agent/proxy/)

[curlコマンドにてproxy設定 - Qiita](https://qiita.com/tkj/items/c6dad4efc0dff4fecd93)

[GCP – DataDogのログ転送用Proxyにハマったんです。 – Mark System Techno](https://www.mark-system.com/?p=1009)