视频加载失败

Elastic Stack部署使用

11346 字
57 分钟
Elastic Stack部署使用
Elastic Stack部署使用

一 、elk stack 简述#

ELK 早期是 Elasticsearch + Logstash + Kibana 三个组件的简称,现在官方统一命名为 Elastic Stack,增加了 Beats 系列采集组件,专门用来做日志收集、日志清洗、存储检索、可视化分析、告警,是运维最主流的日志解决方案。

1.1 核心三大件#

  1. Elasticsearch 分布式搜索引擎、存储引擎。 负责存储、索引、检索日志 / 数据,提供 RESTful API,底层基于 Lucene。
  2. Logstash 数据采集处理管道。 负责接收、过滤、转换、输出数据;支持丰富输入输出插件,对日志做清洗、格式化、字段提取。
  3. Kibana 可视化 Web 界面。 对接 Elasticsearch,做日志查询、图表、仪表盘、告警,Web 操作 ES。

1.2 常用配套组件(扩展)#

1.2.1 Beats#

轻量采集器,替代 Logstash 做客户端采集,部署在业务服务器上。

  • Filebeat:采集日志文件(最常用)
  • Metricbeat:采集系统 / 服务指标(CPU、内存、进程、数据库)
  • Packetbeat:网络流量抓包分析
  • Heartbeat:服务存活探测(uptime 监控)
  • Auditbeat:系统审计日志采集

典型架构:Filebeat → Logstash → Elasticsearch ← Kibana

经典数据流:业务机器(Filebeat) → Logstash(清洗) → Elasticsearch(存储索引) ← Kibana(查看)

很多生产环境:Filebeat 直接输出 ES,省略 Logstash,简化架构。

简单区分:Logstash:功能强、占资源,适合服务端集中处理;Beats:轻量,部署在业务机器上做采集

1.2.2 其他重要组件#

  • Elastic Agent:新一代统一代理,可以整合所有 Beats 功能,单 agent 采集日志 + 指标 + 安全数据。
  • APM Server:应用性能监控,收集链路追踪、应用指标、错误日志。
  • Elasticsearch Security:安全模块,权限、认证、加密。
  • Logstash Pipeline:管道处理,也支持持久队列防止丢数据。

二、elk stack组件安装#

2.1 Elasticsearch部署#

官网地址:https://www.elastic.co/docs/deploy-manage/deploy/self-managed/installing-elasticsearch

安装文档:https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-elasticsearch-from-archive-on-linux-macos

开源地址:https://github.com/elastic/elasticsearch

下载地址:https://www.elastic.co/cn/downloads/elasticsearch

查看版本支持的操作系统:https://www.elastic.co/support/matrix

2.1.1 下载二进制包并配置#

下载 Elasticsearch 二进制包,并指定解压到 /usr/local 目录下,并重命名为 elasticsearch :

Terminal window
cd /usr/local/src
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.5.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-9.5.2-linux-x86_64.tar.gz
mv elasticsearch-9.5.2 /usr/local/elasticsearch

配置环境变量:

Terminal window
cat > /etc/profile.d/elasticsearch.sh <<'EOF'
export ES_HOME=/usr/local/elasticsearch
export PATH=$PATH:$ES_HOME/bin
EOF
source /etc/profile

验证版本:

Terminal window
[root@localhost /root]# elasticsearch -V
warning: ignoring JAVA_HOME=/usr/local/java/jdk; using bundled JDK
Version: 9.5.2, Build: tar/b42549c72e6e040825b13e5d8ebf7ff63886b24d/2026-08-18T10:07:58.745010960Z, JVM: 26.0.2

2.1.2 ES环境配置#

  1. 调整系统底层参数:
Terminal window
# 调整虚拟内存(vm.max_map_count)
sysctl -w vm.max_map_count=655360
# 写入配置文件使其永久生效
echo "vm.max_map_count=655360" >> /etc/sysctl.conf
# 重新加载
sysctl -p
# 验证配置
sysctl vm.max_map_count
  1. 调整文件描述符限制:编辑 /etc/security/limits.conf,添加以下配置:

    修改elk用户的文件描述符限制

Terminal window
cat >> /etc/security/limits.conf << 'EOF'
elk soft nofile 65535
elk hard nofile 65535
EOF
  1. 创建专用用户并赋权:

    Elasticsearch 禁止使用 root 用户启动。需要创建专用用户并赋予安装目录权限:

Terminal window
# 创建 elk 用户组
groupadd -r elk
# 创建 elk 用户,指定主组为 elk,并限制登录和家目录
useradd -r -g elk -s /sbin/nologin -M elk
# 赋予目录权限
chown -R elk:elk /usr/local/elasticsearch
  1. 创建数据目录并赋权:

    在/usr/local/elk/data/es目录中创建两个目录分别为data和logs,分别存放数据和日志:

Terminal window
mkdir -p /usr/local/elk/data/es/{data,logs}

赋予 elk 用户和 elk 组所有权:

Terminal window
chown -R elk:elk /usr/local/elk

2.1.3 ES配置文件修改#

elasticsearch.yml 是 Elasticsearch 主要的配置文件,包含了很多参数信息。在 /usr/local/elasticsearch/config 目录下,编辑 elasticsearch.yml文件,配置以下内容:

Terminal window
# 备份原配置文件
cp /usr/local/elasticsearch/config/elasticsearch.yml{,.bak}
# 指定集群名称:
sed -i '/#cluster.name/c cluster.name: es-cluster' /usr/local/elasticsearch/config/elasticsearch.yml
# 指定节点名称:node-1
sed -i '/#node.name/c node.name: node-1' /usr/local/elasticsearch/config/elasticsearch.yml
# 指定ES索引数据存储路径
sed -i '/#path.data/c path.data: /usr/local/elk/data/es/data' /usr/local/elasticsearch/config/elasticsearch.yml
# 指定日志文件存储路径
sed -i '/#path.logs/c path.logs: /usr/local/elk/data/es/logs' /usr/local/elasticsearch/config/elasticsearch.yml
# 设置锁定内存以防止交换
sed -i '/#bootstrap.memory_lock/c bootstrap.memory_lock: true' /usr/local/elasticsearch/config/elasticsearch.yml
# 设置ES监听所有网络接口的请求
sed -i '/#network.host/c network.host: 0.0.0.0' /usr/local/elasticsearch/config/elasticsearch.yml
# 指定Elasticsearch HTTP服务的端口。默认是9200
sed -i '/#http.port/c http.port: 9200' /usr/local/elasticsearch/config/elasticsearch.yml

**注意:**目前是单节点运行,因此需要进行以下配置:

Terminal window
# 在 cluster.name这一行的下方插入discovery.type: single-node
sed -i '/^cluster.name/a discovery.type: single-node' /usr/local/elasticsearch/config/elasticsearch.yml
# 注释初始主节点配置
sed -i 's/^cluster.initial_master_nodes/# cluster.initial_master_nodes: ["localhost"]/' /usr/local/elasticsearch/config/elasticsearch.yml

2.1.4 修改 JVM 内存配置#

Elasticsearch 的 JVM 配置文件 /usr/local/elasticsearch/jvm.options ,这个文件用于配置 Elasticsearch 运行时的 JVM(Java 虚拟机)选项,包括堆内存的初始大小( -Xms )和最大大小( -Xmx )。编辑 jvm.options 文件,修改以下内容:

Terminal window
# 指定 Elasticsearch 进程的初始堆内存大小
sed -i 's/## -Xms4g/-Xms2g/g' /usr/local/elasticsearch/config/jvm.options
# 指定 Elasticsearch 进程的最大堆内存大小
sed -i 's/## -Xmx4g/-Xmx2g/g' /usr/local/elasticsearch/config/jvm.options

2.1.5 配置启动服务并启动#

创建一个名为 elasticsearch.service 的 systemd 服务单元文件,用于管理 Elasticsearch 服务,存放于/usr/lib/systemd/system目录下:

Terminal window
cat > /usr/lib/systemd/system/elasticsearch.service <<'EOF'
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=elk
Group=elk
NotifyAccess=all
RuntimeDirectory=elasticsearch
PrivateTmp=true
Environment=ES_HOME=/usr/local/elasticsearch
Environment=ES_PATH_CONF=/usr/local/elasticsearch/config
Environment=ES_SD_NOTIFY=true
WorkingDirectory=/usr/local/elasticsearch
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -d -p pid
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65535
LimitNPROC=4096
LimitAS=infinity
LimitFSIZE=infinity
LimitMEMLOCK=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
TimeoutStartSec=900
[Install]
WantedBy=multi-user.target
EOF
Terminal window
# 重载配置
systemctl daemon-reload
# 启动服务
systemctl start elasticsearch.service

首次启动 Elasticsearch 节点时,它会自动执行以下安全设置:

  • 为传输层和 HTTP 层生成TLS 证书,对应 /usr/local/elasticsearch/config/certs 目录;
  • 将 TLS 配置设置应用于 elasticsearch.yml ,即结尾的内容;
  • 为elastic 超级用户设置密码。

