ELK安装部署

搜索引擎一般有两个部分组成:
1.搜索链
2.搜索组件

ELK stack:
文档:Document
包含了一个或多个域的容器;
field:value
域:
有很多选项
索引选项、存储选项、项向量使用选项
索引选项用于通过倒排索引来控制文本是否可被搜索

index:ANYLYZED:分析(切词)并单独作为索引项
index.Not-ANYLZED:不分析(不切词),把整个内容当一个索引项
index.ANYLZED_NORMS:类似于index:Not_ANYLZED,但不存储值的Norms(加权基准)信息
index.No:不对此域的值进行索引;因此不能被搜索

存储选项:是否需要存储域的真实值;
store.YES:存储真实值
store.NO:不存储真实值

域向量选项用于在搜索期间该文档所有的唯一项都能完全从文档中检索时使用;

文档和域的加权操作

加权计算标准;

搜索:
查询Lucene索引时,它返回的是一个有序的scoreDoc对象,查询时,Lucene会为每个文档计算出其score

API:
indexsearcher:搜索索引入口
query及其子类
queryparser
topdocs:排名最高的
ScoreDoc

Lucene的多样化查询:
indexsearcher中的search方法:

TermQuery:对索引中的特定项进行搜索:Term是索引中的最小索引片段,每个term包含了一个域名和一个文本值:

termRangeQuery:在索引中的多个特定项中进行搜索,能搜索指定的多个域
NumericRangeQuery:数值范围搜索
PrefixQuery:用于搜索以指定字符串开头的项
BooleanQuery:用于实现组合查询,组合逻辑有,AND,OR,NOT
PhraseQuery:根据位置信息来定位文档
WildcardQuery:通配符来查询搜索
FuzzyQuery:模糊查询:Levenshtein,匹配长度,距离算法

elasticsearch:
ES是一个基于lucene实现的开源、分布式、Restful的全文搜索引擎;此外,它还是一个分布式实时文档存储,其中每个文档的每个field均是被索引的数据,且可被搜索,也是一个带实时分析功能的分布式搜索引擎,能够扩展至数以百计的节点实时处理PB级的数据

基本组件:
索引(index):文档容器,索引是具有类似属性的文档的集合,类似于表,索引名必须使用小写字母,全小写字符

类型(type):类型是索引内部的逻辑分区,其意义完全取决于用户需求,一个索引内部可定义一个或多个类型。一般来说,类型就是拥有相同的域的文档的预定义

文档(document)文档是Lucene索引和搜索的原子单位,它包含了一个或多个域,是域的容器,基于JSON格式表示,每个域的组成部分,一个名字,一个或多个值,拥有多个值的域,通常成为多值域

映射(mapping):原始内容存储为文档之前需要事先进行分析,例如:切词,过滤掉某些词等,映射用于定义此分析机制该如何实现。除此之外,ES还为映射提供了诸如将域中的内容排序等功能

ES的集群组件:
cluster:ES的集群标识为集群名称,默认为elasticsearch,节点就是靠此名字来决定加入到哪个集群中,一个节点只能属于一个集群

Node:运行了单个ES实例的主机即为节点,用于存储数据、参与集群索引及搜索操作,节点的标识靠节点名。

shard:将索引切割成为的物理存储组件,但每个shard都是一个独立且完整的索引。创建索引时,ES默认将其分割为5个shard,用户也可以按需自定义,但是创建完成之后不可修改

shard有两种类型:primary shard(主shard)和replica shard(副本shard)
replica用于数据冗余及查询时的负载均衡,每个主shard的副本数量可自定义,且可动态修改

ES cluster工作过程:
启动时,通过单播播(默认)或单播方式在9300/tcp查找同一集群中的其他节点,并与之建立通信。

集群中的所有节点会选举出一个主节点负责管理整个集群状态,以及在集群范围内决定各shards的分布方式,用户角度而言,每个均可接收并响应用户的各类请求。

集群有状态,green(正常状态),red(严重的状态),yellow(不健康的状态)

