当前位置: 首页 > news >正文

ELK日志分析系统完整部署与应用指南

ELK日志分析系统完整部署与应用指南

ELK是一套开源的日志集中化管理解决方案,由Elasticsearch、Logstash、Kibana三大核心组件组成,可解决传统日志管理中分散存储、分析低效、可视化缺失等问题,适用于各类系统与业务日志的采集、处理、存储、分析及展示场景。

一、ELK系统背景与核心价值

1.1 传统日志管理痛点

  • 分散存储:日志分散在多台服务器,运维人员需逐一登录查看,操作繁琐。
  • 分析低效:依赖wcgrepawk等命令,无法满足复杂场景(如多服务器日志合并统计、长周期数据查询)。
  • 可视化缺失:纯文本日志难以直观呈现数据趋势,无法快速定位业务或系统问题。

1.2 ELK核心价值

  • 集中化管理:将多服务器日志统一采集、存储,无需逐机操作。
  • 高效分析:支持复杂查询、多维度统计,快速筛选关键日志数据。
  • 可视化展示:通过图表(折线图、柱状图等)直观呈现日志趋势,如PV/UV、错误日志频次等。
  • 可扩展性:支持集群部署,应对日志数据量增长,保障系统稳定性。

二、ELK组件详解

2.1 核心组件功能

组件核心功能关键作用
Elasticsearch(ES)分布式搜索引擎与文档数据库存储日志数据,提供快速查询、聚合分析能力
Logstash日志采集、过滤、转换从多源采集日志(文件、数据库等),清洗后输出到ES
Kibana日志可视化与仪表盘通过Web界面展示ES中的日志数据,支持自定义报表
Filebeat轻量级日志采集器替代Logstash在终端节点的采集工作,资源占用低(适用于多终端场景)

2.2 组件协作流程

  1. 采集:Filebeat部署在各业务服务器,实时采集本地日志(如Nginx访问日志、系统messages日志)。
  2. 处理:Filebeat将日志发送至Logstash,Logstash对日志进行过滤(如提取IP、时间戳)、格式转换(如JSON标准化)。
  3. 存储:Logstash将处理后的日志输出到Elasticsearch集群,ES通过分片(Shard)和副本(Replica)实现数据分布式存储与高可用。
  4. 展示:Kibana连接ES集群,读取日志数据,生成可视化图表(如PV/UV趋势图、错误日志统计饼图),供用户查看与分析。

三、环境准备

3.1 服务器规划

建议使用4台CentOS 7/8服务器,配置如下(内存可根据日志量调整,ES节点建议≥1.5G):

服务器IP主机名部署组件功能
192.168.100.10vm1.cluster.comKibana日志可视化展示
192.168.100.20vm2.cluster.comElasticsearchES集群节点(主节点)
192.168.100.30vm3.cluster.comLogstash日志采集与处理
192.168.100.40vm4.cluster.comFilebeat轻量级日志采集(终端节点)

3.2 基础环境配置(所有服务器执行)

1. 关闭防火墙与SELinux
# 停止并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
iptables -F# 临时关闭SELinux(永久关闭需修改/etc/selinux/config,设SELINUX=disabled)
setenforce 0
2. 时间同步

确保所有节点时间一致,避免日志时间戳混乱:

# 安装ntp服务
yum install ntp -y
# 重启并设置开机自启
systemctl restart ntpd
systemctl enable ntpd
# 验证时间同步
ntpq -p
3. 配置主机名与Hosts绑定
# 以192.168.100.10为例,设置主机名
hostnamectl set-hostname vm1.cluster.com# 编辑/etc/hosts,添加所有节点映射
cat >> /etc/hosts << EOF
192.168.100.10 vm1.cluster.com kibana
192.168.100.20 vm2.cluster.com elasticsearch
192.168.100.30 vm3.cluster.com logstash
192.168.100.40 vm4.cluster.com filebeat
EOF
4. 安装JDK(ES、Logstash依赖)