2.1.6 设置 elastic 用户密码#

执行以下命令,为内置的 elastic 用户设置一个密码,这里设置为admin@123

Terminal window
[root@localhost /usr/local/elasticsearch]# elasticsearch-reset-password -u elastic -i
warning: ignoring JAVA_HOME=/usr/local/java/jdk; using bundled JDK
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.

内置用户:

用户名作用
elastic超级用户
kibana_system用于负责Kibana连接Elasticsearch
logstash_systemLogstash将监控信息存储在Elasticsearch中时使用
beats_systemBeats在Elasticsearch中存储监视信息时使用
apm_systemAPM服务器在Elasticsearch中存储监视信息时使用
remote_monitoring_userMetricbeat用户在Elasticsearch中收集和存储监视信息时使用

密码管理:

Terminal window
# 设置用户密码
elasticsearch-setup-passwords interactive
# 重置密码,随机生成
elasticsearch-reset-password -u elastic
# 重置密码,指定密码
elasticsearch-reset-password -u elastic -i
# 随机密码
elasticsearch-setup-passwords auto

2.1.7 访问ES#

浏览器访问 Elasticsearch 平台地址 https://<IP>:9200 ,在弹出的窗口中输入用户名为 elastic ,密码为之前设置的 admin@123 ,进行登录。登录成功后将出现以下内容:

Terminal window
{
"name" : "node-1",
"cluster_name" : "es-cluster",
"cluster_uuid" : "h8z6N-qAQD6PYN_kfsvCYg",
"version" : {
"number" : "9.5.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "b42549c72e6e040825b13e5d8ebf7ff63886b24d",
"build_date" : "2026-08-18T10:07:58.745010960Z",
"build_snapshot" : false,
"lucene_version" : "10.5.1",
"minimum_wire_compatibility_version" : "8.19.0",
"minimum_index_compatibility_version" : "8.0.0"
},
"tagline" : "You Know, for Search"
}

2.1.8 调用API查看ES#

Terminal window
# 查看内置用户
curl -sk -u elastic:admin@123 "https://localhost:9200/_security/user" | jq
# 只提取出所用的用户
curl -sk -u elastic:admin@123 "https://localhost:9200/_security/user" | jq -r 'keys[]'
# 集群状态
curl -k -u elastic:admin@123 https://localhost:9200/_cluster/health?pretty
# 节点状态
curl -k -u elastic:admin@123 https://localhost:9200/_nodes/process?pretty
# 分片状态
curl -k -u elastic:admin@123 https://localhost:9200/_cat/shards
# 索引分片存储信息
curl -k -u elastic:admin@123 https://localhost:9200/index/_shard_stores?pretty
# 索引状态
curl -k -u elastic:admin@123 https://localhost:9200/index/_stats?pretty
# 索引元数据
curl -k -u elastic:admin@123 https://localhost:9200/index?pretty
# 索引信息
curl -k -u elastic:admin@123 https://localhost:9200/_cat/indices?v
# 节点信息
curl -k -u elastic:admin@123 https://localhost:9200/_cat/nodes?v

2.2 Kibana部署#

官网地址:https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-kibana

安装文档:https://www.elastic.co/docs/deploy-manage/deploy/self-managed/install-kibana-from-archive-on-linux-macos

开源地址:https://github.com/elastic/kibana/

下载地址:https://www.elastic.co/cn/downloads/kibana

Kibana 是 Elastic Stack(ELK)的Web 可视化前端组件,基于 Node.js 开发,专门对接 Elasticsearch,提供浏览器操作 ES 的界面。

一、核心作用:

  1. 日志检索(Discover):查看、过滤、搜索 ES 里存储的日志,按时间、关键词、字段排查问题。
  2. 数据可视化:将 ES 数据做成折线图、饼图、表格等图表。
  3. 仪表盘 Dashboard:把多个图表组合成监控大屏,直观展示指标。
  4. 开发工具 Dev Tools:直接执行 ES 的 REST API,调试查询语句。
  5. 告警与报告:根据日志条件触发告警,生成报表。
  6. 权限管理(X‑Pack):用户、角色控制,限制不同人员访问不同索引。

二、注意点:

  • 本身不存储数据,所有数据都来自 Elasticsearch;
  • 需要和 ES 版本严格保持一致,版本不匹配会报错;
  • 常用端口:5601;
  • 可以配置索引模式,告诉 Kibana 读取 ES 哪些索引。

2.2.1 下载二进制包并配置环境#

下载 Kibana 二进制包,并指定解压到 /usr/local 目录下,并重命名为 kibana :

Terminal window
cd /usr/local/src/
wget https://artifacts.elastic.co/downloads/kibana/kibana-9.5.2-linux-x86_64.tar.gz
tar -xzf kibana-9.5.2-linux-x86_64.tar.gz
mv kibana-9.5.2 /usr/local/kibana
chown -R elk:elk /usr/local/kibana

创建数据目录,并给目录赋权

Terminal window
mkdir -p /usr/local/elk/data/kibana/{data,logs}
chown -R elk:elk /usr/local/elk/data/kibana

2.2.2 Kibana配置文件修改#

kibana.yml是 Kibana 主要的配置文件,包含了很多参数信息。在 /usr/local/kibana/config 目录下,编辑 kibana.yml 文件,配置以下内容:

Terminal window
# 备份原配置文件
cp /usr/local/kibana/config/kibana.yml{,.bak}
# 修改新配置文件
cat > /usr/local/kibana/config/kibana.yml <<EOF
# 监听端口
server.port: 5601
server.host: "0.0.0.0"
# 指定Kibana在生成URL时使用的基础URL
server.publicBaseUrl: "http://$(hostname -I | awk '{print $1}')"
# 指定Kibana数据存储路径
path.data: /usr/local/elk/data/kibana/data
# 配置Kibana的日志记录设置,指示将日志记录到指定的文件中
logging.appenders.default:
type: file
fileName: /usr/local/elk/data/kibana/logs/kibana.log
layout:
type: json
EOF

2.2.3 配置启动服务并启动#

创建一个名为 kibana.service 的 systemd 服务单元文件,用于管理 Kibana 服务,存放于/usr/lib/systemd/system目录下:

Terminal window
cat > /usr/lib/systemd/system/kibana.service <<'EOF'
[Unit]
Description=Kibana
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=elk
Group=elk
PrivateTmp=true
Environment=KBN_HOME=/usr/local/kibana
Environment=KBN_PATH_CONF=/usr/local/kibana/config
WorkingDirectory=/usr/local/kibana
ExecStart=/usr/local/kibana/bin/kibana
StandardOutput=journal
StandardError=inherit
Restart=on-failure
RestartSec=3
StartLimitBurst=3
StartLimitInterval=60
[Install]
WantedBy=multi-user.target
EOF
Terminal window
# 重载配置
systemctl daemon-reload
# 启动服务
systemctl start kibana.service

2.2.4 生成注册令牌并访问Kibana#

ES重新生成新的注册令牌

Terminal window
# -s参数即 --scope参数,用来指定生成的token用途。
elasticsearch-create-enrollment-token -s kibana
# 输出信息如下
eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTAuMjIuNTEuOTE6OTIwMCJdLCJmZ3IiOiI3ZmM1ZGMzMmNmMjg4NjA2ZGE5ZWFiNTNmZTU1MDNlZmU4YWU0ZDIzNDBlNzJlMzE4MDY4N2UzYzExY2Q1NGRkIiwia2V5IjoidUNUMVZxQUJmWmJmekptLWpEbXY6UldNYURmQlVxN3hPUF94dXZnUEREdyJ9

浏览器访问 Kibana 平台地址 <IP>:5601 ,输入生成的注册令牌,然后点击配置Elastic

之后需要在Kibana服务器运行bin\kibana-verification-code获取验证码,然后输入

Terminal window
[root@localhost /usr/local/kibana/bin]# ./kibana-verification-code
Your verification code is: 568 767

在浏览器上配置Kibana完毕后,回到后台,查看 kibana.yml 文件,结尾会自动新增配置。该配置在后续部署Logstash时会用到

