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://www.wave.md/linux/java/jdk8/jdk-8u131-linux-x64.rpm
wget https://www.wave.md/linux/java/jdk8/jdk-8u131-linux-x64.rpm.md5
小贴士:本文使用自建 FTP 服务器,若对安全性有异议请到官网存档处下载。下载后请对文件进行校验,防止传输过程等可能产生的损坏对后续步骤造成影响。
## 使用命令进行校验,返回 OK 即为一切正常
md5sum -c jdk-8u131-linux-x64.rpm.md5
安装 Oracle JDK
sudo 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 文件
sudo 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
安装
sudo yum makecache
sudo yum install elasticsearch
配置服务
配置服务自启动
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
补充:因服务器在国外,因此下载速度很慢,可以使用以下命令下载 RPM 包然后离线安装。
sudo yum install --downloadonly --downloaddir=/tmp elasticsearch
在启动服务前需要配置 JVM 堆栈的内存值
sudo vim /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
启动服务
sudo 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 container run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head
- 以 NodeJS 方式部署
sudo yum install nodejs npm openssl screen -y
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
cd /opt/
sudo git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
sudo cnpm install
screen -S es-head
sudo cnpm run start
小贴士:使用此方式部署在前台会输出信息,因此使用 screen 挂起,使用快捷键 Ctrl + A + D 即可挂起当前会话。
修改 Elasticsearch 的配置文件加入以下两行,以支持跨域。
http.cors.enabled: true
http.cors.allow-origin: "*"
检查端口 9100
sudo ss -lntu | grep 9100
网页访问 10.0.0.41:9100
即可看到以下界面:
Kibana
Kibana 安装
Kibana 的安装包在步骤1的源中已经包含,直接安装即可。
sudo 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"
启动服务
sudo systemctl start kibana
检查服务
sudo lsof -i:5601
Logstash
安装与部署
导入公钥
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加仓库
sudo 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
从仓库安装
sudo yum install logstash
附录
参考连接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-12-06 16:20 PM