使用SLS日志服务采集Kong网关的日志
一、阿里云SLS
官方的接入文档已比较丰富了,本文不意重复说明此事。
站在使用的角度,以采集Kong的日志为示例,说明我们应该如何治理日志。
说白了,本文是想给你怎么省钱作一个建议,希望不会让你公司也“降本增笑”。。
- 每月涉及到的费用明细
包含存储空间、索引流量、读写流量、读写次数以及活跃Shard租用,其中以存储空间的费用为最。
活跃Shard租用,是按个来计费的,省是省不了的,除非你不用。
读写次数,取决于你公司查询需求,用得多,费用就多,但是这个单价是按百万次来算的,所以说,用不了几毛钱。
二、采集日志
1、新增Logtail
填写日志的路径以及文件名,这里的文件名使用了星号通配符“*”
nginx日志配置的模板是:
log_format access '"$proxy_add_x_forwarded_for" "$remote_port" "$time_local" "$scheme" $request" "$request_time" "$upstream_response_time" '
'"$status" "$body_bytes_sent" "$host" "$http_user_agent" "$bytes_sent" "$request_length" "$http_UserId" "$http_SchoolId" '
'"$upstream_addr" "$http_X_B3_TraceId" ';
正则表达是:
"([0-9a-zA-Z.:, -]*)"\s*"([^"]*)"\s*"(\d+/\S+/\d+:\d+:\d+:\d+)\s+\S+"\s*"([^"]*)"\s*(\S+)\s+(\S+)\s+\S+"\s*"([^"]*)"\s*"([^"]*)"\s*"([^"]*)"\s*"([^"]*)"\s*"([\w\.\*_-]+)"\s*"([^"]*)"\s*"([^"]*)"\s*"([^"]*)"\s*"([^"]*)"\s*"([^"]*)"\s*"([0-9a-zA-Z.:, _/-]*)"\s*"([^"]*)"\s*.*
详见阿里云的官方文档:
https://help.aliyun.com/zh/sls/user-guide/collect-logs-in-nginx-configuration-mode
最终分割后的报文示例是:
{
“proxy_add_x_forwarded_for”:“111.2.22.102”,
“remote_port”:“60844”,
“time_local”:“01/Dec/2023:13:49:07”,
“scheme”:“https”,
“request_method”:““GET”,
“request_uri”:”/api/v1/1023/group/231/acks",
“request_time”:“0.005”,
“upstream_response_time”:“0.002”,
“status”:“200”,
“body_bytes_sent”:“1162”,
“host”:“xx.xxx.net”,
“http_user_agent”:“com.xx.xsx/v1.5.6.20230927 (SM-P200; android; 9; R52210GLL1F)”,
“bytes_sent”:“1300”,
“request_length”:“1000”,
“http_UserId”:“1023”,
“http_SchoolId”:“2099”,
“upstream_addr”:“10.224.167.89:8084”,
“http_X_B3_TraceId”:“00c23ec80c2”,
“pack_meta”:“1|MTY5NDI3NDYwMzY1OTQ5MzczMQ==|334|58”,
“topic”:“”,
“source”:“10.224.168.214”,
“tag:hostname”:“aliyun-kong001”,
“tag:path”:“/usr/local/kong/logs/access.log”,
“tag:pack_id”:“5AA59E782BE01737-EDD6”,
“tag:receive_time”:“1701409748”,
“time”:“1701409747”
}
2、选择机器
3、存储空间的治理
因为阿里云的SLS日志的数据保存时间默认是180天,根据公司的业务需求和经济情况,一定要调整该值。
另外,如果你的保存时间超过7天,建议开通其智能存储分层。
如此设置,阿里云会将存储空间的费用一拆为二,见下例:
- 存储空间-日志低频存储,费用是0.005元/GB
- 存储空间,费用是0.015元/GB,价格是低频存储的三倍
所以说,对日志进行分层存储是非常有必要且见效的。
低频存储的存储量是62963GB,普通存储的量是19945GB,是3比1的比例。而费用他们两者接近相等。
一句话,分层存储可以帮我们省不少钱,特别是当你的存储量大的时候越明显。
三、总结
如果使用了阿里云SLS产品,可以定期对比分析费用,才能发现上述问题。
希望本文能够帮助到你~~