1、ELK简介

1.1、ELK是什么

  • Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
  • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、并将其存储供以后处理(如,搜索)
  • Kibana也是一个开源和免费的工具,它可以为Logstash和Elasticsearch提供日志分析友好的web界面,可以帮助您汇总,分析和搜索重要的数据日志。

1.2、集中式的日志管理系统

ELK针对多态服务器日志不统一问题,提供多种检索规则,方便可视化展示,解决多点日志查询问题。

简单的业务实现

ELK面试题及大难 elk入门_elasticsearch

1.3、ELK

服务

语言

功能

Elasticsearch

java

实时的分布式搜索和分析引擎,他可以用于全文检索,结构化搜索以及分析,lucene。Solr

Logstash

JRuby

具有实时渠道能力的数据收集引擎,包含输入、过滤、输出模块,一般在过滤模块中做日志格式化的解析工作

Kibana

JavaScript

为ElasticSerach提供分析平台和可视化的Web平台。他可以ElasticSerach的索引中查找,呼唤数据,并生成各种维度的表图

2、ELK的安装

我是自己用虚拟机搭的,穷

2.1、安装Centos7

centos7下载地址 建议内存2G以上

2.2、基本设置

  • 设置IP地址
•  vi /etc/sysconfig/network-scripts/ifcfg-eno33

 service network restart• 添加用户并授权
 [root@localhost ~]# adduser elk1
 [root@localhost ~]# passwd elk1
 [root@localhost ~]# whereis sudoers
 [root@localhost ~]# ls -l /etc/sudoers
 [root@localhost ~]# chmod -v u+w /etc/sudoers
 [root@localhost ~]# vi /etc/sudoers
 root ALL=(ALL) ALL
 linuxidc ALL=(ALL) ALL #这个是新增的用户
 [root@localhost ~]# chmod -v u-w /etc/sudoers
 [root@localhost ~]# su elk1

3、Elsticsearch安装

3.1JAVA环境安装

  • 解压安装包
•  [root@localhost jdk1.8]# tar -zxvf jdk-8u171-linux-x64.tar.gz
• 设置Java环境变量
 [root@localhost jdk1.8.0_171]# vi /etc/profile
 在文件最后添加
 export JAVA_HOME=/home/elk1/jdk1.8/jdk1.8.0_171
 export JRE_HOME=JAVA_HOME/LIB:CLASSPATH
 export PATH=JRE_HOME/bin:$PATH• 使环境变量生效
 [root@localhost jdk1.8.0_171]# source /etc/profile
 [root@localhost jdk1.8.0_171]# java -version
 java version “1.8.0_171”
 Java™ SE Runtime Environment (build 1.8.0_171-b11)
 Java HotSpot™ 64-Bit Server VM (build 25.171-b11, mixed mode)

3、ElasticSearch单机安装

[root@localhost elasticserach]# tar -zxvf elasticsearch-6.3.1.tar.gz
[root@localhost elasticserach]# cd elasticsearch-6.3.1/bin
[root@localhost bin]# ./elasticsearch

ELK面试题及大难 elk入门_ELK面试题及大难_02


注:elasticsearch启动不能用root用户,这也是上面创建用户的原因

切换用户启动

[root@localhost bin]# su elk1
 [elk1@localhost bin]$ ./elasticsearch

ELK面试题及大难 elk入门_JAVA_03


注:上面的错误是该用户没有权限,授权后启动

[root@localhost bin]# chown -R elk1:elk1 /home/elk1/elasticsearch
[elk1@localhost bin]$ ./elasticsearch
[elk1@localhost config]$ vi jvm.options
• 进入elasticSearch配置文件中,更改jvm参数
 [elk1@localhost config]$ vi jvm.options

 [elk1@localhost bin]$ ./elasticsearch

 通过http访问测试
 [root@localhost jdk1.8.0_171]# curl 127.0.0.1:9200• 后台启动
 [elk1@localhost bin]$ ./elasticsearch -d• 关闭程序
 [elk1@localhost bin]$ ps -ef|grep elastic

 [elk1@localhost bin]$ kill 10097• 设置windows下浏览器访问
 [root@localhost bin]systemctl stop firewalld
 [root@localhost bin]vi config/elasticsearch.yml

 更改为你虚拟机的ip• 还需要更改两个配置文件,linux自带的
1. [root@localhost bin]# vi /etc/security/limits.conf
 文件中新增如下配置
 #* hard nofile 65536
 #* soft nofile 131072
 #* hard nproc 4096
 #* hard nproc 2048
#号是注释不要粘贴2. [root@localhost bin]# vi /etc/sysctl.conf
 文件中新增如下配置
 vm.max_map_count=655360
 fs.file-max=655360
 保存后执行如下命令

  1. [root@localhost bin]# sysctl -p

3.3、ElasticSerach集群安装

  • 修改配置文件elasticserach.yml
    vim /elasticsearch.yml

cluster.name: aubin-cluster#必须相同
#集群名称(不能重复)
node.name: els1(必须不同)
#节点名称,仅仅是描述名称,用于在日志中区分(自定义)
#指定了该节点可能成为 master 节点,还可以是数据节点
node.master: true
node.data: true
path.data: /var/lib/elasticsearch
#数据的默认存放路径(自定义)
path.logs: /var/log/elasticsearch
#日志的默认存放路径
network.host: 192.168.0.1
#当前节点的IP地址
http.port: 9200
#对外提供服务的端口
transport.tcp.port: 9300
#9300为集群服务的端口
discovery.zen.ping.unicast.hosts: [“172.18.68.11”, “172.18.68.12”,“172.18.68.13”]
#集群个节点IP地址,也可以使用域名,需要各节点能够解析
discovery.zen.minimum_master_nodes: 2
#为了避免脑裂,集群节点数最少为 半数+1
注意:清空data和logs数据
192.168.14.12:9200/_cat/nodes?v

未完待续。。。。。