將日志收集到aws的S3存儲,通過aws ES實時分析日志、Spark離線日志分析儒拂,支持無線擴(kuò)容。
一色鸳、日志收集
利用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控制臺相應(yīng)的S3 bucket里面就會看到日志信息。
二咏雌、實時分析日志
在aws 服務(wù)列表找到 ElasticSearch Service凡怎, 按照步驟創(chuàng)建ES實例,十分鐘后赊抖,創(chuàng)建完成统倒,會有對應(yīng)的EndPoint信息和Kibana地址。
選擇一臺機(jī)器氛雪,最好是EC2, 按照logstash房匆, 將相應(yīng)S3 bucket 日志文件push到ES中,在Kibana地址配置好index通配字符串后,就可以看到該業(yè)務(wù)的日志列表浴鸿。
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上創(chuàng)建spark的EMR服務(wù)岳链,創(chuàng)建成功后花竞,利用SSH登陸Master機(jī)器,運行pyspark掸哑, 即可測試spark集群约急。
spark支持從S3讀取數(shù)據(jù),利用EMRFS可供hadoop/spark集群使用苗分, 利用Spark SQL就可像sql一樣統(tǒng)計日志數(shù)據(jù)厌蔽。
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