# LogstashからElastic cloudに接続時に407エラー発生

**URL:** <https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [October 17, 2019, 8:59am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009 "2019-10-17T08:59:07Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![t-nakata](https://avatars.discourse-cdn.com/v4/letter/t/8491ac/32.png) [@t-nakata](https://discuss.elastic.co/u/t-nakata)\
**Post date:** [October 17, 2019, 8:59am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/1 "2019-10-17T08:59:08Z")

</div>

LogstashからElastic cloudに対してファイル転送を実施しようとしたところ、407エラーが発生しています。

【エラーメッセージ】  
Attempted to resurrect connection to dead ES instance, but got an error. {:url=\>"[https://elastic:xxxxxx@XXXXX.ap-northeast-1.aws.found.io:9243/](https://elastic:xxxxxx@XXXXX.ap-northeast-1.aws.found.io:9243/)", :error\_type=\>LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :error=\>"Got response code '407' contacting Elasticsearch at URL '[https://XXXXX.ap-northeast-1.aws.found.io:9243/](https://XXXXX.ap-northeast-1.aws.found.io:9243/)'"}

【パイプラインファイル内容】  
input {  
file{  
path =\> "/tmp/test.log"  
start\_position =\> "beginning"  
}  
}  
output{  
elasticsearch{  
hosts =\> ["[https://XXXXX.ap-northeast-1.aws.found.io:9243](https://XXXXX.ap-northeast-1.aws.found.io:9243)" ]  
user =\> "elastic"  
password =\> "XXXXX"  
index =\> "cloud\_test"  
proxy =\> "[http://XXXXX@XXXXX.com:8080](http://XXXXX@XXXXX.com:8080)"  
}  
}

proxyを設定しているのにも関わらず、407エラーになる原因が分からずにおります。  
curlコマンドにて、対象のURLにはアクセス出来ることは確認できております。

原因について考えられることをご教示頂けないでしょうか

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [October 17, 2019, 1:06pm UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/2 "2019-10-17T13:06:11Z")

</div>

１つ確認したいのですが、curlで疎通確認できているのは、proxyを経由(--proxyオプションあたりを指定）してですよね？

407はプロキシサーバを使うのに権限がないということだと思うので、プロキシを指定している部分の設定があっているかどうかを確認いただくのが良いのではないかと思います。

可能であれば、プロキシを経由せずにElastic Cloudに直接リクエストを投げられる環境で、proxyの設定を外して動作確認いただくと、どこに問題があるのか切り分けができるのではないでしょうか。

---

<div class="post-metadata">

**Author:** ![t-nakata](https://avatars.discourse-cdn.com/v4/letter/t/8491ac/32.png) [@t-nakata](https://discuss.elastic.co/u/t-nakata)\
**Post date:** [October 17, 2019, 11:39pm UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/3 "2019-10-17T23:39:53Z")

</div>

ご回答ありがとうございます。curlでの確認時は、/etc/profieに環境変数HTTP\_PROXY、HTTPS\_PROXYを指定して疎通確認しています。環境変数に指定した値と、パイプラインのproxyに設定している値は同一のものとしております

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [October 21, 2019, 5:18am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/4 "2019-10-21T05:18:06Z")

</div>

こちらで試した限りですと、認証つきのプロキシ経由でもElastic Cloudあてにデータを送信できました。

環境情報は以下の通りです。

- Elastic Cloud (7.4.0)
- Logstash 7.4.0
- Squid 3.5.27

LogstashのOutputの中身は以下のようになっています。（一部マスクしてます）

```auto
output {
    stdout {}
    elasticsearch{
        hosts => ["https:// ******.eastus2.azure.elastic-cloud.com:9243"]
        index => "cloud_test"
        user => "elastic"
        password => "fukuzatsunapassword"
        
        proxy => "http://forum1021:forum1021@localhost:3333"
     }
}

```

forum1021というユーザを作成し、パスワードもforum1021として指定しています。

このときのSquid側のアクセスログは以下のようになっています。

```auto
1571633668.168 0 127.0.0.1 TCP_DENIED/407 4355 POST http:// *****.eastasia.cloudapp.azure.com:9200/_bulk - HIER_NONE/- text/html
1571633668.275 103 127.0.0.1 TCP_MISS/200 632 POST http:// *****.eastasia.cloudapp.azure.com:9200/_bulk forum1021 HIER_DIRECT/xxx.xxx.xxx.xxx application/json

```

まずユーザ、パスワードなしでアクセスしようとして、TCP\_DENIED(HTTP STATUS 407)となり、そのあとに指定したユーザ（forum1021)でPOSTして、200番が返されていることが分かります。

これらのことから、logstashのoutput/elasticsearchで、認証つきプロキシの指定はできるのではないかと思います。

proxy のところで指定されている文字列が正しいかどうか、今一度確認いただくのはどうでしょうか？

> http://\<ユーザ名\>:\<パスワード\>@\<ホスト名\>:\<ポート番号\>

また、あわせてプロキシ側のログを見ることができれば、そちらもあわせて確認するのも良いと思います。

ご参考になれば幸いです。

---

<div class="post-metadata">

**Author:** ![t-nakata](https://avatars.discourse-cdn.com/v4/letter/t/8491ac/32.png) [@t-nakata](https://discuss.elastic.co/u/t-nakata)\
**Post date:** [October 21, 2019, 5:44am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/5 "2019-10-21T05:44:02Z")

</div>

ご回答ありがとうございます。

proxy のところで指定されている文字列なのですが、proxyのユーザ名に@を含む環境となっております。普通に「@」で記載するとパイプラインのフォーマットエラーとなってしまうため、%40と記載してエスケープしているのですが、この「@」の部分がうまく認識されてないのではと考えております。  
ユーザ名で「@」を使用したい場合、どのように記載すれば良いのでしょうか？

設定内容(一部マスクしております)：  
proxy =\> "[http://XXXXX%40jp.XXX.com:XXXXXX@XXXXX.com:8080](http://XXXXX%40jp.XXX.com:XXXXXX@XXXXX.com:8080)"

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [October 21, 2019, 7:12am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/6 "2019-10-21T07:12:11Z")

</div>

試しにユーザ名を `test@abc.com` としてproxyに指定した場合、プロキシサーバ側のログには以下のようにでました。

```auto
1571639179.557 0 127.0.0.1 TCP_DENIED/407 450 HEAD http:// *****.eastasia.cloudapp.azure.com:9200/ test%2540abc.com HIER_NONE/- text/html

```

＠を％40でエスケープした後の、％記号をさらにエスケープしようとして %2540 となっているように見えますね。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 18, 2019, 7:12am UTC](https://discuss.elastic.co/t/logstash-elastic-cloud-407/204009/7 "2019-11-18T07:12:12Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
