一文吃透企业级elk技术栈:elk 各组件调试

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 调试需先理解逻辑与程序调用顺序。本文介绍filebeat、kafka、logstash和es的数据推送流程及调试方法:filebeat传输数据检查包括服务状态、配置与日志;kafka调试涵盖服务状态、端口与日志;logstash调试需检查配置文件、日志与流量;es直接通过kibana查看。还介绍了使用rsyslog接收防火墙/waf/交换机日志的方法。

任何的调试都需要先明白逻辑,知道程序的调用的先后顺序。

我这里是 filebaet --> kafka --> logstash --> es --> kibana 数据推送。

filebaet 调试

​ 如何确定 filebaet 是否在传输数据

# 查看服务状态
systemctl status filebeat.service

# 检查配置文件是否正确
filebeat test config -e

# 检查 es / Logstash / kafka 的连接是否正常
filebeat test output

# 检查日志
tail -f /var/log/filebeat/filebeat

# 检查系统日志是否存在错误
tail -f /var/log/messages

# telnet es/logstash/kafka端口
telnet 10.10.1.10 9092

# iftop 查看流量
iftop

# tcpdump 抓包查看是否有流量
tcpdump -i any   host 10.10.1.10 and port 9092

kafka 调试

# 查看 kafka  状态
systemctl status kafka

# 查看 zookeeper 状态
/usr/local/zookeeper/bin/zkServer.sh status

# 查看端口
netstat -lntp

# telnet 

# 查看日志
tail -f /usr/local/kafka/logs/server.log
# 查看 topic 信息
/usr/local/kafka/bin/kafka-topics.sh --describe --bootstrap-server 10.10.1.10:9092 --topic elktest

有时候显示 Leader:noe 则说明集群可能存在问题

# 查看实时数据流
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.1.10:9092,10.10.1.11:9092,10.10.1.12:9092 --topic elktest 

# 从头查看消费的数据
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.1.10:9092,10.10.1.11:9092,10.10.1.12:9092  --topic elktest --from-beginning

没数据可能就是有问题

logstash 调试

一定要按功能分开每个 logstash 的文件
调试正则时可以在 kibana 页面的开发者工具中进行调整

# 查看状态
systemctl status logstash.service

# 查看日志
tail -f /var/log/logstash/logstash-plain.log

grep -i  'error' /var/log/logstash/logstash-plain.log

# telnet kafka / es 的地址端口

# tcpdump 抓包查看是否有流量
tcpdump -i any   host 10.10.1.10 and port 9200

重点过滤下 error 信息

# 检查配置文件是否错误
/usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/nginx.conf
WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults
Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console
[INFO ] 2024-08-27 21:27:28.219 [main] runner - Starting Logstash {"logstash.version"=>"7.9.2", "jruby.version"=>"jruby 9.2.13.0 (2.5.7) 2020-08-03 9a89c94bcc OpenJDK 64-Bit Server VM 25.322-b06 on 1.8.0_322-b06 +indy +jit [linux-x86_64]"}
[WARN ] 2024-08-27 21:27:28.568 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified
[INFO ] 2024-08-27 21:27:31.321 [LogStash::Runner] Reflections - Reflections took 87 ms to scan 1 urls, producing 22 keys and 45 values
Configuration OK  # 这就没毛病
[INFO ] 2024-08-27 21:27:31.902 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
# 修改日志级别为 debug
vim /etc/logstash/logstash.yml
log.level: debug
# 将输出改成输出到控制台
vim   /etc/logstash/conf.d/nginx.conf
···

output {
  stdout {
    codec => rubydebug
  }
}

最简单的办法就是使用排除法,将配置文件移走,在重启 logstash 看看 es 里有没有数据。

简单的可以用系统日志做测试,开启 ssh 新连接和关闭连接都能产生日志。

es 调试

直接从 kibana 看正常不正常就好了

关于获取防火墙 waf 交换机日志

需要在防火墙/waf/交换机上配置推送地址,在服务器上使用 rsyslog 的 514 端口接收日志,保存到服务器上后,使用 filebate 推送即可。

rsyslog 配置极为简单,自行百度即可。

相关文章
|
3月前
|
监控
一文吃透企业级elk技术栈:9. zabbix结合logstash告警
一文吃透企业级elk技术栈:9. zabbix结合logstash告警
|
3月前
|
NoSQL 关系型数据库 MySQL
一文吃透企业级elk技术栈:7. 验证结果
一文吃透企业级elk技术栈:7. 验证结果
|
3月前
|
监控 关系型数据库 MySQL
一文吃透企业级elk技术栈:11. zabbix报警实现
一文吃透企业级elk技术栈:11. zabbix报警实现
一文吃透企业级elk技术栈:10. es数据生命周期管理
一文吃透企业级elk技术栈:10. es数据生命周期管理
|
3月前
|
NoSQL 关系型数据库 MySQL
一文吃透企业级elk技术栈:6. filebeat安装配置
一文吃透企业级elk技术栈:6. filebeat安装配置
|
3月前
|
监控 NoSQL 关系型数据库
一文吃透企业级elk技术栈:5. logstatsh 安装配置
一文吃透企业级elk技术栈:5. logstatsh 安装配置
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
18天前
|
存储 监控 安全
|
3月前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
3月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
155 6