ELK组件依赖Java环境,建议安装OpenJDK 1.8:

yum install java-1.8.0-openjdk java-1.8.0-openjdk-headless -y
# 验证安装
java -version

四、Elasticsearch部署与配置

4.1 Elasticsearch简介

Elasticsearch(简称ES)是分布式、RESTful风格的搜索引擎,支持实时存储、检索海量数据,核心特性包括:

  • 分布式存储:通过分片(Shard)将数据分散到多节点,提高存储容量与查询效率。
  • 高可用:通过副本(Replica)实现数据冗余,某节点故障时,副本可替代提供服务。
  • 全文检索:支持复杂查询(如模糊匹配、范围查询),查询响应速度快。

4.2 单机ES部署(以192.168.100.20为例)

1. 下载并安装ES
# 下载ES 6.5.2(文档推荐版本,兼容性稳定)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.rpm
# 安装
rpm -ivh elasticsearch-6.5.2.rpm
2. 配置ES核心参数

编辑配置文件/etc/elasticsearch/elasticsearch.yml(删除注释行后关键配置如下):

# 集群名称(自定义,集群内所有节点需一致)
cluster.name: elk-cluster
# 数据存储路径(默认/var/lib/elasticsearch,建议挂载大容量磁盘)
path.data: /var/lib/elasticsearch
# 日志存储路径
path.logs: /var/log/elasticsearch
# 监听地址(0.0.0.0表示允许所有IP访问)
network.host: 0.0.0.0
# HTTP服务端口(默认9200,用于外部访问)
http.port: 9200
3. 启动并验证ES
# 启动ES服务并设置开机自启
systemctl start elasticsearchss
systemctl enable elasticsearch
# 等待1-2分钟(ES启动较慢),验证端口是否监听
netstat -ntlup | grep java
# 预期输出:tcp6  0  0 :::9200  :::*  LISTEN  [java](9200为HTTP端口,9300为集群通信端口)# 验证ES服务状态(返回JSON格式,status为green表示正常)
curl http://192.168.100.20:9200/_cluster/health?pretty

4.3 ES集群部署(2节点示例:192.168.100.10与192.168.100.20)

1. 集群核心配置参数说明
  • discovery.zen.ping.unicast.hosts:指定集群中所有节点IP,用于节点发现。
  • discovery.zen.minimum_master_nodes:最小主节点投票数,避免“脑裂”(建议设为(N/2)+1,N为候选主节点数)。
  • node.master:是否为候选主节点(true/false)。
  • node.data:是否为数据节点(true/false,建议主节点与数据节点分离,减轻负载)。
2. 节点1配置(192.168.100.20,主节点)
cluster.name: elk-cluster
node.name: 192.168.100.20  # 节点名称(建议用IP或主机名,唯一)
node.master: true     # 作为主节点    
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
# 集群节点列表
discovery.zen.ping.unicast.hosts: ["192.168.100.10", "192.168.100.20"]
3. 节点2配置(192.168.100.10,数据节点)
cluster.name: elk-cluster
node.name: 192.168.100.10
node.master: false    # 不作为候选主节点
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.100.10", "192.168.100.20"]
4. 启动集群并验证
# 分别在两个节点启动ES
systemctl restart elasticsearch# 验证集群状态(访问任意节点IP,number_of_nodes为2表示集群正常)
curl http://192.168.100.20:9200/_cluster/health?pretty
# 预期输出:"number_of_nodes": 2, "number_of_data_nodes": 2

4.4 ES核心概念与关系型数据库对比

ES的核心概念与传统关系型数据库(如MySQL)对应关系如下,便于理解:

关系型数据库(MySQL/Oracle)Elasticsearch说明
Database(数据库)Index(索引)存储一类相关日志数据的集合(如“nginx_access_log”索引存储Nginx访问日志)
Table(表)Type(类型)索引内的逻辑分组(ES 7.x后已移除,建议一个索引对应一种数据类型)
Row(行)Document(文档)索引中的单条日志数据,以JSON格式存储
Column(列)Field(字段)文档中的单个属性(如日志的“ip”“timestamp”“message”字段)

