# Logstash and MariaDB won't connect (both dockerized)

**URL:** <https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499>\
**Category:** Logstash\
**Created:** [August 17, 2017, 11:51pm UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499 "2017-08-17T23:51:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![gabrielmll](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabrielmll/32/21240_2.png) [@gabrielmll](https://discuss.elastic.co/u/gabrielmll)\
**Post date:** [August 17, 2017, 11:51pm UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499/1 "2017-08-17T23:51:08Z")

</div>

Hello everyone,

newby here, quite excited to learn about elastic and the community.  
Some help would be great.

I'm getting an error when JDBC plugin attempts to connect to mariaDB through the following settings:

## mariaDB 10.1.14

172.17.0.2:3306  
_It's in a docker-container, if it matters._

## JDBC:

I've tried the following:

- mariadb-java-client-2.1.0.jar
- mariadb-java-client-1.3.2.jar
- mysql-connector-java-5.1.43-bin.jar

## Elastic Stack

**- docker-compose.yml:**

> version: '2'
> 
> services:
> 
> elasticsearch:  
> build: elasticsearch/  
> volumes:  
> - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  
> ports:  
> - "9200:9200"  
> - "9300:9300"  
> environment:  
> ES\_JAVA\_OPTS: "-Xmx256m -Xms256m"  
> networks:  
> - elk
> 
> logstash:  
> build: logstash/  
> volumes:  
> - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml  
> - ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf  
> - ./drivers/:/opt/logstash/vendor/jar/jdbc/  
> ports:  
> - "5001:5001"  
> environment:  
> LS\_JAVA\_OPTS: "-Xmx256m -Xms256m"  
> networks:  
> - elk  
> depends\_on:  
> - elasticsearch
> 
> kibana:  
> build: kibana/  
> volumes:  
> - ./kibana/config/:/usr/share/kibana/config  
> ports:  
> - "5601:5601"  
> networks:  
> - elk  
> depends\_on:  
> - elasticsearch
> 
> networks:
> 
> elk:  
> driver: bridge

**- logstash/Dockerfile:**

> FROM [docker.elastic.co/logstash/logstash:5.5.2](http://docker.elastic.co/logstash/logstash:5.5.2)  
> RUN /opt/logstash/bin/logstash-plugin install logstash-input-jdbc

**- logstash.yml:**

> http.host: "0.0.0.0"  
> path.config: /usr/share/logstash/pipeline  
> xpack.monitoring.enabled: false

**logstash.conf:**

> input {
> 
> jdbc {  
> jdbc\_driver\_library =\> "/opt/logstash/vendor/jar/jdbc/mariadb-java-client-2.1.0.jar"  
> jdbc\_driver\_class =\> "org.mariadb.jdbc.Driver"  
> jdbc\_connection\_string =\> "jdbc:mariadb://172.17.0.2:3306/heaven"  
> jdbc\_user =\> "root"  
> jdbc\_password =\> "root"  
> jdbc\_validate\_connection =\> true  
> statement =\> "SELECT \* FROM entities"  
> }  
> }
> 
> output {  
> stdout { codec =\> json\_lines }  
> elasticsearch {  
> hosts =\> "elasticsearch:9200"  
> index =\> "entities"  
> }  
> }

## What happen:

_sorry. I passed 7000 characters_

---

<div class="post-metadata">

**Author:** ![gabrielmll](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabrielmll/32/21240_2.png) [@gabrielmll](https://discuss.elastic.co/u/gabrielmll)\
**Post date:** [August 17, 2017, 11:51pm UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499/2 "2017-08-17T23:51:57Z")

</div>

... _really sorry_

## What happen:

I'm printing here only what I get from logstash, although I'll be quite happy to give elasticsearch and kibana's configuration and log if you think it's relevant.  
I've tried an _input{}_ by _exec{}_ a JSON file and it seems to work fine.

> logstash\_1 | ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.  
> logstash\_1 | Sending Logstash's logs to /usr/share/logstash/logs which is now configured via log4j2.properties  
> logstash\_1 | [2017-08-17T22:05:18,729][INFO][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=\>{:removed=\>, :added=\>[[http://elasticsearch:9200/](http://elasticsearch:9200/)]}}  
> logstash\_1 | [2017-08-17T22:05:18,733][INFO][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck\_url=\>[http://elasticsearch:9200/](http://elasticsearch:9200/), :path=\>"/"}  
> logstash\_1 | [2017-08-17T22:05:19,488][WARN][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=\>#Java::JavaNet::URI:0x301c8f4f}  
> logstash\_1 | [2017-08-17T22:05:19,488][INFO][logstash.outputs.elasticsearch] Using mapping template from {:path=\>nil}  
> logstash\_1 | [2017-08-17T22:05:19,724][INFO][logstash.outputs.elasticsearch] Attempting to install template {:manage\_template=\>{"template"=\>"logstash-_", "version"=\>50001, "settings"=\>{"index.refresh\_interval"=\>"5s"}, "mappings"=\>{"default"=\>{"\_all"=\>{"enabled"=\>true, "norms"=\>false}, "dynamic\_templates"=\>[{"message\_field"=\>{"path\_match"=\>"message", "match\_mapping\_type"=\>"string", "mapping"=\>{"type"=\>"text", "norms"=\>false}}}, {"string\_fields"=\>{"match"=\>"_", "match\_mapping\_type"=\>"string", "mapping"=\>{"type"=\>"text", "norms"=\>false, "fields"=\>{"keyword"=\>{"type"=\>"keyword", "ignore\_above"=\>256}}}}}], "properties"=\>{"@timestamp"=\>{"type"=\>"date", "include\_in\_all"=\>false}, "@version"=\>{"type"=\>"keyword", "include\_in\_all"=\>false}, "geoip"=\>{"dynamic"=\>true, "properties"=\>{"ip"=\>{"type"=\>"ip"}, "location"=\>{"type"=\>"geo\_point"}, "latitude"=\>{"type"=\>"half\_float"}, "longitude"=\>{"type"=\>"half\_float"}}}}}}}}  
> logstash\_1 | [2017-08-17T22:05:19,735][INFO][logstash.outputs.elasticsearch] New Elasticsearch output {:class=\>"LogStash::Outputs::Elasticsearch", :hosts=\>[#Java::JavaNet::URI:0x20752163]}  
> logstash\_1 | [2017-08-17T22:05:19,739][INFO][logstash.pipeline] Starting pipeline {"id"=\>"main", "pipeline.workers"=\>4, "pipeline.batch.size"=\>125, "pipeline.batch.delay"=\>5, "pipeline.max\_inflight"=\>500}  
> **\> logstash\_1 | [2017-08-17T22:07:30,932][WARN][logstash.inputs.jdbc] Failed test\_connection.**  
> **\> logstash\_1 | [2017-08-17T22:07:30,937][ERROR][logstash.pipeline] A plugin had an unrecoverable error. Will restart this plugin.**  
> logstash\_1 | Plugin: \<LogStash::Inputs::Jdbc jdbc\_driver\_library=\>"/opt/logstash/vendor/jar/jdbc/mariadb-java-client-2.1.0.jar", jdbc\_driver\_class=\>"org.mariadb.jdbc.Driver", jdbc\_connection\_string=\>"jdbc:mariadb://172.17.0.2:3306/heaven", jdbc\_user=\>"root", jdbc\_password=\>, jdbc\_validate\_connection=\>true, statement=\>"SELECT \* FROM entities", id=\>"5d3bb6f3d8d3e12b5ce2372e6633ce9c0dfcf283-1", enable\_metric=\>true, codec=\>\<LogStash::Codecs::Plain id=\>"plain\_e8c1c6c5-9b30-438b-bd53-e01844af2c18", enable\_metric=\>true, charset=\>"UTF-8"\>, jdbc\_paging\_enabled=\>false, jdbc\_page\_size=\>100000, jdbc\_validation\_timeout=\>3600, jdbc\_pool\_timeout=\>5, sql\_log\_level=\>"info", connection\_retry\_attempts=\>1, connection\_retry\_attempts\_wait\_time=\>0.5, parameters=\>{"sql\_last\_value"=\>1970-01-01 00:00:00 UTC}, last\_run\_metadata\_path=\>"/usr/share/logstash/.logstash\_jdbc\_last\_run", use\_column\_value=\>false, tracking\_column\_type=\>"numeric", clean\_run=\>false, record\_last\_run=\>true, lowercase\_column\_names=\>true\>  
> logstash\_1 | Error: undefined method `close\_jdbc\_connection' for #Sequel::JDBC::Database:0x5508a385  
> **\> logstash\_1 | [2017-08-17T22:09:41,995][WARN][logstash.inputs.jdbc] Exception when executing JDBC query {:exception=\>#\<Sequel::DatabaseConnectionError: Java::JavaSql::SQLNonTransientConnectionException: Could not connect to address=(host=172.17.0.2)(port=3306)(type=master) : Connection timed out (Connection timed out)\>}**  
> logstash\_1 | [2017-08-17T22:09:41,996][WARN][logstash.inputs.jdbc] Attempt reconnection.  
> logstash\_1 | [2017-08-17T22:11:53,067][WARN][logstash.inputs.jdbc] Failed test\_connection.  
> logstash\_1 | [2017-08-17T22:11:53,071][ERROR][logstash.pipeline] A plugin had an unrecoverable error. Will restart this plugin.  
> logstash\_1 | Plugin: \<LogStash::Inputs::Jdbc jdbc\_driver\_library=\>"/opt/logstash/vendor/jar/jdbc/mariadb-java-client-2.1.0.jar", jdbc\_driver\_class=\>"org.mariadb.jdbc.Driver", jdbc\_connection\_string=\>"jdbc:mariadb://172.17.0.2:3306/heaven", jdbc\_user=\>"root", jdbc\_password=\>, jdbc\_validate\_connection=\>true, statement=\>"SELECT \* FROM entities", id=\>"5d3bb6f3d8d3e12b5ce2372e6633ce9c0dfcf283-1", enable\_metric=\>true, codec=\>\<LogStash::Codecs::Plain id=\>"plain\_e8c1c6c5-9b30-438b-bd53-e01844af2c18", enable\_metric=\>true, charset=\>"UTF-8"\>, jdbc\_paging\_enabled=\>false, jdbc\_page\_size=\>100000, jdbc\_validation\_timeout=\>3600, jdbc\_pool\_timeout=\>5, sql\_log\_level=\>"info", connection\_retry\_attempts=\>1, connection\_retry\_attempts\_wait\_time=\>0.5, parameters=\>{"sql\_last\_value"=\>1970-01-01 00:00:00 UTC}, last\_run\_metadata\_path=\>"/usr/share/logstash/.logstash\_jdbc\_last\_run", use\_column\_value=\>false, tracking\_column\_type=\>"numeric", clean\_run=\>false, record\_last\_run=\>true, lowercase\_column\_names=\>true\>  
> logstash\_1 | Error: undefined method `close\_jdbc\_connection' for #Sequel::JDBC::Database:0x1d59d8a2

I'm lost in finding a solution to this. Could someone help me?

Thanks a lot =)

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [August 18, 2017, 5:22am UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499/3 "2017-08-18T05:22:58Z")

</div>

You either have to publish the MariaDB port(s) from the MariaDB container or add both Logstash and MariaDB to the same Docker network. The latter is a good idea because it lets you address containers via their names, i.e. your Logstash configuration file can say

```
jdbc_connection_string => "jdbc:mariadb://name-of-mariadb-container:3306/heaven"

```

instead of having a dynamic IP address hardcoded.

This is a Docker question more than it is an Elastic question.

---

<div class="post-metadata">

**Author:** ![gabrielmll](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabrielmll/32/21240_2.png) [@gabrielmll](https://discuss.elastic.co/u/gabrielmll)\
**Post date:** [August 18, 2017, 8:52pm UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499/4 "2017-08-18T20:52:24Z")

</div>

Thanks a bunch, @magnusbaeck

it works just fine now!

> This is a Docker question more than it is an Elastic question.

Definitely it was! Thanks anyway for clearing it up.

---

<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:** [September 15, 2017, 8:52pm UTC](https://discuss.elastic.co/t/logstash-and-mariadb-wont-connect-both-dockerized/97499/5 "2017-09-15T20:52:27Z")

</div>

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