天下風雲出我輩
一入江湖歲月催

ELK Stack实践之Elasticsearch(一)

ELK简介:

ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack。

Elastic Stack包含:

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。

ELK Stack架构图:

安装环境信息:

系统环境:Cetnos 7.4

jdk版本:java version “1.8.0_181”

ELK 版本: 6.41

生产环境建议每台机的内存都为8G以上。

这里搭建是ES集群版,机器有限,就一个主节点和数据节点。

IP地址 节点 角色
192.168.1.235 Mster ES+Kibana
192.168.1.234 Data ES
192.168.1.231 Logstash Logstash

ELK Stack的搭建将分别由ES、kibana、logstash三篇文章来完成,这里首先搭建ES集群。

使用yum安装问题多出在启动服务上,建议下载tar.gz包安装使用。就是比较麻烦点

一、安装配置Elasticsearch

jdk环境安装详细见此:安装配置JDK环境

1、Master 、Data主机同样安装ES:

#导入秘钥:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

#配置yum源
vim /etc/yum.repos.d/elasticsearch.repo
[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

#安装
yum insatll -y elasticsearch

#启动
/sbin/chkconfig --add elasticsearch
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch

2、安装目录介绍:

Elasticsearch主目录或 : /usr/share/elasticsearch

二进制脚本: /usr/share/elasticsearch/bin

配置文件: /etc/elasticsearch/elasticsearch.yml

系统配置文件: /etc/sysconfig/elasticsearch

数据存储: /var/lib/elasticsearch

日志: /var/log/elasticsearch

插件:/usr/share/elasticsearch/plugins

3、更改Mastr节点配置如下:

1、#更改elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-es                  # 集群中的名称
node.name: master                    # 该节点名称
node.master: true                    # 该节点为主节点
node.data: false                      # 表示这不是数据节点
bootstrap.memory_lock: true           #锁定内存
network.host: 192.168.1.235           #监听地址,本机IP
http.port: 9200                       #es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.235", "192.168.1.234"]  # 配置自动发现

2、#更改系统配置文件
vim /etc/sysconfig/elasticsearch

JAVA_HOME=/application/jdk             #java环境路径
MAX_OPEN_FILES=65536                   #打开文件的最大数量

3、#更改jvm内存分配,为物理内存的50%
vim /etc/elasticsearch/jvm.options
-Xms4g
-Xmx4g

4、#编辑ES服务配置
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity

systemctl daemon-reload
systemctl restart elasticsearch.service

查看监听端口:

[[email protected] ~]# netstat -lntp |grep java
tcp6 0 0 :::9200 :::* LISTEN 2655/java 
tcp6 0 0 :::9300 :::* LISTEN 2655/java

4、Data节点配置

除了elasticsearch.yml配置不一样外,其他同样

#更改elasticsearch.yml

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es     # 集群中的名称
node.name: node-2        # 该节点名称
node.master: false 
node.data: true            # 表示这是数据节点
bootstrap.memory_lock: true    #锁定内存
network.host: 192.168.1.234     #监听地址,本机IP
http.port: 9200 #es服务的端口号
discovery.zen.ping.unicast.hosts: ["192.168.1.235", "192.168.1.234"] # 配置自动发现

重启服务后查看端口:

[[email protected] ~]# netstat -lntp |grep java
tcp6 0 0 :::9200 :::* LISTEN 2655/java 
tcp6 0 0 :::9300 :::* LISTEN 2655/java

二、查看ES集群状态:

[[email protected] ~]# curl '192.168.1.235:9200/_cluster/health?pretty'
{
"cluster_name" : "my-es",
"status" : "green", # 为green则代表健康没问题,如果是yellow或者red则是集群有问题
"timed_out" : false, # 是否有超时
"number_of_nodes" :2, # 集群中的节点数量
"number_of_data_nodes" :1, # 集群中data节点的数量
"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
}

#查看详细状态:
curl '192.168.1.235:9200/_cluster/state?pretty'

#查看集群节点
curl 'http://192.168.1.235:9200/_cat/nodes?v'
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.1.235           40          91   4    0.20    0.10     0.06 mi        *      master
192.168.1.234           74          90   1    0.00    0.02     0.05 di        -      node-2

参考资料:     Elasticsearch官方文档

 

赞(4) 打赏
未经允许不得转载:Anonym0x1 » ELK Stack实践之Elasticsearch(一)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