ELK集成日志与日志检索

发布时间:2026/7/16 3:59:28
ELK集成日志与日志检索 ELK分别指的是EElasticsearch存储LLogstash收集KKibana查询Elasticsearch语法比较多、涉及的技术点也比较多以后单独出一篇此篇只简单写一下日志在ELK中的入门使用。1、首先下载Elasticsearch去官网下载https://www.elastic.co/cn/downloads/elasticsearch2、cd 到该文件夹下面的bin目录下执行./elasticsearch 启动elasticsearch默认的端口号是9200浏览器访问http://localhost:9200/返回以上数据代表Elasticsearch启动成功Mac系统启动时可能会遇到下面的问题提示Apple无法验证“jdk”是否包含可能危害Mac安全或泄漏隐私的恶意软件。执行将路径替换为你实际的 elasticsearch 解压目录xattr -r -d com.apple.quarantine /你的路径/elasticsearch-8.x.x/如果没有被Mac标记为“隔离属性”无需执行sudo xattr -d com.apple.quarantine /路径/jdk/Contents/Home/bin/java注意Elasticsearch 8.x 及以上版本为了安全默认开启了身份认证用户名/密码和 HTTPS 加密通信。为了本地开发方便找到config 目录下面的 elasticsearch.yml 文件里面有一行配置修改为xpack.security.enabled: false重启Elasticsearch2、下载Logstash去官网下载https://www.elastic.co/cn/downloads/logstash3、cd到 /logstash-9.4.3/bin下面新建一个配置文件名字可换logstash-elasticsearch.conf内容input { file { #收集这个路径下面所有以.log结尾的日志 path /日志绝对路径/logs/system/*.log start_position beginning } } filter { # 使用grok将非结构化的日志解析为结构化字段 grok { match { message %{COMBINEDAPACHELOG} } } # 解析并统一时间字段 date { match [ timestamp, dd/MMM/yyyy:HH:mm:ss Z ] } } output { elasticsearch { #elasticsearch地址 hosts [localhost:9200] #索引名字 index system-%{YYYY.MM.dd} } # 同时输出到控制台用于调试 stdout { codec rubydebug } }收集的日志路径地址一定弄对因为弄错路径找了好几次原因文件后缀是.conf,再后面没有任何后缀了4、启动logstashcd到bin目录下执行命令./logstash -f bin/logstash-elasticsearch.conf控制台上会有日志输出[INFO ][logstash.agent ] Successfully started Logstash API endpoint {port: 9600, ssl_enabled: false}注意此处明明已经在bin目录下了为什么不直接执行./logstash -f logstash-elasticsearch.conf而是要在前面加/bin因为Logstash 启动脚本会在内部把当前工作目录切换到安装根目录即 /logstash-9.4.3/这是Logstash常见做法Logstash默认是增量读取日志只有第一次是全量读取5、下载Kibana地址https://www.elastic.co/cn/downloads/kibana6、cd 到/kibana-9.4.3/bin执行命令./kibana7、访问http://localhost:5601/启动成功8、查看连接的Elasticsearch点击左侧三道杠的图标往下划看到Dev Tools点进去9、左侧DSL执行右侧是结果。10、这三个菜单点任何一个进去都可以目前不知道菜单啥意思11、进入页面点击Index Management可以看到目前Elasticsearch库里面的所有索引也可以点击按钮直接创建索引还没研究这是之前测试用DSL创建的索引和读取的日志创建的索引12、跳转到DSL执行执行页面检索一下日志比如检索GlobalExceptionHandlermessage对应的就是日志里面的内容结果如右图没有查找到其实文档中是有这个关键字的那为什么检索不到呢这就涉及到分词器目前使用的是默认的分词器可以根据自己的需求引入第三方的分词器。日志中的异常是这样的GlobalExceptionHandler前面还有c.r.c.s.h.查看下c.r.c.s.h.GlobalExceptionHandler的分词token是整个的c.r.c.s.h.GlobalExceptionHandler所以单独检索GlobalExceptionHandler没有检索到内容。接下来改为下面的DSL执行即可检索到相应的结果如图如果一定要根据GlobalExceptionHandle去检索有其他的检索方式大家可以自行上网查询学习。13、检索一个直接可以检索到的关键字比如要看某个时间点的日志如图检索结果直接出现在右侧看一下20:27:41关键字是如何分词的如下图ELK集成日志与检索先写到这里了Elasticsearch是个强大的工具它的语法和原理等都值得研究以上算是个小小的入门吧