ELK 是一套日志采集、处理、存储、分析可视化的完整工具链由 Elasticsearch、Logstash、Kibana 三个核心组件组成加上 Filebeat 就构成了现在主流的 ELK Stack也叫 Elastic Stack1. 日志采集Filebeat 从业务服务器拉取日志监听/var/log/nginx/access.log和/var/log/nginx/error.log文件实时读取新写入的日志给日志打上host、tags等元数据比如tags: [access]把日志通过5044端口发送给 Logstash2. 日志处理Logstash 清洗和分流数据Logstash 是整个流程的 “大脑”分为 3 个阶段Input输入接收 Filebeat 发来的日志监听 5044 端口同时也能读取本地/var/log/messages系统日志Filter过滤统一字段把不同来源日志的主机名归一化成hostname字段结构化解析用grok把 Nginx 日志的message拆分成remote_addr、status、path等字段数据清洗过滤掉无用日志、格式转换Output输出根据hostname和tags分流logstash主机的系统日志 → 写入system-log-*索引server1的 access 日志 → 写入server1-nginx-access-log-*索引server1的 error 日志 → 写入server1-nginx-error-log-*索引3. 数据存储Elasticsearch 持久化存储日志Logstash 把处理好的日志通过9200端口写入 Elasticsearch按日期自动创建索引比如server1-nginx-access-log-2026.05.19支持全文检索、按字段筛选、聚合统计是整个流程的 “数据仓库”4. 可视化分析Kibana 操作日志数据你在 Kibana 里看到的日志就是从 Elasticsearch 中读取的Discover按时间、字段筛选日志排查问题比如你刚才看到的favicon.ico错误Visualize制作柱状图、饼图分析 Nginx 状态码占比、热门请求路径Dashboard把多个图表组合成监控大盘实时展示业务访问情况ElasticsearchLogstashFilebeatKibana部署创建es节点编写文件vim /etc/host下载环境 yum install -y lrzsz拉入准备好的压缩包rpm -ivh elasticsearch-7.17.3-x86_64.rpmrpm -ivh logstash-7.17.3-x86_64.rpmrpm -ivh kibana-7.17.3-x86_64.rpmrpm -ivh filebeat-7.17.3-x86_64.rpm依次在每个节点安装设置JVM最大堆内存大小和初始堆内存大小为 2GBvim /etc/elasticsearch/jvm.optionsvim /etc/elasticsearch/elasticsearch.yml打开集群名 更改节点名打开网络IP并更改为本机IP 打开端口号写入本节点名在末尾加入解决跨域问题启动服务systemctl enable --now elasticsearch.service会启两个端口 一个9200是数据传输端口 另一个9300是集群内部通信端口查看集群健康状态curl -XGET 192.168.11.100:9200/_cluster/health?prettygreen代表可用 yellow表有警告 red代表不可用网页也可以访问192.168.11.100:9200/_cluster/health?pretty查看节点状态192.168.11.100:9200/_cat/nodes?v创建logstash节点vim /etc/host更改主机名vim /etc/logstash/logstash.yml更改监听地址和监听端口范围命令链接命名ln -s /usr/share/logstash/bin/logstash /usr/local/bin/标准输入与输出测试命令logstash -e input{ stdin{} }output { stdout{} }使用rubydebug解码logstash -e input { stdin{} } output { stdout{ codecrubydebug }}输出到elasticsearch节点IPlogstash -e input { stdin{} } output { elasticsearch{ hosts[192.168.11.100:9200]} } 在网页查看索引继续在logstash节点编写数据大小变化证明连接正常验证**收集不同主机及对应应用的不同日志**创建文件vim /etc/logstash/conf.d/pipeline.conf启动命令nohup logstash -f /etc/logstash/conf.d/pipeline.conf 在kibana节点写当前节点IP地址节点名写es节点IP地址和端口打开kibana的索引打开汉化启动服务systemctl enable --now kibana.service在nginx节点下载yum install -y nginx在logstash节点停掉开启输入路径 写上需要的日志地址编写logstash节点vim /etc/logstash/conf.d/pipeline.conf在logstash节点执行logstash -f /etc/logstash/conf.d/pipeline.conf在server1节点执行如果要分别记录索引vim /etc/filebeat/filebeat.yml重启服务systemctl restart filebeat.service在logstash节点执行 vim /etc/logstash/conf.d/pipeline.conflogstash -f /etc/logstash/conf.d/pipeline.conf
k8s-elk日志分析组件学习
发布时间:2026/5/20 9:41:32
ELK 是一套日志采集、处理、存储、分析可视化的完整工具链由 Elasticsearch、Logstash、Kibana 三个核心组件组成加上 Filebeat 就构成了现在主流的 ELK Stack也叫 Elastic Stack1. 日志采集Filebeat 从业务服务器拉取日志监听/var/log/nginx/access.log和/var/log/nginx/error.log文件实时读取新写入的日志给日志打上host、tags等元数据比如tags: [access]把日志通过5044端口发送给 Logstash2. 日志处理Logstash 清洗和分流数据Logstash 是整个流程的 “大脑”分为 3 个阶段Input输入接收 Filebeat 发来的日志监听 5044 端口同时也能读取本地/var/log/messages系统日志Filter过滤统一字段把不同来源日志的主机名归一化成hostname字段结构化解析用grok把 Nginx 日志的message拆分成remote_addr、status、path等字段数据清洗过滤掉无用日志、格式转换Output输出根据hostname和tags分流logstash主机的系统日志 → 写入system-log-*索引server1的 access 日志 → 写入server1-nginx-access-log-*索引server1的 error 日志 → 写入server1-nginx-error-log-*索引3. 数据存储Elasticsearch 持久化存储日志Logstash 把处理好的日志通过9200端口写入 Elasticsearch按日期自动创建索引比如server1-nginx-access-log-2026.05.19支持全文检索、按字段筛选、聚合统计是整个流程的 “数据仓库”4. 可视化分析Kibana 操作日志数据你在 Kibana 里看到的日志就是从 Elasticsearch 中读取的Discover按时间、字段筛选日志排查问题比如你刚才看到的favicon.ico错误Visualize制作柱状图、饼图分析 Nginx 状态码占比、热门请求路径Dashboard把多个图表组合成监控大盘实时展示业务访问情况ElasticsearchLogstashFilebeatKibana部署创建es节点编写文件vim /etc/host下载环境 yum install -y lrzsz拉入准备好的压缩包rpm -ivh elasticsearch-7.17.3-x86_64.rpmrpm -ivh logstash-7.17.3-x86_64.rpmrpm -ivh kibana-7.17.3-x86_64.rpmrpm -ivh filebeat-7.17.3-x86_64.rpm依次在每个节点安装设置JVM最大堆内存大小和初始堆内存大小为 2GBvim /etc/elasticsearch/jvm.optionsvim /etc/elasticsearch/elasticsearch.yml打开集群名 更改节点名打开网络IP并更改为本机IP 打开端口号写入本节点名在末尾加入解决跨域问题启动服务systemctl enable --now elasticsearch.service会启两个端口 一个9200是数据传输端口 另一个9300是集群内部通信端口查看集群健康状态curl -XGET 192.168.11.100:9200/_cluster/health?prettygreen代表可用 yellow表有警告 red代表不可用网页也可以访问192.168.11.100:9200/_cluster/health?pretty查看节点状态192.168.11.100:9200/_cat/nodes?v创建logstash节点vim /etc/host更改主机名vim /etc/logstash/logstash.yml更改监听地址和监听端口范围命令链接命名ln -s /usr/share/logstash/bin/logstash /usr/local/bin/标准输入与输出测试命令logstash -e input{ stdin{} }output { stdout{} }使用rubydebug解码logstash -e input { stdin{} } output { stdout{ codecrubydebug }}输出到elasticsearch节点IPlogstash -e input { stdin{} } output { elasticsearch{ hosts[192.168.11.100:9200]} } 在网页查看索引继续在logstash节点编写数据大小变化证明连接正常验证**收集不同主机及对应应用的不同日志**创建文件vim /etc/logstash/conf.d/pipeline.conf启动命令nohup logstash -f /etc/logstash/conf.d/pipeline.conf 在kibana节点写当前节点IP地址节点名写es节点IP地址和端口打开kibana的索引打开汉化启动服务systemctl enable --now kibana.service在nginx节点下载yum install -y nginx在logstash节点停掉开启输入路径 写上需要的日志地址编写logstash节点vim /etc/logstash/conf.d/pipeline.conf在logstash节点执行logstash -f /etc/logstash/conf.d/pipeline.conf在server1节点执行如果要分别记录索引vim /etc/filebeat/filebeat.yml重启服务systemctl restart filebeat.service在logstash节点执行 vim /etc/logstash/conf.d/pipeline.conflogstash -f /etc/logstash/conf.d/pipeline.conf