在CentOS 7下安装ELK——Elasticsearch

1、单机安装


首先创建安装路径,并解压安装包到该路径下:

[root@myhost usr]# mkdir elasticsearch

[root@myhost elasticsearch]# tar -zxvf /soft/elasticsearch-5.0.0.tar.gz

由于elasticsearch不能从root用户启动,因此首先需要创建一个用户用于elasticsearch。

[root@myhost /]# groupadd elk

[root@myhost /]# useradd es -g elk -p elasticsearch

[root@myhost /]# passwd es

然后为该路径赋予可普通用户的读写权限:

[root@myhost usr]# chmod -R 777 elasticsearch/

修改config/elasticsearch.yml 用于配置绑定的主机地址和端口号,以便其他机器可以访问。

# ---------------------------------- Network -----------------------------------

network.host: 192.168.9.33

http.port: 9200

然后开放端口号9200:

# firewall-cmd --permanent --zone=public --add-port=9200/tcp

问题解决:


1、解决“max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]”错误

修改打开文件/etc/secuity/limits.conf并在文件末尾添加:

es hard nofile 65536

es soft nofile 65536

其中es是用户名。

2、解决“max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]”错误

需要修改系统内核参数,在“/etc/sysctl.conf”文件中追加如下内容:

vm.max_map_count=262144

然后执行如下命令使内核修改马上生效:

[root@myhost usr]# sysctl -p

vm.max_map_count=262144

然后切换到es用户下直接启动:

[es@myhost bin]$ ./elasticsearch

当出现如下内容,代表成功启动:

[2016-11-05T15:32:52,063][INFO ][o.e.n.Node              ] [] initializing ...

[2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [190.3gb], net total_space [191.7gb], spins? [unknown], types [rootfs]

[2016-11-05T15:32:52,165][INFO ][o.e.e.NodeEnvironment    ] [Ss79CYj] heap size [1.9gb], compressed ordinary object pointers [true]

[2016-11-05T15:32:52,167][INFO ][o.e.n.Node              ] [Ss79CYj] node name [Ss79CYj] derived from node ID; set [node.name] to override

[2016-11-05T15:32:52,169][INFO ][o.e.n.Node              ] [Ss79CYj] version[5.0.0], pid[18145], build[253032b/2016-10-26T04:37:51.531Z], OS[Linux/3.10.0-327.el7.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_102/25.102-b14]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [aggs-matrix-stats]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [ingest-common]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-expression]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-groovy]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-mustache]

[2016-11-05T15:32:53,560][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [lang-painless]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [percolator]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [reindex]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty3]

[2016-11-05T15:32:53,561][INFO ][o.e.p.PluginsService    ] [Ss79CYj] loaded module [transport-netty4]

[2016-11-05T15:32:53,562][INFO ][o.e.p.PluginsService    ] [Ss79CYj] no plugins loaded

[2016-11-05T15:32:55,810][INFO ][o.e.n.Node              ] [Ss79CYj] initialized

[2016-11-05T15:32:55,811][INFO ][o.e.n.Node              ] [Ss79CYj] starting ...

[2016-11-05T15:32:56,252][INFO ][o.e.t.TransportService  ] [Ss79CYj] publish_address {192.168.8.33:9300}, bound_addresses {192.168.8.33:9300}

[2016-11-05T15:32:56,258][INFO ][o.e.b.BootstrapCheck    ] [Ss79CYj] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks

[2016-11-05T15:32:59,549][INFO ][o.e.c.s.ClusterService  ] [Ss79CYj] new_master {Ss79CYj}{Ss79CYjUSveOkQMYseQn2Q}{rb_l_uyySHK0wNHoF7tYSw}{192.168.8.33}{192.168.8.33:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)

[2016-11-05T15:32:59,621][INFO ][o.e.h.HttpServer        ] [Ss79CYj] publish_address {192.168.8.33:9200}, bound_addresses {192.168.8.33:9200}

[2016-11-05T15:32:59,621][INFO ][o.e.n.Node              ] [Ss79CYj] started

[2016-11-05T15:32:59,658][INFO ][o.e.g.GatewayService    ] [Ss79CYj] recovered [0] indices into cluster_state

可以从浏览器中访问:http://hostname:9200/

特别说明:ES5.0版本还不支持plugin安装。

2、集群配置


通过如下配置,将可以实现最基本的集群功能,集群的性能提升还需要参考性能调优一节。

Elasticsearch组成集群时,需要的节点数应该是奇数。

首先需要开放每一台安装Elasticsearch节点的端口号9300:

# firewall-cmd --permanent --zone=public --add-port=9300/tcp

然后配置每一个终端节点的配置文件“/config/elasticsearch.yml”,如下所示

