ELK概念
配置文件简介
Elastic安装
Development与Production模式说明
Elasticsearch本地快速启动集群的方式
上传命令
Elasticseaerch常用术语
搜索命令
yum安装ElasticSearch
rpm安装ElasticSearch
插件
测试提交数据
测试查询
ELK概念
如果有一个运行中的web服务器,那这个web服务器生成的大量的日志信息,对于elasticsearch来讲每一条日志都可以作为一个文档,它有日志的生成时间时间本身等等。那我们就需要把日志信息一个一个抽出来导进去,那我们就需要一个组件来实现,首先将这个信息抽取出来,然后自己作为elasticsearch的客户端把它推送到elasticsearch上面来,由elasticsearch来自己完成文档的建立,所以我们还需要告诉elasticsearch改怎么去分词分析这些信息。
因此我们可以在本地找一个组件,这个组件可以自己去加载每一条web日志信息的日志
记录并且加载完成之后,还能够将这些信息生成为文档格式,加上标题和值。把这些信息发给elasticsearch,就可以了。
如果说这些日志信息太多了,我们的elasticsearch压力太大,那么我们可以在中间加一个收集信息的组件,比如我们的redis服务器收集日志完成之后先发送给redis,然后发给我们的elasticsearch,那我们的redis不断的生成日志信息,我们的elasticsearch也就能够不断的获取到这个数据,所以我们想分析一下在一天当中哪个页面访问量最大,哪个IP访问最频繁,这就很方便了。但是elasticsearch给我们提供的无论是搜索还是展示接口都是通过http协议来实现的,我们可以使用curl命令与其交互。所以我们的elasticsearch就结合了Kinaba,它能够和elasticsearch进行交互,并且提供一个检索借口,用户键入检索条件,点击提交以后Kinaba能够生成一个搜索基本查询条件发给elasticsearch集群,由elasticsearch返回结果以后由再进行一次格式化就可以优雅的展示给用户。
那么数据就是通过我们的Logstash/Beats这个组件专门负责到我们的web服务器上去收集日志,因为我们的Logstash非常占据主机的资源,所以在ElasticSearch的5.0时代使用的都是Beats,Beats是一个项目名称,是一个项目,有的专门负责收集日志信息,有的专门收集网络通信相关的信息等等等,所以我们现在可以结合Beats这种工具来收集信息了。
- ElasticSearch官方地址:https://www.elastic.co
- ElasticSearch下载地址:https://www.elastic.co/downloads/past-releases
配置文件简介
cluster.name:集群名称,以此作为是否同一集群的判断条件;
node.name:节点名称,以此作为集群中不同节点的判断条件;
path.data:节点角色配置,true表示可以成为数据节点,false不能成为数据节点;
node.master:节点角色配置,true表示可以成为主节点,false不能成为主节点;
node.ingest:节点角色配置,true表示可以成为协调节点,false不能成为协调节点(简单解释,请以官方为准);
node.attr.rack:节点服务器所在的机柜信息,可能在数据分布中起到指导作用;
network.host #监听地址
http.port #监听端口
discovery.zen.ping.unicast.hosts:有哪些主机是作为集群节点
discovery.zen.minimum_master_nodes:防止脑裂,这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量(我们的情况是3,因此这个参数设置为2,但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,你肯定连不上2台服务器了,这点需要注意)。;
gateway.recover_after_nodes:控制集群在达到多少个节点之后才会开始数据恢复,通过这个设置可以避免集群自动相互发现的初期,shard分片不全的问题,假如es集群内一共有5个节点,就可以设置为5,那么这个集群必须有5个节点启动后才会开始数据分片,如果设置为3,就有可能另外两个节点没存储数据分片;
node.max_local_storage_nodes #用来控制节点是否允许从单目录启动多个实例。如果物理机节点承担太多的数量的实例,很容易会超过了其硬件承受能力,总体性能都要下降,设置1为禁止。
transport.tcp.port:内部通信端口;
bootstrap.memory_lock:锁住内存,确保ES不使用swap;
bootstrap.system_call_filter:系统调用过滤器,建议禁用该项检查,因为很多检查项需要Linux 3.5以上的内核,否则会;
Elastic安装
# 需要安装jdk
[root@op-machine ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz -O /usr/local/elasticsearch-6.5.4.tar.gz
[root@op-machine ~]# cd /usr/local/
[root@op-machine /usr/local]# tar xf elasticsearch-6.5.4.tar.gz
[root@op-machine ~]# mv elasticsearch-6.5.4 elasticsearch
Development与Production模式说明
以transport地址(network.host)是否绑定在localhost为判断标准,如果是localhost那么就是Development;
Development模式下会在启动时会议warning的方式提示配置检查异常;
Production模式下会在启动时会议error的方式提示配置检查异常;
修改模式的第二种方式
bin/elasticsearch -d -Ehttp.prot=9200
Elasticsearch本地快速启动集群的方式
# 记得查看discovery.zen.ping.unicast.hosts的配置
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=9200 -Epath.data=node1 -Enode.name=node1 -d
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=8200 -Epath.data=node2 -Enode.name=node2 -d
/usr/local/elasticsearch/bin/elasticsearch -Ehttp.port=7200 -Epath.data=node3 -Enode.name=node3 -d
上传命令
索引名:myindex
文档类型:books
文档ID:1
-d:json格式的文档内容
Elasticseaerch常用术语
Document:文档数据;
Index:索引,可以理解为数据库;
Type:索引中的数据类型,可以理解数据库中的一个表;
Field:字段,文档的字段属性;
Query DSL:查询语法;
搜索命令
-q:指定搜索条件
fields:只对搜索结果显示哪个字段
size:分页查看时一次显示多少个文档
pretty:显示格式
yum安装ElasticSearch
1、安装jdk
[root@node1 ~]# tar xf jdk-8u144-linux-x64.tar.gz
[root@node1 ~]# mv jdk1.8.0_144/ /usr/local/jdk1.8
[root@node1 ~]# tail -3 /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/*:${JAVA_HOME}/lib/*
export PATH=$PATH:${JAVA_HOME}/bin
2、导入key
[root@node1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3、配置yum源
[root@node1 ~]# cat << EOF >> /etc/yum.repos.d/elasticsearch.repo
[Elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF
3、安装elasticsearch
[root@node1 ~]# yum install elasticsearch
rpm安装ElasticSearch
1、安装
[root@node1 ~]# yum install -y java-1.8.0-openjdk-devel
[root@node1 ~]# rpm -vih elasticsearch-2.3.4.rpm
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl enable elasticsearch
2、配置ElasticSearch
[root@node1 ~]# grep '^[^#]' /etc/elasticsearch/elasticsearch.yml
cluster.name: els_cluster
node.name: node1.cce.com
network.host: 0.0.0.0
path.data: /data/els
[root@node1 ~]# mkdir -p /data/els
[root@node1 ~]# chown elasticsearch:elasticsearch /data/els/
3、启动
[root@node1 ~]# netstat -ntlp|grep '9.00'
tcp6 0 0 :::9200 :::* LISTEN 1400/java
tcp6 0 0 :::9300 :::* LISTEN 1400/java
[root@node1 ~]# curl localhost:9200
{
"name" : "node1.cce.com",
"cluster_name" : "els_cluster",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
4、使用curl来上传一个测试文档
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/1 -d '{name:"elasticsearch",publish:"oreilley",auther:"caichangen"}'
{"_index":"myindex","_type":"books","_id":"1","_version":1,"_shards": {"total":2,"successful":1,"failed":0},"created":true}
5、获取提交的内容
[root@node1 ~]# curl -XGET http://192.168.1.71:9200/myindex/books/1?pretty
{
"_index" : "myindex",
"_type" : "books",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "elasticsearch",
"publish" : "oreilley",
"auther" : "caichangen"
}
} 6、继续上传文档
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/2 -d '{name:"xiyouji",publish:"shushe",auther:"cce"}'
{"_index":"myindex","_type":"books","_id":"2","_version":1,"_shards": {"total":2,"successful":1,"failed":0},"created":true}
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/3 -d '{name:"shuhuzhuan",publish:"charcce",auther:"char"}'
{"_index":"myindex","_type":"books","_id":"3","_version":1,"_shards": {"total":2,"successful":1,"failed":0},"created":true}
[root@node1 ~]# curl -XPUT http://192.168.1.71:9200/myindex/books/4 -d '{name:"docker",publish:"charset",auther:"aobama"}'
{"_index":"myindex","_type":"books","_id":"4","_version":1,"_shards": {"total":2,"successful":1,"failed":0},"created":true}
7、测试全文模糊匹配搜索
[root@node1 ~]# curl "http://192.168.1.71:9200/_search?q=cce&pretty"
{
"took" : 6,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.5,
"hits" : [ {
"_index" : "myindex",
"_type" : "books",
"_id" : "2",
"_score" : 0.5,
"_source" : {
"name" : "xiyouji",
"publish" : "shushe",
"auther" : "cce"
}
} ]
}
}
插件
对于ElasticSearch集群而言,它有自己的插件功能,能够通过插件的方式来观察集群和扩展集群;我们可以直接将插件放置在ElasticSearch的插件目录就可以了,或者使用plugin来安装
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install -h
[root@node1 ~]# /usr/share/elasticsearch/bin/plugin install file:///root/elasticsearch-head-latest.zip
-> Installing from file:/root/elasticsearch-head-latest.zip...
Trying file:/root/elasticsearch-head-latest.zip ...
Downloading .........DONE
Verifying file:/root/elasticsearch-head-latest.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /usr/share/elasticsearch/plugins/head
测试通过http的方式访问我们安装的插件
本文暂时没有评论,来添加一个吧(●'◡'●)