syslog を簡単に見たかったので、graylog を作ったメモ。
たぶんどっかーとかでやるほうが簡単🐋
alma linux 8.7 を使用。
ドキュメント Installing Graylog
構築の流れは以下。
– Java のインストール
– MongoDB のインストール
– Elasticsearch のインストール
– Graylog Server のインストール
– Firewall 等の設定
– Graylog の受信設定
Graylog サーバのシステム要件は以下です。(2022/11 時点)
– Elasticsearch 6.8, 7, 7.10
– MongoDB 3.6 or 4.0, 4.3, 4.4
– Oracle Java SE 17 または OpenJDK 17
Java のインストール
dnf search openjdk
dnf install java-17-openjdk-headless.x86_64
Mongodb のインストール
リポジトリが $releasever だとエラーになったので、8 にしてます。
cat << EOF > /etc/yum.repos.d/mongodb-org-6.0.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
dnf install mongodb-org
Elasticsearch のインストールと Graylog 用の設定追加
cat <<EOF > /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
dnf install elasticsearch
tee -a /etc/elasticsearch/elasticsearch.yml > /dev/null <<EOT
cluster.name: graylog
action.auto_create_index: false
EOT
ここまでの確認
java -version
openjdk version "17.0.5" 2022-10-18 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.5.0.8-2.el8_6) (build 17.0.5+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.5.0.8-2.el8_6) (build 17.0.5+8-LTS, mixed mode, sharing)
systemctl start mongod
systemctl enable mongod
mongod -version
db version v6.0.3
Build Info: {
"version": "6.0.3",
"gitVersion": "f803681c3ae19817d31958965850193de067c516",
"openSSLVersion": "OpenSSL 1.1.1k FIPS 25 Mar 2021",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel80",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
systemctl start elasticsearch
systemctl enable elasticsearch
curl -s -XGET http://localhost:9200/ | grep number
"number" : "7.17.7",
Graylog Server のインストール
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.rpm
yum install graylog-server
設定ファイルで使用するのパスワード生成して、メモします。
echo -n Password | shasum -a 256
pwgen -N 1 -s 96
shasum コマンドがない場合 dnf install perl-Digest-SHA
pwgen がない場合は dnf install pwgen か、64 ケタ以上の乱数なら何でもいいです。
vim /etc/graylog/server/server.conf
password_secret = <pwgen で作った文字列>
root_password_sha2 = <echo で作った文字列>
root_timezone = Asia/Tokyo
http_bind_address = 0.0.0.0:9000
graylog の起動
systemctl start graylog-server
systemctl enable graylog-server
systemctl status graylog-server
Firewalld の設定
firewall-cmd --add-port=9000/tcp --permanent
firewall-cmd --reload
ブラウザで https://IPアドレス:9000 にアクセス
Syslog を受信する設定
syslog を転送する場合、firewalld の許可設定と、Graylog を root 権限で動かさないと 1024 以下のポートをバインドできないためて 514/udp, tcp のフォワード設定が必要になります。
ここでは 514 に着信したパケットを 1514 にフォワードしています。
firewall-cmd --add-port=514/udp
firewall-cmd --add-port=514/tcp
firewall-cmd --add-port=1514/tcp
firewall-cmd --add-port=1514/udp
firewall-cmd --add-forward-port=port=514:proto=tcp:toport=1514
firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514
firewall-cmd --runtime-to-permanent
firewall-cmd --list-all
GUI で System > Inputs から、Raw/Plaintext UDP を選択して、受信することを確認します。
Syslog UDP でもできると思いますが、おそらくフォーマットの違いで一部の機材のログが表示されなかったので RAW にしました。
ここで Port を 1514 にしてます。
受信できることを確認します。
以上(/・ω・)/
メモ
Logger コマンド
logger "hello" -i -t 172.17.x.x
参考サイト
Graylog(Splunk代替ログ分析OSS)の導入&チューニングTips – Qiita
【Graylog】オープンソース版ログ管理ソフトウェア「Graylog」でSyslogを受信するまで【VMware版】 – MR2オーナー吉田貴幸のブログ (startpassion.life)
コメント