安装ELK

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 通过样例"照猫画虎"

相关推荐
better_liang2 天前
每日Java面试场景题知识点之-ELK日志分析
java·elk·微服务·面试题·日志分析·企业级开发
better_liang2 天前
每日Java面试场景题知识点之-ELK技术栈实战应用
java·elk·elasticsearch·kibana·logstash·日志分析·企业级应用
MengMeng_10235 天前
Wazuh-rule与飞书通知
elk·飞书
Elastic 中国社区官方博客7 天前
Elasticsearch:在 Streams 中使用 ML 自动化 log 解析
大数据·运维·elk·elasticsearch·搜索引擎·自动化·全文检索
better_liang7 天前
每日Java面试场景题知识点之-ELK技术栈在Java企业级项目中的应用
java·elk·elasticsearch·微服务架构·kibana·logstash·日志管理
三不原则9 天前
ELK 栈入门:日志收集与分析的基础配置步骤
elk
eight *9 天前
docker部署elk+filebeat日志收集分析系统
elk·docker·容器
Familyism10 天前
ELK 全链路核心知识
elk
oMcLin10 天前
如何在 Linux 服务器上部署 ELK 日志分析系统(技术深度详解)
linux·服务器·elk