{CloudWatch Logs}ロググループのメトリクスフィルターの作成

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html

 

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version


-- 2. CloudWatchロググループの作成

aws logs create-log-group --log-group-name app01/test.log

aws logs describe-log-groups --log-group-name-prefix app01/test.log

aws logs put-retention-policy \
--log-group-name app01/test.log \
--retention-in-days 1


-- 3. CloudWatchログストリームの作成

aws logs create-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream01

aws logs create-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream02

aws logs create-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream03

aws logs create-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream04

aws logs create-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream05

aws logs describe-log-streams \
--log-group-name app01/test.log


-- 4. メトリクスフィルターの作成


-- 4.1 ログイベントのカウント

aws logs put-metric-filter \
--log-group-name app01/test.log \
--filter-name filter01 \
--filter-pattern " " \
--metric-transformations \
metricName=metric01,metricNamespace=namespace01,metricValue=1,defaultValue=0

aws logs put-log-events \
--log-group-name app01/test.log \
--log-stream-name stream01 \
--log-events \
timestamp=1646547248000,message="Test event 1" \
timestamp=1646547248000,message="Test event 2" \
timestamp=1646547248000,message="This message also contains an Error"

-- 4.2 語句の出現回数をカウントする

aws logs put-metric-filter \
--log-group-name app01/test.log \
--filter-name filter02 \
--filter-pattern 'Error' \
--metric-transformations \
metricName=metric02,metricNamespace=namespace01,metricValue=1,defaultValue=0

aws logs put-log-events \
--log-group-name app01/test.log \
--log-stream-name stream02 \
--log-events \
timestamp=1646547258000,message="This message contains an Error" \
timestamp=1646547268000,message="This message also contains an Error"

 

-- 4.3 HTTP 404 コードをカウントする

aws logs put-metric-filter \
--log-group-name app01/test.log \
--filter-name filter03 \
--filter-pattern '[ip, id, user, status_code=404, size]' \
--metric-transformations \
metricName=metric03,metricNamespace=namespace01,metricValue=1

aws logs put-log-events \
--log-group-name app01/test.log \
--log-stream-name stream03 \
--log-events \
timestamp=1646547268000,message="127.0.0.1 - bob 404 2326" \
timestamp=1646547278000,message="127.0.0.1 - bob 200 2326" 

 

-- 4.4 HTTP 4xx コードをカウントする

aws logs put-metric-filter \
--log-group-name app01/test.log \
--filter-name filter04 \
--filter-pattern '[ip, id, user, status_code=4*, size]' \
--metric-transformations \
metricName=metric04,metricNamespace=namespace01,metricValue=1,defaultValue=0

aws logs put-log-events \
--log-group-name app01/test.log \
--log-stream-name stream04 \
--log-events \
timestamp=1646547218000,message="127.0.0.1 - - 404 287" \
timestamp=1646547228000,message="127.0.0.1 - - 404 287" \
timestamp=1646547238000,message="127.0.0.1 - - 200 3" 

 

-- 4.5 Apache ログからフィールドを抽出してディメンションを割り当てる

aws logs put-metric-filter \
--log-group-name app01/test.log \
--filter-name filter05 \
--filter-pattern '[ip, id, user, status_code, size]' \
--metric-transformation  \
metricName=metric05,metricNamespace=namespace01,metricValue=\$size


aws logs put-log-events \
--log-group-name app01/test.log \
--log-stream-name stream05 \
--log-events \
timestamp=1646547218000,message="127.0.0.1 - - 404 12" \
timestamp=1646547228000,message="127.0.0.1 - - 404 55" \
timestamp=1646547238000,message="127.0.0.1 - - 200 3" 

 

-- 5. クリーンアップ

-- メトリクスフィルターの削除

aws logs describe-metric-filters --log-group-name app01/test.log

aws logs delete-metric-filter \
--log-group-name app01/test.log \
--filter-name filter01

aws logs delete-metric-filter \
--log-group-name app01/test.log \
--filter-name filter02

aws logs delete-metric-filter \
--log-group-name app01/test.log \
--filter-name filter03

aws logs delete-metric-filter \
--log-group-name app01/test.log \
--filter-name filter04

aws logs delete-metric-filter \
--log-group-name app01/test.log \
--filter-name filter05

 

-- CloudWatchログストリームの削除

aws logs describe-log-streams \
--log-group-name app01/test.log


aws logs delete-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream01

aws logs delete-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream02

aws logs delete-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream03

aws logs delete-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream04

aws logs delete-log-stream \
--log-group-name app01/test.log \
--log-stream-name stream05

 


-- CloudWatchロググループの削除

aws logs describe-log-groups --log-group-name-prefix app01/test.log

aws logs delete-log-group --log-group-name app01/test.log