-
Notifications
You must be signed in to change notification settings - Fork 59
Description
So I've been working with this plugin for some days and finally achieved sending logs to a local sqlserver container.
Now that Im trying in prepo I'm not able to connecto to the database.
And so I startted with
<match docker.caesar**>
@type copy
<store>
@type stdout
</store>
<store>
@type sql
log_level info
host 172........\sql2019pre
port 1433
chema_search_path piscinalogs
database db_Poseidon
adapter sqlserver
username "#{ENV['USER']}"
password "#{ENV['PASSWORD']}"
state_file /var/run/fluentd/sql_state
<table>
table logs
column_mapping 'time:timestamp,level:level,mensaje:message,Container_Name:containerName,App_Name:appName,Env:enviroment'
# This is the default table because it has no "pattern" argument in <table>
# The logic is such that if all non-default <table> blocks
# do not match, the default one is chosen.
# The default table is required.
flush_interval 10s
</table>
</store>
</match>
This configuration did not work since it returns
fluentd | 2024-08-29 09:42:24 +0000 [warn]: #0 failed to flush the buffer. retry_times=0 next_retry_time=2024-08-29 09:42:26 +0000 chunk="620cf46e28eacdbcecf964d3ed2978be" error_class=TinyTds::Error error="Server name not found in configuration files"
Then I investigated how activerecords connects to database and encounter that they used the param: dataserver
When removing the host param in order to introduce the dataserver param :
<match docker.caesar**>
@type copy
<store>
@type stdout
</store>
<store>
@type sql
log_level info
dataserver 172.......\sql2019pre
port 1433
chema_search_path piscinalogs
database db_Poseidon
adapter sqlserver
username "#{ENV['USER']}"
password "#{ENV['PASSWORD']}"
state_file /var/run/fluentd/sql_state
<table>
table logs
column_mapping 'time:timestamp,level:level,mensaje:message,Container_Name:containerName,App_Name:appName,Env:enviroment'
# This is the default table because it has no "pattern" argument in <table>
# The logic is such that if all non-default <table> blocks
# do not match, the default one is chosen.
# The default table is required.
flush_interval 10s
</table>
</store>
</match>
It returns:
fluentd | 2024-08-29 09:45:42 +0000 [error]: config error file="/fluentd/etc/fluent.conf" error_class=Fluent::ConfigError error="'host' parameter is required"
And so I decided to let both parameters
<match docker.caesar**>
@type copy
<store>
@type stdout
</store>
<store>
@type sql
host 172......
dataserver 172.......\sql2019pre
port 1433
chema_search_path piscinalogs
database db_Poseidon
adapter sqlserver
username "#{ENV['USER']}"
password "#{ENV['PASSWORD']}"
state_file /var/run/fluentd/sql_state
<table>
table logs
column_mapping 'time:timestamp,level:level,mensaje:message,Container_Name:containerName,App_Name:appName,Env:enviroment'
# This is the default table because it has no "pattern" argument in <table>
# The logic is such that if all non-default <table> blocks
# do not match, the default one is chosen.
# The default table is required.
flush_interval 10s
</table>
</store>
</match>
It returns: fluentd | 2024-08-29 09:48:34 +0000 [warn]: #0 failed to flush the buffer. retry_times=4 next_retry_time=2024-08-29 09:48:48 +0000 chunk="620cf5c1a09d87697d7c0f92760ef3fb" error_class=TinyTds::Error error="Unable to connect: Adaptive Server is unavailable or does not exist (172......)"
Im quite lost at this point