4.5 ES基础API操作

ES通过RESTful API实现数据操作,格式为:

curl -X<HTTP方法> 'http://<ES节点IP>:9200/<路径>?<参数>' -d '<JSON请求体>'
1. 索引操作
# 1. 创建索引(如创建“nginx_access_log”索引)
curl -X PUT http://192.168.100.20:9200/nginx_access_log# 2. 查看所有索引
curl http://192.168.100.20:9200/_cat/indices?v# 3. 删除索引(谨慎操作,数据不可恢复)
curl -X DELETE http://192.168.100.20:9200/nginx_access_log
2. 数据查询(以官方示例数据“bank”为例)
# 1. 下载示例数据
wget https://raw.githubusercontent.com/elastic/elasticsearch/master/docs/src/test/resources/accounts.json# 2. 导入数据到“bank”索引
curl -H "Content-Type: application/json" -XPOST "192.168.100.20:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"# 3. 基础查询(查询所有数据,按account_number升序,返回10条)v# 4. 条件查询(查询余额20000-30000的账户)
curl -X GET "192.168.100.20:9200/bank/_search" -H 'Content-Type: application/json' -d'
{"query": {"bool": {"must": { "match_all": {} },"filter": {"range": {"balance": { "gte": 20000, "lte": 30000 }}}}}
}
'

五、Elasticsearch-Head部署(图形化管理工具)

Elasticsearch-Head是ES的开源图形化工具,支持集群监控、索引管理、数据浏览、查询可视化,需依赖Node.js运行。

5.1 安装Node.js(以192.168.100.20为例)

# 下载Node.js 10.15.0(适配ES-Head)
wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz# 解压到/usr/local目录
tar -xJvf node-v10.15.0-linux-x64.tar.xz -C /usr/local/# 重命名并创建软链接(便于全局调用)
mv /usr/local/node-v10.15.0-linux-x64/ /usr/local/nodejs
ln -s /usr/local/nodejs/bin/node /usr/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm# 验证安装
node -v  # 预期输出v10.15.0
npm -v   # 预期输出6.4.1

5.2 安装与启动ES-Head

# 1. 安装Git(用于克隆ES-Head源码)
yum install git -y# 2. 克隆ES-Head源码
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head# 3. 安装依赖(若下载缓慢,可切换淘宝镜像:npm config set registry https://registry.npm.taobao.org)
npm install -g grunt-cli  # 安装Grunt构建工具
npm install
#安装可能有很多错误,我这里出现了下面的错误(重点是注意红色的ERR!,黄色的WARN不用管)
npm install phantomjs-prebuilt@2.1.16 --ignore-script# 4. 解决ES跨域问题(修改所有ES节点的elasticsearch.yml,添加跨域配置)
cat >> /etc/elasticsearch/elasticsearch.yml << EOF
http.cors.enabled: true    # 允许跨域访问
http.cors.allow-origin: "*"# 允许所有来源访问(生产环境建议限制IP)
EOF# 5. 重启ES服务
systemctl restart elasticsearch# 6. 后台启动ES-Head
nohup npm run start &

