ELK Stack 即 Elastic Stack,是 Elastic 公司开发的一系列开源项目的统称。“ELK” 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、 Logstash 和 Kibana。Elastic公司最早开发了分布式全文搜索引擎 Elasticsearch,随着社区发展和业务扩张,Elastic 公司推出了强大的采集管道 Logstash 和灵活的 可视化工具 Kibana。2015 年,该公司又推出了一系列轻量型的被称作 Beats 的单一功能数据采集器。至此,Elastic 公司的产品完成了 Elasticsearch到 ELK,再到 Elastic Stack 的华丽升级。

ELK

ELK Stack家族中被大家熟知的主要是 Elasticsearch(格式化存储与全文搜索)、Kibana(可视化)、Filebeat(分布式日志)、Metricbeat(系统和服务性能监控 )、APM(Application Performance Monitoring,应用程序性能监测、分布式调用链)等组件,以下基于ELK Stack版本7.8.0详细介绍安装方法。

1、Elasticsearch

下载 elasticsearch-7.8.0-linux-x86_64.tar.gz,
移动到目标路径,
解压:tar -zxvfelasticsearch-7.8.0-linux-x86_64.tar.gz
修改配置文件:config/elasticsearch.yml
以单机部署为例:
根据实际情况设置 node.namepath.datapath.logsnetwork.hosthttp.port 等配置
discovery.seed_hosts 设置为 ["127.0.0.1"]
cluster.initial_master_nodes 设置为 node.name

在末尾添加以下两行配置以开启 x-pack 的安全功能:

xpack.security.enabled: true  
xpack.security.transport.ssl.enabled: true   

使用非root用户启动 Elasticsearch:

./bin/elasticsearch   

若报错:
(1)max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536],则修改 /etc/security/limits.conf 文件,在末尾添加两行:
*softnofile 65536 *hardnofile 65536

或修改 /etc/profile 文件,在末尾添加:
ulimit-SHn 65536

(2)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],
则修改 /etc/sysctl.conf 文件在末尾添加一行:
vm.max_map_count=262144

执行以下命令立即生效

/sbin/sysctl -p 

执行 ./bin/elasticsearch 正确启动后,Elasticsearch 保持在终端运行。执行 ./bin/elasticsearch -d 以在后台运行。
此时执行 curl 命令,Elasticsearch 可正确返回消息:

curl 127.0.0.1:9200  

Elasticsearch 启动后,执行以下命令为Elasticsearch的默认账号设置密码

./bin/elasticsearch-setup-passwords interactive   

此时执行curl命令,并输入密码后Elasticsearch可正确返回消息:

curl --user elastic 127.0.0.1:9200

2、Kibana

下载 kibana-7.8.0-linux-x86_64.tar.gz,
移动到目标路径,
解压:

tar -zxvfkibana-7.8.0-linux-x86_64.tar.gz   

修改配置文件:config/kibana.yml,
根据实际情况设置 server.portserver.hostserver.nameelasticsearch.hostselasticsearch.usernameelasticsearch.passwordi18n.locale 等配置

启动 kibana:

nohup ./bin/kibana > /dev/null 2>&1 & kibana

正常启动后查询端口可看到端口占用信息:

netstat -ntlp | grep 5601 

3、Filebeat

可参考Kibana页面上的操作指南执行。
安装完毕后,修改配置文件 filebeat/filebeat.yml 内的 Elasticsearch、Kibana 的地址和账号密码(如有);
开启默认监控模块或自定义监控文件;
参考配置文件内注释,根据实际需求修改其他信息。

4、Metricbeat

可参考Kibana页面上的操作指南执行。
安装完毕后,修改配置文件 metricbeat/metricbeat.yml 内的 Elasticsearch、Kibana 的地址和账号密码(如有);
开启默认监控模块或自定义监控模块;

以监控系统性能为例,执行命令:

metricbeat modules enable system   
sudo metricbeat setup   
sudo service metricbeat start   

5、APM

可参考Kibana页面上的操作指南执行,APM 包含 APM Server 和 javaagent 两部分。
(1)APM Server 安装完毕后,修改配置文件 apm-server.yml 内的 Elasticsearch 地址和账号密码(如有);
执行命令启动 APM Server:

  service apm-server start   

(2)javaagent 下载 APM Server 对应版本 javaagent 的 jar 包,在启动应用的命令(如 java -jarapplication.jar)中添加 -javaagent 等参数 ,举例如下:

java -javaagent:/path/to/elastic-apm-agent-.jar \ 
     -Delastic.apm.service_name=my-application \ 
     -Delastic.apm.server_urls=http://localhost:8200 \ 
     -Delastic.apm.secret_token= \ 
     -Delastic.apm.application_packages=org.example \ 
     -jar my-application.jar