100 ngày học DevOps (ngày 4) – CloudWatch log agent Installation
devops
27
AWS
22
White

ajino2k viết ngày 08/10/2019

Tiếp tục hành trình 100 ngày Devops nhé các bạn , ngày 4 này mình sẽ giới thiệu cấu hình cài đặt CloudWatch log agent Installation trên Centos7

Vấn đề cảnh cáo khi hệ thống có sự cố là vô cùng quan trong, chúng ta hãy đi tìm hiểu giải pháp bên dưới .

Problem Statement :
Việc chúng ta cần làm là Collect System log (/var/log/messages and /var/log/secure) và đẩy nó vào CloudWatch Logs
Tiếp đến là collect những metrics từ Memory, Disk Space, Swap Utilization

Solution :

  • AWS Console
  • AWS System Manager

CloudWatch Logs là gì.
Amazon CloudWatch được sử dụng để theo dõi, lưu trữ và truy cập các file logs từ Amazon Elastic Compute Cloud (Amazon EC2), AWS CloudTrail, Route 53, DNS Logs hoặc từ những nguồn khác , và sau đó bạn có thể truy xuất dữ liệu logs được liên kết từ CloudWatch Logs

alt text

Chúng ta sẽ so sách từng ngữ cảnh để có những cải thiện tốt nhất .

Scenario 1 (Kịch bản 1 ) : Thực hiện bước thủ công

  • Collect hệ thống log của application (ứng dụng)
  • System metrics như (memory, disk, swap utilization)

Bước 1 : Chúng ta sẽ setup IAM Role

alt text

Sau đó các bạn Create role

Bước 2 : Chúng ta sẽ Attach 1 Role và EC2

alt text

alt text

Bước 3 : Cài đặt 1 Agent CloudWatch Centos 7

wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip
unzip AmazonCloudWatchAgent.zip
./install.sh

Bước này mới là quan trọng nhất .

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Welcome to the AWS CloudWatch Agent Configuration Manager

On which OS are you planning to use the agent?

  1. linux
  2. windows

default choice: [1]:
Trying to fetch the default region based on ec2 metadata...

Are you using EC2 or On-Premises hosts?

  1. EC2
  2. On-Premises

default choice: [1]:
Do you want to turn on StatsD daemon?

  1. yes
  2. no

default choice: [1]:
Which port do you want StatsD daemon to listen to?
default choice: [8125]

What is the collect interval for StatsD daemon?

  1. 10s
  2. 30s
  3. 60s

default choice: [1]:
What is the aggregation interval for metrics collected by StatsD daemon?

  1. Do not aggregate
  2. 10s
  3. 30s
  4. 60s

default choice: [4]:

Do you want to monitor metrics from CollectD?

  1. yes
  2. no default choice: [1]:

Do you want to monitor any host metrics? e.g. CPU, memory, etc.

  1. yes
  2. no default choice: [1]:

Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.

  1. yes
  2. no default choice: [1]: 2

Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?

  1. yes
  2. no default choice: [1]:

Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.

  1. 1s
  2. 10s
  3. 30s
  4. 60s default choice: [4]:

Which default metrics config do you want?

  1. Basic
  2. Standard
  3. Advanced <--Make sure you choose advance then only you will see(Memory,Swap,Disk...)
  4. None default choice: [1]: 3

