2015-01-21 19 views
16

Tôi đã quản lý để đẩy nhật ký ứng dụng của mình lên AWS Cloudwatch bằng cách sử dụng tác nhân nhật ký AWS CloudWatch. Nhưng giao diện điều khiển web ColudWatch dường như không cung cấp nút để cho phép bạn tải xuống/xuất dữ liệu nhật ký từ đó.AWS Cloudwatch Log - Có thể xuất dữ liệu nhật ký hiện có từ nó không?

Bất kỳ ý tưởng nào về cách tôi có thể đạt được mục tiêu này?

Trả lời

12

Mới nhất AWS CLI có một cli Logs CloudWatch, cho phép bạn tải về các bản ghi như JSON, tập tin văn bản hoặc bất kỳ sản lượng khác được hỗ trợ bởi AWS CLI.

Ví dụ để có được 10.000 mục đăng nhập đầu tiên từ dòng a trong nhóm A vào một tập tin văn bản, chạy:

aws logs get-log-events --log-group-name A --log-stream-name a \ 
    --output text > a.log 

Lệnh hiện đang hạn chế đến tối đa là 10.000 hồ sơ theo yêu cầu, và nếu bạn có nhiều hơn bạn cần phải thực hiện cơ chế bước trang của riêng bạn bằng cách sử dụng tham số --next-token. Tôi hy vọng rằng trong tương lai CLI cũng sẽ cho phép đổ đầy trong một lệnh duy nhất.

2

Dường như không có cách nào ngoài tầm kiểm soát từ AWS Console nơi bạn có thể tải xuống CloudWatchLogs. Có lẽ bạn có thể viết một tập lệnh để thực hiện tìm nạp CloudWatchLogs bằng SDK/API.

Điều tốt về CloudWatchLogs là bạn có thể giữ lại nhật ký trong thời gian vô hạn (Không bao giờ hết hạn); không giống như CloudWatch chỉ lưu nhật ký trong 14 ngày. Điều này có nghĩa là bạn có thể chạy tập lệnh theo tần suất hàng tháng/hàng quý thay vì theo yêu cầu.

Thông tin thêm về các CloudWatchLogs API, http://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/Welcome.html http://awsdocs.s3.amazonaws.com/cloudwatchlogs/latest/cwl-api.pdf

12

Ngoài ra còn có một dự án python gọi awslogs, cho phép để có được các bản ghi: https://github.com/jorgebastida/awslogs

Có những điều như:

nhóm danh sách nhật ký:

$ awslogs groups 

danh sách suối cho nhóm đăng nhập được :

$ awslogs streams /var/log/syslog 

get the lo g hồ sơ từ khắp nơi suối:

$ awslogs get /var/log/syslog 

nhận được hồ sơ đăng nhập từ dòng cụ thể:

$ awslogs get /var/log/syslog stream_A 

và nhiều hơn nữa (lọc cho khoảng thời gian, quan sát dòng log ...

Tôi nghĩ rằng, công cụ này có thể giúp bạn làm những gì bạn muốn.

0

Dường như AWS đã thêm khả năng xuất toàn bộ nhóm nhật ký sang S3.

Export to S3 menu

Export to S3 Form

Bạn sẽ cần phải cho phép thiết lập vào xô S3 cho phép cloudwatch ghi vào xô bằng cách thêm dòng sau vào chính sách xô của bạn, thay thế khu vực với khu vực của bạn và tên nhóm với tên nhóm của bạn.

{ 
     "Effect": "Allow", 
     "Principal": { 
      "Service": "logs.us-east-1.amazonaws.com" 
     }, 
     "Action": "s3:GetBucketAcl", 
     "Resource": "arn:aws:s3:::tsf-log-data" 
    }, 
    { 
     "Effect": "Allow", 
     "Principal": { 
      "Service": "logs.us-east-1.amazonaws.com" 
     }, 
     "Action": "s3:PutObject", 
     "Resource": "arn:aws:s3:::tsf-log-data/*", 
     "Condition": { 
      "StringEquals": { 
       "s3:x-amz-acl": "bucket-owner-full-control" 
      } 
     } 
    } 

chi tiết có thể được tìm thấy trong Step 2 of this AWS doc

Các vấn đề liên quan