27.1 ELK介绍
27.2 ELK安装准备工作
27.3 安装es
27.4 配置es
27.5 curl查看es
27.1 ELK介绍
ELK
是ElasticSearch
,Logstash
和Kibana
的合称。5.0版本之前叫ELK Stack
,之后加入Beats
,改名为Elastic Stack
。
它可以帮助企业管理多台服务器上的多种日志。
官网https://www.elastic.co/cn/ 中文指南https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/detailsElasticSearch
是一个搜索引擎
,用来搜索、分析、存储日志。它是分布式的,也就是说可以横向扩容,可以自动发现,索引自动分片,总之很强大。文档https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.htmlLogstash
用来采集日志
,把日志解析为json格式交给ElasticSearch。Kibana
是一个数据可视化
组件,把处理后的结果通过web界面展示。Beats
在这里是一个轻量级日志采集器
,其实Beats家族有5个成员
早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计,但是它不能定义输入日志的格式。x-pack
对Elastic Stack提供了安全、警报、监控、报表、图表于一身的扩展包,是收费的。现在归纳到Elastic Stack里。
ELK架构
27.2 ELK安装准备工作
这里准备三台机器kun02 kun03和kun04,分别都安装elasticsearch,并让kun02做主 ,其他两台为从,形成一个集群。并在kun02上安装Kibana,在kun03上安装logstash来收集本机的日志数据。
27.3 安装es
安装es有两种方法,一是创建repo源再yum 了一种是直接下载rpm包
参考官方文档 https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
先安装jdk
查看Tomcat 1 http://kun0769.top/2018/06/26/Tomcat-1%EF%BC%886%E6%9C%8826%E6%97%A5%EF%BC%89/
创建repo源再yum
1.导入GPG密钥
1 | [root@kun02 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch |
2.创建repo源
1 | [root@kun02 ~]# vim /etc/yum.repos.d/elastic.repo |
输入下面参数1
2
3
4
5
6
7
8[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3.yum下载安装es
1 | [root@kun02 ~]# yum install -y elasticsearch |
下载官方对应的rpm包1
2
3[root@kun02 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.rpm
[root@kun02 src]# rpm -ivh elasticsearch-6.4.2.rpm
问题 安装rpm失败 没有找到java路径
警告:elasticsearch-6.4.2.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中… ################################# [100%]
which: no java in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin)
could not find java; set JAVA_HOME or ensure java is in PATH
错误:%pre(elasticsearch-0:6.4.2-1.noarch) 脚本执行失败,退出状态码为 1
错误:elasticsearch-0:6.4.2-1.noarch: 安裝 已失败
解决 在/etc/profile中java路径前加上export
1
2
3
4
5export JAVA_HOME=/usr/local/jdk1.8/
export JAVA_BIN=/usr/local/jdk1.8//bin
export JRE_HOME=/usr/local/jdk1.8/jre
export PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
export CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
27.4 配置es
elasticsearch有两个配置文件/etc/elasticsearch/elasticsearch.yml
集群配置文件/etc/sysconfig/elasticsearch
本身配置文件
参考文档 https://www.elastic.co/guide/en/elasticsearch/reference/6.0/rpm.html
配置主节点kun02的集群配置文件
1 | [root@kun02 ~]# vim /etc/elasticsearch/elasticsearch.yml |
添加下面参数1
2
3
4
5
6
7
8cluster.name: kun ##集群名字
node.master: true ##主节点,非数据节点
node.data: false
network.host: 192.168.80.102 ## 定义主节点IP
discovery.zen.ping.unicast.hosts: ["192.168.80.102", "192.168,80.103","192.168.80.104"] ##定义自动发现集群其他节点
配置主节点kun03的集群配置文件
1 | [root@kun03 ~]# vim /etc/elasticsearch/elasticsearch.yml |
配置主节点kun04的集群配置文件
1 | [root@kun04 ~]# vim /etc/elasticsearch/elasticsearch.yml |
三台机器分别启动elasticsearch服务
1 | [root@kun02 ~]# systemctl start elasticsearch |
查看elasticsearch是否启动
1 | [root@kun02 ~]# ps aux |grep elastic |
elasticsearch的日志文件在/var/log/elasticsearch/
下,找出对应的集群名字日志就开查看对应日志/var/log/messages
中也可以查看启动不了的原因
问题 系统没有找到Java路径 启动不了elasticsearch
Oct 14 13:42:43 kun04 elasticsearch: which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
Oct 14 13:42:43 kun04 systemd: elasticsearch.service: main process exited, code=exited, status=1/FAILURE
Oct 14 13:42:43 kun04 elasticsearch: could not find java; set JAVA_HOME or ensure java is in PATH
解决 添加java软连接到/usr/bin
和添加环境变量1
2
3
4
5
6[root@kun04 ~]# ln -s /usr/local/jdk1.8/bin/java /usr/bin/java
[root@kun04 ~]# vim /etc/profile
在PATH最后添加:/usr/bin
export PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin:/usr/bin
[root@kun04 ~]#source /etc/profile
查看是否启动elasticsearch端口
1 | [root@kun04 ~]# netstat -lntp |grep java |
9300
端口是tcp通讯端口,集群间和TCPClient都走的它9200
端口是http协议的RESTful接口
小提示
杀掉某个进程可以使用pkill 进程名
参考文档 https://blog.csdn.net/capecape/article/details/78513194
27.5 curl查看es
搭建好es集群后怎样查看他是否正常启动呢
参考文档 https://zhaoyanblog.com/archives/732.html
查看es集群状态
格式:curl '任意节点IP:9200/_cluster/health?pretty'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@kun02 ~]# curl '192.168.80.102:9200/_cluster/health?pretty'
{
"cluster_name" : "kun", ##集群名字
"status" : "green", ##绿表示正常
"timed_out" : false,
"number_of_nodes" : 3, ##三个节点
"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
}
查看es集群配置
格式:curl '任意节点IP:9200/_cluster/state?pretty'
1
[root@kun02 ~]# curl '192.168.80.102:9200/_cluster/state?pretty'