1. 安装 ElasticSearch8.X
1.1 安装流程
# 创建用户,设置密码
useradd es_user
passwd es_user
# 创建文件夹
mkdir -p /usr/local/software
# 下载安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.1-linux-x86_64.tar.gz
# 移动
mv elasticsearch-8.4.1-linux-x86_64.tar.gz /usr/local/software
# 解压
tar -zxvf elasticsearch-8.4.1-linux-x86_64.tar.gz
# 重命名
mv elasticsearch-8.4.1/ elasticsearch
# 更改目录权限
chgrp -R es_user /usr/local/software/elasticsearch
chown -R es_user /usr/local/software/elasticsearch
chmod -R 777 /usr/local/software/elasticsearch
# 修改文件和进程最大打开数(追加如下内容到limits.conf,不要忽略*)
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# 修改虚拟内存空间 (追加如下内容到最后一行,修改完执行 sysctl -p 立即生效)
vim /etc/sysctl.conf
vm.max_map_count=262144
# 内存不够,可调整jvm参数
vim /usr/local/software/elasticsearch/config/jvm.options
-Xms512m
-Xmx512m
# 备份elasticsearch.yml
mv elasticsearch.yml elasticsearch.yml.default
# 修改配置文件
vim /usr/local/software/elasticsearch/config/jvm.options/elasticsearch.yml
cluster.name: my-application
node.name: node-1
path.data: /usr/local/software/elasticsearch/data
path.logs: /usr/local/software/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false
# 切换到es_user,启动
/usr/local/software/elasticsearch/bin/elasticsearch &
1.2 配置文件配置项说明
cluster.name: 指定Elasticsearch集群的名称。所有具有相同集群名称的节点将组成一个集群。
node.name: 指定节点的名称。每个节点在集群中应该具有唯一的名称。
path.data: 指定用于存储Elasticsearch索引数据的路径。
path.logs: 指定Elasticsearch日志文件的存储路径。
network.host: 指定节点监听的网络接口地址。0.0.0.0表示监听所有可用的网络接口,开启远程访问连接
http.port: 指定节点上的HTTP服务监听的端口号。默认情况下,Elasticsearch的HTTP端口是9200。
cluster.initial_master_nodes: 指定在启动集群时作为初始主节点的节点名称。
xpack.security.enabled: 指定是否启用Elasticsearch的安全特性。在这里它被禁用(false),意味着不使用安全功能。
xpack.security.enrollment.enabled: 指定是否启用Elasticsearch的安全认证和密钥管理特性。在这里它被禁用(false)。
ingest.geoip.downloader.enabled: 指定是否启用GeoIP数据库下载功能。在这里它被禁用(false)
1.3 常见问题
- 磁盘空间需要85%以下,不然ES状态会不正常
- 不要用root用户安装
- linux内存不够
- linux文件句柄
- 没开启远程访问 或者 网络安全组没看开放端口
- 有9300 tcp端口,和http 9200端口,要区分
- 没权限访问,重新执行目录权限分配
1.4 常见api接口
# 查看集群健康情况
http://IP:9200/_cluster/health
# 查看分片情况
http://IP:9200/_cat/shards?v=true&pretty
# 查看节点分布情况
http://IP:9200/_cat/nodes?v=true&pretty
# 查看索引列表
http://IP:9200/_cat/indices?v=true&pretty
2. 安装 Kibana
# 创建用户,设置密码(kibana也不能以root用户运行程序)
useradd es_user
passwd es_user
# 创建文件夹
mkdir -p /usr/local/software
# 下载kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.4.1-linux-x86_64.tar.gz
# 移动
mv kibana-8.4.1-linux-x86_64.tar.gz /usr/local/software
# 解压
tar -zxvf kibana-8.4.1-linux-x86_64.tar.gz
# 重命名
mv kibana-8.4.1 kibana
# 更改目录权限
chgrp -R es_user /usr/local/software/kibana
chown -R es_user /usr/local/software/kibana
chmod -R 777 /usr/local/software/kibana
# 备份kibana.yml
mv kibana.yml kibana.yml.default
# 更改配置文件
vim /usr/local/software/kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.19.146.151:9200"]
i18n.locale: "zh-CN" #汉化
# 切换es_user,启动
/usr/local/software/kibana/bin/kibana &