ES的默认端口:
参与集群事务:9300/tcp端口
transport
接收请求:9200/tcp
http.port

Restful API:
四类API:
(1)检查集群、节点、索引等健康与否,以及获取其响应状态
(2)管理集群、节点、索引及元数据
(3)执行CRUD操作
(4)执行高级操作,例如paging,filtering等

ES的访问接口:9200/tcp
curl -X '?/HOST:PORT/ ?<QUERY_STRING> ’ -d ‘’

VERB:GET,PUT,DELETE等
PROTOCOL:http,https
QUERY_STRING:查询参数,例如?pretty表示用易读的JSON格式输出
BODY:请求的主体

查看实例:
[root@localhost ~]# curl -X GET ‘http://192.168.75.129:9200/?pretty
{
“name” : “node-1”,
“cluster_name” : “testes”,
“cluster_uuid” : “AEMK2ql3SGOdTbOWNo6_rg”,
“version” : {
“number” : “5.3.0”,
“build_hash” : “3adb13b”,
“build_date” : “2017-03-23T03:31:50.652Z”,
“build_snapshot” : false,
“lucene_version” : “6.4.1”
},
“tagline” : “You Know, for Search”
}

使用API可以查看cat
[root@localhost ~]# curl -X GET ‘http://192.168.75.136:9200/_cat
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks

查看全信息,需要后面加?v
[root@localhost ~]# curl -X GET ‘http://192.168.75.136:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.75.136 4 91 0 0.00 0.01 0.05 mdi * node-3
192.168.75.129 6 95 0 0.00 0.01 0.05 mdi - node-1

还可以加help获取帮助:
[root@localhost ~]# curl -X GET ‘http://192.168.75.136:9200/_cat/nodes?help

自定义显示
[root@localhost ~]# curl -X GET ‘http://192.168.75.136:9200/_cat/nodes?h=name,ip,port,uptime,heap.current
node-3 192.168.75.136 9300 1.1h 97.4mb
node-1 192.168.75.129 9300 32.7m 140.4mb

查看健康状态:
[root@localhost ~]# curl -X GET ‘http://192.168.75.136:9200/_cat/health
1492355100 11:05:00 testes green 2 2 0 0 0 0 0 0 - 100.0%

集群_cluster

查看集群可以使用_cluster
[root@localhost ~]# curl -X GET ‘http://192.168.75.129:9200/_cluster/health?pretty=ture
{
“cluster_name” : “testes”,
“status” : “green”,
“timed_out” : false,
“number_of_nodes” : 2,
“number_of_data_nodes” : 2,
“active_primary_shards” : 0,
“active_shards” : 0,
“relocating_shards” : 0,
“initializing_shards” : 0,
“unassigned_shards” : 0,
“delayed_unassigned_shards” : 0,
“number_of_pending_tasks” : 0,
“number_of_in_flight_fetch” : 0,
“task_max_waiting_in_queue_millis” : 0,
“active_shards_percent_as_number” : 100.0
}

如果要查看详细的易读格式,因为level和pretty都是参数,所以要用&
[root@localhost ~]# curl -X GET ‘http://192.168.75.129:9200/_cluster/health?level=cluster&pretty
{
“cluster_name” : “testes”,
“status” : “green”,
“timed_out” : false,
“number_of_nodes” : 2,
“number_of_data_nodes” : 2,
“active_primary_shards” : 0,
“active_shards” : 0,
“relocating_shards” : 0,
“initializing_shards” : 0,
“unassigned_shards” : 0,
“delayed_unassigned_shards” : 0,
“number_of_pending_tasks” : 0,
“number_of_in_flight_fetch” : 0,
“task_max_waiting_in_queue_millis” : 0,
“active_shards_percent_as_number” : 100.0
}

显示版本,复杂和简单易读对比:
[root@localhost ~]# curl -X GET ‘http://192.168.75.129:9200/_cluster/state/version
{“cluster_name”:“testes”,“version”:3,“state_uuid”:“ZoBVxe34TLePRTofcgrjcw”}

