Syslog 使用广泛,对日志进行独立存储。而且有很多的工具可对 syslog 数据进行聚合、监控、查询和分析。Syslog 数据可以当成是一个中央资料库。
你也可以在 MariaDB 中将日志写到 Syslog 中,步骤很简单:
首先下载 MariaDB 的 audit 插件,下载地址:
<a target="_blank" href="http://www.skysql.com/downloads/mariadb-audit-plugin-beta">http://www.skysql.com/downloads/mariadb-audit-plugin-beta</a>
然后将 server_audit.so 文件拷贝到你的 MySQL/MariaDB 下的 lib/plugin 目录,并通过如下命令激活该插件:
<a target="_blank" href="#viewSource">view source</a>
<code>1</code>
<code>MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME</code><code>'server_audit.so'</code><code>;</code>
系统默认的日志是写到文件,我们需要改为 Syslog:
<code>MariaDB [test]></code><code>SET</code>
<code>GLOBAL</code> <code>server_audit_output_type=SYSLOG;</code>
<code>2</code>
<code>GLOBAL</code> <code>server_audit_events=</code><code>'CONNECT,QUERY'</code><code>;</code>
<code>3</code>
<code>GLOBAL</code> <code>server_audit_logging=</code><code>on</code><code>;</code>
相关的配置项如下:
<code>01</code>
<code>MariaDB [test]> show variables</code>
<code>like</code> <code>'%audit%'</code><code>;</code>
<code>02</code>
<code>+</code><code>-------------------------------------+-----------------------+</code>
<code>03</code>
<code>| Variable_name | Value |</code>
<code>04</code>
<code>05</code>
<code>| server_audit_events |</code><code>CONNECT</code><code>,QUERY |</code>
<code>06</code>
<code>| server_audit_excl_users | | |</code>
<code>07</code>
<code>| server_audit_file_path | server_audit.log |</code>
<code>08</code>
<code>| server_audit_file_rotate_now |</code><code>OFF</code> <code>|</code>
<code>09</code>
<code>| server_audit_file_rotate_size | 1000000 |</code>
<code>10</code>
<code>| server_audit_file_rotations | 9 |</code>
<code>11</code>
<code>| server_audit_incl_users | |</code>
<code>12</code>
<code>| server_audit_logging |</code><code>ON</code> <code>|</code>
<code>13</code>
<code>| server_audit_mode | 0 |</code>
<code>14</code>
<code>| server_audit_output_type | syslog |</code>
<code>15</code>
<code>| server_audit_syslog_facility | LOG_USER |</code>
<code>16</code>
<code>| server_audit_syslog_ident | mysql-server_auditing |</code>
<code>17</code>
<code>| server_audit_syslog_info | |</code>
<code>18</code>
<code>| server_audit_syslog_priority | LOG_INFO |</code>
<code>19</code>
<code>20</code>
<code>14</code><code>rows</code>
<code>in</code> <code>set</code> <code>(0.00 sec)</code>
运行状态信息:
<code>MariaDB [test]> show status</code><code>like</code>
<code>'%audit%'</code><code>;</code>
<code>+</code><code>------------------------------ +--------------+</code>
<code>| Variable_name | Value |</code>
<code>+</code><code>----------------------------- -+--------------+</code>
<code>| server_audit_active |</code>
<code>ON</code> <code>|</code>
<code>| server_audit_current_log | [SYSLOG] |</code>
<code>| server_audit_last_error | |</code>
<code>| server_audit_writes_failed | 0 |</code>
<code>+</code><code>-------------------------------+--------------+</code>
<code>4</code><code>rows</code>
确保 rsyslog 在运行:
<code>[root@centos1 log]</code><code># service rsyslog restart</code>
<code>Shutting down system logger: [ OK ]</code>
<code>Starting system logger: [ OK ]</code>
现在所有连接和查询 MariaDB 的动作都会写到 syslog 日志里:
<code>[root@centos1 log]</code><code># tail -f /var/log/messages</code>
<code>Sep 21 00:07:07 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,10,QUERY,,</code><code>'set global server_audit_logging=on'</code><code>,0</code>
<code>Sep 21 00:07:11 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,11,QUERY,,</code><code>'show status like \'%audit%\''</code><code>,0</code>
<code>4</code>
<code>Sep 21 00:07:21 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,12,QUERY,,</code><code>'show variables like \'%audit%\''</code><code>,0</code>
<code>5</code>
<code>Sep 21 00:10:06 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,13,QUERY,,</code><code>'set global server_audit_events=\'CONNECT,QUERY\''</code><code>,0</code>
<code>6</code>
<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,14,QUERY,,</code><code>'SELECT DATABASE()'</code><code>,0</code>
<code>7</code>
<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,16,QUERY,</code><code>test</code><code>,</code><code>'show databases'</code><code>,0</code>
<code>8</code>
<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,17,QUERY,</code><code>test</code><code>,</code><code>'show tables'</code><code>,0</code>
<code>9</code>
<code>Sep 21 00:13:14 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,18,QUERY,</code><code>test</code><code>,</code><code>'show tables'</code><code>,0</code>
日志写到 /var/log/messages 文件是由 /etc/rsyslog.conf 进行配置的:
<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none /var/log/messages</code>
如果你想要将日志写到不同的文件,可以:
<code>if</code> <code>$programname ==</code><code>'mysql-server_auditing'</code> <code>then</code> <code>/var/log/mariadbaudit1</code>
使用 MariaDB Audit Plugin 对安全和系统管理来说是一个好的选择。
英文原文:http://serge.frezefond.com/2013/09/mariadb-audit-plugin-logging-to-syslog/