3. 安装 LogStash
# 创建文件夹
mkdir -p /usr/local/software
# 下载logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.4.1-linux-x86_64.tar.gz
# 移动
mv logstash-8.4.1-linux-x86_64.tar.gz /usr/local/software
# 解压
tar -zxvf logstash-8.4.1-linux-x86_64.tar.gz
# 重命名
mv logstash-8.4.1 logstash
# 如果内存不够,可以调整jvm参数
vim /usr/local/software/logstash/config/jvm.options
-Xms512m
-Xmx512m
# 创建配置文件logstash.conf,内容如下
vim /usr/local/software/logstash/config/logstash.conf
input {
file {
path => "/usr/local/software/nginx/logs/access.log"
start_position => "beginning"
stat_interval => "3"
type => "nginx-access-log"
}
}
output {
if [type] == "nginx-access-log" {
elasticsearch {
hosts => ["http://172.19.146.151:9200"]
index => "nginx-access-log-%{+YYYY.MM.dd}"
}
}
}
# 启动
/usr/local/software/logstash/bin/logstash -f /usr/local/software/logstash/config/logstash.conf &
3.1 logstash.conf 配置说明
- input:指定Logstash接收数据的输入插件,使用file插件作为输入。file插件用于读取并处理文件中的数据。
- file:指定使用的输入插件是file插件。
- path:指定要读取的文件路径,Logstash会读取位于"/usr/local/software/nginx/logs/access.log"路径下的文件。
- start_position:指定从文件的哪个位置开始读取数据。设置为"beginning"表示从文件的开始位置开始读取数据。
- stat_interval:指定文件的状态检查间隔(以秒为单位)。设置为"3"表示每隔3秒检查一次文件状态,以判断是否有新数据。
- type:指定数据的类型名称。设置为"nginx-access-log"表示数据的类型是Nginx访问日志。
- output:指定Logstash处理完数据后的输出插件。使用elasticsearch插件将处理后的日志数据发送到Elasticsearch。
- elasticsearch:指定使用的输出插件是elasticsearch插件。
- hosts:指定Elasticsearch集群的主机地址
- index:指定数据在Elasticsearch中的索引名称,比如【filebeat-8.4.1-2025.01.08 】使用[@metadata][beat]字段、[@metadata][version]字段和当前日期来构建索引名称 可以根据采集数据的来源和版本动态创建索引。
3.2 测试是否成功
设置 → Management → Stack Management → 索引管理


4. 安装 Filebeat
4.1 Beats
- 是轻量级的数据收集器,用于收集和发送各种类型的数据到Elasticsearch或Logstash
- Beats提供了多种插件和模块,用于收集和传输日志、指标数据、网络数据和安全数据等
- Beats种类:Filebeat、Metricbeat、Packetbeat、Heartbeat
4.2 Beats存在的原因
- 这主要的原因是因为 Logstash 有丰富的 filter 供我们使用,可以帮加工数据,并最终把数据转为对应要求的格式
- Beats 在 ELK 中是一个非常轻量级的应用,是用 go 语言写的,它不需要有很强大的运行环境来运行,通常运行于客户端中
- 总结
- beats是用来优化logstash的,因为logstash消耗的性能比较多
- 如果只是单纯的为了收集日志,使用logstash就有点大材小用了,另外有点浪费资源
- 而beats是轻量级的用来收集日志的, 而logstash更加专注一件事,那就是数据转换,格式化,等处理工作
4.3 数据采集链路
- Logstash采集 → Elasticsearch → Kibana
- Beats采集(Filebeat/Metricbeat)→ Elasticsearch → Kibana
- Beats采集(Filebeat/Metricbeat)→ Logstash → Elasticsearch → Kibana
4.4 安装步骤
# 创建文件夹
mkdir -p /usr/local/software/filebeat
# 下载filebeat-8.4.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.4.1-linux-x86_64.tar.gz -P /usr/local/software/filebeat
# 备份默认配置
mv filebeat.yml filebeat.yml.default
# 编辑filebeat.yml
vim /usr/local/software/filebeat/filebeat/filebeat.yml
filebeat.inputs:
- type: log
paths: ["/usr/local/software/nginx/logs/access.log"]
encoding: UTF-8
fields:
service: nginx-access-log
output.logstash:
hosts: ["172.19.240.111:5044"]
# 编辑 filebeat-logstash.conf
vim /usr/local/software/logstash/config/filebeat-logstash.conf
input {
beats {
port => 5044
}
}
output {
if [fields][service] == "nginx-access-log" {
elasticsearch {
hosts => ["http://172.19.146.151:9200"]
index => "beat-nginx-access-log-%{+YYYY.MM.dd}"
}
}
}
# 重新启动logstash
/usr/local/software/logstash/bin/logstash -f /usr/local/software/logstash/config/filebeat-logstash.conf &
# 启动filebeat
/usr/local/software/filebeat/filebeat/filebeat -e -c /usr/local/software/filebeat/filebeat/filebeat.yml &
4.5 filebeat.yml常见配置说明
- filebeat.inputs:指定Filebeat的输入配置,用于定义要监视的日志文件。
- type:指定日志文件的类型, 可以是log、file等。
- paths:指定要监视的日志文件的路径。可以是单个路径或多个路径的列表。
- fields:为每个输入配置添加自定义字段,用于标记和分类日志数据。
- fields_under_root:控制是否将fields字段中的自定义字段添加到根级别的事件中,以便在输出时可见。
- output.logstash:指定Filebeat的输出配置,将日志数据发送到Logstash。
- hosts:指定Logstash的地址和端口号,可以是单个地址或多个地址的列表。
- 此外,Filebeat配置文件还可以包含其他参数,用于定制Filebeat的行为和功能,如日志采集的过滤规则、证书设置、日志解析器等。
4.6 测试 Filebeat 是否成功

4.7 Discover 功能配置
4.7.1 创建数据视图


4.7.2 测试 Discover 功能
设置 → Analytics → Discover


4.8 Dashboard 功能
4.8.1 创建第一个Dashboard



4.8.2 通过样例"照猫画虎"




