博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
input和output常用模块的讲解和使用(logstash)
阅读量:6484 次
发布时间:2019-06-23

本文共 2527 字,大约阅读时间需要 8 分钟。

1 ELK 是一个实时分布式的日志分析平台

ELK 是一整套的解决方案
(E)lasticsearch -- 数据库
(L)ogstash -- 收集日志、标准化的程序
(K)ibana -- 图形的展示工具

2 数据批量导入

-X 导入使用的方法 POST
--data-binary 导入数据的格式
@urfile 导入数据的文件名
_bulk 导入关键字
curl -X "POST" "" --data-binary @shakespeare.json

如果没有 index 和 type ,我们需要自己指定一下 index 和 type

curl -X "POST" "" --data-binary @accounts.json

3 批量查询数据

查询一条数据
curl -X "GET" ""

查询多条数据,使用 _mget

curl -XGET '' -d '{
"docs":[
{
"_index": "haha",
"_type:": "xixi",
"_id": 1
},
{
"_index": "haha",
"_type:": "xixi",
"_id": 2
},
{
"_index": "shakespeare",
"_type:": "act",
"_id": 91400
}
]
}'

logstash 的安装

安装依赖包 openjdk
yum install java-1.8.0-openjdk -y
yum install logstash-2.3.4-1.noarch.rpm -y

ELK 工作结构模型

+-----------------logstash-------------------+

+--------+ | +--------+ +---------+ +-----------+ | +---------+ +----------+

| 数据源 | --->| INPUT | -->| FILTER | --> | OUTPUT | ---> | ES 集群 | -->| KIBANA |
+--------+ | +--------+ +---------+ +-----------+ | +---------+ +----------+
+----------------------------------------------+

logstash.conf 初始配置

input{
stdin{}
}

filter{

}

output{

stdout{}
}

插件文档的位置

codec 插件

stdout{ codec => "rubydebug" }

file 插件

file{
sincedb_path => "/var/lib/logstash/since.db"
start_position => "beginning"
path => ["/var/tmp/a.log", "/tmp/b.log"]
type => "filelog"
}

python 客户端,发送 tcp 数据

import socket

def tcpmsg(msg):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
s.connect(("192.168.1.10", 8888))
s.sendall(msg+'\n')
s.close()

def udpmsg(msg):

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.sendto(msg+'\n', ("192.168.1.10", 9999))

syslog 的配置

logstash.conf 配置

syslog{
host => "192.168.1.10"
port => 514
type => "syslog"
}

写 syslog 日志的命令

logger -p local0.info -t mylog "hello world"

配置 /etc/rsyslog.conf

local0.info @192.168.1.10:514
authpriv.info @@192.168.1.10:514

正则宏路径

/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/grok-patterns

filter 配置,解析标准 apache 日志 grok{

match => ["message","%{COMBINEDAPACHELOG}"]
}

output 配置写入 ES 集群

if [type] == "filelog"{
elasticsearch {
hosts => ["192.168.1.14:9200"]
index => "weblog"
flush_size => 2000
idle_flush_time => 10
}}

完整的 logstash.conf 配置

input{
file{
sincedb_path => "/var/lib/logstash/since.db"
start_position => "beginning"
path => ["/var/tmp/a.log"]
type => "filelog"
codec => "json"
}
}

filter{

}

output{

if [type] == "filelog"{
elasticsearch {
hosts => ["192.168.1.14:9200"]
index => "weblog"
flush_size => 2000
idle_flush_time => 10
}}
}

转载于:https://blog.51cto.com/13841846/2136909

你可能感兴趣的文章
InnoDB多版本
查看>>
贪心算法 - 活动选择问题
查看>>
独立思考与输入、吸收
查看>>
es6 includes(), startsWith(), endsWith()
查看>>
关于azkaban上传job压缩包报错问题的解决方案
查看>>
JS版日期格式化和解析工具类,毫秒级
查看>>
百度人脸对比
查看>>
Linux内存管理 一个进程究竟占用多少空间?-VSS/RSS/PSS/USS
查看>>
苹果AppStore如何申请加急审核
查看>>
SpringBoot 使用Swagger2打造在线接口文档(附汉化教程)
查看>>
Mysql一个表编码的坑,mark一下
查看>>
JS动态事件绑定问题
查看>>
在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
查看>>
android 8 wifi wifi 扫描过程
查看>>
phalcon的save方法保存失败?
查看>>
获取任意链接文章正文 API 功能简介
查看>>
js中Math.random()生成指定范围数值的随机数
查看>>
线程类的常见方法介绍
查看>>
Spring连接数据库的几种常用的方式
查看>>
MS CRM 2011 Schedule Report & Email Subscription
查看>>