ELK stackELK解决方案

centos7 安装ELK(标准安装+安全配置):1. 标准安装

2019-04-06  本文已影响5人  云中漫步2125

本文详细记录实际安装ELK的全过程,尽量让一个从没有用过的ELK的朋友无需查找其他资料即可完成ELK的安装

说在前面

首先,简单介绍一下我对ELK的理解,破除初次接触ELK的朋友的迷惑,也算是对自己的了解ELK的梳理。

ELK是,elasticsearch(直译:弹性搜索)+ Logstash + Kibana,是Elastic公司(股票代码:NYSE : ESTC)的全文搜索产品组合。注意,这家公司是做搜索的,做搜索工具的,所以不要以为ELK就是个日志分析工具,搜索才是核心,日志只是搜索的原材料。

贴一个ELK中文官网的产品图(注意他摆放各产品的顺序和连线)

BLEK

简单说明一下,从下向上,

  1. Beats/Logstash负责采集数据,两者可以并行也可以串行
  2. Elasticsearch,负责搜索和分析,数据的归纳
  3. Kibana,负责数据的呈现,提供即开即用的数据报表,权限管理等控制功能

所以,ELK中Elasticsearch才是核心,他提供了基于文档数据库的超快全文搜索能力。

因此,我希望你带着一个问题去思考:

如果我们的系统可以直接吐出JSON文档数据,是不是可以交给elasticsearch直接处理?
我的理解和实际测试

完全可以。
但性能是否OK? 需要测试。

废话少说,开始安装部署
项目的架构(感谢 draw.io)
项目架构
说明
背景:我们有个应用程序,需要对其产生的业务数据(各种日志:访问日志、运行日志、成交日志、行为分析日志....)进行分析整理,形成报告、图表,最终集成到管理系统中
架构说明:
  1. 没有使用Logstash和Beats,因为我们的应用程序可以直接生成JSON日志,直接吐给Elasticsearch。
  2. Elasticsearch采用三节点部署,1master+2slave。
  3. 部署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
  1. 下载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
  1. 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)
  1. 修改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
  1. 修改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
  1. 修改单个虚拟机的最大线程数限制
# 在其他资源可用的前提下,单个JVM能开启的最大线程数是/proc/sys/vm/max_map_count的设置数的一半
# 如果要达到单个JVM开启100w以上的线程数,需要配置vm.max_map_count=2048000或者以上
vm.max_map_count=262144
  1. 修改elk用户的最大系统资源限制
vi /etc/security/limits.d/elk-limits.conf

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

环境变量配置就这么多了

  1. 配置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"]
  1. 启动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
  1. 关闭elasticsearch
ctrl+c ctrl+c
# 退出elk用户,回到root
exit
# 关机
shutdown 
  1. clone 3台虚拟机,任意clone模式都可以
  2. 启动第二台虚拟机,修改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
  1. 启动第三台虚拟机,修改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
  1. 启动第三台虚拟机,修改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的中文界面
  1. 安装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
  1. 启动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
  1. 用elasticsearch header查看elasticsearch集群状态


    elastisearch head chrome插件

    安装要科学上网,大家自行研究
    header的界面如下


    header界面
  2. 用kibana访问elasticsearch
    http://192.168.43.204:5601

    kibana界面
安装过程到此结束了,如何使用ELK?建议查看官方教程。

进阶操作:ELK安全配置

上一篇 下一篇

猜你喜欢

热点阅读