cluster.name: elkCluster

node.name: node-33

bootstrap.memory_lock: false

discovery.zen.ping.unicast.hosts: ["192.168.9.32", "192.168.9.33","192.168.9.34"]

discovery.zen.minimum_master_nodes: 1

参数说明:


1、cluster.name

当前es的集群名称,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

2、node.name

当前节点名称,默认会随机自动指定一个名称,可以修改此名称作为当前节点的名称

3、bootstrap.memory_lock

组建集群时,需要将锁定内存功能关闭。

此参数设置为true时,用于锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。

同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。

4、discovery.zen.ping.unicast.hosts

设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点格式为:

discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]

5、discovery.zen.minimum_master_nodes

设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1(推荐),对于大的集群来说,可以设置大一点的值(2-4),对于三五台节点的集群,必须设为1 。

3、性能调优


通过配置每一个终端节点的配置文件“/config/elasticsearch.yml”,可以实现ES环境的性能提升。

3.1、路径配置


1、path.data

path.data:/path/to/data

设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data:/path/to/data1,/path/to/data2

2、path.logs

path.logs:/path/to/logs

设置日志文件的存储路径,默认是es根目录下的logs文件夹

3、path.conf

path.conf: /path/to/conf

设置配置文件的存储路径,默认是es根目录下的config文件夹。

4、path.work

path.work: /path/to/work

设置临时文件的存储路径,默认是es根目录下的work文件夹。

5、path.plugins

path.plugins: /path/to/plugins

设置插件的存放路径,默认是es根目录下的plugins文件夹

3.2、节点配置


1、node.master

node.master: true

指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

2、node.data

node.data: true

指定该节点是否存储索引数据,默认为true。

3.3、分片配置


1、index.number_of_shards

index.number_of_shards: 5

设置默认索引分片个数,默认为5片。

2、index.number_of_replicas

index.number_of_replicas: 1

设置默认索引副本个数,默认为1个副本。

3.4、网络配置


1、network.bind_host

network.bind_host: 192.168.0.1

设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

2、network.publish_host

network.publish_host: 192.168.0.1

设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

3、network.host

network.host: 192.168.0.1

这个参数是用来同时设置bind_host和publish_host上面两个参数。

4、transport.tcp.port

transport.tcp.port: 9300

设置节点间交互的tcp端口,默认是9300。

5、transport.tcp.compress

transport.tcp.compress: true

设置是否压缩tcp传输时的数据,默认为false,不压缩。

6、http.port

http.port: 9200

设置对外服务的http端口,默认为9200。

7、http.max_content_length

http.max_content_length: 100mb

设置内容的最大容量,默认100mb

8、http.enabled

http.enabled: false

是否使用http协议对外提供服务,默认为true,开启。

3.5、网关配置


1、gateway.type

gateway.type: local

gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。

2、gateway.recover_after_nodes

gateway.recover_after_nodes: 1

设置集群中N个节点启动时进行数据恢复,默认为1。

3、gateway.recover_after_time

gateway.recover_after_time: 5m

设置初始化数据恢复进程的超时时间,默认是5分钟。

4、gateway.expected_nodes

gateway.expected_nodes: 2

设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

3.6、数据恢复配置


1、cluster.routing.allocation.node_initial_primaries_recoveries

cluster.routing.allocation.node_initial_primaries_recoveries: 4

初始化数据恢复时,并发恢复线程的个数,默认为4。

2、cluster.routing.allocation.node_concurrent_recoveries

cluster.routing.allocation.node_concurrent_recoveries: 2

添加删除节点或负载均衡时并发恢复线程的个数,默认为4。

3、indices.recovery.max_size_per_sec

indices.recovery.max_size_per_sec: 0

设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

4、indices.recovery.concurrent_streams

indices.recovery.concurrent_streams: 5

设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。

3.7、节点发现配置


1、discovery.zen.ping.timeout

discovery.zen.ping.timeout: 3s

设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

2、discovery.zen.ping.multicast.enabled

discovery.zen.ping.multicast.enabled: false

设置是否打开多播发现节点,默认是true。

3.8、慢查询配置


下面是一些查询时的慢日志参数设置:

index.search.slowlog.level: TRACE

index.search.slowlog.threshold.query.warn: 10s

index.search.slowlog.threshold.query.info: 5s

index.search.slowlog.threshold.query.debug: 2s

index.search.slowlog.threshold.query.trace: 500ms

index.search.slowlog.threshold.fetch.warn: 1s

index.search.slowlog.threshold.fetch.info: 800ms

index.search.slowlog.threshold.fetch.debug:500ms

index.search.slowlog.threshold.fetch.trace: 200ms

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容