可視化
流行りに乗りたいので先人達の真似をしながら作ってみる
Elastic searchに何かしらを格納してkibanaで可視化するのが目標
環境
- AWS, Amazon OpenSearch Service
普段AWSを使う機会がないので勉強も兼ねてAWSで挑戦
手順
マネージメントコンソールから作る
サービスは Amazon OpenSearch Service
ただ、2021年9月までは Amazon Elasticsearch Service というサービス名だったらしいので、後者の方が情報はたくさん出てくる
1. ドメイン作成
無料利用枠で作っていく
- t2.small.search か t3.small.search
- 月 750 時間まで
- オプションで Amazon Elastic Block Store (Amazon EBS) を月 10 GB 利用可能
ネットワーク周りの設定、VPCやサブネットを選択する
テスト・開発環境では利用できないが SAML 認証も設定可能
AWS Cognito 認証はテスト・開発環境でも設定可能
ドメインのアクセスポリシー
今回はパブリックで自分のGIPのみ許可するポリシー
ビジュアルエディタでGIP追加 -> JSONで確認する
AWS CLIでのコマンドサンプルもある
# r6g.large.search
# 100GiB汎用(SSD)EBS
# 192.0.2.0/32からのみ許可
aws opensearch create-domain --domain-name mylogs --engine-version OpenSearch_1.0 --cluster-config InstanceType=r6g.large.search,InstanceCount=2 --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [{"Action": "es:*", "Principal":"*","Effect": "Allow", "Condition": {"IpAddress":{"aws:SourceIp":["192.0.2.0/32"]}}}]}'
# Elasticsearchバージョン7.10,
# r6g.large.search
# 100GiB汎用(SSD)EBS
# AWSアカウントIDで識別される単一のユーザーに制限:555555555555
# 3つのアベイラビリティーゾーンにインスタンスを分散
aws opensearch create-domain --domain-name mylogs --engine-version Elasticsearch_7.10 --cluster-config InstanceType=r6g.large.search,InstanceCount=6,ZoneAwarenessEnabled=true,ZoneAwarenessConfig={AvailabilityZoneCount=3} --ebs-options EBSEnabled=true,VolumeType=gp2,VolumeSize=100 --access-policies '{"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::555555555555:root" }, "Action":"es:*", "Resource": "arn:aws:es:us-east-1:555555555555:domain/mylogs/*" } ] }'
2. Kibanaログイン
y-t-esというドメインを作成し、立ち上がると右カラムにKibana URLがある
ログ、メトリック、セキュリティのモジュールが選べる
Logstashがある
Cisco、F5がある
サンプルがあったのでSample web logsというのを表示
一部読み込み失敗しているけどかっこいい感じに出力される
・備忘
情報をあげるにはCLIで Elasticsearch REST API の index と bulk を使う
HTTPリクエストのペイロードがインスタンスタイプによってサポートされる最大値が異なる