graylog syslog サーバ

Linux
この記事は1年以上前に書かれたものです。 情報が古い可能性があります。

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)

コメント

タイトルとURLをコピーしました