[root@localhost ~]# curl -X GET ‘http://192.168.75.129:9200/_cluster/state/version?pretty
{
“cluster_name” : “testes”,
“version” : 3,
“state_uuid” : “ZoBVxe34TLePRTofcgrjcw”
}

查看集群节点主节点:
[root@localhost ~]# curl -XGET ‘http://192.168.75.129:9200/_cluster/state/master_node?pretty
{
“cluster_name” : “testes”,
“master_node” : “QbIxUVdoRKK29Up9jaioJQ”
}

查看集群节点:
[root@localhost ~]# curl -XGET ‘http://192.168.75.129:9200/_cluster/state/nodes?pretty
{
“cluster_name” : “testes”,
“nodes” : {
“Zqk4YFnfRJO_AkSEjxpmLQ” : {
“name” : “node-1”,
“ephemeral_id” : “_MG5lRYnQS6fJE7_naF7AA”,
“transport_address” : “192.168.75.129:9300”,
“attributes” : { }
},
“QbIxUVdoRKK29Up9jaioJQ” : {
“name” : “node-3”,
“ephemeral_id” : “q5d_ogFTSUa47QopVWtrHQ”,
“transport_address” : “192.168.75.136:9300”,
“attributes” : { }
}
}
}

health:
curl -XGET ‘http://192.168.75.129:9200/_cluster/health?pretty’
state:
curl -XGET ‘http://192.168.75.129:9200/_cluster/state/?pretty’
stats:
curl -XGET ‘http://192.168.75.129:9200/_cluster/stats/
节点状态信息
curl -XGET ‘http://192.168.75.129:9200/_cluster/stats/
查看集群数据信息:
[root@localhost ~]# curl -XGET ‘http://192.168.75.129:9200/_cluster/stats?human&pretty

查看节点数据信息:
[root@localhost ~]# curl -XGET ‘http://192.168.75.129:9200/_nodes?pretty

Plugins:
插件扩展ES的功能:
添加自定义的映射类型,自定义分析器,本地脚本,自定义发现方式

安装:
1.直接将插件放置于plugins目录
2.使用plugin脚本

插入索引数据:
[root@localhost ~]# curl -XPUT ‘192.168.75.139:9200/testlog/class1/2?pretty’ -d ’

{
“first_name”: “rong”,
“last_name”: “huang”,
“gender”: “female”,
“age”: 23,
“courses”: “luoyingshenjian”
}’
{
“_index” : “students”,
“_type” : “class1”,
“_id” : “2”,
“_version” : 1,
“result” : “created”,
“_shards” : {
“total” : 2,
“successful” : 1,
“failed” : 0
},
“created” : true
}

列出索引数据:
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/class1/1?pretty
{
“_index” : “students”,
“_type” : “class1”,
“_id” : “1”,
“_version” : 1,
“found” : true,
“_source” : {
“first_name” : “xiaoming”,
“last_name” : “wang”,
“age” : 25,
“courses” : “xianglongshibazhang”
}
}

更新文档:
1.PUT方法会覆盖原有文档
2.使用_update API
POST方法提交表单:
[root@localhost ~]# curl -XPOST ‘http://192.168.75.139:9200/students/class1/2/_update?pretty’ -d ’
{
“doc”: { “age”: 100 }
}’

{
“_index” : “students”,
“_type” : “class1”,
“_id” : “2”,
“_version” : 3,
“result” : “updated”,
“_shards” : {
“total” : 2,
“successful” : 1,
“failed” : 0
}
}

