aws 日志收集分析测试

将日志收集到aws的S3存储,通过aws ES实时分析日志、Spark离线日志分析,支持无线扩容。

一、日志收集

利用logstash output直接到S3存储, 在aws建立好bucket,配置好logstash config文件将日志打入到bucket即可。具体配置见logstash output S3
实例:

output {
s3 {       
access_key_id => "AKIAJEVY5ZME3Q"        
secret_access_key => "QtQiyCZVi06xl9n/2JYfJ1YL+mPWf9"
region => "ap-southeast-1"
bucket => "ott-log-storage"       
time_file => 5     
codec => "json_lines"  
}
}

上述会将日志切成5分钟一段。在aws控制台相应的S3 bucket里面就会看到日志信息。

二、实时分析日志

在aws 服务列表找到 ElasticSearch Service, 按照步骤创建ES实例,十分钟后,创建完成,会有对应的EndPoint信息和Kibana地址。
选择一台机器,最好是EC2, 按照logstash, 将相应S3 bucket 日志文件push到ES中,在Kibana地址配置好index通配字符串后,就可以看到该业务的日志列表。

input
{   
s3 {        
bucket => "ott-log-storage"        
access_key_id => "AKIAJEWJVZY5ZME3Q"        
secret_access_key => "QtQiyCZViPR06xl9n/2JYfJsarxY1YL+mPWf9"   region => "ap-southeast-1"    
}
}
 

filter
 {
json {        
source => "message"        
remove_field => ["hour", "day"]    
}
}

output{
elasticsearch {
hosts 
=> ["search-modeyangg-r6qoi2q3bwgmq.apsoutheast-1.es.amazonaws.com:443"]
ssl => true      
flush_size => 1000      
index => "%{type}_access-%{+YYYY.MM.dd}"       
idle_flush_time => 10    
}

}

上面是logstash config文件

三、离线分析日志

在aws上创建spark的EMR服务,创建成功后,利用SSH登陆Master机器,运行pyspark, 即可测试spark集群。
spark支持从S3读取数据,利用EMRFS可供hadoop/spark集群使用, 利用Spark SQL就可像sql一样统计日志数据。

from pyspark.sql 
import SQLContext

sqlContext =SQLContext(sc)

df = sqlContext.read.json("s3n://<bucket>/<path>")

df.registerTempTable("ott_log_db")

ott_sql =sqlContext.sql(
"select sitegroup, count(sitegroup) as site_counts from ott_log_db group by sitegroup"
)

ott_sql.show()

具体用法参见Spark SQL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容