目录
3.安装Elasticsearch(elk1上、elk2上、elk3上)
一、ELK平台介绍
1.ELK概述
a.日志主要包括系统日志、应用程序日志和安全日志
b.日志被分散的存储在不同的设备上
c.集中管理日志后,日志的统计和检索利用grep、awk、wc实现
d.ELK的组成
Elasticsearch
Logstash
Kibana
2.Elasticsearch
a.概述
是一个基于Lucene的搜索服务器
它提供了一个分分布式多用户能力的全文搜索引擎,基于RESTful web接口
- 能够达到实时搜索、稳定、可靠、快速、安装使用方便
b.核心概念
接近实时(NRT):意味着数据从被索引到可被搜索之间存在极短的延迟(通常1秒内)。这是由于 Lucene 的倒排索引机制和 Elasticsearch 的刷新(refresh)机制决定的,默认每1秒刷新一次,使新数据可见
集群(Cluster):是由一个或多个节点(Node)组成的集合,共同存储数据并提供联合索引和搜索能力。
节点(node):是集群中的一个独立服务器,存储数据并参与索引和搜索
索引(index):是类似数据库中的“表”,用于存储具有相似结构的文档(Documents)
类型(type):用于逻辑划分索引中的不同数据结构(类似数据库的“表”)。
文档(document):是 Elasticsearch 中的基本数据单元,以 JSON 格式存储。
分片和复制(shards & replicas):
分片(Shards):索引可以被拆分为多个分片,提高并行处理能力。分片是独立索引单元,可分布在不同节点上。
副本(Replicas):
每个分片可以有多个副本,提供高可用性(节点故障时数据不丢失)和负载均衡(查询可并行执行)。默认情况下,ES 为每个索引创建1个主分片 + 1个副本(可在索引模板中调整)
3.Logstash
a.介绍
由JRsuby语言编写,运行在Java虚拟机上,是一款强大的数据处理工具
可以实现数据传输、格式处理、格式化输出
设计理念:数据输入、数据加工、数据输出
b.工作的三个阶段
input数据输入端,可以接收来自任何地方的源数据
Filter数据中转层,主要进行格式处理,数据类型转换,数据过滤,字段添加、修改等
Output是logstash工作的最后一个阶段,负责将书籍输出到指定位置,兼容大多数应用
4.Kibana
a.介绍
是一个设计使用和Elasticsearch配置工作的开源分析和可视化平台
可以用它进行搜索、查看、集成Elasticserach中的数据索引
可以利用各种图标、报表、地图组件轻松的对数据进行可视化分析
b.主要功能
Elasticsearch无缝集成:支持直接查询、过滤和聚合 ES 索引中的数据
整合数据:支持从多个 Elasticsearch 索引、Logstash 管道或 Beats 采集的数据进行统一分析。
复杂数据分析:支持 聚合(Aggregations) 操作,如 terms(分组统计)、date_histogram(时间序列分析)、avg(平均值计算)等
让更多的团队成员收益:提供 Dashboard(仪表盘) 功能,可将多个可视化图表组合,并支持共享链接或嵌入到其他系统(如 Confluence、Web 应用
接口灵活:提供 REST API,允许开发者以编程方式管理 Kibana 对象
配置简单:通过 Management 模块可轻松管理索引模式、用户权限、警报规则等
可视化多数据源:支持多种图表类型(柱状图、折线图、饼图、热力图等),并可结合 Maps 插件展示地理数据。
简单数据导出:支持将查询结果或图表导出为 CSV、PDF、PNG 格式,方便分享或进一步分析。
二、部署ES群集
1.资源清单
操作系统 |
IP地址 |
主机名 |
软件包 |
OpenEuler 24.03 |
192.168.16.142 |
elk1 |
Elasticsearch、logstash、kibana |
OpenEuler 24.03 |
192.168.16.143 |
elk2 |
Elasticsearch、filebeat、httpd |
OpenEuler 24.03 |
192.168.16.144 |
elk3 |
Elasticsearch、 |
2.基本配置
a.设置主机名
hostnamectl set-hostname elk1
hostnamectl set-hostname elk2
hostnamectl set-hostname elk3
b.在ES主机上设置Host文件(elk1上、elk2上、elk3上)
vi /etc/hosts
192.168.16.142 elk1
192.168.16.143 elk2
192.168.16.144 elk3
c.创建es运行用户(elk1上、elk2上、elk3上)
useradd es
d.安装java环境(elk1上、elk2上、elk3上)
dnf -y install java-11 tar
java -version
e.设置访问限制(elk1上、elk2上、elk3上)
vi /etc/security/limits.conf
es soft nofile 65535
es hard nofile 65535
es soft nproc 65535
es hard nproc 65535
es soft memlock unlimited
es hard memlock unlimited
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
3.安装Elasticsearch(elk1上、elk2上、elk3上)
a.安装Elasticsearch
tar zxf elasticsearch-7.10.0-linux-x86_64.tar.gz
mv elasticsearch-7.10.0 /usr/local/elasticsearch
vi /usr/local/elasticsearch/config/jvm.options
-Xmx2g #22
-Xmx2g
b.更改Elasticsearch主配置文件
#第一台更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: kgc-elk-cluster #17行,群集名称
node.name: elk1 #23行,本节点主机名
path.data: /elk/data #33行,数据文件路径
path.logs: /elk/logs #37行,日志文件路径
bootstrap.memory_lock: false #43行,锁定物理内存
network.host: 0.0.0.0 #55行,监听地址
http.port: 9200 #59行,监听端口
discovery.seed_hosts: ["elk1", "elk2","elk3"] #68行,群集中的主机列表
cluster.initial_master_nodes: ["elk1"] #72行,master主机名称
#推送配置文件到第二台
scp /usr/local/elasticsearch/config/elasticsearch.yml elk2:/usr/local/elasticsearch/config/elasticsearch.yml
#推送配置文件到第三台
scp /usr/local/elasticsearch/config/elasticsearch.yml elk3:/usr/local/elasticsearch/config/elasticsearch.yml
#第二台更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk2 #23行,本节点主机名
#第三台更改
vi /usr/local/elasticsearch/config/elasticsearch.yml
node.name: elk3 #23行,本节点主机名
c.创建数据存放路径并授权
mkdir -p /elk/data
mkdir -p /elk/logs
chown -R es:es /elk/
chown -R es:es /usr/local/elasticsearch
d.启动es
su - es
nohup /usr/local/elasticsearch/bin/elasticsearch &
exit
e.查看节点信息
ss -nlpt | grep 9200
LISTEN 0 4096 *:9200 *:* users:(("java",pid=3136,fd=253))
4.安装logstash(elk1上)
a.在logstash服务器上安装logstash
#安装
tar zxf logstash-7.10.0-linux-x86_64.tar.gz
mv logstash-7.10.0 /usr/local/logstash
chmod -R 777 /usr/local/logstash/data
#添加服务
vi /usr/local/logstash/system.conf
input {
file{
path =>"/var/log/messages"
type =>"system"
start_position =>"beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.16.142:9200"]
index =>"system-%{+YYYY.MM.dd}"
}
}
#添加读权限
chmod +r /var/log/messages
b.测试安装结果
#采集日志(启动)
/usr/local/logstash/bin/logstash -f /usr/local/logstash/system.conf
#访问验证(elk3上)
curl -XGET "http://localhost:9200/_cat/indices"
#green open system-2025.05.20 xnX0OgCxTmGZ6Msy5A1aXA 1 1 14184 0 5.8mb 2.8mb
5.Filebeat
a.在产生日志的客户端上安装Filebeat(elk2上)
dnf install -y httpd
systemctl start httpd
b.安装filebeat(elk2上)
tar zxf filebeat-7.10.0-linux-x86_64.tar.gz
mv filebeat-7.10.0-linux-x86_64 /usr/local/filebeat
c.配置web01服务器filebeat的输出(elk2上)
vi /usr/local/filebeat/filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/httpd/access_log
output.logstash:
hosts: ["192.168.16.142:5044"]
d.修改logstash的配置文件(elk1上)
vi /usr/local/logstash/config/beats.conf
input {
beats {
port => "5044"
codec => "json"
}
}
seccomp:
enabled: false
output{
elasticsearch {
hosts => ["192.168.16.142:9200"]
index => "weblog-beat-%{+YYYY.MM.dd}"
}
}
e.运行logstash并验证(elk1上)
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/beats.conf --path.data=/usr/local/logstash/config.d/web01 &> /tmp/logstash.log &
f.启动(elk2上)
/usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml
6.安装Kibana(elk1上)
a.在elk1上安装Kibana
tar zxf kibana-7.10.0-linux-x86_64.tar.gz
mv kibana-7.10.0-linux-x86_64 /usr/local/kibana
b.修改Kibana主配置文件
vi /usr/local/kibana/config/kibana.yml
server.port: 5601 #2行
server.host: "0.0.0.0" #7行
elasticsearch.hosts: ["http://192.168.16.142:9200"] #28行
kibana.index: ".kibana" #32行
chown -R es:es /usr/local/kibana
c.启动Kibana服务
su - es
nohup /usr/local/kibana/bin/kibana &nohup /usr/local/kibana/bin/kibana &
d.验证Kibana
http://192.168.16.142:5601/
e.将elk1主机的系统日志添加到kinnba