ELK 并不是一个组件的名称而是三个开源软件的缩写,分别是:ElasticSearch、Logstash、Kibana 。在 5.X 版本后 ELK 平台改名为 Elastic Stack 。
Elastic Stack 官网 内对其描述为 Elastic Stack 让您能够安全可靠地获取任何来源、任何格式的数据,并且能够实时地对数据进行搜索、分析和可视化。
简而言之就是日志数据收集、分析及可视化工具。
集群概念及组件作用
目前常用组件为 Elasticsearsh Kibana Logstash Beats 四大组件。
Kibana
实现数据可视化。
预览 Elastic Stack。Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack。
Elasticsearch
搜索、分析和存储您的数据。
Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可靠性和管理便捷性而设计
Logstash Beats
采集任何来源、任何格式的数据。
Beats 是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据。
Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用。
安装与部署
本文以三台机器为例搭建集群环境
节点号 | IP | 主机名 |
---|---|---|
NODE01 | 10.0.0.41 | elk01 |
NODE02 | 10.0.0.42 | elk02 |
NODE03 | 10.0.0.43 | elk03 |
Elasticsearsh
Elastic Stack 的基础组件 Elasticsearsh 需要至少 Java 8 版本,官方推荐至少使用 Oracle JDK 1.8.0_131 版本进行部署。
关于 Java JDK 的部署,文本因篇幅有限不再赘述。详情查看 Oracle 官方文档 。
为简化步骤,本文提供简易的安装教程(以 Oracle JDK 1.8.0_131 版本为例)
下载 Oracle JDK
# wget https://open.wave.red/linux/java/jdk-8u131-linux-x64.rpm
# wget https://open.wave.red/linux/java/jdk-8u131-linux-x64.rpm.md5
小贴士:本文使用自建 FTP 服务器,若对安全性有异议请到官网存档处下载。下载后请对文件进行校验,防止传输过程等可能产生的损坏对后续步骤造成影响。
# md5sum jdk-8u131-linux-x64.rpm
9024d13ec651d07de450d465f14065a6 jdk-8u131-linux-x64.rpm
# cat jdk-8u131-linux-x64.rpm.md5
9024d13ec651d07de450d465f14065a6
安装 Oracle JDK
# rpm -ivh jdk-8u131-linux-x64.rpm
小贴士:若已经安装了 Java 环境,比如 OpenJDK ,请先卸载掉后执行安装。
版本检查
# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
配置仓库及安装
创建仓库 repo 文件
# 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 makecache
# yum install elasticsearch
配置服务
配置服务自启动
# sudo systemctl daemon-reload
# sudo systemctl enable elasticsearch
补充:因服务器在国外,因此下载速度很慢,可以使用以下命令下载 RPM 包然后离线安装。
# yum install --downloadonly --downloaddir=/tmp elasticsearch
在启动服务前需要配置 JVM 堆栈的内存值
# vi /etc/elasticsearch/jvm.options
可以看到以下注释和参数
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
小贴士:经验法则是一开始使用服务器总内存的一半来配置这两个值,这样剩下的一半内存可以被操作系统用于缓存。以后可以通过监控Elasticsearch的heap使用情况以及根据I/O吞吐量的需求再调整这两个值。
修改配置文件
# grep -E '^[a-Z]' /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-cluster
node.name: ${HOSTNAME}
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.41", "10.0.0.42", "10.0.0.43"]
discovery.zen.minimum_master_nodes: 2
启动服务
# systemctl start elasticsearch
检查服务
Elasticsearsh 服务会占用两个端口 TCP/9200 与 TCP/9300 ,分别为 HTTP 交互端口 及服务间通信端口。
# curl -X GET http://localhost:9200
内存锁定开启后无法启动
当你使用 RPM 或者 DEB 包管理安装的时候,默认会使用 systemd ,内存限制会被 systemd 接管,因此开启内存锁定后需要修改启动配置文件。
systemd 服务文件默认存放于 /usr/lib/systemd/system/elasticsearch.service
包含了默认的内存限制配置。
去覆盖默认配置可以新建一个文件,命名为 /etc/systemd/system/elasticsearch.service.d/override.conf
,写入以下内容。
[Service]
LimitMEMLOCK=infinity
修改完后重新加载服务单元
# sudo systemctl daemon-reload
elasticsearsh-head 部署
这是一款类监控插件,可以从网页端查看集群状态。
官方地址:点击跳转
- 以 Docker 方式部署
# docker pull alivv/elasticsearch-head
# docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head
- 以 NodeJS 方式部署
# yum install nodejs npm openssl screen -y
# npm install -g cnpm --registry=https://registry.npm.taobao.org
# cd /opt/
# git clone git://github.com/mobz/elasticsearch-head.git
# cd elasticsearch-head/
# cnpm install
# screen -S es-head
# cnpm run start
小贴士:使用此方式部署在前台会输出信息,因此使用 screen 挂起,使用快捷键 Ctrl + A + D 即可挂起当前会话。
修改 Elasticsearch 的配置文件加入以下两行,以支持跨域。
http.cors.enabled: true
http.cors.allow-origin: "*"
检查端口 9100
# ss -lntp | grep 9100
LISTEN 0 128 *:9100 *:* users:(("grunt",pid=7023,fd=12))
网页访问 10.0.0.41:9100 即可看到以下界面
Kibana
Kibana 安装
Kibana 的安装包在步骤1的源中已经包含,直接安装即可。
# yum install kibana
修改配置文件
# grep "^[a-Z]" /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
elasticsearch.preserveHost: true
kibana.index: ".kibana"
启动服务
# systemctl start kibana
检查服务
# lsof -i:5601
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 2499 kibana 10u IPv4 22587 0t0 TCP *:esmagent (LISTEN)
Logstash
安装与部署
导入公钥
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加仓库
# vim /etc/yum.repos.d/logstash-7.x.repo
写入以下内容
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
从仓库安装
# yum install logstash
附录
参考连接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2018-11-25 15:44 PM