centos7 安装ELK(标准安装+安全配置):1. 标准安装
2019-04-06 本文已影响5人
云中漫步2125
本文详细记录实际安装ELK的全过程,尽量让一个从没有用过的ELK的朋友无需查找其他资料即可完成ELK的安装
说在前面
首先,简单介绍一下我对ELK的理解,破除初次接触ELK的朋友的迷惑,也算是对自己的了解ELK的梳理。
ELK是,elasticsearch(直译:弹性搜索)+ Logstash + Kibana,是Elastic公司(股票代码:NYSE : ESTC)的全文搜索产品组合。注意,这家公司是做搜索的,做搜索工具的,所以不要以为ELK就是个日志分析工具,搜索才是核心,日志只是搜索的原材料。
贴一个ELK中文官网的产品图(注意他摆放各产品的顺序和连线)

简单说明一下,从下向上,
- Beats/Logstash负责采集数据,两者可以并行也可以串行
- Elasticsearch,负责搜索和分析,数据的归纳
- Kibana,负责数据的呈现,提供即开即用的数据报表,权限管理等控制功能
所以,ELK中Elasticsearch才是核心,他提供了基于文档数据库的超快全文搜索能力。
因此,我希望你带着一个问题去思考:
如果我们的系统可以直接吐出JSON文档数据,是不是可以交给elasticsearch直接处理?
我的理解和实际测试
完全可以。
但性能是否OK? 需要测试。
废话少说,开始安装部署
项目的架构(感谢 draw.io)

