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