Terminal window
[root@localhost /usr/local/kibana/bin]# cat /usr/local/kibana/config/kibana.yml | tail -n5
elasticsearch.hosts: [https://10.22.51.91:9200]
elasticsearch.serviceAccountToken: AAEAAWVsYXN0aWMva2liYW5hL2Vucm9sbC1wcm9jZXNzLXRva2VuLTE3ODgxNjU3NTk4NzQ6ZlEzbkZvRG1SQ1dQY1Q1SnFid01EUQ
elasticsearch.ssl.certificateAuthorities: [/usr/local/kibana/data/ca_1788165761022.crt]
xpack.fleet.outputs: [{id: fleet-default-output, name: default, is_default: true, is_default_monitoring: true, type: elasticsearch, hosts: [https://10.22.51.91:9200], ca_trusted_fingerprint: 7fc5dc32cf288606da9eab53fe5503efe8ae4d2340e72e3180687e3c11cd54dd}]

Search Autocomplete搜索自动完成设置:

  • elasticsearch.hosts:定义 Kibana 要连接的 Elasticsearch 节点地址。
  • elasticsearch.serviceAccountToken:这是一个 Service Account Token(服务账户令牌),Kibana 启动时用它来认证自己,而不是用用户名/密码。
  • elasticsearch.ssl.certificateAuthorities: 指定 CA 根证书文件路径,Kibana 会用这个证书去验证 Elasticsearch 的 HTTPS 证书,确保连接的是真实可信的 ES 节点,而不是中间人攻击。这个 .crt 文件是 ES 第一次启动时自动生成的,通常会被 Kibana enrollment 过程复制过来。
  • xpack.fleet.outputs:这是 Fleet(Elastic Agent 管理功能) 的输出配置。Kibana 里的 Fleet 需要知道往哪里写数据,这里配置了一个默认的 Elasticsearch 输出。关键字段:
  • id: fleet-default-output:输出 ID。
  • name: default:输出名称。
  • is_default: true:是否作为默认输出。
  • is_default_monitoring: true:是否作为监控默认输出。
  • type: elasticsearch:输出类型是 Elasticsearch。
  • hosts: [https://10.22.51.91:9200]:输出目标 ES 节点。
  • ca_trusted_fingerprint:CA 证书指纹,用来验证 TLS 连接的安全性。

2.3 Logstash部署#

官网地址:https://www.elastic.co/docs/reference/logstash

安装文档:https://www.elastic.co/docs/reference/logstash/installing-logstash

开源地址:https://github.com/elastic/logstash

下载地址:https://www.elastic.co/cn/downloads/logstash

Logstash 是 Elastic Stack 的数据处理管道工具,Java 编写,用来做日志 / 数据的接收、清洗转换、转发输出。

三大核心模块:

  1. Input 输入:接收数据源,支持 file、beats、kafka、syslog、tcp 等,获取原始数据。
  2. Filter 过滤(核心):数据清洗,切割文本、提取字段、时间格式化、数据过滤、数据脱敏、字段增删改。
  3. Output 输出:处理完成后输出,最常见输出到 Elasticsearch,也可输出 kafka、文件、redis 等。

特点:

  • 插件生态极其丰富,各类输入、过滤、输出都有插件;
  • 资源消耗较高,占用 CPU 内存大,生产环境一般集中部署,不装在业务服务器上;
  • 常接收 Filebeat 推送过来的数据,做集中清洗;
  • 自带持久队列,防止宕机丢失数据。

典型定位:

  • Filebeat 负责采集,Logstash 负责清洗加工,加工完交给 Elasticsearch 存储。

  • 如果日志已经是规整 JSON 格式,可跳过 Logstash,Filebeat 直接写入 ES,减少组件开销。

2.3.1 下载二进制包并配置环境#

下载 Logstash 二进制包,并指定解压到 /usr/local 目录下,并重命名为 logstash :

Terminal window
cd /usr/local/src
wget https://artifacts.elastic.co/downloads/logstash/logstash-9.5.2-linux-x86_64.tar.gz
tar -xf logstash-9.5.2-linux-x86_64.tar.gz
mv logstash-9.5.2 /usr/local/logstash

配置环境变量:

Terminal window
echo 'export PATH=$PATH:/usr/local/logstash/bin' > /etc/profile.d/logstash.sh
source /etc/profile

验证版本:

Terminal window
[root@localhost /root]# logstash -V
Using bundled JDK: /usr/local/logstash/jdk
logstash 9.5.2

2.3.2 配置Logstash#

通过 chown 命令递归地更改 /usr/local/logstash 目录及其所有子目录和文件的所有权,赋予 elk 用户和 elk 组所有权:

Terminal window
chown -R elk:elk /usr/local/logstash/

在/usr/local/elk/data/logstash目录下创建两个目录分别为data和logs,分别存放数据和日志。同时授予权限:

Terminal window
mkdir -p /usr/local/elk/data/logstash/{data,logs}
chown -R elk:elk /usr/local/elk/data/logstash

复制 Elasticsearch 证书到 Logstash 目录并赋权:

Terminal window
mkdir /usr/local/logstash/config/certs
cp /usr/local/elasticsearch/config/certs/http_ca.crt /usr/local/logstash/config/certs
chmod 660 /usr/local/logstash/config/certs/http_ca.crt
chown -R elk:elk /usr/local/logstash/config/certs

2.3.3 修改logstash配置文件#

logstash.yml 是 Logstash 主要的配置文件,包含了很多参数信息。在 /usr/local/logstash/config 目录下,编辑 logstash.yml 文件,配置以下内容,其中**【X-Pack Settings】配置**可以从前面配置Kibana时自动生成到配置文件中的最后的内容信息中获取:

Terminal window
# 备份原配置文件
cp /usr/local/logstash/config/logstash.yml{,.bak}
# 修改新配置文件
cat > /usr/local/logstash/config/logstash.yml <<'EOF'
# 指定 Logstash 用于存储数据的路径
path.data: /usr/local/elk/data/logstash/data
log.level: info
# 指定 Logstash 日志文件的存储路径
path.logs: /usr/local/elk/data/logstash/logs
# 启用 X-Pack 监控功能,允许 Logstash 发送监控数据到 Elasticsearch
xpack.monitoring.enabled: true
# 连接 Elasticsearch 的认证信息
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: admin@123
# 指定用于监控的 Elasticsearch 集群的地址
xpack.monitoring.elasticsearch.hosts: ["https://localhost:9200"]
# 指定用于验证 Elasticsearch 集群 SSL 连接的 CA 证书路径。
xpack.monitoring.elasticsearch.ssl.certificate_authority: "/usr/local/logstash/config/certs/http_ca.crt"
EOF

2.3.4 修改startup.options 文件#

startup.options 是 Logstash 的一个配置文件,用于定义 Logstash 启动时使用的一些系统级参数和设置。该文件通常用于配置 Logstash 作为系统服务运行时的参数,例如指定 JVM 内存设置、日志路径等。配置完成后,这些选项会被应用于 systemd 或其他服务管理器,以便正确启动和管理 Logstash 服务。

在 /usr/local/logstash/config 目录下,编辑 startup.options 文件,配置以下内容:

Terminal window
# 指定 Logstash 安装的位置
sed -i '/LS_HOME=/c LS_HOME=/usr/local/logstash' /usr/local/logstash/config/startup.options
# 指定 Logstash 配置文件的目录
sed -i '/LS_SETTINGS_DIR=/c LS_SETTINGS_DIR=/usr/local/logstash/config' /usr/local/logstash/config/startup.options
# 指定运行 Logstash 的用户和用户组。
sed -i '/LS_USER=/c LS_USER=elk' /usr/local/logstash/config/startup.options
sed -i '/LS_GROUP=/c LS_GROUP=elk' /usr/local/logstash/config/startup.options

2.3.5 修改pipelines.yml文件#

pipelines.yml 是 Logstash 的一个配置文件,用于定义和管理多个数据处理管道(pipelines)。在 Logstash 中,一个管道包括输入(input)、过滤器(filter)和输出(output)三个部分。pipelines.yml 文件允许在一个 Logstash 实例中运行多个独立的管道,每个管道可以有自己的输入、过滤器和输出配置。

在 /usr/local/logstash/config 目录下,编辑 pipelines.yml 文件,配置以下内容:

Terminal window
# 备份原配置文件
cp /usr/local/logstash/config/pipelines.yml{,.bak}
# 修改新配置文件,添加两个管道示例
cat > /usr/local/logstash/config/pipelines.yml <<'EOF'
# pipeline1:处理nginx日志
- pipeline.id: nginx-log
# 指定管道配置文件的路径。每个管道都有自己的配置文件,包含 input、filter 和 output 的具体配置
path.config: "/usr/local/logstash/pipelines/nginx/*.conf"
pipeline.workers: 2
# pipeline2:处理业务应用日志
- pipeline.id: app-log
# 匹配该目录下所有.conf文件,全部合并成同一个 pipeline
path.config: "/usr/local/logstash/pipelines/app/*.conf"
pipeline.workers: 4
EOF

这里先创建了两个管道的基础设置(理解为管道外壳),还缺少具体的处理流程。在后续第4章节会在/usr/local/logstash/pipelines/nginx/目录下创建包含input、filter、output的处理流程文件

常用参数:

Terminal window
- pipeline.id: my-pipeline-1 # 【必选】管道唯一ID,日志里会显示,用于区分不同业务
path.config: "/etc/logstash/conf.d/p1/*.conf" # 【必选】管道加载的配置文件路径,支持通配符
path.queue: "/var/lib/logstash/queue/my-p1" # 持久化队列存储目录,每个pipeline独立队列目录
queue.type: persisted # 队列类型:memory(内存,默认) / persisted(磁盘持久队列,宕机不丢消息)
queue.max_bytes: 4gb # 持久队列最大磁盘占用,达到就阻塞input
queue.checkpoint.writes: 1024 # 每多少条写一次checkpoint磁盘快照
queue.drain: true # 关闭实例时,是否把队列剩余数据消费完成再退出
pipeline.workers: 4 # filter+output 工作线程数,默认CPU核心数
pipeline.batch.size: 125 # 批量大小:每次攒多少条事件交给filter/output处理
pipeline.batch.delay: 50 # 批量等待超时(毫秒):凑不够batch.size最多等多久就提交
pipeline.ordered: auto # 事件顺序:auto(true/false);开启会降低吞吐量,保证事件原始顺序
pipeline.java_execution: true # 使用Java执行引擎(Logstash 8+默认开启)
config.reload.automatic: true # 是否自动监控配置文件变更,重载pipeline
config.reload.interval: 3s # 配置文件扫描间隔
config.debug: false # 打印配置调试信息
dead_letter_queue.enable: true # 开启死信队列DLQ,处理解析失败无法处理的事件
dead_letter_queue.max_bytes: 1gb # DLQ最大占用磁盘
dead_letter_queue.path: "/var/lib/logstash/dlq/my-p1" # DLQ存储路径

2.3.6 配置启动服务#

创建一个名为 logstash.service 的 systemd 服务单元文件,用于管理 Logstash 服务,存放于/usr/lib/systemd/system目录下:

CAP_NET_BIND_SERVICE目的正是使其能够使用 syslog 514 端口(因为1024以下的端口只能root进行监听)

Terminal window
cat > /usr/lib/systemd/system/logstash.service <<'EOF'
[Unit]
Description=logstash
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=elk
Group=elk
# 授予绑定特权端口的能力
AmbientCapabilities=CAP_NET_BIND_SERVICE
# 可选,限制进程可用的能力集合(保持一致)
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
WorkingDirectory=/usr/local/logstash
ExecStart=/usr/local/logstash/bin/logstash --path.settings /usr/local/logstash/config/
Restart=always
Nice=19
LimitNOFILE=16384
TimeoutStopSec=0
[Install]
WantedBy=multi-user.target
EOF
Terminal window
# 重载配置
systemctl daemon-reload
# 启动服务
systemctl start logstash.service

2.4 Beats 组件#

官网地址:https://www.elastic.co/docs/reference/beats/filebeat

安装文档:https://www.elastic.co/docs/reference/beats/filebeat/running-with-systemd

开源地址:https://github.com/elastic/beats/blob/master/filebeat/README.md

下载地址:https://www.elastic.co/cn/downloads/beats

Beats 是 Elastic Stack 提供的一系列轻量级数据采集器,用 Go 语言开发,体积小、资源占用低,部署在业务主机上做数据采集,采集后可输出给 Logstash、Elasticsearch、Kafka。

image-20260901105004889
image-20260901105004889

  1. Filebeat 日志文件采集器,最常用。读取服务器磁盘上的日志文件(nginx、应用程序日志),支持断点续传,日志滚动。
  2. Metricbeat 指标采集器。采集系统指标(CPU、内存、磁盘、网络),也可以采集中间件指标,MySQL、Nginx、Redis 等服务运行指标。
  3. Packetbeat 网络数据包采集器。抓包分析网络流量,解析 TCP/UDP 等协议,统计网络请求、延时、访问情况。
  4. Winlogbeat Windows 专属采集器。专门读取 Windows 系统事件日志,系统安全日志、应用事件日志。
  5. Auditbeat 审计采集器。收集 Linux 系统审计信息,监控文件改动、用户操作行为,用于安全审计。
  6. Heartbeat 状态探测采集器。主动探测服务可用性,检测端口、HTTP 接口是否存活,做服务可用性监控。

2.4.1 FileBeat部署#

下载 Filebeat 二进制包,并指定解压到 /usr/local 目录下,并重命名为 filebeat :

Terminal window
cd /usr/local/src
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.5.2-linux-x86_64.tar.gz
tar -xf filebeat-9.5.2-linux-x86_64.tar.gz
mv filebeat-9.5.2-linux-x86_64 /usr/local/filebeat

创建数据目录:在 usr/local/elk/data/filebeat 目录下创建两个目录分别为 data 和 logs ,分别存放数据和日志:

Terminal window
mkdir -p /usr/local/elk/data/filebeat/{data,logs}

2.4.2 修改FileBeat配置文件#

filebeat.yml 是 Filebeat 主要的配置文件,包含了很多参数信息。在 /usr/local/filebeat 目录下,编辑 filebeat.yml 文件,配置以下内容:(这里配置采集的数据直接发给ES,不经过Logstash)

Terminal window
# 备份原配置文件
cp /usr/local/filebeat/filebeat.yml{,.bak}
# 修改新配置文件
cat > /usr/local/filebeat/filebeat_es.yml <<'EOF'
# ============================== 1. 输入源配置 (Inputs) ==============================
# 定义 Filebeat 需要采集的日志来源
filebeat.inputs:
- type: filestream # 采集类型:推荐使用 filestream,它比旧版的 log 类型更稳定,能更好地处理日志轮转
id: my-messages-log # 唯一标识符:为当前输入源分配一个固定的 ID,确保重启后能准确追踪读取进度
enabled: true # 启用状态:设置为 true 表示开启此采集规则
paths: # 采集路径:指定要读取的日志文件或目录(支持通配符)
- /var/log/messages # 此处指定采集 Linux 系统的 messages 日志
# ============================== 2. 索引模板配置 (Template) ==============================
setup.template.name: "my-log" # 模板名称:在 Elasticsearch 中创建的索引模板的名称
setup.template.pattern: "my-log-*" # 模板匹配模式:指定该模板应用于哪些索引(通常与自定义索引前缀对应)
setup.ilm.enabled: false # 关闭 ILM(索引生命周期管理):防止 ES 自动接管索引命名,确保下方的自定义索引名生效
# ============================== 3. 模块配置 (Modules) ==============================
# 控制 Filebeat 预置模块的加载行为
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 模块配置路径:指定预置模块配置文件所在的目录
reload.enabled: false # 动态重载:设置为 false 表示不自动检测模块配置的变更,需重启生效
# ============================== 4. 输出配置 (Output) ==============================
# 定义采集到的日志数据最终发送到的目的地
output.elasticsearch:
hosts: ["https://localhost:9200"] # ES 集群地址:Elasticsearch 节点的 IP 和端口
index: "test-%{+yyyy.MM.dd}" # 自定义索引名:按天生成索引,例如 test-2026.09.01
# --- SSL/TLS 加密与认证配置 ---
ssl.verification_mode: none # 证书验证模式:none 表示不验证服务端证书(适用于自签名证书环境)
ssl.certificate_authorities: # CA 证书路径:指定用于验证 ES 服务端证书的根证书文件路径
- "/usr/local/elasticsearch/config/certs/http_ca.crt"
# --- 访问凭证 ---
username: "elastic" # 认证用户名:连接 Elasticsearch 所需的账号
password: "admin@123" # 认证密码:连接 Elasticsearch 所需的密码(️ 生产环境建议使用 Keystore 加密)
EOF

默认模板简化:

Terminal window
# ====================== 输入源配置 ======================
filebeat.inputs:
# 文件流输入:采集本地日志文件
- type: filestream
id: my-filestream-id # 输入项唯一ID
enabled: false # 是否启用该输入
paths: # 待采集日志路径,支持通配符
- /var/log/*.log
#exclude_lines: ['^DBG'] # 排除匹配正则的日志行
#include_lines: ['^ERR', '^WARN'] # 只采集匹配正则的日志行
#prospector.scanner.exclude_files: ['.gz$'] # 排除匹配的文件
#fields: # 自定义附加字段
# level: debug
# review: 1
# journald输入:采集系统journald日志
#- type: journald
# id: my-journald-id # 输入项唯一ID
# seek: head # 读取起始位置:head开头/tail尾部/since指定时间
# since: -24h # 起始时间偏移(seek=since时生效)
# units: # 指定采集的systemd服务
# - docker.service
# ====================== 模块配置 ======================
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 模块配置文件路径
reload.enabled: false # 是否开启配置热重载
#reload.period: 10s # 配置文件检查周期
# ====================== ES索引模板 ======================
setup.template.settings:
index.number_of_shards: 1 # 索引分片数量
#index.codec: best_compression # 索引压缩编码
#_source.enabled: false # 是否关闭_source字段存储
# ====================== 通用配置 ======================
#name: # 采集器标识名称
#tags: ["service-X", "web-tier"] # 全局标签,用于分类过滤
#fields: # 全局附加字段
# env: staging
# ====================== Kibana配置 ======================
setup.kibana:
#host: "localhost:5601" # Kibana服务地址
#space.id: # Kibana空间ID
# ====================== Elastic Cloud ======================
#cloud.id: # Cloud实例ID,覆盖ES/Kibana地址
#cloud.auth: # Cloud认证,格式 user:pass
# ====================== 输出配置 ======================
# Elasticsearch输出
output.elasticsearch:
hosts: ["localhost:9200"] # ES节点地址列表
preset: balanced # 性能预设:balanced/throughput/scale/latency/custom
#protocol: "https" # 通信协议
#api_key: "id:api_key" # API密钥认证
#username: "elastic" # 用户名认证
#password: "changeme" # 密码认证
# Logstash输出
#output.logstash:
# hosts: ["localhost:5044"] # Logstash地址列表
# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] # CA根证书
# ssl.certificate: "/etc/pki/client/cert.pem" # 客户端证书
# ssl.key: "/etc/pki/client/cert.key" # 客户端私钥
# ====================== 数据处理器 ======================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded # 无forward标签时添加主机元数据
- add_cloud_metadata: ~ # 添加云环境元数据
- add_docker_metadata: ~ # 添加Docker容器元数据
- add_kubernetes_metadata: ~ # 添加K8s元数据
# ====================== 自身日志 ======================
#logging.level: debug # 日志级别:error/warning/info/debug
#logging.selectors: ["*"] # 启用日志的组件
# ====================== X-Pack监控 ======================
#monitoring.enabled: false # 是否开启监控上报
#monitoring.cluster_uuid: # 监控集群UUID
#monitoring.elasticsearch: # 监控专用ES集群配置
# ====================== 链路追踪 ======================
#instrumentation:
# enabled: false # 是否启用APM埋点
# environment: "" # 运行环境
# hosts: # APM Server地址
# - http://localhost:8200
# api_key: # APM API密钥
# secret_token: # APM密钥令牌
# ====================== 版本迁移 ======================
#migration.6_to_7.enabled: true # 启用6.x到7.x迁移别名

2.4.3 配置测试#

Terminal window
# 测试配置文件语法是否正确
[root@localhost /]# /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml test config
Config OK
# 测试能否连通 Elasticsearch
[root@localhost /]# /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml test output
elasticsearch: https://localhost:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: 127.0.0.1, 127.0.1.1, ::1
dial up... OK
TLS...
security... WARN server's certificate chain verification is disabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 9.5.2
# 前台运行查看实时日志(确认没有报错)
/usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml

2.4.4 配置启动服务#

创建一个名为 filebeat.service 的 systemd 服务单元文件,用于管理 Filebeat 服务,存放于/usr/lib/systemd/system目录下:

Terminal window
cat > /usr/lib/systemd/system/filebeat.service <<'EOF'
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/beats/filebeat
Wants=network-online.target
After=network-online.target
[Service]
UMask=0027
Environment="GODEBUG='madvdontneed=1'"
Environment="BEAT_LOG_OPTS="
Environment="BEAT_CONFIG_OPTS=-c /usr/local/filebeat/filebeat.yml"
Environment="BEAT_PATH_OPTS=--path.home /usr/local/filebeat --path.config /usr/local/filebeat --path.data /usr/local/elk/data/filebeat/data --path.logs /usr/local/elk/data/filebeat/logs"
ExecStart=/usr/local/filebeat/filebeat --environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Terminal window
# 重载配置
systemctl daemon-reload
# 启动服务
systemctl start filebeat.service

三、Kibana组件使用#

官方中文文档:Kibana 用户手册 | Elastic

3.1添加数据视图#

由于之前部署Beats组件时将采集的数据发送到ES,且在配置中自定义了索引名称(test-%{+yyyy.MM.dd}),Kibana 默认不会自动显示它。

3.1.1 确认数据已成功写入ES#

在去 Kibana 之前,建议先在终端确认数据确实已经写进去了:

能看到类似 test-2026.09.01 的索引,说明数据已成功写入

Terminal window
# 先写入数据
echo "你好世界" >> /var/log/messages
# 检查是否存在以 test- 开头的索引
curl -k -u elastic:sunline https://localhost:9200/_cat/indices?v | grep test-
# 结果如下:
[root@localhost /root]# curl -k -u elastic:admin@123 https://localhost:9200/_cat/indices?v | grep test-
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 780 0 780 0 0 13088 0 --:--:-- --:--:-- --:--:-- 13220
yellow open test-2026.09.01 sBBj_X_ISgm0HELW1Wl6XQ 1 1 7 0 56.4kb 56.4kb 56.4kb

3.1.2 在Kibana中创建数据视图#

  1. 打开浏览器,访问 Kibana 界面(默认地址:https://<Kibana服务器IP>:5601),使用 elastic/admin@123 登录。

  2. 在左侧菜单栏,向下滚动找到 Management点击进入

    image-20260901155359207
    image-20260901155359207

  3. 进入后找到Kibana下的数据视图点击,进入后选择创建数据视图

    image-20260901155505367
    image-20260901155505367

  4. 索引模式填入**test-***与Filebeat 配置中的 test-%{+yyyy.MM.dd} 相匹配,点击保存

    image-20260901155703959
    image-20260901155703959

  5. 可以看到监控的一些字段数据

    image-20260901161840335
    image-20260901161840335

3.2 使用Discover模块查看数据#

image-20260901164129653
image-20260901164129653

image-20260901163954607
image-20260901163954607

3.3 创建可视化图表#

image-20260901164147147
image-20260901164147147

image-20260901170213691
image-20260901170213691

可以添加图层

image-20260901170546536
image-20260901170546536

最后点击保存并添加到库中

image-20260901171634120
image-20260901171634120

3.4 创建仪表盘#

image-20260901173203536
image-20260901173203536

image-20260901173254285
image-20260901173254285

可选择新建、或者使用库中的图标

image-20260901173341737
image-20260901173341737

image-20260901173503647
image-20260901173503647

最后的效果:

image-20260901173522414
image-20260901173522414


四、Logstash组件使用#

这里使用一个案例来阐述Logstash组件的基本使用:监控nginx的日志文件,这次Filebeat的链路走向不直接对接ES,而是先交给Logstash进行过滤清洗,然后再交给ES。整个链路走向为 Filebeat → Logstash → Elasticsearch 。最后在 Kibana 中完成可视化

4.1 配置 Logstash#

Logstash 负责接收 Filebeat 的数据,解析 Nginx 日志格式,然后写入 ES。

  1. 在 Logstash 的配置目录下创建或修改配置文件。(根据2.3的管道示例,这里需要在/usr/local/logstash/pipelines/nginx目录下创建配置文件)

    Terminal window
    # 创建目录
    mkdir -p /usr/local/logstash/pipelines/nginx/
  2. 配置 Input 接收 Filebeat 数据,Filter 解析日志,Output 写入 ES:

Terminal window
cat > /usr/local/logstash/pipelines/nginx/nginx-log.conf << 'EOF'
input {
beats {
port => 5044 # 监听端口,需与 Filebeat 配置一致
}
}
filter {
# 使用 Grok 插件解析非结构化的 Nginx 访问日志
grok {
match => {
"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}'
}
break_on_match => false
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"] # ES 地址
index => "nginx-logs-%{+YYYY.MM.dd}" # 按天生成索引
# 如果 ES 开启了安全认证,需加上用户名和密码
user => "elastic"
password => "admin@123"
ssl_verification_mode => "none" # 不验证证书
}
}
EOF
Terminal window
# 修改用户所有权
chown -R elk:elk /usr/local/logstash
# 重启
systemctl restart logstash.service
# 查看5044端口是否开启监听
netstat -tunlp | grep 5044

4.2 配置 Filebeat#

Filebeat 部署在 Nginx 所在的服务器,负责实时采集日志并推送到 Logstash。

  1. 修改 Filebeat 的配置文件 filebeat.yml。

  2. 配置输入源(Nginx 日志路径)和输出目标(Logstash):

    因在2.4.2配置过一个将采集的日志直接发送到ES,这里直接去掉,保留的话可以查看后面的另一个流程

Terminal window
# 备份之前的文件
cp /usr/local/filebeat/filebeat.yml{,.bak.bak}
# ============================== 1. 输入源配置 (Inputs) ==============================
# 定义 Filebeat 需要采集的日志来源
filebeat.inputs:
- type: filestream # 采集类型:推荐使用 filestream,它比旧版的 log 类型更稳定,能更好地处理日志轮转
id: my-nginx-log # 唯一标识符:为当前输入源分配一个固定的 ID,确保重启后能准确追踪读取进度,ID不可与其他输入源重复
enabled: true # 启用状态:设置为 true 表示开启此采集规则
paths: # 采集路径:指定要读取的日志文件或目录(支持通配符)
- /var/log/nginx/*.log # 需要采集的日志路径,请修改为实际日志文件
# ============================== 2. 索引模板配置 (Template) ==============================
# 当前输出为Logstash,模板配置不会生效,保留配置文件结构不删除
setup.template.name: "my-log" # 模板名称:在 Elasticsearch 中创建的索引模板的名称
setup.template.pattern: "my-log-*" # 模板匹配模式:指定该模板应用于哪些索引(通常与自定义索引前缀对应)
setup.ilm.enabled: false # 关闭 ILM(索引生命周期管理):防止 ES 自动接管索引命名,确保下方的自定义索引名生效
# ============================== 3. 模块配置 (Modules) ==============================
# 控制 Filebeat 预置模块的加载行为
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 模块配置路径:指定预置模块配置文件所在的目录
reload.enabled: false # 动态重载:设置为 false 表示不自动检测模块配置的变更,需重启生效
# ============================== 4. 输出配置 (Output) ==============================
# 定义采集到的日志数据最终发送到的目的地
output.logstash:
hosts: ["127.0.0.1:5044"] # Logstash 地址端口,请修改为你的实际 Logstash 服务地址
EOF

保留多个采集源:#

将两路日志全部推送到 logstash 的 5044 端口,依靠 fields.dest 字段区分。在 Logstash 里面做分流(messages 不处理直接进 ES,nginx 日志在 logstash的filter字段 处理后进入ES)

1. filebeat配置#

Terminal window
cat > /usr/local/filebeat/filebeat.yml << 'EOF'
# ============================== 1. 输入源配置 (Inputs) ==============================
# 定义 Filebeat 需要采集的日志来源
filebeat.inputs:
- type: filestream # 采集类型:推荐使用 filestream,它比旧版的 log 类型更稳定,能更好地处理日志轮转
id: my-messages-log # 唯一标识符:为当前输入源分配一个固定的 ID,确保重启后能准确追踪读取进度
enabled: true # 启用状态:设置为 true 表示开启此采集规则
paths: # 采集路径:指定要读取的日志文件或目录(支持通配符)
- /var/log/messages # 此处指定采集 Linux 系统的 messages 日志
fields:
dest: "es" # 自定义标记字段:用于Logstash内部分流,该路日志发送到 Elasticsearch
# ========== 追加第二个采集源:nginx日志 ==========
- type: filestream # 采集类型:推荐使用 filestream,它比旧版的 log 类型更稳定,能更好地处理日志轮转
id: my-nginx-log # 唯一标识符:为当前输入源分配一个固定的 ID,确保重启后能准确追踪读取进度,ID不可与其他输入源重复
enabled: true # 启用状态:设置为 true 表示开启此采集规则
paths: # 采集路径:指定要读取的日志文件或目录(支持通配符)
- /var/log/nginx/*.log # 需要采集的日志路径,请修改为实际日志文件
fields:
dest: "logstash" # 自定义标记字段:用于Logstash内部分流,该路日志留在logstash处理
# ============================== 2. 索引模板配置 (Template) ==============================
setup.template.name: "my-log" # 模板名称:在 Elasticsearch 中创建的索引模板的名称
setup.template.pattern: "my-log-*" # 模板匹配模式:指定该模板应用于哪些索引(通常与自定义索引前缀对应)
setup.ilm.enabled: false # 关闭 ILM(索引生命周期管理):防止 ES 自动接管索引命名,确保下方的自定义索引名生效
# ============================== 3. 模块配置 (Modules) ==============================
# 控制 Filebeat 预置模块的加载行为
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml # 模块配置路径:指定预置模块配置文件所在的目录
reload.enabled: false # 动态重载:设置为 false 表示不自动检测模块配置的变更,需重启生效
# ============================== 4. 输出配置 (Output) ==============================
# 定义采集到的日志数据最终发送到的目的地
# Filebeat只允许一个output,全部数据发送给Logstash,分流逻辑交给Logstash
output.logstash:
hosts: ["127.0.0.1:5044"] # Logstash 地址端口,请修改为你的实际 Logstash 服务地址
EOF

2. nginx-log.conf配置#

Terminal window
cat > /usr/local/logstash/pipelines/nginx/nginx-log.conf << 'EOF'
input {
beats {
port => 5044
}
}
filter {
# 只对 Nginx 日志做 grok 解析(通过 dest 字段区分),避免系统日志匹配失败
if [fields][dest] == "logstash" {
grok {
match => {
"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}'
}
break_on_match => false
}
}
# 如果你也想解析 messages 日志,可以再增加一个 grok,但此处不需要
}
output {
# 分流:dest=es 的日志(messages)写入 test-* 索引
if [fields][dest] == "es" {
elasticsearch {
hosts => ["https://localhost:9200"]
index => "test-%{+yyyy.MM.dd}"
user => "elastic"
password => "admin@123"
ssl_verification_mode => "none" # 统一使用 8.x 写法,更简洁
# 如果你的 Logstash 版本较旧,可换为:
# ssl_certificate_verification => false
}
}
# 分流:dest=logstash 的日志(nginx)写入 nginx-log-* 索引
else if [fields][dest] == "logstash" {
elasticsearch {
hosts => ["https://localhost:9200"]
index => "nginx-log-%{+yyyy.MM.dd}" # 统一用小写 yyyy,避免跨年周问题
user => "elastic"
password => "admin@123"
ssl_verification_mode => "none"
}
}
# 可选:调试时打开下面的 else,查看未匹配 dest 的事件(生产环境请注释掉)
# else {
# stdout { codec => rubydebug }
# }
}
EOF

之后回到kibana进行数据视图、可视化图表、仪表盘的创建(具体步骤可参考第三章节)


五、APM server组件#

Elastic APM Server 是 Elastic Stack(ELK Stack)中专门用于接收、处理和转发应用性能监控(APM)数据的组件。

简单来说,它充当了**应用程序(Agent)**与 **Elasticsearch(存储/分析引擎)**之间的“网关”或“缓冲层”。

  • 核心功能:它接收来自各种编程语言 APM Agent 发送的性能数据(如 HTTP 请求耗时、数据库查询、错误日志、分布式追踪 Trace 等)。
  • 数据处理:它对原始数据进行验证、转换和丰富(例如添加 GeoIP 信息、User-Agent 解析等),然后将其转换为 Elasticsearch 文档格式。
  • 缓冲与解耦:它防止大量监控数据直接冲击 Elasticsearch 集群,起到削峰填谷的作用,同时让应用程序无需关心后端的存储细节。
  • 架构演进注意:在 Elastic Stack 8.x 及更高版本中,APM Server 已经不再是一个必须独立部署的二进制文件,而是被集成到了 Elastic Agent 中作为一个托管服务运行。但在逻辑上,它的功能依然存在。

5.1 搭配的组件#

  1. APM Agent(探针)【必须】 部署在业务应用侧,不是 APM‑Server。
    • 各语言 SDK:Java Agent、Python、Go、NodeJS、.NET、PHP 等
    • 作用:采集应用指标、调用链路、错误堆栈、慢请求,把数据上报给 APM Server。
    • Agent 只负责采集上报,不存储数据。
  2. APM Server【中间转发服务】 接收 Agent 发过来的链路数据,做预处理、解析、字段增强,再写入 Elasticsearch。 两种部署:二进制、docker。
  3. Elasticsearch【存储,必须】 APM Server 所有链路、指标、异常数据最终全部写入 ES 索引,没有 ES 就无法持久化。
  4. Kibana【可视化,必须】 提供 APM 专属 UI 面板:服务地图、链路详情、慢事务、错误统计、服务指标,做查询、告警、图表展示。

5.1.1 可选组件#

  • Fleet Server / Elastic Agent(8.x+ 推荐):用于集中管理和部署 APM Server 集成,简化运维。
  • Logstash:如果你需要在数据进入 ES 之前进行复杂的自定义 ETL 处理,可以让 APM Server 输出到 Logstash 而非直接写入 ES。
  • Kafka / Redis:作为中间消息队列,当数据量极大时,可置于 APM Server 与 Elasticsearch 之间提供额外的缓冲能力。
  • Machine Learning:Elastic 内置的 ML 功能可以对 APM 数据进行异常检测(如响应时间突增、流量异常等)。

最简最小组合:业务应用 + APM Agent + APM Server + Elasticsearch + Kibana

如果使用的是 Elastic Stack 8.x 或更新版本,官方推荐使用 Fleet + Elastic Agent 的方式来部署 APM Server,而不是手动下载独立的 apm-server 二进制包。这种方式支持通过 Kibana UI 进行集中配置、升级和监控,大幅降低了运维复杂度。


六、Fleet组件使用#

Fleet 由两部分组成:

  • Fleet UI 是一个带有可视化界面的 Kibana 应用程序,用户可以在界面配置和管理 Elastic Agent 的策略,并且在 Fleet 页面上查看所有 Elastic Agent 的状态。
  • Fleet Server 负责集中管理 Elastic Agent 的策略和生命周期,它提供了用于更新 Elastic Agent 的控制平面,并指示 Elastic Agent 执行一些操作,例如更新监控策略,跨主机运行 Osquery 或在网络层隔离主机以遏制安全威胁。Fleet Server 也是一个特殊的 Elastic Agent。

打开kibana的UI界面,进入Fleet(左侧菜单 → Management → Fleet):(如果进入后出现如下界面)

image-20260903141521762
image-20260903141521762

这是因为Kibana 的 kibana.yml 里没有配置加密密钥

Terminal window
# 1. 生成随机字符串作为秘钥
openssl rand -hex 32
# 输出结果:
a3f1c9e8b7d24f6a1c0e9b8d7f6a5c4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8
# 2. 将秘钥填入字段,之后将以下内容追加到kiban的配置文件中
cat >> /usr/local/kibana/config/kibana.yml << 'EOF'
# 用于加密 Fleet 的 enrollment token、API key 等敏感 saved object
xpack.encryptedSavedObjects.encryptionKey: "a3f1c9e8b7d24f6a1c0e9b8d7f6a5c4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8"
# 以下两个是 9.x 强烈建议一并配置的(Alerting / Actions / Security Solution 也依赖)
xpack.reporting.encryptionKey: "a3f1c9e8b7d24f6a1c0e9b8d7f6a5c4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8"
xpack.security.encryptionKey: "a3f1c9e8b7d24f6a1c0e9b8d7f6a5c4e3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8"
EOF
# 3. 重启kibana
systemctl restart kibana

出现如下画面说明fleet可以正常使用了

image-20260903142210608
image-20260903142210608

6.1 创建Fleet服务器#

6.1.1 快速创建#

填写名称和URL,点击继续

其中URL填写的是fleet服务器的URL,后续elastic agent就是通过这个找到fleet server。

如果要修改端口,那么后续安装fleet server的命令也需要修改,默认给出的命令是8220端口

image-20260903143145479
image-20260903143145479

在上一步点击确认后自动生成代理策略和注册令牌,会出现以下命令,选择对应的架构安装对应的elastic agent,这里在主机(10.22.51.91)上进行安装·fleet 服务器。

image-20260903150933223
image-20260903150933223

image-20260903143447176
image-20260903143447176

Terminal window
# 进入下载目录
cd /usr/local/src
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-9.5.2-linux-x86_64.tar.gz
tar xzf elastic-agent-9.5.2-linux-x86_64.tar.gz
mv elastic-agent-9.5.2-linux-x86_64 /usr/local/elastic-agent
cd /usr/local/elastic-agent
# 执行命令
./elastic-agent install \
--fleet-server-es=https://10.22.51.91:9200 \
--fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE3ODg0MTcxNjU2MTg6WDhsOXVJUmhReGVVZnB5NnBoeUtjZw \
--fleet-server-policy=fleet-server-policy \
--fleet-server-es-ca-trusted-fingerprint=7fc5dc32cf288606da9eab53fe5503efe8ae4d2340e72e3180687e3c11cd54dd \
--fleet-server-port=8220 \
--install-servers
# 出现以下结果:输入y,会向fleet服务器下载配置文件,并安装在/opt/Elastic/Agent
Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y
[ ] Service Started [48s] Elastic Agent successfully installed, starting enrollment.
[== ] Waiting For Enroll... [50s] {"log.level":"info","@timestamp":"2026-09-03T15:12:15.206+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).prepareFleetTLS","file.name":"cmd/enroll_cmd.go","file.line":373},"message":"Generating self-signed certificate for Fleet Server","ecs.version":"1.6.0"}
[== ] Waiting For Enroll... [51s] {"log.level":"info","@timestamp":"2026-09-03T15:12:16.007+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).daemonReloadWithBackoff","file.name":"cmd/enroll_cmd.go","file.line":417},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"}
[ ===] Waiting For Enroll... [53s] {"log.level":"info","@timestamp":"2026-09-03T15:12:18.018+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.waitForFleetServer.func1","file.name":"cmd/enroll_cmd.go","file.line":613},"message":"Fleet Server - waiting for output unit","ecs.version":"1.6.0"}
[ ===] Waiting For Enroll... [1m5s] {"log.level":"info","@timestamp":"2026-09-03T15:12:30.030+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.waitForFleetServer.func1","file.name":"cmd/enroll_cmd.go","file.line":594},"message":"Fleet Server - Running on policy with Fleet Server integration: fleet-server-policy; missing config fleet.agent.id (expected during bootstrap process)","ecs.version":"1.6.0"}
[ ===] Waiting For Enroll... [1m5s] {"log.level":"info","@timestamp":"2026-09-03T15:12:30.808+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/application/enroll.EnrollWithBackoff","file.name":"enroll/enroll.go","file.line":87},"message":"Starting enrollment to URL: https://localhost:8221/","ecs.version":"1.6.0"}
[== ] Waiting For Enroll... [1m8s] {"log.level":"info","@timestamp":"2026-09-03T15:12:33.543+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).daemonReloadWithBackoff","file.name":"cmd/enroll_cmd.go","file.line":417},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"}
{"log.level":"info","@timestamp":"2026-09-03T15:12:33.546+0800","log.origin":{"function":"github.com/elastic/elastic-agent/internal/pkg/agent/cmd.(*enrollCmd).Execute","file.name":"cmd/enroll_cmd.go","file.line":206},"message":"Successfully triggered restart on running Elastic Agent.","ecs.version":"1.6.0"}
Successfully enrolled the Elastic Agent.
[== ] Done [1m8s]
Elastic Agent has been successfully installed.

回到kibana界面,发现已经连接成功

image-20260903151406137
image-20260903151406137

image-20260903152259622
image-20260903152259622

6.1.2 高级选项创建#

高级创建有更多的选项可自定义,更加灵活。这次安装fleet server使用另一台独立的机器10.22.51.74,不再与elastic组件服务器(10.22.51.91)安装在一起

这里事先创建了两个不同的代理策略,指定不同的fleet server,供不同的fleet srever使用

image-20260909093243768
image-20260909093243768

之后选择部署模式和fleet服务器主机

image-20260909093540993
image-20260909093540993

最后生成令牌,将fleet 服务器安装到对应ip(10.22.51.74)中

image-20260909093656392
image-20260909093656392

6.2 代理策略使用#

6.2.1 代理策略概念#

代理策略 = 配置模板,里面定义采集什么日志、指标、输出给谁。 业务机器安装 Elastic Agent 的时候,绑定某一个策略,Agent 就自动下载这套配置,不需要去业务机器改配置文件。

6.2.2 默认代理策略#

Fleet Server Policy:专门给 Fleet‑Server 服务端用,普通业务 agent 绝对不要选它(已经有 1 个代理绑定它,就是之前的 fleet‑server 节点)

如果有多个fleet server使用不同的代理策略,建议修改代理策略的名字。同时修改策略使用的fleet 服务器(不修改则为默认)。否则将出现fleet server无法更新

对于其他的策略需要指定其需要通信的fleet server,否则使用的是默认的fleet server地址。

image-20260909094435687
image-20260909094435687

image-20260909094450672
image-20260909094450672

6.2.3 创建普通代理策略#

  • 点右上角【创建代理策略】新建空白策略,填写名称后点击创建

    image-20260904154851809
    image-20260904154851809

    image-20260904155019636
    image-20260904155019636

6.2.4 进入策略页面#

可以看到有个默认的system集成,这是因为之前创建时勾选了收集系统日志和指标

  1. 添加集成:比如 Nginx、System (系统指标)、Filebeat 自定义日志、MySQL 等。这里添加nginx的集成

    添加集成就是告诉 Agent:要采集什么数据。 例如nginx监控策略这个策略,添加 Nginx 集成来采集nginx的数据。

    image-20260904155416256
    image-20260904155416256

    image-20260904162739761
    image-20260904162739761

关键点:只要网页修改策略保存,所有绑定这个策略的 Agent,会自动拉取新配置,不需要登录业务机器重启 agent!Fleet 的核心价值就在这里,集中管理。

6.3 代理策略选项#

image-20260904163308647
image-20260904163308647

6.3.1 添加 Fleet 服务器#

只针对 Fleet Server Policy 才有用,普通业务策略不要点! 功能:弹出向导,生成 Fleet‑Server 安装脚本,就是你最开始部署 fleet‑server 那套 install 命令。

  • 作用:用于部署第二台、多台 Fleet‑Server 节点做高可用。

在 nginx监控策略 普通策略点这个是无效的,普通策略不能用来安装 Fleet‑Server。

6.3.2 添加代理#

  1. 点击直接跳转到 Agent 安装向导,并且自动选定当前策略。
  • 系统直接生成安装脚本,脚本内置绑定此策略。
  • 复制脚本到业务服务器执行安装 elastic‑agent。

image-20260904164318678
image-20260904164318678

6.3.3 在此策略上升级代理#

批量升级该策略下全部 Agent 版本。

  • 当 Kibana 检测到有新版本 Elastic‑Agent 可用,这个按钮激活。
  • 一键把所有绑定此策略的 agent,远程升级到新版本,不需要登录业务机器操作。

6.3.4 在此策略上卸载代理#

批量远程卸载该策略下所有 Agent。 触发后,Kibana 下发指令,所有绑定该策略机器上的 elastic‑agent 执行卸载,停止服务、删除程序。

6.4 集成修改#

image-20260904164939906
image-20260904164939906

当选择的集成采集的数据不符合要求时,可以编辑集成进行自定义

6.5 创建代理#

image-20260904165133234
image-20260904165133234

  1. 选择代理策略:nginx监控策略

    image-20260904165750887
    image-20260904165750887

  2. 选择在fleet中注册

    image-20260904165828303
    image-20260904165828303

  3. 在被监控的主机10.22.51.72中执行命令

    image-20260904165915976
    image-20260904165915976

    image-20260904170939979
    image-20260904170939979

七、Elastic Agent#

Elastic Agent 是 Elastic 官方推出的统一数据采集与管理代理,用来替代过去散落的 Beats 家族(Filebeat、Metricbeat、Packetbeat、Heartbeat、Auditbeat、Winlogbeat…)以及独立的 APM Server,把它们的能力收敛到一个二进制、一个进程、一套配置里。

Elastic Agent = 一个跑在每台主机/容器上的”全能采集器”,由 Kibana Fleet 远程统一管理,按需开启日志、指标、APM、安全、合成监控等各种能力。

参考文档:Elastic Stack 实战教程 4:使用 Fleet 管理 Elastic Agent 监控应用 - 墨天轮

安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0_copy this policy to the elastic-agent.yml on the h-CSDN博客

Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0-CSDN博客

7.1 基本认识#

7.1.1 核心组件和概念#

概念作用类比
Elastic Agent跑在被监控机器上的实际进程,负责采集和上报“士兵”:执行采集数据的角色
Integration(集成)一个个可插拔的能力包,如 System、Nginx、MySQL、Elastic APM、Endpoint Security“技能卡”:规定采集哪些数据
Agent Policy(代理策略)一组集成的集合 + 输出配置,决定”这个 Agent 要干什么”“任务清单”
Fleet / Fleet ServerKibana 里的管理中心 + 通信中转,把策略下发给所有 Agent“指挥部”

工作流:

  1. 你在 Kibana Fleet UI 里创建一个 Policy(代理策略),往里加几个 Integration(集成)(比如 System + Nginx + APM)。
  2. Fleet Server 把这份 Policy 推送给所有挂在该 Policy 下的 Elastic Agent。
  3. Agent 热加载新配置,立刻开始按新策略采集,无需重启、无需登录机器。
  4. 数据写入 Elasticsearch,在 Kibana 里查看。

7.1.2 核心能力#

Elastic Agent 通过加载不同的 Integration(集成) 覆盖几乎所有观测与安全场景:

领域典型 Integration替代的老组件
日志System logs、Nginx、Apache、Kafka、Docker、Kubernetes、自定义文件/JSON/SyslogFilebeat
指标System metrics、CPU/Memory/Disk、Prometheus scrape、各种中间件 metricsMetricbeat
APMElastic APM独立 APM Server
可用性监控HTTP/TCP/ICMP 探活Heartbeat
合成监控Browser journeys(Playwright 脚本)Synthetics
安全 / EDRElastic Defend(Endpoint Security)、Auditd、OsqueryAuditbeat + Endpoint
网络Flow、Packet capturePacketbeat
云AWS、Azure、GCP 全套服务指标和日志各 cloud beat

在 Elastic 官方的 Integrations 市场里目前有 300+ 个开箱即用的集成,点几下就能启用。

7.1.3 流程详情#

image-20260903164440901
image-20260903164440901

  • 主进程根据 Fleet 下发的 Policy,动态拉起/停止若干子 component(很多其实就是内嵌的 Beat 或 APM Server 逻辑)。
  • 与 Fleet Server 之间维持长连接,实时接收策略变更、上报自身健康状态。
  • 所有 component 共享同一个输出管道(ES / Logstash / Kafka),统一背压和重试。

7.1.4 运行模式#

模式说明适用场景
Fleet-managed(推荐)由 Kibana Fleet 远程管理,UI 点点鼠标即可改配置生产环境、规模化部署
Standalone(独立)不连 Fleet,本地用 elastic-agent.yml 配置离线环境、极简场景、调试

99% 的场景都应该用 Fleet-managed,也就是你前两轮在做的方向。

7.1.4.1 模式特性#

特性FleetStandalone
中央管理支持不支持
Kibana UI支持部分
Agent Policy核心机制本地配置
Integration强支持
大规模 Agent推荐不推荐
自动配置下发支持不支持
集中升级支持手工
配置文件Fleet生成自己维护
学习难度中低
生产环境推荐特殊场景
Ansible 管理可结合很适合

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Elastic Stack部署使用
https://2233941.xyz/posts/Elastic Stack部署使用/
作者
lumifly
发布于
2026-09-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
lumifly
不逐世间万丈星河,自守一隅细碎明光
统计
--
总浏览量
--
今日访问
--
本月访问
✨ 今日一言
"加载中..."
——
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
本年还剩 -- 天--%
本月还剩 -- 天--%
本周还剩 -- 天--%
距离--
--
--
天气预报
最新动态
站点统计
文章
31
分类
2
标签
23
总字数
218,787
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
1
一 、elk stack 简述
1.1 核心三大件
1.2 常用配套组件(扩展)
1.2.1 Beats
1.2.2 其他重要组件
2
二、elk stack组件安装
2.1 Elasticsearch部署
2.1.1 下载二进制包并配置
2.1.2 ES环境配置
2.1.3 ES配置文件修改
2.1.4 修改 JVM 内存配置
2.1.5 配置启动服务并启动
2.1.6 设置 elastic 用户密码
2.1.7 访问ES
2.1.8 调用API查看ES
2.2 Kibana部署
2.2.1 下载二进制包并配置环境
2.2.2 Kibana配置文件修改
2.2.3 配置启动服务并启动
2.2.4 生成注册令牌并访问Kibana
2.3 Logstash部署
2.3.1 下载二进制包并配置环境
2.3.2 配置Logstash
2.3.3 修改logstash配置文件
2.3.4 修改startup.options 文件
2.3.5 修改pipelines.yml文件
2.3.6 配置启动服务
2.4 Beats 组件
2.4.1 FileBeat部署
2.4.2 修改FileBeat配置文件
2.4.3 配置测试
2.4.4 配置启动服务
3
三、Kibana组件使用
3.1添加数据视图
3.1.1 确认数据已成功写入ES
3.1.2 在Kibana中创建数据视图
3.2 使用Discover模块查看数据
3.3 创建可视化图表
3.4 创建仪表盘
4
四、Logstash组件使用
4.1 配置 Logstash
4.2 配置 Filebeat
保留多个采集源:
5
五、APM server组件
5.1 搭配的组件
5.1.1 可选组件
6
六、Fleet组件使用
6.1 创建Fleet服务器
6.1.1 快速创建
6.1.2 高级选项创建
6.2 代理策略使用
6.2.1 代理策略概念
6.2.2 默认代理策略
6.2.3 创建普通代理策略
6.2.4 进入策略页面
6.3 代理策略选项
6.3.1 添加 Fleet 服务器
6.3.2 添加代理
6.3.3 在此策略上升级代理
6.3.4 在此策略上卸载代理
6.4 集成修改
6.5 创建代理
7
七、Elastic Agent
7.1 基本认识
7.1.1 核心组件和概念
7.1.2 核心能力
7.1.3 流程详情
7.1.4 运行模式
文章目录
1
一 、elk stack 简述
1.1 核心三大件
1.2 常用配套组件(扩展)
1.2.1 Beats
1.2.2 其他重要组件
2
二、elk stack组件安装
2.1 Elasticsearch部署
2.1.1 下载二进制包并配置
2.1.2 ES环境配置
2.1.3 ES配置文件修改
2.1.4 修改 JVM 内存配置
2.1.5 配置启动服务并启动
2.1.6 设置 elastic 用户密码
2.1.7 访问ES
2.1.8 调用API查看ES
2.2 Kibana部署
2.2.1 下载二进制包并配置环境
2.2.2 Kibana配置文件修改
2.2.3 配置启动服务并启动
2.2.4 生成注册令牌并访问Kibana
2.3 Logstash部署
2.3.1 下载二进制包并配置环境
2.3.2 配置Logstash
2.3.3 修改logstash配置文件
2.3.4 修改startup.options 文件
2.3.5 修改pipelines.yml文件
2.3.6 配置启动服务
2.4 Beats 组件
2.4.1 FileBeat部署
2.4.2 修改FileBeat配置文件
2.4.3 配置测试
2.4.4 配置启动服务
3
三、Kibana组件使用
3.1添加数据视图
3.1.1 确认数据已成功写入ES
3.1.2 在Kibana中创建数据视图
3.2 使用Discover模块查看数据
3.3 创建可视化图表
3.4 创建仪表盘
4
四、Logstash组件使用
4.1 配置 Logstash
4.2 配置 Filebeat
保留多个采集源:
5
五、APM server组件
5.1 搭配的组件
5.1.1 可选组件
6
六、Fleet组件使用
6.1 创建Fleet服务器
6.1.1 快速创建
6.1.2 高级选项创建
6.2 代理策略使用
6.2.1 代理策略概念
6.2.2 默认代理策略
6.2.3 创建普通代理策略
6.2.4 进入策略页面
6.3 代理策略选项
6.3.1 添加 Fleet 服务器
6.3.2 添加代理
6.3.3 在此策略上升级代理
6.3.4 在此策略上卸载代理
6.4 集成修改
6.5 创建代理
7
七、Elastic Agent
7.1 基本认识
7.1.1 核心组件和概念
7.1.2 核心能力
7.1.3 流程详情
7.1.4 运行模式