Logstash (docker) не может подключиться к базе данных. Ошибка => Невозможно подключиться к базе данных. Пробовал 1 раз {:message=>Java::OrgPostgresqlUtil::PSQLException: соединение с локальным хостом:5432 отклонено. Убедитесь, что имя хоста и порт указаны правильно, а постмастер принимает соединения TCP/IP., :exception=>Sequel::DatabaseConnectionError
файл logstash.conf:
input{
jdbc {
jdbc_driver_library => '/usr/share/logstash/logstash-core/lib/jars/postgresql-42.5.0.jar'
jdbc_driver_class => "org.postgresql.Driver"
jdbc_connection_string => "jdbc:postgresql://localhost:2022/testdb"
jdbc_user => "postgres"
jdbc_password => "12345"
statement => "SELECT * FROM users"
schedule => "* * * * *"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "%{indexName}"
}
}
файл logstash.yml:
http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
xpack.monitoring.elasticsearch.hosts: ["localhost:9200"]
xpack.monitoring.enabled: true
Как я могу подключиться к базе данных?
Я пытался, но выдает эту ошибку: Невозможно подключиться к базе данных. Пробовал 1 раз {:message=>"Java::OrgPostgresqlUtil::PSQLException: попытка подключения не удалась.", :exception=>Sequel::DatabaseConnectionError, :cause=>org.postgresql.util.PSQLException: попытка подключения не удалась.
Я исправил эту проблему следующим образом =>
1-) Мой порт postgreSQL — «2022», поэтому я изменил порт IPV4 = 127.0.0.1/22 в файле pg_hba.conf.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/22 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/22 trust
host replication all ::1/128 trust
host all all all md5
2-) Используйте IP-адрес компьютера (ipconfig) вместо localhost=
old= jdbc:postgresql://localhost:2022/testdb
new= jdbc:postgresql://192.168.1.83:2022/testdb
В
jdbc_connection_string
вам нужно использовать имя контейнера базы данных.localhost
— это контейнер logstash, в котором не запущена база данных.