Current config as follows:
{
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent",
"inodes_free"
],
"metrics_collection_interval": 60,
"resources": [
""
]
},
"diskio": {
"measurement": [
"io_time",
"write_bytes",
"read_bytes",
"writes",
"reads"
],
"metrics_collection_interval": 60,
"resources": [
"
"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}

Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.

  1. yes
  2. no default choice: [1]:

Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?

  1. yes
  2. no default choice: [2]:

Do you want to monitor any log files?

  1. yes
  2. no default choice: [1]:

Log file path:
/var/log/messages
Log group name:
default choice: [messages]
Log stream name:
default choice: [{instance_id}]
Do you want to specify any additional log files to monitor?

  1. yes
  2. no default choice: [1]:

Log file path:
/var/log/secure
Log group name:
default choice: [secure]
Log stream name:
default choice: [{instance_id}]

Do you want to specify any additional log files to monitor?

  1. yes
  2. no default choice: [1]: 2 Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.

Current config as follows:
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "messages",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/secure",
"log_group_name": "secure",
"log_stream_name": "{instance_id}"
}
]
}
}
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent",
"inodes_free"
],
"metrics_collection_interval": 60,
"resources": [
""
]
},
"diskio": {
"measurement": [
"io_time",
"write_bytes",
"read_bytes",
"writes",
"reads"
],
"metrics_collection_interval": 60,
"resources": [
"
"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
},
"swap": {
"measurement": [
"swap_used_percent"
],
"metrics_collection_interval": 60
}
}
}
}
Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.

Do you want to store the config in the SSM parameter store?

  1. yes
  2. no default choice: [1]: 1

What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)
default choice: [AmazonCloudWatch-linux]
CloudWatch-Advanceconfig-linux

Trying to fetch the default region based on ec2 metadata...
Which region do you want to store the config in the parameter store?
default choice: [us-west-2]

Which AWS credential should be used to send json config to parameter store?

  1. XXXXXXXX(From SDK) <-- As we are using Roles
  2. Other default choice: [1]:

Successfully put config to parameter store CloudWatch-Advanceconfig-linux.

Cuối cùng là bước validation .

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

/opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source file:/opt/aws/amazon-cloudwatch-agent/bin/config.json --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default

Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp

Start configuration validation...

/opt/aws/amazon-cloudwatch-agent/bin/config-translator --input /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json --input-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --output /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default

Valid Json input schema.
No csm configuration found.
Configuration validation first phase succeeded

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

Configuration validation second phase succeeded
Configuration validation succeeded

Created symlink from /etc/systemd/system/multi-user.target.wants/amazon-cloudwatch-agent.service to /etc/systemd/system/amazon-cloudwatch-agent.service.

Redirecting to /bin/systemctl restart amazon-cloudwatch-agent.service

Tiếp theo thì thực hiện 2 bước này đối với Centos .
yum -y install epel-release
yum -y install collectd

Scenario 2 ( Kịch bản 2 ) : sử dụng SSM Parameter store

wget https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip

unzip AmazonCloudWatchAgent.zip
./install.sh

continue reading ...
https://techzones.me/devops/100-ngay-hoc-devops-ngay-4/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ajino2k

16 bài viết.
10 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
5 2
Nginx một web services khá mạnh cho hiện tượng C10k . Có rất nhiều cấu hình của nó mà mình đã xem qua . Đa phần sysadmin không tìm hiểu kỹ về nó , ...
ajino2k viết 1 tháng trước
5 2
White
3 2
Vấn đề bảo mật thông tin không chỉ đơn thuần là việc chống lại các cuộc tấn công từ hacker, ngăn chặn malware để đảm bảo thông tin không bị phá hủy...
ajino2k viết hơn 1 năm trước
3 2
White
3 0
Khi làm việc với linux thì chúng ta không tránh khỏi phải tạo những dịch vụ của riêng bạn có thể mang lại cho bạn mức độ linh hoạt mà bạn sẽ không ...
ajino2k viết 1 tháng trước
3 0
Bài viết liên quan
White
21 2
DevOps6 series NOTE: Đây là Phần 1 trong chuỗi bài viết của mình Ai nên đọc tiếp Nếu anh em là dev muốn sự nghiệp của mình lái nhẹ sang hướng k...
huskykun viết 5 tháng trước
21 2
White
1 1
Transfer files từ local computer đến AWS EC2 dùng FileZilla Bài toán: Làm thế nào để copy files từ local computer đến AWS EC2? Cách làm: Có mấy ...
Minh-Trung Nguyễn viết 9 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
16 bài viết.
10 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!