无法在 linux 上使用 ElasticSearch 映射 logstash
Unable to map the logstash with ElasticSearch on linux
无法使用 linux
上的 ElasticSearch 映射 logstash
我只是 运行 下面的命令,它显示了 docker
上的所有 运行ning 图片
sudo docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e14ace6bd419 a962b6541416 "/bin/bash /usr/loca…" 23 hours ago Up 22 hours 0.0.0.0:5601->5601/tcp trusting_chatterjee
00e6822bb991 28259852697e "/usr/local/bin/dock…" 23 hours ago Up 23 hours 9200/tcp, 9300/tcp friendly_roentgen
我只是想 link 将 logstash 放入弹性搜索并尝试 运行 下面的命令
命令:
sudo docker run -d --rm -it -v /home/sabharanikumar/logstash.conf e95781358676
输出:
989e2a8f4d9fd972c4f2102d726a68877c989b546800899abbb8c382fb62f04c
logstash.conf:
input
{
stdin{}
}
output
{
elasticsearch{ hosts => ["localhost:9200"] }
}
Logstash 日志:
[2019-08-23T09:40:53,833][WARN ][logstash.outputs.elasticsearch]
Attempted to resurrect connection to dead ES instance, but got an
error. {:url=>"http://logstash_system:xxxxxx@elasticsearch:9200/",
:error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError,
:error=>"Elasticsearch Unreachable:
[http://logstash_system:xxxxxx@elasticsearch:9200/][Manticore::ResolutionFailure]
elasticsearch: Name or service not known"}
I 运行 sudo docker ps 但正在列出 logstash。
有什么我遗漏的吗?有什么地方需要更改主机值吗?
正如@Mihai 在评论中指出的那样,"localhost:9200" 是不正确的。 logstash 容器将尝试在端口 9200 上与自身通信,但那里没有任何监听。
我看到的第二个问题是您将 logstash 配置文件作为参数(或命令)传递给 docker。此外,您应该避免使用 --link
选项,因为它已被弃用并且更喜欢网络生成。
换句话说,命令应该是这样的:
docker network create \
--driver bridge \
--subnet=172.100.0.0/16 \
--gateway=172.100.0.1 \
my_elk_net
然后使用 --network=my_elk_net
选项启动两个 docker 容器。例如
docker run -d \
--name elasticsearch \
--name my_elk_net \
<ElasticSearchIMAGEID>
docker run -d \
--name logstash \
--network my_elk_net \
-v "/home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro"
<LogstashIMAGEID>
您的弹性搜索现在应该如下所示:
input
{
stdin{}
}
output
{
elasticsearch{ hosts => ["elasticsearch:9200"] }
}
或者,您可以使用 docker-compose 并避免创建网络。
docker-compose.yml 的一个非常基本的示例应该适合您,应该如下所示:
version: '3.7'
services:
elasticsearch:
image: image_image
logstash:
image: logstash_image
volumes:
- /home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro
depends_on:
- elasticsearch
无法使用 linux
上的 ElasticSearch 映射 logstash我只是 运行 下面的命令,它显示了 docker
上的所有 运行ning 图片sudo docker ps
输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e14ace6bd419 a962b6541416 "/bin/bash /usr/loca…" 23 hours ago Up 22 hours 0.0.0.0:5601->5601/tcp trusting_chatterjee
00e6822bb991 28259852697e "/usr/local/bin/dock…" 23 hours ago Up 23 hours 9200/tcp, 9300/tcp friendly_roentgen
我只是想 link 将 logstash 放入弹性搜索并尝试 运行 下面的命令
命令:
sudo docker run -d --rm -it -v /home/sabharanikumar/logstash.conf e95781358676
输出:
989e2a8f4d9fd972c4f2102d726a68877c989b546800899abbb8c382fb62f04c
logstash.conf:
input
{
stdin{}
}
output
{
elasticsearch{ hosts => ["localhost:9200"] }
}
Logstash 日志:
[2019-08-23T09:40:53,833][WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://logstash_system:xxxxxx@elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://logstash_system:xxxxxx@elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: Name or service not known"}
I 运行 sudo docker ps 但正在列出 logstash。
有什么我遗漏的吗?有什么地方需要更改主机值吗?
正如@Mihai 在评论中指出的那样,"localhost:9200" 是不正确的。 logstash 容器将尝试在端口 9200 上与自身通信,但那里没有任何监听。
我看到的第二个问题是您将 logstash 配置文件作为参数(或命令)传递给 docker。此外,您应该避免使用 --link
选项,因为它已被弃用并且更喜欢网络生成。
换句话说,命令应该是这样的:
docker network create \
--driver bridge \
--subnet=172.100.0.0/16 \
--gateway=172.100.0.1 \
my_elk_net
然后使用 --network=my_elk_net
选项启动两个 docker 容器。例如
docker run -d \
--name elasticsearch \
--name my_elk_net \
<ElasticSearchIMAGEID>
docker run -d \
--name logstash \
--network my_elk_net \
-v "/home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro"
<LogstashIMAGEID>
您的弹性搜索现在应该如下所示:
input
{
stdin{}
}
output
{
elasticsearch{ hosts => ["elasticsearch:9200"] }
}
或者,您可以使用 docker-compose 并避免创建网络。 docker-compose.yml 的一个非常基本的示例应该适合您,应该如下所示:
version: '3.7'
services:
elasticsearch:
image: image_image
logstash:
image: logstash_image
volumes:
- /home/arrchana/logstash.conf:/usr/share/logstash/config/logstash.yml:ro
depends_on:
- elasticsearch