
Vector を Amazon Linux 2 で使ってみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、望月です。
Vector が僕の周りで流行っているので試しにインストールをしてみました。
Vector - A lightweight and ultra-fast tool for building observability pipelines | Vector
Vector とはログ収集ツールとなり、同じようなツールとして Fluentd が有名かと思います。最近開発された Rust で作られているツールでシンプルで軽く、これからが楽しみなツールです。
今回は Apache のアクセスログを CloudWatch Logs とS3 への出力をやってみました。
やってみた
導入環境
- EC2 インスタンス (Amazon Linux 2)
- Instance type:
t3.micro - AMI ID:
amzn2-ami-hvm-2.0.20210617.0-x86_64-gp2 - IAM Role:
AmazonS3FullAccess,CloudWatchLogsFullAccess- 検証のため FullAccess を与えています。実際に運用する場合は必要最低限の権限のみ設定するようにしてください。
- Instance type:
- Vector
0.14.0
準備
まずは Apache をと言いたいところですが欲しいのはアクセスログなので apache-loggen をインストールして、ダミーのアクセスログを作成できるようにします。
apache-loggen コマンドでダミーのアクセスログが出力できるようになったら OK です。
sudo yum install ruby rubygems gem install apache-loggen apache-loggen --limit=100
インストール
Vector では様々なインストール方法があり、YUM を利用したインストールのほかに RPM パッケージやインストーラーでのインストールが用意されています。
詳しくは以下ドキュメントをご確認いただくとして、ここでは YUM のインストールを試してみます。
Install Vector | Docs | Vector
$ curl -1sLf \ > 'https://repositories.timber.io/public/vector/cfg/setup/bash.rpm.sh' \ > | sudo -E bash
上記実行することで /etc/yum.repos.d/ に Vector リポジトリのファイル timber-vector.repo がインストールされます。
あとは YUM コマンドを実行することで Vector をインストールすることができます。
$ sudo yum install vector $ rpm -qi vector Name : vector Version : 0.14.0 Release : 1 Architecture: x86_64 Install Date: Wed 07 Jul 2021 07:30:15 AM UTC Group : Applications/System Size : 70369826 License : ASL 2.0 Signature : RSA/SHA256, Thu 03 Jun 2021 06:18:56 PM UTC, Key ID 3543db2d0a2bc4b8 Source RPM : vector-0.14.0-1.src.rpm Build Date : Thu 03 Jun 2021 06:13:16 PM UTC Build Host : 9a84edd357ab Relocations : (not relocatable) URL : https://vector.dev Summary : A lightweight and ultra-fast tool for building observability pipelines Description : A lightweight and ultra-fast tool for building observability pipelines
インストール後は /etc/vector/vector.toml にてコンフィグを管理し systemctl コマンドにてプロセスの起動等を操作することができます。
sudo systemctl restart vector
コンフィグ
Vector では複数のコンフィグ書式に対応しており、TOML, YAML, JSON に対応しています。
今回は TOML にてコンフィグを作成していきます。
sudo tee /etc/vector/vector.toml <<'_VECTORCFG_'
[sources.apache_log]
type = "file" # required
include = ["/tmp/apache.log"] # required
[sinks.apache_log-cwlogs]
# General
type = "aws_cloudwatch_logs" # required
inputs = ["apache_log"] # required
group_name = "/ec2/apache-logs" # required
region = "ap-northeast-1" # required, required when endpoint = null
stream_name = "{{ host }}" # required
# Encoding
encoding.codec = "text" # required
[sinks.apache_log-s3]
# General
type = "aws_s3" # required
inputs = ["apache_log"] # required
bucket = "<ログを出力する S3 バケット名を入れてください>" # required
compression = "gzip" # optional, default
region = "ap-northeast-1" # required, required when endpoint = null
# Encoding
encoding.codec = "text" # required
# File Naming
key_prefix = "apache_logs/year=%Y/month=%m/day=%d/" # optional, default
_VECTORCFG_
コンフィグ作成後に systemctl コマンドにて Vector を再起動します。
あとは apache-loggen コマンドで対象のパスにログを出力することで、ログが CloudWatch Logs と S3 に出力されます。ここでは 60 秒ごとにローテーションさせるようにし、ローテーションしたログを取り込めるかも確認しています。
apache-loggen --rate=10 --rotate=60 /tmp/apache.log
S3, CloudWatch Logs を確認し、ログが出力されていることを確認します。


まとめ
思った以上に簡単に S3 と CloudWatch Logs にログ出力をすることができました。
いままでは選択肢として Fluentd を選択することも多かったですが、これからは Vector も検討していくのは全然アリだなと思いました。








