数据批量导入

• 使用 _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数据批量导入的更多相关文章

  1. [Django]数据批量导入

    前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...

  2. 将Excle中的数据批量导入数据库

    namespace 将Excle中的数据批量导入数据库{    class Program    {        static void Main(string[] args)        { S ...

  3. 将execl里的数据批量导入数据库

    本文将采用NPOI插件来读取execl文件里的数据,将数据加载到内存中的DataTable中 /// <summary> /// 将Excel转换为DataTable /// </s ...

  4. mysql中把一个表的数据批量导入另一个表中

    mysql中把一个表的数据批量导入另一个表中   不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...

  5. .net core利用MySqlBulkLoader大数据批量导入MySQL

    最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...

  6. Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  7. Java实现数据批量导入mysql数据库

    本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...

  8. SQL Server中bcp命令的用法以及数据批量导入导出

    原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...

  9. 数据批量导入HBase

    测试数据: datas 1001 lilei 17 13800001111 1002 lily 16 13800001112 1003 lucy 16 13800001113 1004 meimei ...

随机推荐

  1. python 关于函数递归调用自己

    爬取b站博人传 每页短评20个,页数超过1000页, 代码如下 import requests import json import csv def main(start_url): headers ...

  2. golang的sync.WaitGroup使用示例

    下面一段代码 len(m) 不一定会打印为 10,为什么?.如果想要 len(m) 打印为 10,应该怎么修改代码? func main() { const N = 10 m := make(map[ ...

  3. 左侧带三角的Card css支持hover阴影

    <div class="inputReportIndex"> <div class="inner"> <div class=&qu ...

  4. 如何用 Blazor 实现 Ant Design 组件库

    本文主要分享我创建 Ant Design of Blazor 项目的心路历程,已经文末有一个 Blazor 线上分享预告. Blazor WebAssembly 来了! Blazor 这个新推出的前端 ...

  5. 分享CCNTFS小工具,在 macOS 中完全读写、修改、访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,简单设置即可高速传输外接NTFS硬盘文件

    CCNTFS [ 下载 ] 在 macOS 中完全读写.修改.访问Windows NTFS硬盘的文件,无须额外的驱动(原生驱动)更稳定,安装后进行简单设置即可高速传输外接NTFS硬盘文件,可全程离线使 ...

  6. HTML基本标签,表格标签,框架标签

    1.html简介 1.1什么是html html全称:Hyper Text Markup Language(超文本标记语言) 备注:           a.超文本:页面内可以包含图片.链接,甚至音乐 ...

  7. Django路由层与视图层、pycharm虚拟环境

    一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实 ...

  8. MySQL----多表操作

    ##多表之间的关系 1.一对一(了解) * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人. 2.一对多(多对一) * 如:部门和员工 * 分析:一个部门有多个员工,一个员工 ...

  9. 如何将一篇文章导入Endnote并将引用插入Word

    Endnote作为一款专注管理文献引用的工具用起来还是很方便的,极大地简化了管理引用格式等相关工作,让我们能够把更多精力用在写文章本身. 今天就介绍一下如何将一篇我们看到的觉得有参考价值的文章导入wo ...

  10. AI的博弈论,一份插图教程

    介绍 我想先问一个简单的问题--你能认出下图中的两个人吗? 我肯定你说对了.对于我们这些早期数学发烧友来说,电影<美丽心灵>(A Beautiful Mind)已经深深地印在了我们的记忆中 ...