5年ほど前にsyslogサーバでGraylog3で監視していたが、途中のバージョンアップで起動できなくなりそのまま放置していたので、Graylogを6へバージョンアップし、再稼働した。
下記の情報を参考にさせていただき、ほぼAIで作成しました
Rsyslog
syslogサーバでは/var/log/rsyslogに他のPCやネットワーク機器やFWなどのログを収集しており、
すでにgraylog用にrsyslogの設定は済んでいるが、確認のためメモしておく
設定変更
rsyslogの設定を更新して、Graylogにログを転送します:
# /etc/rsyslog.d/90-graylog.conf
$template GRAYLOGRFC5424,"<%PRI%>%PROTOCOL-VERSION% %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n"
$ActionFileDefaultTemplate GRAYLOGRFC5424
*.* @localhost:1514
rsyslogの再起動
sudo systemctl restart rsyslog
これらの設定により、/var/log/rsyslog内のログファイルがGraylogで監視・管理できるようになります。Web UIで「Streams」や「Dashboards」を使用して、ログの可視化や分析が可能です。
Graylog
docker-compose.yml
version: '3.8'
services:
# MongoDB
mongodb:
image: mongo:6.0
container_name: mongodb
restart: unless-stopped
volumes:
- mongo_data:/data/db
networks:
- graylog-network
# Elasticsearch (OpenSearch)
opensearch:
image: opensearchproject/opensearch:2.12.0
container_name: opensearch
restart: unless-stopped
environment:
- cluster.name=opensearch-cluster
- node.name=opensearch-node1
- discovery.type=single-node
- bootstrap.memory_lock=true
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
- "DISABLE_INSTALL_DEMO_CONFIG=true"
- "DISABLE_SECURITY_PLUGIN=true"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- opensearch_data:/usr/share/opensearch/data
networks:
- graylog-network
# Graylog
graylog:
image: graylog/graylog:6.2
container_name: graylog
restart: unless-stopped
environment:
- GRAYLOG_PASSWORD_SECRET=M4GOFiQ2rTaqTucY
- GRAYLOG_ROOT_PASSWORD_SHA2=a566a48802b69c38e0b5f6b3194648f15b80d8
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
- GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200
- GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog
depends_on:
- mongodb
- opensearch
ports:
# Graylog web interface and REST API
- "9000:9000"
# Syslog TCP
- "1514:1514"
# Syslog UDP
- "1514:1514/udp"
# GELF TCP
- "12201:12201"
# GELF UDP
- "12201:12201/udp"
volumes:
- graylog_data:/usr/share/graylog/data
- /var/log:/var/log:ro
networks:
- graylog-network
volumes:
mongo_data:
driver: local
opensearch_data:
driver: local
graylog_data:
driver: local
networks:
graylog-network:
name: graylog-network
driver: bridge
パスワードの生成
# GRAYLOG_PASSWORD_SECRET の生成(最低16文字)
pwgen -N 1 -s 96
# GRAYLOG_ROOT_PASSWORD_SHA2 の生成(adminパスワードのハッシュ)
echo -n "password" | sha256sum | cut -d" " -f1
起動
docker-compose up -d
3. アクセス
- Web UI: syslog:9000
- ユーザー名: admin
- パスワード: 設定したパスワード
ポート説明
- 9000: Graylog Web UI
- 1514: Syslog入力 (TCP/UDP)
- 12201: GELF入力 (TCP/UDP)
Graylog Web UIでの設定
- System > Inputs に移動
- 「Select Input」から「Syslog UDP」を選択
- 「Launch new input」をクリック
- 以下の設定を入力:
- - Title: Local Rsyslog
- - Bind address: 0.0.0.0
- - Port: 1514
- 「Save」をクリック
最後に、Inputsで設定したSyslogUDPのStart inputボタンを押すこと

Throughput / Metricsでログデータが取得出来ていれば、SearchやStreamsでグラフ表示されます
最後に
今回は社内での運用なので、HTTPS化は実施しておらず、またDockerボリュームの永続化もおこなっておりません。