ELK数据批量导入
数据批量导入
• 使用 _bulk 批量导入数据
– 批量导入数据使用 POST 方式,数据格式为 json,url编码使用 data-binary
– 导入含有 index 配置的 json 文件
gzip –d logs.jsonl.gz
curl -XPOST 'http://192.168.4.14:9200/_bulk' --data-binary
@logs.jsonl
gzip –d shakespeare.json.gz
curl -XPOST 'http://192.168.4.14:9200/_bulk' --data-binary
@shakespeare.json
练习
1)下载解压
[root@esk06 ~]# gzip -d accounts.json.gz
[root@esk06 ~]# gzip -d logs.jsonl.gz
[root@esk06 ~]# gzip -d shakespeare.json.gz
2)•使用 _bulk 批量导入数据
– 批量导入数据使用 POST 方式,数据格式为 json,url
编码使用 data-binary
– 导入含有 index 配置的 json 文件
curl -X POST 'http://192.168.1.35:9200/_bulk' --data-binary @accounts.json
[curl -X POST 'http://192.168.1.35:9200/_bulk' --data-binary @shakespeare.json
curl -X POST 'http://192.168.1.35:9200/_bulk' --data-binary @logs.jsonl
logstash 部分
• logstash 是什么
– logstash是一个数据采集、加工处理以及传输的工具
• logstash 特点:
– 所有类型的数据集中处理
– 丌同模式和格式数据的正常化
– 自定义日志格式的迅速扩展
– 为自定义数据源轻松添加插件
• logstash 安
– Logstash 依赖 java 环境,需要安装 java-1.8.0-openjdk
– Logstash 没有默认的配置文件,需要手劢配置
– logstash 安装在 /opt/logstash 目录下
rpm -ivh logstash-2.3.4-1.noarch.rpm
logstash 部分
• codec 类插件
input{
stdin{ codec => "json" }
}
filter{ }
output{
stdout{ codec => "rubydebug" }
}
– 我们输入普通数据和 json 对比
– {"a": 1, "c": 3, "b": 2}logstash 部分
• codec 类插件
– 练习 output 和 input 配置
– 练习 在 input 丌指定类型 json 输出结果
– 练习 在 output 丌指定 rubydebug 的输出结果
– 同时指定以后的输出结果logstash 部分
• 练习 input file 插件
file{
start_position => "beginning"
sincedb_path => "/var/lib/logstash/sincedb-access"
path => [“/tmp/alog”, “/tmp/blog”]
type => 'filelog'
}
– sincedb_path 记录读取文件的位置
– start_position 配置第一次读取文件从什么地方开始logstash 部分
• 练习 input tcp 和 udp 插件
tcp{
host => "0.0.0.0"
port => 8888
type => "tcplog"
}
udp{
host => "192.168.4.16"
port => 9999
type => "udplog"
}logstash 部分
• tcp & udp 练习
– 使用 shell 脚本,对 tcp 指定端口发送数据
function sendmsg(){
if (( $# == 4 )) && [ $1 == "tcp" -o $1 == "udp" ];then
exec 9<>/dev/$1/$2/$3
echo "$4" >&9
exec 9<&-
else
echo "$0 (tcp|udp) ipaddr port msg"
fi
}logstash 部分
• tcp & udp 练习
– 发送 tcp 数据
– sendmsg tcp 192.168.4.10 8888 ‘tcp msg’
– 发送 udp 数据
– sendmsg udp 192.168.4.10 9999 ‘udp msg’logstash 部分
• syslog 插件练习
syslog{
host => "192.168.4.10"
port => 514
type => "syslog"
}
– rsyslog.conf 配置向进程发送数据
local0.info
@@192.168.4.10:514
– 写 syslog ,查看状态
logger -p local0.info -t test_logstash 'test message'logstash 部分
• filter grok插件
– 解析各种非结构化的日志数据插件
– grok 使用正则表达式把飞结构化的数据结构化
– 在分组匹配,正则表达式需要根据具体数据结构编写
– 虽然编写困难,但适用性极广
– 几乎可以应用于各类数据
grok{
match => [“message”,“%{IP:ip}, (?<key>reg)”]
}logstash 部分
• grok 正则分组匹配
– 匹配 ip 时间戳 和 请求方法
"(?<ip>(\d+\.){3}\d+) \S+ \S+
(?<time>.*\])\s+\"(?<method>[A-Z]+)"]
– 使用正则宏
%{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth}
\[%{HTTPDATE:timestamp}\] \"%{WORD:verb}
– 最终版本
%{COMMONAPACHELOG} \"(?<referer>[^\"]+)\"
\"(?<UA>[^\"]+)\"logstash 部分
• input redis 插件
redis{
host => 'redis-server'
port => '6379'
data_type => 'list'
key => 'lb'
codec => 'json'
}
– 生产环境往往理由 redis 来做缓冲,这里给出配置logstash 部分
• output ES 插件
if [type] == "filelog"{
elasticsearch {
hosts => ["192.168.4.15:9200"]
index => "weblog"
flush_size => 2000
idle_flush_time => 10
}}
– 调试成功后,把数据写入 ES 集群
案例1
1)改写配置文件 //注意防火墙
[root@localhost logstash]# vim logstash.conf
input {
tcp {
port => 8888
mode => "server"
type => "tcplog"
}
udp {
port => 8888
type => "udplog"
}
}
filter {}
output {
stdout { codec => "rubydebug" }
}
[root@localhost logstash]# /opt/logstash/bin/logstash -f logstash.conf //执行
2)真机写入脚本 验证是否有xibhjhkj
[root@redhat ~]# cat aa
function sendmsg(){
if [ "$1" == "tcp" -o "$1" == "udp" ];then
exec 9<>/dev/$1/192.168.1.117/8888
echo "$2" >&9
exec 9<&-
else
echo "$0 tcp|udp msg"
fi
}
[root@redhat ~]#. aa
[root@redhat ~]# sendmsg udp xibhjhkj //发送
案例2
1)监听日志,收集信息
input{
file {
path => ["/var/log/secure"] //ssh的登入日志
sincedb_path => "/dev/null"
start_position => "beginning"
type => "filelog"
}
tcp{
port => 8888
mode => "server"
type => "tcplog"
}
udp {
port => 8888
type => "udplog"
}
syslog {
port => 514
type => "syslog"
}
}
filter{ //收集内容的正则表达式
grok {
match => { "message" =>
"(?<rip>[0-9.]+).*\[(?<time>.+)\].*\"(?<method>[A-Z]+) (?<url>\S+)
(?<PROTO>.+)\" (?<res>\d+) (?<size>\d+) \"(?<ref>[^\"]+)\"
\"(?<agent>.+)\"" }
}
}
output{
stdout{codec => "rubydebug" }
}
ELK数据批量导入的更多相关文章
- [Django]数据批量导入
前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...
- 将Excle中的数据批量导入数据库
namespace 将Excle中的数据批量导入数据库{ class Program { static void Main(string[] args) { S ...
- 将execl里的数据批量导入数据库
本文将采用NPOI插件来读取execl文件里的数据,将数据加载到内存中的DataTable中 /// <summary> /// 将Excel转换为DataTable /// </s ...
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- .net core利用MySqlBulkLoader大数据批量导入MySQL
最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- Java实现数据批量导入mysql数据库
本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- 数据批量导入HBase
测试数据: datas 1001 lilei 17 13800001111 1002 lily 16 13800001112 1003 lucy 16 13800001113 1004 meimei ...
随机推荐
- ES6中的find与filter的区别
一直以来以为find和filter是一样的效果,最近在梳理,才发现是不一样的. 首先,filter和find区别:filter返回的是数组,find返回的是对象. 注意:find()找到第一个元素后就 ...
- vue2.0:项目开始,首页入门(main.js,App.vue,importfrom)
对main.js App.vue 等进行操作: 但是这就出现了一个问题:什么是main.js,他主要干什么用的?App.vue又是干什么用的?main.js 里面的import from又在干嘛?ne ...
- Netty之缓冲区ByteBuf解读(二)
上篇介绍了 ByteBuf 的简单读写操作以及读写指针的基本介绍,本文继续对 ByteBuf 的基本操作进行解读. 读写指针回滚 这里的 demo 例子还是使用上节使用的. ByteBuf buf = ...
- js Number方法总结
Number构造属性 Number.EPSILON // 两个可表示(representable)数之间的最小间隔. Number.MAX_SAFE_INTEGER // JavaScript 中最大 ...
- 读源码 - stagesepx
目录 背景 一.概述 stagesepx 二.源码中优雅的用法 优雅的赋值/返回 递归方法新建多级目录 更简洁的日志输出 格式化输出的另一种姿势 基于生成器读取多个文件 sorted进阶 入参类型限制 ...
- 等价类计数:Burnside引理 & Polya定理
提示: 本文并非严谨的数学分析,有很多地方是自己瞎口胡的,仅供参考.有错误请不吝指出 :p 1. 群 1.1 群的概念 群 \((S,\circ)\) 是一个元素集合 \(S\) 和一种二元运算 $ ...
- Python文本文件读写操作时的字符编码问题
说明:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先 ...
- pc 媒体查询
PC端 按屏幕宽度大小排序(主流的用橙色标明) 分辨率 比例 | 设备尺寸 1024*500 (8.9寸) 1024*768 (比例4:3 | 10.4寸.12.1寸.14.1寸.15寸; ) ...
- 【译】HTTP/2 为更快速的网站而生
最近在做一个内部的服务对接,使用了Google的gRPC框架,gRPC是基于HTTP/2和protocol buffers实现的,所以额外去了解了一下HTTP/2,找到这这边文章.这篇文章虽然是写于2 ...
- SpringMVC框架——常用注解
@RequestMapping Spring MVC 通过 @RequestMapping 注解将请求与业务方法进行映射,在方法定义处,在类定义都可以添加该注解. 常用参数: 1.value:指定请求 ...