实时日志分析之五:Elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器。
一个分布式的实时文档存储,每个字段 可以被索引与搜索,一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
中文文档:https://kibana.logstash.es/content/elasticsearch/

环境

  • 系统:centos7
  • ip:192.168.2.234
  • ip:192.168.2.235
  • ip:192.168.2.236

准备

优化linux内核参数
参考文章 实时日志分析之二:Openresty 其中的“优化linux内核参数”部分
备注:
sudo vim /etc/security/limits.conf 加入内容的时候,多加入下面的内容:

1
2
3
# elasticsearch memlock setting
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

安装JDK
参考文章 实时日志分析之三:Kafka 其中的“安装JDK”部分

设置host
在服务器192.168.2.234上运行

1
sudo hostnamectl set-hostname elasticsearch01

在服务器192.168.2.235上运行

1
sudo hostnamectl set-hostname elasticsearch02

在服务器192.168.2.236上运行

1
sudo hostnamectl set-hostname elasticsearch03

在每台服务器上 sudo vi /etc/hosts 加入如下内容

1
2
3
192.168.2.234 elasticsearch01
192.168.2.235 elasticsearch02
192.168.2.236 elasticsearch03

关闭防火墙(可以选择使用iptables做相应规则)

1
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service

安装

1
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

sudo vim /etc/yum.repos.d/elasticsearch.repo 加入如下内容

1
2
3
4
5
6
7
8
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装

1
sudo yum install elasticsearch

设置elasticsearch开机启动

1
sudo systemctl enable elasticsearch

  • 安装文件说明:
    home: /usr/share/elasticsearch
    bin: /usr/share/elasticsearch/bin
    conf: /etc/elasticsearch (Configuration files including elasticsearch.yml )
    conf: /etc/sysconfig/elasticsearch (Environment variables including heap size, file descriptors )
    data: /var/lib/elasticsearch
    logs: /var/log/elasticsearch
    plugins: /usr/share/elasticsearch/plugins
    script: /etc/elasticsearch/scripts (Location of script files)

配置

在服务器192.168.2.234上 sudo vim /etc/elasticsearch/elasticsearch.yml 配置修改如下内容

1
2
3
4
5
6
cluster.name: elasticsearch
node.name: ${HOSTNAME}
bootstrap.memory_lock: true
network.host: 192.168.2.234
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elasticsearch01", "elasticsearch02", "elasticsearch03"]

在服务器192.168.2.235上 sudo vim /etc/elasticsearch/elasticsearch.yml 配置修改如下内容

1
2
3
4
5
6
cluster.name: elasticsearch
node.name: ${HOSTNAME}
bootstrap.memory_lock: true
network.host: 192.168.2.235
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elasticsearch01", "elasticsearch02", "elasticsearch03"]

在服务器192.168.2.236上 sudo vim /etc/elasticsearch/elasticsearch.yml 配置修改如下内容

1
2
3
4
5
6
cluster.name: elasticsearch
node.name: ${HOSTNAME}
bootstrap.memory_lock: true
network.host: 192.168.2.236
http.port: 9200
discovery.zen.ping.unicast.hosts: ["elasticsearch01", "elasticsearch02", "elasticsearch03"]

在每台服务器上 sudo vim /etc/elasticsearch/jvm.options 修改如下参数,来控制JVM heap size(一般设置为系统内存的一半)

1
2
-Xms2g
-Xmx2g

启动

sudo vim /usr/lib/systemd/system/elasticsearch.service
把”LimitMEMLOCK=infinity”注释去掉(为了elasticsearch Lock the memory on startup)

1
sudo systemctl daemon-reload

启动

1
sudo service elasticsearch start

elasticsearch提供http接口,可以很轻松操作
例如对上面的elasticsearch集群进行健康检查:

1
curl -XGET '192.168.2.234:9200/_cluster/health?pretty'

输出类似如下内容,特别关注status字段,为green的话则表示集群运行良好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"cluster_name" : "elasticsearch",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"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
}

接下来我们使用logstash消费kafka中的内容output到elasticsearch集群中去。

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章