使用 AWS ELB 获取访问日志!
你好!
我是Beyond大阪事务所的拉面大王Hide。
这是我的第二篇文章。
这次想写一下如何使用ELB获取访问日志。
上次,让我们通过 Makefile 来享受使用 docker 命令的乐趣吧! 】 我还写过一篇文章,
如果你使用docker的话请看一下。
通过ELB获取访问日志有什么好处?
阅读本文的一些人可能会想,“哈?
这没有必要,因为
在服务器上获取访问日志当然是可以的,但是
在ELB上获取访问日志可能没有太大好处......
作为发帖者,我也有同样的想法,“我可以只使用服务器,所以没有任何好处......”
但是如果您想分析访问日志怎么办?
如果服务器分布在多台服务器上,则访问日志将保存在每台服务器上。
因此,即使您尝试分析访问日志,由于访问日志存在于不同的服务器上,因此
需要花费大量的时间和精力来整合和分析访问日志。
例如,您可以使用 CloudWatchLogs 来聚合日志。
在这种情况下,您将需要使用 IAM 管理权限,在目标服务器上安装代理,并
编辑 awslogs.conf 中的设置......
使用名为 fluidd 的开源数据日志收集工具
轻松收集和利用日志
但是,这也需要通过 IAM 进行权限管理来安装和配置工具。
此外,指定 S3 作为聚合目的地需要花费大量时间......
您可以
通过在服务器前面启用 ELB 访问日志来,而无需使用 CloudWatchLogs 或 Fluentd。 !
所有访问日志都聚合在S3中,使存储和分析变得容易
此外,通过使用AWS Athena和Redshift,
使用标准SQL轻松地将数据存储在Amazon S3中!
此外,即使访问日志因挂起而丢失,
您也可以通过检查 ELB 访问日志轻松查看发生了什么情况。
由于 ELB 是一项完全托管的 AWS 服务,因此您可以放心使用它。
即使出现问题,AWS 也会负责修复它。
这就是为什么! !
请放心,即使访问日志已被激活,您也几乎不可能无法获取访问日志。
现在您知道在 ELB 中启用访问日志记录的好处了!
现在,让我们一起来看看设置步骤吧!
设置步骤
①迁移到EC2⇛负载均衡器
②点击操作中的[编辑属性]
③ 选择启用访问日志
④指定S3位置的bucket名称
⚠① S3桶只能包含小写字母、数字、句点(.)和破折号(-)的组合。
请注意,如果您输入上述以外的任何内容,将会出现如下图所示的错误。
⚠② 如果您输入的S3存储桶名称已被使用,则会显示警告,因此请输入其他名称。
⑤ 在[创建此位置]中输入✔,然后单击保存。
⑥移动到S3,点击【您创建的S3存储桶名称】
⑦如果可以确认以下目录中有访问日志文件,则过程完成。
*日志文件每 5 分钟创建一次。
/创建的 S3 存储桶名称/AWSLogs/Elastic Load Balancing 账户 ID 号/elasticloadbalancing/区域名称/创建年份/创建月份/创建日期/
如何查看访问日志
① 进入IAM,点击【创建用户】
② 填写所需信息
*请务必勾选访问类型下的[编程访问]。
③ 选择【AmazonS3ReadOnlyAccess】策略
④ 检查输入是否有错误并创建用户
⑤下载csv
*以防万一,请记下您的访问密钥和秘密访问密钥。
⑥安装AWS CLI
*有关安装AWS CLI的信息,请参阅AWS官方文档。
⚠这里我们使用的是Centos7。
对于 Amazon Linux2,无需安装,因为它已经安装。
⑥-① 确保Python为2.7或更高版本
*如果您没有Python,请单独安装。
*Centos7上默认安装2.7.5。
python --版本Python 2.7.5
⑥-② 安装捆绑安装程序
卷曲“https://s3.amazonaws.com/aws-cli/awscli-bundle.zip”-o“awscli-bundle.zip”sudo yum install -y unzip unzip awscli-bundle.zip sudo ./awscli-bundle/安装 -i /usr/local/aws -b /usr/local/bin/aws aws --version
⑦AWS CLI 设置
aws configure AWS 访问密钥 ID [无]:输入您创建的 IAM 访问密钥 AWS 秘密访问密钥 [无]:输入您创建的 IAM 密钥 默认区域名称 [无]:输入区域 默认输出格式 [无] :输入你想要输出的文件格式
⑧输出访问日志
*使用 AWS CLI S3 命令列出 S3 存储桶中的文件 aws s3 ls s3://tokuhara-test-alb-access-log/AWSLogs/485076298277/elasticloadbalancing/ap-northeast-1/2021/01/18/ 2021- 01- 18 08:05:12 884 485076298277_elasticloadbalancing_ap-northeast-1_app.tokuhara-test-alb.20a1e21abd53f9e7_20210118T0805Z_54.65.29.6_53o3j7p0.log.gz *本地复制 aws s3 cp s3://tokuhara-test-alb-access-log/AWSLogs/ 485076298277/elasticloadbalancing/ap-northeast-1/2021/01/18/485076298277_elasticloadbalancing_ap-northeast-1_app.tokuhara-test-alb.20a1e21abd53f9e7_20210118T2355Z_52.68_106.116_。 5qgag1lu.log.gz ./ *可以复制到本地 ls -l ./ -rw-r--r--.1根根295 Jan 18 23:55 485076298277_elasticloadbalancing_ap-northeast-1_app.tokuhara-test-alb.20a1e21abd53f9e7_20210118T2355Z_52.68.106.11 6_5qgag1lu.log。 gz *压缩解压文件gunzip 485076298277_elasticloadbalancing_ap-northeast -1_app.tokuhara-test-alb.20a1e21abd53f9e7_20210118T2355Z_52.68.106.116_5qgag1lu.log.gz *显示访问日志 less 485076298277_elasticloadbalancing_ap-northeast-1_app.tokuhara-test-alb.20a1e21abd5 3f9e7_20210118T2355Z_52.68.106.116_5qgag1lu 日志http 2021-01-21T00: 10:51.821814Z app/tokuhara-test-alb/20a1e21abd53f9e7 63.143.XX.XX:45662 - -1 -1 -1 503 - 110 337 “获取 http://example.com:80 / HTTP/1.1” “Go- http-client/1.1" - - arn:aws:elasticloadbalancing:ap-northeast-1:485076298277:targetgroup/tokuahra-test-tg-ec2/ee1e50320f3398ec"根=1-6008c68b-4198b51b343e8f127df30e01""-""-"0 2021年-01-21T00:10:51.821000Z“转发”“-”“-”“-”“-”“-”“-”
输出结果及格式
ELB访问日志设置! !谢谢你的辛苦劳动٩(ˊᗜˋ*)٩
但是,即使你设置了输出访问日志,如果你不知道如何读取它,你也无法调查原因......
这就是为什么!在参考《AWS官方文档》的同时,
为ELB获取的访问日志示例
准备了以下格式,
请看一下,看看有哪些商品可用!
http 2021-01-21T00:10:51.821814Z app/tokuhara-test-alb/20a1e21abd53f9e7 63.143.XX.XX:45662 - -1 -1 -1 503 - 110 337“获取http://example.com:80/ HTTP/1.1" "Go-http-client/1.1" - - arn:aws:elasticloadbalancing:ap-northeast-1:485076298277:targetgroup/tokuahra-test-tg-ec2/ee1e50320f3398ec "Root=1-6008c68b-4198b51b343e8f127df30e01" ” -” “-” 0 2021-01-21T00:10:51.821000Z “转发” “-” “-” “-” “-” “-” “-”
场地 | 解释 | 样本值 |
类型 | 请求或连接的类型 | http |
时间 | 负载均衡器收到客户端请求的时间(UTC) | 2021-01-21T00:10:51.821814Z |
埃尔布 | ELB名称 | 应用程序/tokuhara-test-alb/20a1e21abd53f9e7 |
客户端:端口 | 发送请求的客户端的IP地址和端口 | 63.143.XX.XX:45662 |
目标:端口 | 服务此请求的目标的 IP 地址和端口。 | - |
请求处理时间 | 从ELB收到请求到将请求发送到目标所花费的总时间 | -1 |
目标处理时间 | 从 ELB 向目标发送请求到目标开始发送响应标头所花费的总时间 | -1 |
响应处理时间 | 从 ELB 从目标接收到响应标头到开始向客户端发送响应所花费的总时间 | -1 |
elb_状态_代码 | 负载均衡器响应的状态码 | 503 |
目标状态代码 | 目标响应的状态码 | - |
收到的字节数 | 从客户端收到的请求的大小 | 110 |
发送字节数 | 返回给客户端的响应大小 | 337 |
“要求” | 该行在客户端的请求中用双引号括起来 | “获取http://example.com:80/HTTP/1.1” |
“用户代理” | 标识请求客户端的用户代理字符串 | “去-http-client/1.1” |
ssl_密码 | 设置为 - 如果它是 SSL 密码而不是 HTTPS | - |
ssl_协议 | 如果它是 SSL 协议而不是 HTTPS,则会设置为 - | - |
目标组arn | 目标组 Amazon 资源名称 | arn:aws:elasticloadbalancing:ap-northeast-1:485076298277:targetgroup/tokuahra-test-tg-ec2/ee1e50320f3398ec |
“trace_id” | X-Amzn-Trace-Id 标头的内容(用双引号引起来)。 | “根=1-6008c68b-4198b51b343e8f127df30e01” |
“域名” | 客户端在 TLS 握手期间提供的 SNI 域(用双引号括起来),如果不是 HTTPS,则设置为 - | "-" |
“选择的_cert_arn” | 向客户端提供的证书的 ARN(用双引号括起来)。如果不是 HTTPS,它将被设置为 - | "-" |
匹配规则优先级 | 与请求匹配的规则的优先级值 | 0 |
请求创建时间 | ELB收到客户端请求的时间 | 2021-01-21T00:10:51.821000Z |
“执行的操作” | 处理请求时要执行的操作(用双引号括起来) | “向前” |
“重定向网址” | HTTP 响应的位置标头中重定向目标的 URL(用双引号括起来) | "-" |
“错误_原因” | 错误原因代码(用双引号括起来) | "-" |
“目标:端口列表” | 服务于该请求的目标的 IP 地址和端口(用双引号引起来)的空格分隔列表。 | "-" |
“目标状态代码列表” | 来自目标响应的以空格分隔的状态代码列表(用双引号括起来) | "-" |
“分类” | 异步缓解分类(用双引号引起来) | "-" |
“分类_原因” | 分类原因代码(用双引号引起来)。 | "-" |
费用
关于费用,将收取ELB费用。
根据关于ELB的“AWS官方文档”,
AWS东京区域的Application Load Balancer的使用费用如下。
接下来,获取访问日志后,将其存储在S3中,因此会产生S3费用。
根据有关S3的“AWS官方文档”,
AWS东京区域的S3定价如下。
这很难理解,但在前 50 TB 以内,每月每 GB 需支付 0.023 美元的费用。
例如,如果每月累积的日志文件为 10 GB,则第一个月将产生约 24.28 日元,
第二个月将累积 20 GB,因此将产生约 48.56 日元,第二个月
将产生 30 GB。第三个月,由于累计金额,将收取约72.54日元的费用。
从容量超过450TB的月份起,将按每GB 0.022美元收取费用。
如果你看一下这样的费用计算,你会发现访问日志可以以非常低的成本获得。
概括
你怎么认为?
聚合访问日志不是很容易吗?
通过启用ELB的访问日志来整合访问日志,可以减少您的时间和精力,并且
可以稳定使用,几乎不会因为问题而无法获取日志!
即使服务器出现问题,出现日志缺陷,您也可以轻松检查! !
这就是为什么! !请务必启用ELB访问日志,
以便您安全、方便地操作您的服务器。
最后,如果您正在阅读本文并想“我开始对 S3 感兴趣了!!”,
请查看下面由 Beyond 的 Persian Neko 撰写的文章!
感谢您阅读这篇文章!