说明
背景:我们有个应用程序,需要对其产生的业务数据(各种日志:访问日志、运行日志、成交日志、行为分析日志....)进行分析整理,形成报告、图表,最终集成到管理系统中
架构说明:
- 没有使用Logstash和Beats,因为我们的应用程序可以直接生成JSON日志,直接吐给Elasticsearch。
- Elasticsearch采用三节点部署,1master+2slave。
- 部署1台kibana,用于免编程出报告图表
开始安装
ELK的4台服务器我都使用VMware虚拟机,所以我们先装1台VMware,然后clone3台。
centOS7 mini
请在这里下载,感谢伟大的centOS团队
官方国内镜像列表,请根据你的需要随意选择
安装centOS7虚拟机过程略过,请自行百度
4台虚拟机的配置
master-node | data-node1 | data-node2 | kibana | |
---|---|---|---|---|
cpu | 1 | 1 | 1 | 1 |
内存 | 724M | 724M | 724M | 724M |
硬盘 | 20GB | 20GB | 20GB | 20GB |
ip | 192.168.43.200 | 192.168.43.201 | 192.168.43.202 | 192.168.43.204 |
host | master-node | node1 | node2 | kibana |
elk-port | 9200 | 9200 | 9200 | 5601 |
cluster | master-node | -- | -- | -- |
node.master | true | false | false | -- |
node.data | false | true | true | -- |
从CPU、内存看,是非常简陋的配置吧。我在一台i5+8G内存的windows10上成功跑起来了ELK,相信大家都能有足够的资源跑起这个测试环境。另一方面也说明ELK确实足够弹性,没有想象中的那么臃肿。
安装ELK
- 下载elasticsearch和kibana
e: https://www.elastic.co/cn/downloads/elasticsearch
k: https://www.elastic.co/cn/downloads/kibana
所有产品: https://www.elastic.co/cn/downloads/
# 下面的命令默认都是用root用户,除非明确使用su elk等切换用户命令,请特别注意
useradd elk
cd /usr/local/src
mkdir ELK
chown elk:elk ELK -R
cd ELK
yum install -y wget
su elk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.1.tar.gz
tar -xvf elasticsearch-6.7.1.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.1-linux-x86_64.tar.gz
tar -xvf kibana-6.7.1-linux-x86_64.tar.gz
- ELK 的运行环境是java,所以开始前需要安装centOS java环境
yum install -y java
# 验证java版本
java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
- 修改elasticsearch参数,保证小内存可以跑起来
# 修改elasticsearch和kibana的jvm内存占用
cd /usr/local/src/ELK/elasticsearch-6.7.1
vi config/jvm.options
# 修改时注意xms和xmx要保持一致,且不要超过物理内存的50%,所以我们指定为256M
# 具体为什么可参考官方说明 https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
-Xms256m
-Xmx256m
- 修改hosts,保证ELK节点间可互访问
vi /etc/hosts
192.168.43.200 master-node
192.168.43.201 data-node1
192.168.43.202 data-node2
192.168.43.204 kibana
- 修改单个虚拟机的最大线程数限制
# 在其他资源可用的前提下,单个JVM能开启的最大线程数是/proc/sys/vm/max_map_count的设置数的一半
# 如果要达到单个JVM开启100w以上的线程数,需要配置vm.max_map_count=2048000或者以上
vm.max_map_count=262144
- 修改elk用户的最大系统资源限制
vi /etc/security/limits.d/elk-limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
环境变量配置就这么多了
- 配置elasticsearch和kibana的参数
elasticsearch
vi /usr/local/src/ELK/elasticsearch-6.7.0/config/elasticsearch.yml
# 只列出需要修改的地方,没有自己在文件尾部添加
cluster.name: my-elastic
node.name: master
node.master: true
node.data: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.43.200", "192.168.43.201", "192.168.43.202"]
- 启动elasticsearch测试配置是否OK
cd /usr/local/src/ELK/elasticsearch-6.7.0/
# elasticsearch不允许使用root账号启动,切换到elk用户
su elk
./bin/elasticsearch
# 看到下面的信息,代表启动成功
[2019-04-06T16:39:57,981][INFO ][o.e.n.Node ] [master] started
- 关闭elasticsearch
ctrl+c ctrl+c
# 退出elk用户,回到root
exit
# 关机
shutdown
- clone 3台虚拟机,任意clone模式都可以
- 启动第二台虚拟机,修改node1的参数配置
# 修改IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.43.201
# 重启网卡
systemctl restart network
# 修改elasticsearch.yml
vi /usr/local/src/ELK/elasticsearch-6.7.0/config/elasticsearch.yml
# 只列出需要修改的地方,没有自己在文件尾部添加
node.name: data-node1
node.master: false
node.data: true
- 启动第三台虚拟机,修改node2的参数配置
# 修改IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.43.202
# 重启网卡
systemctl restart network
# 修改elasticsearch.yml
vi /usr/local/src/ELK/elasticsearch-6.7.0/config/elasticsearch.yml
# 只列出需要修改的地方,没有自己在文件尾部添加
node.name: data-node2
node.master: false
node.data: true
- 启动第三台虚拟机,修改kibana的配置
# 修改IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.43.204
# 重启网卡
systemctl restart network
# 修改kibana.yml
vi /usr/local/src/ELK/kibana-6.7.0-linux-x86_64/config/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.43.200:9200"]
i18n.locale: "zh-CN" # 启动kibana的中文界面
- 安装screen,让ELK可在后台运行,不会因为断掉终端停止服务
yum install -y screen
screen 的用法
# 用screen 运行程序
screen [要执行的命令]
screen ./bin/elasticsearch
# 回到原控制台
ctrl+a d
[detached from 121011.pts-2.master-node]
# 查看后台的screen启动的进程
screen -ls
There is a screen on:
121011.pts-2.master-node (Detached)
1 Socket in /var/run/screen/S-elk.
# 切换到正在运行的screen进程
screen -r pid
screen -r 121011
- 启动ELK
启动顺序:master > node1 > node2 > kibana
# 在192.168.43.200
cd /usr/local/src/ELK
chown elk:elk -R elasticsearch-6.7.0
cd elasticsearch-6.7.0
su elk
screen ./bin/elasticsearch
# 等 master节点启动成功后,再开始后面的操作
# 在 192.168.43.201
cd /usr/local/src/ELK
chown elk:elk -R elasticsearch-6.7.0
cd elasticsearch-6.7.0
su elk
screen ./bin/elasticsearch
# 在 192.168.43.202
cd /usr/local/src/ELK
chown elk:elk -R elasticsearch-6.7.0
cd elasticsearch-6.7.0
su elk
screen ./bin/elasticsearch
# 在 192.168.43.204
cd /usr/local/src/ELK
chown elk:elk -R kibana-6.7.0-linux-x86_64
cd kibana-6.7.0-linux-x86_64
screen ./bin/kibana
-
用elasticsearch header查看elasticsearch集群状态
elastisearch head chrome插件
安装要科学上网,大家自行研究
header的界面如下
header界面
-
用kibana访问elasticsearch
http://192.168.43.204:5601
kibana界面
安装过程到此结束了,如何使用ELK?建议查看官方教程。
进阶操作:ELK安全配置