Logstash设置为Mysql托管在AWS RDS上。无法连接

问题描述 投票:1回答:1

我有一个MySQL DB,托管在AWS RDS上,我在本地运行ElasticSearch,并使用Logstash从AWS上的MYSQL服务器上检索数据,然后将数据推送到我的ElasticSearch DB。我在本地运行ElasticSearch,并使用Logstash从AWS上的MYSQL服务器上获取数据,然后将数据推送到我的ElasticSearch DB。

问题是我的logstash文件没有正确设置,我想。

input {
    jdbc {
        jdbc_connection_string => "jdbc:mysql://aws.ffffffffff.us-east-1.rds.amazonaws.com:3306/dbName?user=userName&password=pword"
        jdbc_user => "user"
        jdbc_password => "pword"
        schedule => "* * * * *"
        jdbc_validate_connection => true
        jdbc_driver_library => "C:\Program Files (x86)\MySQL\Connector J 8.0\mysql-connector-java-8.0.19.jar"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        statement => "SELECT * from data-5"
        type => "data-5"
        tags => ["data-5"]
    }

    jdbc {
        jdbc_connection_string => "jdbc:mysql://aws.ffffffffff.us-east-1.rds.amazonaws.com:3306/dbName?user=userName&password=pword"
        jdbc_user => "user"
        jdbc_password => "pword"
        schedule => "* * * * *"
        jdbc_validate_connection => true
        jdbc_driver_library => "C:\Program Files (x86)\MySQL\Connector J 8.0\mysql-connector-java-8.0.19.jar"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        statement => "SELECT * from data-4"
        type => "data-4"
        tags => ["data-4"]
    }

    jdbc {
        jdbc_connection_string => "jdbc:mysql://aws.ffffffffff.us-east-1.rds.amazonaws.com:3306/dbName?user=userName&password=pword"
        jdbc_user => "user"
    jdbc_password => "pword"
    schedule => "* * * * *"
        jdbc_validate_connection => true
        jdbc_driver_library => "C:\Program Files (x86)\MySQL\Connector J 8.0\mysql-connector-java-8.0.19.jar"
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        statement => "SELECT * from data-3"
        type => "data-3"
        tags => ["data-3"]
    }
}
output {
    stdout { codec => json_lines }

    if "data-5" in [tags] {
        elasticsearch {
            hosts => ["http://127.0.0.1:9200/"]
            index => "data-5"
            document_type => "data-%{+YYYY.MM.dd}"
        }
    }

    if "data-4" in [tags] {
        elasticsearch {
            hosts => ["http://127.0.0.1:9200/"]
            index => "data-4"
            document_type => "data-%{+YYYY.MM.dd}"
        }
    }

    if "data-3" in [tags] {
        elasticsearch {
            hosts => ["http://127.0.0.1:9200/"]
            index => "data-3"
            document_type => "data-%{+YYYY.MM.dd}"
        }
    }
}

这就是编程的乐趣所在吧?

总之,我在本地使用的是windows系统,你可能可以从jdbc驱动库的文件路径中看出。我与AWS RDS的jdbc连接是从AWS Console复制和粘贴的,所以没有涉及到错别字。

我被告知,我只需要在文件中添加 jdbc:mysql:/ 到网址。但是,我在AWS控制台中还有什么地方需要做的吗?我需要修改我的RDS实例吗?

对了,错误是。

 Unable to connect to database. Tried 1 times 
{:error_message=>"Java::ComMysqlCjJdbcExceptions::CommunicationsException: 
Communications link failure\n\n
The last packet sent successfully to the server was 0 milliseconds ago. 
The driver has not received any packets from the server."
mysql elasticsearch logstash amazon-rds
1个回答
0
投票

我有一个类似的问题,SSL没有启用通信。所以,AWS RDS不允许连接。

我指定了一个额外的查询参数 useSSL=false 到JDBC连接字符串,问题就解决了。

所以,在你的情况下,你的 jdbc_connection_string 将如下:

"jdbc:mysql://aws.ffffffffff.us-east-1.rds.amazonaws.com:3306/dbName?useSSL=false&user=userName&password=pword"
© www.soinside.com 2019 - 2024. All rights reserved.