[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/class1/2?pretty
{
“_index” : “students”,
“_type” : “class1”,
“_id” : “2”,
“_version” : 4,
“found” : true,
“_source” : {
“first_name” : “ren”,
“last_name” : “huang”,
“gender” : “female”,
“age” : 100,
“courses” : “luoyingshenjian”
}
}

删除文档:
DELETE

[root@localhost ~]# curl -XDELETE ‘192.168.75.139:9200/students/class1/2?pretty’
{
“found” : true,
“_index” : “students”,
“_type” : “class1”,
“_id” : “2”,
“_version” : 6,
“result” : “deleted”,
“_shards” : {
“total” : 2,
“successful” : 1,
“failed” : 0
}
}

[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/class1/2?pretty
{
“_index” : “students”,
“_type” : “class1”,
“_id” : “2”,
“found” : false
}

删除索引:
首先查看索引:
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/_cat/indices?v

删除:不可逆
[root@localhost ~]# curl -XDELETE ‘http://192.168.75.139:9200/students
{“acknowledged”:true}

查询数据:
query API:
query DSL:查询语言,JSON based语言
用于实现诸多类型的查询操作。比如。simple term query

ES的查询操作执行分为两个阶段:
分散阶段:
合并阶段:

查询方式:
向ES发起查询请求的方式有两种:
1、通过restful request API查询,也称为query string;
2、通过发送REST request body进行

简单的全量查询:
[root@localhost ~]# curl -XGET ‘192.168.75.139:9200/students/_search?pretty’

不常用:
[root@localhost ~]# curl -XGET ‘192.168.75.139:9200/students/_search?pretty’ -d ’

{
“query”: { “match_all”: {} } #说明:query是固定格式,match_all匹配所有内容
}’

多索引,多类型查询:

所有索引查询:
/_search 查询所有索引
[root@localhost ~]# curl -XGET ‘192.168.75.139:9200/_search?pretty’

单索引查询,指定索引查询:
/INDEX_NAME/_search:单索引查询
[root@localhost ~]# curl -XGET ‘192.168.75.139:9200/students/_search?pretty’

多索引查询:
/INDEX1,INDEX2/_search 多索引查询
通配符查询:
/s*,t*/_search 以s开头和t开头的索引查询
/students/class1/_search :单类型搜索
/students/class1,class2/_search:多类型搜索

mapping和analysis:
ES:对每一个文档,会取得其所有域的所有值,生成一个名为“_all”的域;执行查询时,如果在query_string未指定查询的域,则在_all域上执行查询操作

GET /_search?q=‘xianglong’
GET /_search?q=‘xiangong%20shiba%20zhang’
GET /_search?q=courses:‘xiangling%20shiba%20zhang’
GET /_search?q=courses:‘xianglong’

前两个表示在_all域搜索,
后两个表示在指定域上搜索:需要做精确匹配

[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?q=“xianglong”&pretty

注意:空格需要转义,使用%20即可
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?q=“shiba zhang”&pretty

[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?q=name:“xiao”&pretty

courses
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?q=courses"xianglong"&pretty

数据类型:string,numbers,boolean,dates

查看指定类型的mapping实例:
[root@localhost ~]# curl ‘http://192.168.75.139:9200/students/_mapping/class1?pretty
{
“students” : {
“mappings” : {
“class1” : {
“properties” : {
“age” : {
“type” : “long”
},
“courses” : {
“type” : “text”,
“fields” : {
“keyword” : {
“type” : “keyword”,
“ignore_above” : 256
}
}
},

ES中搜索的数据广义上可被理解为两类:
types:exact
full-text

精确值:指未经加工的原始值,在搜索时进行精确匹配
full-text:用于引用文本中数据,判断文档在多大程度上匹配查询请求、即文档与用户请求查询的相关度
为了完成full-text搜索,ES必须首先分析文本,并创建出倒排索引,倒排索引中的数据还需进行“正规化”为标准格式

分词
正规化
即分析

分析需要由分析器进行:analyzer

分析器由三个组件构成,字符过滤器,分词器,分词过滤器

ES内置分析器:
standard analyzer
simple analyzer
whitespace analyzer
language analyzer

分析器不仅在创建索引时用到:在构询建查时也会用到;

query DSL:
request body

分为两类:
query dsl:执行full-text查询时,基于相关度来评判其匹配结果,查询执行过程复杂,且不会被缓存
filter dsl:执行exact查询时,基于其结果为“yes”或“no”进行评判,速度快,且结果缓存
filter dsl:

trem filter:精确匹配包含指定term的文档
实例:{ “term”: {}}
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?pretty’ -d ’
{
“query”: {
“term”: {
“name”: “lai”
}
}
}’

range filters:用于在指定的范围内查找数值或时间
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?pretty’ -d ’
{
“query”: {
“range”: {
“age”: {
“gte”: 25
}
}
}
}’

exists and missing filters:判断存在和不存在

boolean filter:
基于boolean的逻辑来合并多个filter子句
must: 其内部所有子句条件必须同事匹配,即and
must: {
“term”: { “age”: 25}
“term”: { “gender”: “female” }

must_not:其所有子句必须不匹配,即not
must_nor: {
“term”: { “age”: 25 }
}

should:至少有一个子句匹配,即or
should: {
“term”: { “age”: 25 }
“term”: { “gender”: “female” }

query DSL:
match_all query:
用于匹配所有文档,没有指定任何query,默认即为match_all query
{ “match_all”: {} }

match query:
在几乎任何域上执行full-text或exact-value查询
如果执行full-text查询,首先对查询时的语句做分析
{ “match”: { “students”: guo}}
如果执行exact-value查询,搜索精确值,此时,建议使用过滤,而非查询
[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_search?pretty’ -d ’

{
“query”: {
“match”: { “name”: “lai” }
}
}’

multi_match Query:
用于在多个域上执行相同的查询:

“multi_match”:
“query”: full-text search
“field”: {‘field1’,‘field2’ }

{
“multi_match”:
“query”: {
“students”: “guo”
}
“field”:
{
“name”,
“description”
}
}

bool query:
基于boolean 逻辑合并多个查询语句,与bool filter不太的是,查询子句不是返回“yes”或“no”,而是其计算出的匹配度分值,因此,boolean query 会为各子句合并其score
must:
must_not
should

合并filter和query:

“filterd”: {
query: { “match”: { “gender”: “female” }}
filter: { “term”: { “age”: 25}}

查询语句语法检查:
GET /INDEX/_validate/query?pretty
{

}

GET /INDEX/_validate/query?explain&pretty
{

[root@localhost ~]# curl -XGET ‘http://192.168.75.139:9200/students/_validate/query?explain&pretty’ -d ’
{
“query”: {

“term”: { “age”: 25 }
}
}’
{
“valid” : true,
“_shards” : {
“total” : 1,
“successful” : 1,
“failed” : 0
},

“explanations” : [
{
“index” : “students”,
“valid” : true,
“explanation” : “age:[25 TO 25]”
}
]
}

logstash:
支持多种数据获取机制,通过TCP/UDP协议、文件、syslog、windows
eventlogs及STDIN等,获取到数据后, 它支持对数据执行过滤,修改等操作

测试logstash:
[root@localhost bin]# ./logstash -f /data/sample.conf -t

编辑启动配置文件:
[root@localhost bin]# vim /data/sample.conf
说明:标准输入和标准输出
input {
stdin {}
}

output {
stdout {
codec => rubydebug
}
}

启动加载配置文件:
[root@localhost bin]# ./logstash -f /data/sample.conf
输入 hellowrold

{
“@timestamp” => 2017-04-23T11:53:47.928Z,
“@version” => “1”,
“host” => “localhost.localdomain”,
“message” => “hellowrold”
}

logstash支持四种类型插件:
input,filter,codec,output

数据类型:
数组:arrey:[item1,item2…]
布尔型值:boolean:true,false
字节:bytes:
编码:codec:编码器
哈希值:hash:key => value
数值:number
密码:password
路径:PATH:文件系统路径
字符串:string:

字段引用:[]

条件判断:
==,!=,<,<=,>,=>
=,!
and,or
符合表示 使用小括号 ()

Logstash的工作流程:input | filter |output ,如无需对数据进行额外处理,filter可省略

input {
stdin{}

output{
stdout {
codec => rubydebug
}
}

logstash的插件:
input插件:
file:从指定的文件中读取事件流;其工作特性类似于tail -n 1
使用filewatch(ruby Gem库)监听文件的变化
.sincedb:记录了每个被监听的文件的inode,major number,minor number,pos

简单的示例:
[root@localhost log]# cat /data/filesample.conf
input {
file {
path => ["/var/log/messages"]
type => “system”
start_position => “beginning” 说明:从什么地方开始“end”表示
}
}

output {
stdout {
codec => rubydebug
}
}

udp:通过udp协议从网络连接来读取message,其必备参数为port。用于指明自己监听的端口,而host则用于指明自己监听的地址。

collectd:性能监控程序
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装:yum -y install collectd
配置192.168.75.140 collectd:
[root@localhost ~]# grep -v “^#” /etc/collectd.conf |grep -v “^$”
Hostname “elk.node3”
LoadPlugin syslog
LoadPlugin cpu
LoadPlugin df
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin network

<server “192.168.75.141” “25826”>
#说明:192.168.75.141是logstash主机的地址,25826是其监听的udp端口

配置192.168.75.141 logstash
input {
udp {
port => 25826
codec => collectd {}
type => “collectd”
}
}

output {
stdout {
codec => rubydebug
}
}

filter插件:
用于在将event执行output发出之前对其实现某些处理功能,grok

grok用于分析并结构化文本数据;目前 是logstash中将非结构话日志数据转化为结构化的可查询数据的不二之选
syslog,apache,nginx

192.168.75.1 - - [23/Apr/2017:11:35:09 -0400] “GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1” 404 238 “http://192.168.75.141/noindex/css/open-sans.css” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0”

比如把上面进行拆解 %ip %user %group [%datetime] %method %url %version %status %size
%referer %user_agent

ip => 192.168.75.1
user =>
group =>
datetime => 23/Apr/2017:11:35:09 -0400

redis插件:
从redis读取数据,支持redis channel 和lists两种方式

filter插件:
用于在将event通过output之前对其实现某些处理功能,grok,

用于定义日志格式:
[root@elk logstash-5.3.1]# vim /data/logstash-5.3.1/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns/grok-patterns

语法格式:
%{SYNTAX:SEMANTIC}
SYNTAX:预定义模式名称
SEMANTIC:匹配到的文本的自定义标识符

例如:
1.1.1.1 GET /index.html 30 0.23

拆解:
%{IP:clientip} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

案例:
[root@elk data]# vim groksample.conf

input {
stdin {}
}

filter {
grok {
match => { “message” => “%{IP:clientip} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}” }
}
}

output {
stdout {
codec => rubydebug
}
}

自定义grok的模式:
grok的模式是基于正则表达式编写,其元字符与其他正则表达式的工具如awk,sed等 差别不大

输出结果:

1.1.1 GET /index.html 30 0.23

{
“duration” => “0.23”,
“request” => “/index.html”,
“@timestamp” => 2017-04-27T15:45:31.095Z,
“method” => “GET”,
“bytes” => “30”,
“clientip” => “1.1.1.1”,
“@version” => “1”,
“host” => “elk.node1”,
“message” => “1.1.1.1 GET /index.html 30 0.23”
}

匹配apache log

[root@elk data]# vim http.conf

input {
file {
path => ["/var/log/httpd/access_log"]
type => “httpd.log”
start_position => “beginning”
}
}

filter {
grok {
match => { “message” => “%{COMBINEDAPACHELOG}” }
}
}

output {
stdout {
codec => rubydebug
}
}

output插件:

redis插件:

input {
file {
path => ["/var/log/httpd/access_log"]
type => “httpdlog”
start_position => “beginning”
}
}

filter {
grok {
match => { “message” => “%{COMBINEDAPACHELOG}” }
}
}

output {
redis {
port => “6379”
host => [“127.0.0.1”]
data_type => “list”
key => “logstash-%{type}”
}
}

然后可以搜索elasticsearch
[root@elk ~]# curl -XGET ‘http://192.168.75.141:9200/logstash/_search?pretty
5集 69分钟
tcpdump -i ens33 -nn tcp port 9300

状态为yellow的解决办法
http://blog.csdn.net/gamer_gyt/article/details/53230165

curl -XPUT “http://localhost:9200/_settings” -d’ { “number_of_replicas” : 0 }’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值