ELK基础学习
第壹部分:Elasticsearch
一 、Elasticsearch增删改查
1、数据写入:
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name -d "{jsonstr}"
返回:{"_index":"index-name","_type":"typename","_id":"idstr","_version":"1","created":"true"}
2、数据获取:
HTTP method :GET
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id
返回:数据的json结构
3、数据删除:
HTTP method :DELETE
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id
或者:http://127.0.0.1:9200/index-docs-name(可以使用通配符)删除多个文档
4、数据更新:
(1)全量再次写入
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id -d "{jsonstr}"
返回:{"_index":"index-name","_type":"typename","_id":"idstr","_version":"1","created":"true"}
(2)局部更新:
HTTP method:POST
URL:http://127.0.0.1:9200/index-docs-name/data-type-name/id/_update -d "{jsonstr}"
5、数据查询
(1)全文搜索
HTTP method : GET
URL : http://127.0.0.1:9200[/index-docs-name/data-type-name]/_search[?q=xxx] -d "{json}"
(2)聚合请求:
在查询的search输入的结构体中写聚合语句即可。
二、Elasticsearch新建模板
请求方式--PUT
请求地址a.b.c.d:9200/_template/your_temp_name
模板:
{
"template":"whoisinfo",#这里是模板的名字,索引名字一样自动适配。
"order":"7",#这里是模板号
"state":"open",
"settings": {
"index": {
"creation_date": "1491451435658",
"number_of_shards": "5",#自己控制
"number_of_replicas": "1",#自己控制
"uuid": "0GCKTzVTRAaw-z47TfCaZQ",
"version": {
"created": "2030399"
}
}
}
"mapping":{
"domain":{#这里是这个模板下第n类数据的样子
"properties":{
"colunm_name":{
"index":"not_analyzed"
"type":"date/string……"
"format":"strict_date_optional_time||epoch_millis"#这里是时间格式
}
}
}
}
}
三、Elastincsearch索引与映射
(一)、映射
1、创建
Method : PUT
URL : http://127.0.0.1:9200/index-docs-name/_mappind -d "{jsonstr}"
2、新增字段
Method : PUT
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name -d "{jsonstr}"
3、删除映射会删除数据
Method : DELETE
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name
4、获取映射
Method : GET
URL : http://127.0.0.1:9200/index-docs-name/_mappind/mapping-name
(二) 、 常见的字段定义
type 数据类型
index 是否分词(not_analyzed)
format 格式
多重索引
"name":{
"type":"xxxxx"
"fields"::{"xxx":"xxxx"}
}
四、Elasticsearch 分页查询
第一步创建Elasticsearch对象
es = Elasticsearch([{'host':'192.168.1.103','port':9200}])
第二部创建分页机制
resp = es.search(index, body=query, scroll="24h",size=10000)
24h 是scrollid 有效时间
scroll_id = resp['_scroll_id'] id就是标识
total = resp["hits"]["total"] 总量
第三分页获取数据
resp = es.scroll(scroll_id=scroll_id, scroll="24h")
rdoc = resp["hits"]["hits"]
scroll_id = resp['_scroll_id']
rdoc是每个数据项字典结构体的list
第贰部分:LogStash
一、logstash的安装
#step-one:依赖于java jdk 所以预先安装JDK
1、下载jdk 首选1.7
2、tar xzvf jdk-7u55-linux-x86.tar.gz
3、mkdir /usr/lib/jvm
4、mv jdk1.7.0_55 /usr/lib/jvm/
5、gedit ~/.bashrc
在末尾输入一下内容并保存退出
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_55
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
6、source ~/.bashrc(多个账户下)
#step-two:安装logstash
1、方法1--源代码安装
wget https://download.elastic.co/logstash/logstash/logstash-1.5.1.tar.gz
tar zxvf logstash-1.5.1.tar.gz
mv logstash-1.5.1 logstash
cd ./logstash/
测试语句:bin/logstash -e 'input { stdin { } } output { stdout {} }'
配置测试语句:
bin/logstash -e 'input { stdin { } } output { stdout { codec => rubydebug } }'
2、方法2--elasticsearch官方仓库安装
wget -O http://packages.elasicsearch.org/GPG-KEY-elasticsearch | apt-key add -cat >> /etc/apt/sources.list
deb http//packages.elasticsearch.org/logstash/1.5/debian stable main
apt-get update
apt-get install logstash
二、按照logstash配置文件运行logstash
bin/logstash -f logstash.conf
三、配置文件logstash.conf示例
input {
stdin{ }
}
output{
stdout{ codec => rubydebug }
elasticsearch { embedded => true }
}
四、配置语法:
1、第一个概念:区段,也就是上文中的input 或者output都是一个区段
#区段之内定义键值对#
2、数据类型
(1)布尔型 true 和 false
(2)字符串 "hostname"
(3)数值 514
(4)数组 [] 类似python中的队列
(5)哈希 match => { key1 => "value1" , key2 => "value2" }
3、语法规则
(1)字段读取支持倒序下标 例如a[-1]
(2)条件判断if / else if / else
(3)判断操作符 != , == , < ,> ,<= ,>= ,=~ ,!~ ,in ,not in , and ,or ,nand ,xor, !{}
4、命令行参数
-e 执行
-f 配置文件
-l 错误日志的输出文件
-P 加载插件\
--verbose 输出一定到调试日志
--debug 输出更多调试信息
五、logstash的处理过程
|filtername |xxx
<inputname <logA
>outputname >elasticsearch
logstash处理的是事件,事件的流转过程;
输入 -》 过滤 -》 输出
六、plugin命令:
查看本机有多少插件可用 plugin list
安装插件 plugin install xxxx
升级插件 plugin update xxx
七 logstash运行
1、服务模式
services logstash start
2、nohup模式
nohup logstash -f ./logstash.conf &
3、screen模式(避免用户退出命令行到哦之程序退出
screen -dmS elksc1
screen -r elksc1
screen list
八、标准输出入
input {
stdin{
add_field => {"key" => "value"}
codec => plain
tags => {"add"}标签
type => "std"类型
}
}
九、文件输入
input {
file {
path => ["fiel1","file2",...]
type => "systen"
start_position => "beginning"duqushujuweizhi
#discover_interval 每隔多久去检查下path选的下新文件 默认15s
#execlude 排出文件 list
#sincedb/sincedb_write_interval
#start_interval 每隔多久监听下新文件
}
}
十、TCP 输入:
input {
tcp {
port => 8888
mode => server
ssl_enable => false
}
}
网络导入旧数据时候常用 与nc配合
nc 127.0.0.1 8888 < olddata
十一、syslog输入:
input {
syslog {
port => "514"
}
}
十二、collectd输入:
input {
collectd {
port => 25289
type => colletced
}
}
十三、Codec
1、json
codec => "json"
注意对于nginx日志 可以把-替换成0
2、多行事件编码
codec => multiline {
pattern => "^\["
negate => true
waht => "previous"
}
3、网络流编码:
codec => netflow {
definitions => "/opt/logstash-1.4.2/lib/logstash/codec/netflow/netflow.yaml"
version => [5]
}
十四、时间处理:
filter {
gork {
match => ["message","%{HTTPDATE:logdate}"]
}
date {
match => ["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
}
}
gork 正则捕获
语法
gork {
match => {
"message"=> "%{WORD} {NUMBER:request_time:float} %{WORD}"
}
}
最佳实践
match => {"message"=>"%{SYSLOGBASE} %{DATA:message}"}
ELK基础学习的更多相关文章
- ELK-6.5.3学习笔记–elk基础环境安装
本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
- HTML5零基础学习Web前端需要知道哪些?
HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...
- python入门到精通[三]:基础学习(2)
摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...
- python入门到精通[二]:基础学习(1)
摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...
- CSS零基础学习笔记.
酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...
- Yaf零基础学习总结5-Yaf类的自动加载
Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...
随机推荐
- 为什么手机无法执行应用? Values之谜
欢迎Follow我的GitHub, 关注我的CSDN, 精彩不断! CSDN: http://blog.csdn.net/caroline_wendy/article/details/68923156 ...
- 360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
最近发现一个360浏览器很蛋疼的事情,在兼容模式下 代码: <a href="#" onclick='doAudit(1)'>审核</a> 点击没有任何效果 ...
- WPF教程二:布局之StackPanel面板
应用程序界面设计中,合理的元素布局至关重要,它可以方便用户使用,并将信息清晰合理地展现给用户.WPF提供了一套功能强大的工具-面板(Panel),来控制用户界面的布局.你可以使用这些面板控件来排布元素 ...
- mysql客户端(Navicat)远程登录操作遇到问题1142 - XXX command denied to ×××
新建的dbtest用户,访问新建立的TestDB数据库每次都提示1142错误(已经对数据库TestDB赋予了所有权限) 解决方法: Mysql命令: GRANT SELECT ON mysql.* T ...
- HDU 1020:Encoding
pid=1020">Encoding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Fastqc 能够识别的碱基编码格式
Fastqc 能够自动识别序列的碱基编码格式,我查看一下源代码,发现是碱基编码格式一共分为 1)sanger/illumina 1.9 2) illumina 1.3 3) illumina 1.5 ...
- circso 对数据进行可视化
circos可以用来绘制圈图,能够对染色体上的数据进行可视化,首先需要一个染色体的文件 染色体的文件如下,每列之间空格分隔 chr - chr1 chr1 chr - chr2 chr2 chr - ...
- 快速找出System.Management.Automation.dll,c#调用powershell
public static void InvokeSystemPS(string cmd) { List<string> ps = new List<string>(); ps ...
- 安装配置好openstack环境的虚拟机,须要改动ip时,在数据库中同步改动ip的方法
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 基于Nginx反向代理及负载均衡
基于Nginx反向代理及负载均衡 参考:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass 只要没有被启用,默认就是 ...