cat <<EOF> cw-log-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
EOF
aws iam create-policy --policy-name fluent-bit-policy --policy-document file://cw-log-policy.json > /dev/null
kubectl create ns fluent-bit
POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='fluent-bit-policy'].Arn" --output text)
eksctl utils associate-iam-oidc-provider --cluster wsi-eks-cluster --approve
eksctl create iamserviceaccount \\
--cluster=wsi-eks-cluster \\
--namespace=wsi-ns \\
--name=aws-for-fluent-bit \\
--role-name FluentBitIAMRole \\
--attach-policy-arn=$POLICY_ARN \\
--approve
cat <<EOF> values.yaml
serviceAccount:
create: false
name: fluent-bit
cloudWatchLogs:
enabled: true
region: "ap-northeast-2"
logGroupName: "/wsi/eks/log/"
logStreamPrefix: "log-"
autoCreateGroup: true
EOF
helm repo add eks <https://aws.github.io/eks-charts>
helm upgrade --install aws-for-fluent-bit --namespace fluent-bit eks/aws-for-fluent-bit -f values.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-sidecar
namespace: wsi-ns
labels:
app.kubernetes.io/name: fluent-bit-sidecar
helm.sh/chart: default-0.1.0
app.kubernetes.io/instance: flb-sidecar
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
data:
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info
Daemon off
Parsers_File parsers.conf
[INPUT]
Name tail
Path /logs/app.log
Parser custom_log
Tag app.log
[OUTPUT]
Name stdout
Match *
[OUTPUT]
Name cloudwatch
Match *
endpoint <https://logs.ap-northeast-2.amazonaws.com>
region ap-northeast-2
log_group_name /wsi/eks/log/
log_stream_name log-${HOSTNAME}
auto_create_group true
parsers.conf: |
[PARSER]
Name custom_log
Format regex
Regex ^(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})\\s(?<hour>\\d{2}):(?<minute>\\d{2}):(?<second>\\d{2}),\\d+ - - (?<ip>\\d+\\.\\d+\\.\\d+\\.\\d+) (?<port>\\d+) (?<method>\\S+) (?<path>\\S+) (?<statuscode>\\d+)$
Time_Key time
Time_Format %Y-%m-%d %H:%M:%S
Time_Keep On
kubectl apply -f fluent-bit-cm.yaml