ELK分布式日志实时监控系统搭建实录(避坑指南)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 文本主要记录ELK搭建过程的主要步骤,使用组件:filebeat+logstash+elasticsearch+kibana。filebeat收集日志给到logstash(logstash也可以单独干这个活)elasticsearch可以说是个索引数据库也可以认为是搜索引擎,他主要负责数据的存储,这里就是日志信息了,kibana则是一个可视化的elasticsearch的操作工具。

前言:文本主要记录ELK搭建过程的主要步骤,使用组件:filebeat+logstash+elasticsearch+kibana。filebeat收集日志给到logstash(logstash也可以单独干这个活)elasticsearch可以说是个索引数据库也可以认为是搜索引擎,他主要负责数据的存储,这里就是日志信息了,kibana则是一个可视化的elasticsearch的操作工具。


一、组件安装



1.elasticsearch安装与配置


# 下载地址一:https://www.elastic.co/cn/downloads/elasticsearch
# 下载地址二:https://mirrors.huaweicloud.com/elasticsearch/
# es与logstash都是java开发的需要以来jdk,此外注意jdk版本,es6以上应该都是至少需要jdk8及以上版本了
[root@localhost ~]# wget https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-linux-x86_64.tar.gz
# 下载完成后,解压到自己喜欢的随便路径即可
# 然后修改配置文件就行 config/elasticsearch.yml
node.name: node-1 # 设置节点名
network.host: 0.0.0.0 # 允许外部 ip 访问
cluster.initial_master_nodes: ["node-1"] # 设置集群初始主节点
# 若是不想用root访问就自己建个用户吧,然后给个用户权限:chown -R 用户 /usr/local/elasticsearch
# 启动 es
nohup ./bin/elasticsearch.yml -d & 
# 验证
http://ip:9200


2.logstash安装与配置


# 下载地址一:https://mirrors.huaweicloud.com/logstash
[root@localhost ~]# wget https://mirrors.huaweicloud.com/logstash/7.8.0/logstash-7.8.0.tar.gz
# 解压到指定目录,logstash也需要依赖jdk,logstash的版本需要与es保持一致
# 修改配置文件 config/logstash.conf
# 这里是使用filebeat收集数据,5044用于接收filebeat的数据,下面的output则是数据输出到es,index则是声明数据在es中的索引
input {
  beats {
    port => 5044
  }
}
output {
       if [filetype] == "mdm-org-server" { # 输出es,这的filetype就是在filebeat那边新增的自定义字段名
         elasticsearch {
            hosts => ["10.3.8.136:9200"] # 10.3.8.136 es的ip
            index => "mdm-org-server-%{+YYYY.MM.dd}" # 自定义es中的索引名
        }
       } else if [filetype] == "mdm-project-server" {
         elasticsearch {
            hosts => ["10.3.8.136:9200"]
            index => "mdm-project-server-%{+YYYY.MM.dd}"
        }
       }
}
# 启动logstash
nohup ./bin/logstash -f ./config/logstash-es.conf &


3.filebeat安装与配置


# filebeat不是java是go开发的,所以较java轻量级一些,无需依赖jdk
# 下载地址一:https://www.elastic.co/cn/downloads/past-releases#filebeat
# filebeat用于收集日志,下面是基本配置,logtype是自定义属性,用来区分不同服务,日志收集可用-来分组
filebeat:
  prospectors:
    -
      paths:
        - /apps/server-admin/mdm-servers/mdm-acceptor-server/logs/*.log
      input_type: log
      fields:
          logtype: mdm-acceptor-server
    -
      paths:
        - /apps/server-admin/mdm-servers/mdm-case-server/logs/*.log
      input_type: log
      fields:
          logtype: mdm-case-server    
# 启动filebeat,注意配置文件别错了,不然启动会失败
nohup ./filebeat -e -c filebeat.yml &             


4.kibana安装与配置


# 下载地址一:https://mirrors.huaweicloud.com/kibana
# 下载安装包
[root@localhost ~]# wget https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-linux-x86_64.tar.gz
# 修改配置文件,config/kibana.yml
server.port: 5601
server.host: "0.0.0.0" # 服务器ip  本机
elasticsearch.hosts: ["http://192.2.1.112:9200"] # Elasticsearch 服务地址
i18n.locale: "zh-CN" # 中文
# 启动kibana
nohup ./bin/kibana ./config/kibana.yml &
# 验证 http://ip:5601 查看页面是否正常即可


如果按照上面的四部走过来基本不会又什么特殊问题,需要注意的是filebeat需要依赖logstash的端口,所以启动filebeat之前logstash必须启动,而启动logstash则需要先启动es,最后在启动kibana就对了,所以他们四个的正常顺序应该是:filebeat–>logstash–>es–>kibana


二、可能碰到的问题



1.filebeat与logstash重启数据收集失败问题


若是重启了logstash而没有重启可能会碰倒这个问题,建议重启logstash以后再重启一次filebeat即可。


2.如何实现分布式日志的收集


这个在上面的配置中其实已经做了,使用filebeat收集日志时支持多文件的同时收集,只需要像笔者那这样分割开多个配置即可,然后在logstash中区分收集到的日志把日志写到不同的索引里即可。那要是一个服务多个节点呢?若是一个服务需要收集两个节点的日志的话,则只需要将两个节点都配置上filebeat即可,且保持配置一样就行,就是这么简单。


3.如是有其他问题


笔者搭建时也有参考过下面这位道友的文章,其他问题建议参考这位道友的文章

建议参考:https://blog.csdn.net/sinat_27245917/article/details/108123826


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
14天前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
68 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
14天前
|
存储 监控 安全
|
1月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
46 3
|
1月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
1月前
|
消息中间件 存储 监控
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
|
1月前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
69 2
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
29天前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
1月前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
33 0
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?