ELK(8):ELK-logstash收集日志写入数据库

ELK(8):ELK-logstash收集日志写入数据库

在使用ELK对日志进行收集的时候,如果需要对数据进行存档,可以考虑使用数据库的方式

其实我不建议,日志真的太多了,数据库扛不住的

 

安装logstash的数据库插件

安装logstash的数据库插件需要先安装gem源:

 

sudo yum install gem -y

sudo gem –v

#替换gem源

gem source list

sudo gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

#查看当前已经安装的插件:

/usr/share/logstash/bin/logstash-plugin list

 

 

#安装

sudo  /usr/share/logstash/bin/logstash-plugin install logstash-output-jdbc

 

[admin@pe-jira gems]$ sudo  /usr/share/logstash/bin/logstash-plugin install logstash-output-jdbc

Validating logstash-output-jdbc

Installing logstash-output-jdbc

Installation successful

#查看安装

[admin@pe-jira gems]$ sudo  /usr/share/logstash/bin/logstash-plugin list|grep jdbc

logstash-filter-jdbc_static

logstash-filter-jdbc_streaming

logstash-input-jdbc

logstash-output-jdbc

 

 

 

安装数据库的JDBC驱动

https://dev.mysql.com/downloads/connector/j/ 上传到服务器。驱动的路径必须严格一致,否则连接数据库会报错。

我一般都是这里下载

https://mvnrepository.com/artifact/mysql/mysql-connector-java

 

 

sudo mkdir -p /usr/share/logstash/vendor/jar/jdbc

cd /usr/share/logstash/vendor/jar/jdbc

sudo wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar

ll

sudo chown -R logstash: /usr/share/logstash/vendor/jar/

 

 

配置MySQL权限

create database elk character set utf8 collate utf8_bin;

grant all privileges on elk.* to elk@"%" identified by '123456';

flush privileges;

 

 

 

样例-存储Nginx访问日志

建表

我们在数据库中存储数据的时候,没有必要存储日志的所有内容,只需存储我们需要的重要信息即可,可以根据自身的需求进行取舍。

 

create table kibana_log(host varchar(128),client_ip varchar(128),url varchar(512),status int(4),responsetime float(8,3),http_user_agent varchar(512),time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
#注:time的默认值设置为CURRENT_TIMESTAMP

 

mysql> desc kibana_log;+-----------------+--------------+------+-----+-------------------+-------+

| Field           | Type         | Null | Key | Default           | Extra |

+-----------------+--------------+------+-----+-------------------+-------+

| host            | varchar(128) | YES  |     | NULL              |       |

| client_ip       | varchar(128) | YES  |     | NULL              |       |

| url             | varchar(512) | YES  |     | NULL              |       |

| status          | int(4)       | YES  |     | NULL              |       |

| responsetime    | float(8,3)   | YES  |     | NULL              |       |

| http_user_agent | varchar(512) | YES  |     | NULL              |       |

| time            | timestamp    | NO   |     | CURRENT_TIMESTAMP |       |

+-----------------+--------------+------+-----+-------------------+-------+

7 rows in set (0.00 sec)

 

mysql>

 

 

配置logstash.conf文件

#[admin@pe-jira conf.d]$ cat kibana.conf
input {
    file {
        type => "pe-jira-kibana"
        path => "/home/admin/webserver/logs/kibana.log"
        start_position => "beginning"
        stat_interval => "2"
    }
}

filter{
         json {
                source => "message"
                skip_on_invalid_json => true
                }
        }
output {
  if [type] == "pe-jira-kibana" {
    elasticsearch {
      hosts => ["10.6.76.27:9200"]
      index => "logstash-pe-jira-nginx-kibana-%{+YYYY.MM.dd}"
      }
   jdbc {
    connection_string => "jdbc:mysql://10.6.76.28/elk?user=elk&password=123456&useUnicode=true&characterEncoding=UTF8"
    statement => ["insert into kibana_log(host,client_ip,url,status,responsetime,http_user_agent) VALUES(?,?,?,?,?,?)","host","clientip","url","status","responsetime","http_user_agent"] }
  }

}
#注意表和日志字段一一对应

 

 

测试文件,查看是否正确:

[admin@pe-jira conf.d]$ sudo /usr/share/logstash/bin/logstash -f  kibana.conf -t

Thread.exclusive is deprecated, use Thread::Mutex

WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults

Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console

[WARN ] 2019-07-15 15:45:18.839 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified

Configuration OK

[INFO ] 2019-07-15 15:45:28.447 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

[admin@pe-jira conf.d]$

 

 

刷新产生日志,看能否写入数据库

 

 

转载于:https://www.cnblogs.com/wangxu01/articles/11192891.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。开源实时日志分析ELK平台能够完美的解决日志收集日志检索、分析的问题,ELK就是指ElasticSearch、Logstash和Kiabana三个开源工具。 因为ELK是可以跨平台部署,因此非常适用于多平台部署的应用。 二 环境准备 1. 安装JDK1.8环境 2. 下载ELK软件包 logstash: https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip kibana: https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-windows-x86.zip 分别解压下载的软件,elasticsearch,logstash,kibana 可以放在一个统一文件夹下 三 部署 1.配置logstash 在logstash文件夹的下bin目录创建配置文件logstash.conf ,内容如下: input { # 以文件作为来源 file { # 日志文件路径 path => "F:\test\dp.log" } } filter { #定义数据的格式,正则解析日志(根据实际需要对日志日志过滤、收集) grok { match => { "message" => "%{IPV4:clientIP}|%{GREEDYDATA:request}|%{NUMBER:duration}"} } #根据需要对数据的类型转换 mutate { convert => { "duration" => "integer" }} } # 定义输出 output { elasticsearch { hosts => ["localhost:9200"] #Elasticsearch 默认端口 } }   在bin目录下创建run.bat,写入一下脚本: logstash.bat -f logstash.conf 执行run.bat启动logstash。 2. 配置Elasticsearch elasticsearch.bat即可启动。 启动后浏览器访问 127.0.0.1:9200 ,出现以下的json表示成功。 3.配置kibana Kibana启动时从文件kibana.yml读取属性。默认设置配置Kibana运行localhost:5601。要更改主机或端口号,或者连接到在其他机器上运行的Elasticsearch,需要更新kibana.yml文件。 kibana.bat启动Kibana。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值