在存储能力和数据量有限的情况下,我们可以选择 MySQL 来进行简单的数据存储和分析。
Logstash 支持监听文件更新,并可以解析日志后写入 MySQL 数据库。使用 Logstash 可以免去繁琐的开发流程,快速实现旁路日志监控上报功能。
要使用 Logstash 监控 Nginx access log 转储到 MySQL 中,需要用到 Logstash 的3个插件。即 file input plugin,grok filter plugin 以及 jdbc output plugin。
本文基于 Logstash 5.6 版本,其余版本只是配置语法和安装方法会有细微不同,使用方法均类似。示例的运行环境为 Ubuntu 16.04
~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
一.安装 Logstash 及配置所需插件
首先我们需要从官网上下载对应版本的 logstash 安装包。
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.0.tar.gz
logstash 5.6 版本需要机器上安装有 openjdk 8,若安装了 openjdk 9 则需要手动降级或设置环境变量。
安装好 jdk 后,解压缩 logstash-5.6.0 版本的 tgz 包即可运行。
$ tar xvf logstash-5.6.0.tar.gz
$ ./logstash-5.6.4/bin/logstash --version
logstash 5.6.4
不过, logstash 是通过插件系统来支持的将结果写入到数据库,默认的安装包中没有自带 logstash-output-jdbc 插件,需要手动安装。
1.安装 logstash-output-jdbc
logstash-output-jdbc 的安装分为两步,第一步是安装插件本身,插件安装成功后还需要下载 jdbc driver 的 jar 包并配置。
通常情况下,调用 logstash 自带的 logstash-plugin 工具即可成功安装该插件。
../logstash-5.6.4/bin/logstash-plugin install logstash-output-jdbc
但是在网络环境不够良好的情况下, Logstash 也支持插件的离线安装。
先在一台已经成功安装了 logstash-output-jdbc 插件的机器上将该插件导出为离线安装包。(可以从Github下载)
./logstash-5.6.4/bin/logstash-plugin prepare-offline-pack logstash-output-jdbc
将该安装包拷贝到目标机器上后&