sysown/proxysql

ProxySQL errorlog not getting picked up from proxysql.cnf in docker

akash3197 opened this issue · 5 comments

Hello,

I'm running proxysql2:2.0.10, in this I am doing volume mount and my cnf file looks like this
Errorlog is defined but it is not creating logs in that file

cat proxysql.cnf

datadir="/tmp"
#datadir="/var/lib/proxysql"
errorlog="/var/lib/proxysql/proxysql.log"

ProxySQL adminitration configs

admin_variables =
{
admin_credentials="admin:xx"
mysql_ifaces="0.0.0.0:6032"
refresh_interval=2000

cluster_username="admin"
cluster_password=""
cluster_check_interval_ms=200
cluster_check_status_frequency=100
cluster_mysql_query_rules_save_to_disk=true
cluster_mysql_servers_save_to_disk=true
cluster_mysql_users_save_to_disk=true
cluster_proxysql_servers_save_to_disk=true
cluster_mysql_query_rules_diffs_before_sync=1
cluster_mysql_servers_diffs_before_sync=1
cluster_mysql_users_diffs_before_sync=1
cluster_proxysql_servers_diffs_before_sync=1

}

MySQL tunables

mysql_variables=
{
set_query_lock_on_hostgroup=0
monitor_password="xx"
monitor_galera_healthcheck_interval=1000
threads=4
max_allowed_packet=16777216
max_connections=2049
default_query_delay=0
default_query_timeout=86400000
poll_timeout=2000
interfaces="0.0.0.0:3306"
default_schema="information_schema"
stacksize=1048576
connect_timeout_server=10000
monitor_history=60000
monitor_connect_interval=20000
monitor_ping_interval=10000
ping_timeout_server=200
commands_stats=true
sessions_sort=true
have_ssl=true
ssl_p2s_ca=""
ssl_p2s_cert=""
ssl_p2s_key=""
ssl_p2s_cipher=""
autocommit_false_is_transaction=false
auditlog_filename="/var/lib/proxysql/audit.log"
}

MySQL Query Rules

mysql_query_rules:
(
{
rule_id=1
active=1
match_pattern="^SELECT.FOR UPDATE$"
destination_hostgroup=11
apply=1
},
{
rule_id=2
active=1
match_pattern="^SELECT"
destination_hostgroup=10
apply=1
},
{
rule_id=3
active=1
match_pattern="SET TRANSACTION ISOLATION(.
)"
replace_pattern="SELECT 1 LIMIT 0"
apply=1
}
)

############################
container startup logs
docker logs proxysql

  • PROXY_CFG=/etc/proxysql/proxysql.cnf
  • PROXY_ADMIN_CFG=/etc/proxysql-admin.cnf
    ++ sed 's/[*.@&#?!]/\&/g'
  • MYSQL_ROOT_PASSWORD_ESCAPED=xxx
  • sed 's/"admin:admin"/"admin:xxxx"/g' /etc/proxysql/proxysql.cnf
  • sed 's/cluster_username="admin"/cluster_username="admin"/g' /etc/proxysql/proxysql.cnf
  • sed 's/cluster_password="admin"/cluster_password="xx"/g' /etc/proxysql/proxysql.cnf
  • sed 's/monitor_password="monitor"/monitor_password="xx"/g' /etc/proxysql/proxysql.cnf
  • sed 's/PROXYSQL_USERNAME='''admin'''/PROXYSQL_USERNAME='''admin'''/g' /etc/proxysql-admin.cnf
  • sed 's/PROXYSQL_PASSWORD='''admin'''/PROXYSQL_PASSWORD='''xx'''/g' /etc/proxysql-admin.cnf
  • sed 's/CLUSTER_USERNAME='''admin'''/CLUSTER_USERNAME='''root'''/g' /etc/proxysql-admin.cnf
  • sed 's/CLUSTER_PASSWORD='''admin'''/CLUSTER_PASSWORD='''xxxx'''/g' /etc/proxysql-admin.cnf
  • sed 's/MONITOR_USERNAME='''monitor'''/MONITOR_USERNAME='''monitor'''/g' /etc/proxysql-admin.cnf
  • sed 's/MONITOR_PASSWORD='''monitor'''/MONITOR_PASSWORD='''xxxx'''/g' /etc/proxysql-admin.cnf
  • CA=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  • '[' -f /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt ']'
  • SSL_DIR=/etc/proxysql/ssl
  • '[' -f /etc/proxysql/ssl/ca.crt ']'
  • SSL_INTERNAL_DIR=/etc/proxysql/ssl-internal
  • '[' -f /etc/proxysql/ssl-internal/ca.crt ']'
  • KEY=/etc/proxysql/ssl/tls.key
  • CERT=/etc/proxysql/ssl/tls.crt
  • '[' -f /etc/proxysql/ssl-internal/tls.key ']'
  • '[' -f /var/run/secrets/kubernetes.io/serviceaccount/ca.crt ']'
  • '[' -f /etc/proxysql/ssl/tls.key ']'
  • '[' -f /etc/proxysql/ssl/ca.crt ']'
  • exec /usr/bin/proxysql -f -c /etc/proxysql/proxysql.cnf

Hi @akash3197 .
Thank you for being part of ProxySQL community.
What you are experiencing is perfectly normal, as you are executing proxysql with the -f (--foreground) argument .
Please refer to the documentation: https://proxysql.com/documentation/startup-options/

Thanks

Hello @renecannao thank you for your prompt response,
Could you please tell me how can we implement this in docker then? I went through documentation but unsure about which option we have to do for that so redirection happens.

Hi @akash3197 .
If using -f causes proxysql to log stderr as described in the documentation linked previously, this means:

if ( "-f" ) {
    log to stderr
} else {
    logs to error log
}

Hello @renecannao we are running it as docker container and in container cmd its mentioned with "-f"
How can i resolve it, do I need to override this cmd and run in background or there is any other solution?

Found workaround.

docker run -itd percona/proxysql2:2.0.10 sh -c "/usr/bin/proxysql -c /etc/proxysql/proxysql.cnf & sleep 3; tail -f /var/lib/proxysql/proxysql.log"