5.3 访问与使用ES-Head

  1. 打开浏览器,输入http://192.168.100.20:9100(ES-Head默认端口9100)。
  2. 在页面顶部“Elasticsearch”输入框中,填写ES节点地址(如http://192.168.100.20:9200),点击“连接”。
  3. 连接成功后,可查看:
    • 集群概览:集群健康状态(green/yellow/red)、节点数量。
    • 索引管理:创建/删除索引、查看索引分片与副本。
    • 数据浏览:查看索引中的文档数据,支持条件筛选。
    • 基本查询:可视化构建查询语句,验证查询结果。

六、Logstash部署与日志采集

6.1 Logstash简介

Logstash是日志采集与处理工具,核心流程为“Input→Filter→Output”:

  • Input:采集日志源(如文件、Redis、Beats)。
  • Filter:日志清洗与转换(如提取字段、过滤无用数据、格式标准化)。
  • Output:将处理后的日志输出到目标(如ES、文件、Kafka)。

6.2 Logstash部署(以192.168.100.30为例)

1. 安装Logstash
# 下载Logstash 6.5.2(与ES版本一致,避免兼容性问题)
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.2.rpm# 安装
rpm -ivh logstash-6.5.2.rpm
2. 配置Logstash主配置文件

编辑/etc/logstash/logstash.yml,关键配置如下:

# 数据存储路径
path.data: /var/lib/logstash
# 配置文件目录(Logstash会加载此目录下的.conf文件)
path.config: /etc/logstash/conf.d/
# 日志存储路径
path.logs: /var/log/logstash
# 绑定IP(用于监控,可选)
http.host: "192.168.100.30"
3. 测试Logstash基础功能

创建测试配置文件/etc/logstash/conf.d/test.conf,实现“标准输入→标准输出”:

input {stdin {}  # 从标准输入采集数据
}
filter {# 暂不处理
}
output {stdout { codec => rubydebug }  # 以JSON格式输出到标准输出
}

启动测试:

# 切换到Logstash二进制目录
cd /usr/share/logstash/bin# 测试配置文件语法(返回“Config Validation Result: OK”表示正常)
./logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test.conf -t# 启动Logstash并加载测试配置
./logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test.conf
#测试能启动成功后,出现Successfully started Logstash API endpoint {:port=>9600}
#则ctrl+c取消,则关闭了# 测试:输入任意字符(如“hello elk”),会输出JSON格式的日志数据

6.3 日志采集实战

1. 采集系统messages日志(输出到ES)

创建配置文件/etc/logstash/conf.d/messages.conf

input {file {path => "/var/log/messages"  # 日志文件路径start_position => "beginning"  # 从文件开头开始采集(默认从结尾)sincedb_path => "/dev/null"  # 禁用sincedb(避免记录采集位置,每次重启重新采集)}
}
filter {# 提取日志中的时间戳(匹配messages日志格式:Jan 22 17:39:01)grok {match => { "message" => "%{MONTH:month} %{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{WORD:process}:%{GREEDYDATA:content}" }}# 组合时间戳为标准格式mutate {add_field => { "timestamp" => "%{month} %{day} %{time} %{+YYYY}" }}date {match => [ "timestamp", "MMM dd HH:mm:ss yyyy" ]target => "@timestamp"  # 覆盖默认时间戳字段}
}
output {elasticsearch {hosts => ["192.168.100.10:9200", "192.168.100.20:9200"]  # ES集群节点index => "messages-%{+YYYY.MM.dd}"  # 索引名称(按日期分片)}
}

启动采集:

# 后台启动Logstash(-r参数支持动态加载配置,修改配置无需重启)
nohup /usr/share/logstash/bin/logstash --path.settings /etc/logstash -r -f /etc/logstash/conf.d/messages.conf &# 验证:在ES-Head中查看“messages-当前日期”索引,是否有新数据
2. 采集多日志源(messages与yum.log,分别输出到ES不同索引)

创建配置文件/etc/logstash/conf.d/multi_logs.conf

input {# 采集messages日志file {path => "/var/log/messages"start_position => "beginning"sincedb_path => "/dev/null"type => "messages"  # 自定义类型,用于Output区分}# 采集yum.logfile {path => "/var/log/yum.log"start_position => "beginning"sincedb_path => "/dev/null"type => "yum"  # 自定义类型}
}
filter {# 根据日志类型分别处理if [type] == "messages" {grok {match => { "message" => "%{MONTH:month} %{MONTHDAY:day} %{TIME:time} %{HOSTNAME:hostname} %{WORD:process}:%{GREEDYDATA:content}" }}mutate { add_field => { "timestamp" => "%{month} %{day} %{time} %{+YYYY}" } }date { match => [ "timestamp", "MMM dd HH:mm:ss yyyy" ] target => "@timestamp" }}if [type] == "yum" {grok {match => { "message" => "%{DATE:date} %{TIME:time} %{WORD:action}:%{GREEDYDATA:package}" }}mutate { add_field => { "timestamp" => "%{date} %{time}" } }date { match => [ "timestamp", "yyyy-MM-dd HH:mm:ss" ] target => "@timestamp" }}
}
output {# 根据类型输出到不同ES索引if [type] == "messages" {elasticsearch {hosts => ["192.168.100.10:9200", "192.168.100.20:9200"]index => "messages-%{+YYYY.MM.dd}"}}if [type] == "yum" {elasticsearch {hosts => ["192.168.100.10:9200", "192.168.100.20:9200"]index => "yum-%{+YYYY.MM.dd}"}}
}

启动采集后,可在ES-Head中分别查看“messages-当前日期”和“yum-当前日期”索引的日志数据。

七、Kibana部署与日志可视化(补充文档缺失部分)

7.1 Kibana简介

Kibana是ELK的可视化组件,提供Web界面,支持:

  • 索引模式管理:关联ES中的索引,用于数据查询。
  • Discover(探索):实时查询与筛选ES中的日志数据。
  • Visualize(可视化):创建图表(折线图、柱状图、饼图等)。
  • Dashboard(仪表盘):组合多个可视化图表,形成完整报表(如“系统日志监控仪表盘”“业务PV/UV仪表盘”)。

7.2 Kibana部署(以192.168.100.10为例)

1. 安装Kibana

# 下载Kibana 6.5.2(与ES版本一致)
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.2-x86_64.rpm# 安装
rpm -ivh kibana-6.5.2-x86_64.rpm
#扩展怎么查询已安装的rpm包和怎么删除rpma包
查询
rpm -qa | gerp +包名
删除 
rpm -e 
2. 配置Kibana

编辑/etc/kibana/kibana.yml,关键配置如下:

# 绑定IP(允许外部访问)
server.host: "0.0.0.0"
# ES集群地址(Kibana需连接ES获取数据)
elasticsearch.url: "http://192.168.100.20:9200"
# Kibana日志存储路径
logging.dest: /var/log/kibana/kibana.log
# 索引模式(Kibana自身配置存储在ES的索引,默认.kibana)
kibana.index: ".kibana"
3. 启动Kibana
# 启动并设置开机自启
systemctl start kibana
systemctl enable kibana# 验证端口(Kibana默认端口5601)
netstat -ntlup | grep 5601

7.3 Kibana基础使用

1. 访问Kibana

打开浏览器,输入http://192.168.100.10:5601,首次访问需创建“索引模式”:

  1. 点击左侧“Management”→“Index Patterns”→“Create index pattern”。
  2. 输入索引名称(如“messages-*”,匹配所有messages日志索引),点击“Next step”。
  3. 选择时间戳字段(如“@timestamp”),点击“Create index pattern”。
2. 探索日志数据(Discover)
  1. 点击左侧“Discover”,在顶部时间范围选择器中设置时间(如“Last 24 hours”)。
  2. 下方将展示ES中“messages-*”索引的日志数据,支持:
    • 关键词搜索(如搜索“sshd”查看SSH相关日志)。
    • 字段筛选(如只显示“hostname”“content”字段)。
3. 创建可视化图表(Visualize)

以创建“messages日志按小时统计柱状图”为例:

  1. 点击左侧“Visualize”→“Create a visualization”→选择“Vertical Bar Chart”。
  2. 选择索引模式(如“messages-*”),进入图表配置页。
  3. 在“Buckets”→“X-Axis”中,选择“Date Histogram”,字段选择“@timestamp”,间隔设为“Hourly”,点击“Apply changes”。
  4. 图表将展示每小时messages日志的数量,可点击“Save”保存图表。
4. 创建仪表盘(Dashboard)
  1. 点击左侧“Dashboard”→“Create a dashboard”→“Add”。
  2. 选择之前保存的可视化图表(如“messages日志按小时统计”),点击“Add”。
  3. 可调整图表位置与大小,点击“Save”保存仪表盘(如命名为“系统日志监控”)。

八、Filebeat部署(轻量级采集补充)

8.1 Filebeat简介

Filebeat是Elastic推出的轻量级日志采集器,相比Logstash,具有资源占用低(内存≤100MB)、启动快、稳定性高的特点,适合部署在大量业务服务器上采集日志,再将日志发送至Logstash或ES。

8.2 Filebeat部署(以192.168.100.40为例)

1. 安装Filebeat
# 下载Filebeat 6.5.2(与ES版本一致)
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.2-x86_64.rpm# 安装
rpm -ivh filebeat-6.5.2-x86_64.rpm
2. 配置Filebeat(采集Nginx访问日志,发送至Logstash)

编辑/etc/filebeat/filebeat.yml,关键配置如下:

filebeat.inputs:
- type: log  # 日志类型enabled: truepaths:- /usr/local/nginx/logs/access.log  # Nginx访问日志路径fields:log_type: nginx_access  # 自定义字段,用于区分日志类型# 输出到Logstash(而非直接输出到ES,便于Logstash统一处理)
output.logstash:hosts: ["192.168.100.30:5044"]  # Logstash的Beats输入端口(需在Logstash配置中开启)# 禁用Elasticsearch输出(默认开启,需关闭)
# output.elasticsearch:
#   hosts: ["localhost:9200"]
3. 配置Logstash接收Filebeat数据

在Logstash服务器(192.168.100.30)上创建配置文件/etc/logstash/conf.d/filebeat.conf

input {beats {port => 5044  # 监听5044端口,接收Filebeat数据}
}
filter {# 提取Nginx访问日志字段(匹配格式:192.168.1.1 - - [22/Jan/2024:17:39:01 +0800] "GET / HTTP/1.1" 200 1234)grok {match => { "message" => "%{IPORHOST:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:status} %{NUMBER:body_bytes_sent}" }}date {match => [ "timestamp", "dd/MMM/yyyy:H:m:s Z" ]target => "@timestamp"}
}
output {elasticsearch {hosts => ["192.168.100.10:9200", "192.168.100.20:9200"]index => "nginx_access-%{+YYYY.MM.dd}"}
}
4. 启动Filebeat与Logstash
# 启动Filebeat
systemctl start filebeat
systemctl enable filebeat# 重启Logstash(加载新配置)
pkill -f logstash
nohup /usr/share/logstash/bin/logstash --path.settings /etc/logstash -r -f /etc/logstash/conf.d/filebeat.conf &# 验证:在Kibana中查看“nginx_access-当前日期”索引,是否有Nginx访问日志

九、常见问题与解决方案

9.1 ES启动失败

  • 问题1max virtual memory areas vm.max_map_count [65530] is too low
    解决方案:临时调整内核参数sysctl -w vm.max_map_count=262144,永久调整需编辑/etc/sysctl.conf,添加vm.max_map_count=262144,执行sysctl -p生效。

  • 问题2:ES进程启动后很快退出,日志显示“insufficient memory”。
    解决方案:修改ES堆内存,编辑/etc/elasticsearch/jvm.options,调整-Xms1g-Xmx1g(建议设为系统内存的1/2,且不超过32GB)。

9.2 ES-Head无法连接ES

  • 问题:ES-Head显示“未连接”,控制台报跨域错误。
    解决方案:确认ES节点的elasticsearch.yml中已添加跨域配置(http.cors.enabled: truehttp.cors.allow-origin: "*"),并重启ES服务。

9.3 Logstash采集日志无数据

  • 问题:Logstash启动正常,但ES中无日志数据。
    解决方案:
    1. 检查Logstash配置文件路径是否正确(path.config是否指向/etc/logstash/conf.d/)。
    2. 查看Logstash日志(/var/log/logstash/logstash-plain.log),排查是否有配置错误或权限问题(如日志文件无法读取)。
    3. 确认ES集群地址正确,且Logstash服务器能访问ES的9200端口。

十、总结与扩展建议

10.1 总结

ELK系统通过“采集(Logstash/Filebeat)→存储与分析(ES)→可视化(Kibana)”的流程,完美解决了传统日志管理的痛点,可实现:

  • 多服务器日志集中化存储。
  • 复杂查询与多维度统计(如按时间、IP、日志类型筛选)。
  • 直观的图表展示(如PV/UV趋势、错误日志统计)。

10.2 扩展建议

  1. 性能优化
    • ES集群:增加数据节点,调整分片数量(建议每个分片大小50-100GB),开启分片均衡。
    • Logstash:使用多管道(pipelines)处理不同日志源,避免单管道压力过大;启用持久化队列(Persistent Queues),防止日志丢失。
  2. 高可用
    • ES集群:确保副本数≥1,主节点数≥3,避免“脑裂”。
    • Kibana:使用Nginx反向代理实现多实例负载均衡。
  3. 日志归档
    • 对ES中过期的日志索引,通过Kibana或ES API定期删除,或使用Elasticsearch Curator工具自动管理索引生命周期。
  4. 安全加固
    • ES:开启HTTPS加密,配置用户认证(使用X-Pack插件)。
    • Kibana:配置访问控制,限制仅指定IP可访问。

为了方便你后续部署和维护ELK系统,我可以帮你整理一份ELK部署操作手册,包含各组件的详细命令、配置文件模板、常见问题排查步骤,你需要吗?

http://www.dtcms.com/a/524793.html

相关文章:

  • 浦江做网站茂名网站建设公司
  • 【CVE-2025-40778】通过未经请求的答复记录进行 BIND 9 缓存中毒(内含复现步骤)
  • 架构权衡与实践:基于“约束大于规范”的缓存组件封装
  • 【实战经验】飞牛云 如何使用 SSD 缓存加速?
  • 数据结构--顺序表与链表
  • 网站排名优化课程深圳网站建设开发哪家好
  • 使用 WebSocket 实现手机控制端与电脑展示端的实时通信,支持断线重连、状态同步和双向数据交互。(最优方案)
  • 快递鸟 MCP Server:AI 工具解锁 物流 API 能力,开启智能物流新生态
  • UV Python 包和项目管理工具
  • 使用 Quill 实现编辑器功能
  • 企业网站建设的可行性图片编辑软件加文字
  • 零基础网站建设视频教程做淘宝美工的网站
  • 微米级光斑分析仪市场报告:政策、趋势与前景深度解析
  • 达梦 DM Database 集群:从概念到开发场景
  • 面向社科研究者:用深度学习做因果推断(一)
  • 站长seo计费系统比较好的网页模板网站
  • 【学习笔记】大模型
  • ES7243E 模拟音频转I2S输入给BES I2S_Master数据运行流程分析
  • 虚拟内存与RAM
  • 广州花都区网站建设长沙seo优化排名推广
  • 广告公司网站模版做一家网站要多少钱
  • 【Linux知识】Linux文本操作相关命令行
  • Port设置功能开发实践: Pyside6 MVC架构与Model/View/Delegate模式的应用
  • 白之家低成本做网站深圳比较好的建网站公司
  • 深度学习一些知识点(指标+正则化)
  • 企业官方网站建设的作用仿牌 镜像网站
  • java实现多线程分片下载超大文件,支持HTTPS。
  • 数据结构和算法(十)--B树
  • 从零起步学习MySQL || 第九章:从数据页的角度看B+树及MySQL中数据的底层存储原理(结合常见面试题深度解析)
  • HTTP 与 SOCKS5 代理协议:企业级选型指南与工程化实践