【云上ELK系列】阿里云Elasticsearch的Apache日志分析实践

简介: 阿里云Elasticsearch采集上游数据的方式有很多种,其中有一个与开源完全兼容的方案:通过logstash及logstash周围的强大的plugin实现数据采集。 首先我们需要在ECS中来安装部署logstash,购买阿里云ECS服务,准备1.8以上版本的JDK。

阿里云Elasticsearch采集上游数据的方式有很多种,其中有一个与开源完全兼容的方案:通过logstash及logstash周围的强大的plugin实现数据采集。

首先我们需要在ECS中来安装部署logstash,购买阿里云ECS服务,准备1.8以上版本的JDK。

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.3.tar.gz

解压安装

tar -xzvf logstash-5.5.3.tar.gz

通过logstash来做数据写elasticsearch的方案,我们需要创建一个logstash的管道,logstash的管道分为三个部分:

input {   
}
# 该部分被注释,表示filter是可选的
filter {  
}
output {   
}
  • 其中input中配置数据源;
  • output中配置目标源;
  • filter是可选配的部分,一般会配置数据过滤的逻辑;

这部分配置很简单,在logstash的目录下创建一个.conf的文件,按照上述的格式配置input和output:

input {
    file {
        path => "/usr/local/demoData/*.log"
        start_position => beginning
    }
}
output {
    elasticsearch {
        hosts => ["http://*******************:9200"]
        user => "*******"
        password => "***********"
    }
}

注:阿里云elasticsearch由于预置了X-Pack插件,所有的访问均需要做认证,您的output中需要配置username和password信息。

这次我希望将阿里云ECS上经常产生的Apache日志indexing到elasticsearch中,可以将logstash直接部署在web server所在的ECS中,如果担心影响业务,可以部署在网络可达的另一台ECS中。

注:logstash的input支持很多输入形式,如果将logstash部署在网络可达的另一台ECS中,则需要配置http的input格式模板,具体可以参考文档

input {
 http {
      host => "**********"
   port => "**********"
 }
}

由于阿里云Elasticsearch部署在VPC环境内,如果部署logstash的ECS处于经典网络,需要通过Classiclink的方式与VPC做打通

接下来介绍如何通过logstash的filter快速解析Apache日志
Apache日志中一般会包含如下信息:
|Information|Field Name|
|-----------|----------|
|IP Address |clientip |
|User ID |ident |
|User Authentication|auth|
|timestamp | timestamp|
|HTTP Verb | verb|
|Request body | request|
|HTTP Version | httpversion|
|HTTP Status Code|response|
|Bytes served|bytes|
|Referrer URL|referrer|
|User agent|agent|

假设我们希望从日志中发觉一些用户分布的信息,并且让不关系技术的运营同学可以直观的感受到,我们选择用Gork过滤器来解析Apache网络日志。

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
}

可以将原始的日志信息:

66.249.73.135 - - [04/Jan/2015:05:30:06 +0000] "GET /blog/web/firefox-scrolling-fix.html HTTP/1.1" 200 8956 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

过滤成标准的Json结构:

{
"clientip" : "66.249.73.135",
"ident" : ,
"auth" : ,
"timestamp" : "04/Jan/2015:05:30:06 +0000",
"verb" : "GET",
"request" : "/blog/web/firefox-scrolling-fix.html",
"httpversion" : "HTTP/1.1",
"response" : "200",
"bytes" : "8956",
"referrer" : "http://www.google.com/bot.html",
"agent" : "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
}

其中,我们可以通过IP来解析用户访问地址信息(当然这个是不准确的),方式是使用 geoip 插件来完成。

filter {
    geoip {
        source => "clientip"
    }
}

根据IP查对应的地址信息,并将地址信息作为 geoip 字段写入日志信息中。
geoip可以查询IP,获取如下的描述信息:

"geoip":{
        "timezone":"America/Los_Angeles",
        "ip":"66.249.73.135",
        "latitude":37.419200000000004,
        "continent_code":"NA",
        "city_name":"Mountain View",
        "country_name":"United States",
        "country_code2":"US",
        "dma_code":807,
        "country_code3":"US",
        "region_name":"California",
        "location":{
               "lon":-122.0574,
               "lat":37.419200000000004
        },
        "postal_code":"94043",
        "region_code":"CA",
        "longitude":-122.0574
},

我们可以通过geoip中的坐标信息,如location,在Kibana中做基于地图的访问人群分布的可视化展现了。
undefined

通过上述描述的方式,我们可以批量的处理ECS中的日志信息,并在Kibana中完成配置,最终获取如下的展示效果:
image.png | center | 704x395

参考文档《Configuring Logstash》

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
3月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
742 57
|
3月前
|
消息中间件 Java Kafka
搭建ELK日志收集,保姆级教程
本文介绍了分布式日志采集的背景及ELK与Kafka的整合应用。传统多服务器环境下,日志查询效率低下,因此需要集中化日志管理。ELK(Elasticsearch、Logstash、Kibana)应运而生,但单独使用ELK在性能上存在瓶颈,故结合Kafka实现高效的日志采集与处理。文章还详细讲解了基于Docker Compose构建ELK+Kafka环境的方法、验证步骤,以及如何在Spring Boot项目中整合ELK+Kafka,并通过Logback配置实现日志的采集与展示。
832 64
搭建ELK日志收集,保姆级教程
|
存储 运维 开发工具
警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践
本文探讨了日志管理中的常见反模式及其潜在问题,强调科学的日志管理策略对系统可观测性的重要性。文中分析了6种反模式:copy truncate轮转导致的日志丢失或重复、NAS/OSS存储引发的采集不一致、多进程写入造成的日志混乱、创建文件空洞释放空间的风险、频繁覆盖写带来的数据完整性问题,以及使用vim编辑日志文件导致的重复采集。针对这些问题,文章提供了最佳实践建议,如使用create模式轮转日志、本地磁盘存储、单线程追加写入等方法,以降低日志采集风险,提升系统可靠性。最后总结指出,遵循这些实践可显著提高故障排查效率和系统性能。
1096 21
|
9月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
694 90
|
9月前
|
存储 SQL Apache
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
本文将从技术选型的视角,从开放性、系统架构、实时写入、实时存储、实时查询等多方面,深入分析 Apache Doris 与 Elasticsearch 的能力差异及性能表现
840 17
为什么 Apache Doris 是比 Elasticsearch 更好的实时分析替代方案?
|
9月前
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
192 1
|
9月前
|
存储 机器学习/深度学习 人工智能
Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名
本文介绍了如何将阿里云 AI 功能与 Elasticsearch 集成,以提高语义搜索的相关性。
594 0
|
9月前
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
网络安全视角:从地域到账号的阿里云日志审计实践
214 0
|
2月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
413 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
327 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版
  • 推荐镜像

    更多