0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SyslogをGraylogで整形する(opensearch使用)

Last updated at Posted at 2023-12-27

SyslogをGraylog[OpenSearch]で整形する
(docker-compose使用)

OpenSearchを使用したGrayLogサーバーの立て方です。

環境
項目 環境
OS Windows 11
VM Ubuntu 22.04.3 LTS
Docker 24.0.7
docker-compose 1.29.2
Graylog 5.1.5
OpenSearch 2.4.0
Mongo DB 5.0

注意点

  • SyslogはUbuntuの1514に対してログを送信できていることが前提となります。
  • 設定ファイル内に「ElasticSearch」という単語が出てくることがありますが、これはGraylog側が設定名称を変更していない為と思われます。今回は「OpenSearch」を使用しています。
  • EC2に無料枠で立てるとメモリエラーが発生します。
  • CPUがAVXに対応していないとMongoDB5.0が使えないため、うまくいきません。
     ⇒opensearchかgraylogのどちらかが確か5.0をシステム要件として要求しています。

作成

準備

  • docker-composeで作成していきます。
Dockerとdocker-composeのインストール

アップデート

sudo apt update

必要な依存関係をインストール

sudo apt install apt-transport-https ca-certificates curl software-properties-common pwgen -y

Dockerのインストール

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce -y
docker version
sudo systemctl status docker

docker-composeのインストール

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
  • 必要に応じて作業ディレクトリを作成してください
    mkdir graylog && cd graylog

目次

  1. .envファイルを作成
  2. docker-compose.ymlファイルを作成
  3. docker-composeの起動

.envファイルを作成する

GRAYLOG_PASSWORD_SECRETを作成

pwgen -N 1 -s 96

出力された文字列をメモしてください

GRAYLOG_ROOT_PASSWORD_SHA2を作成
<yourPassword>を自分のパスワードに置き換えてください

echo -n <yourPassword> | shasum -a 256

出力された文字列をメモしてください

vim .envなどでファイルを作成し、以下の内容を貼り付けてください
GRAYLOG_PASSWORD_SECRETGRAYLOG_ROOT_PASSWORD_SHA2の""内に先程メモした文字列を入力してください。
※ここで間違えると起動時にエラーのループ?が起こるみたいなので、気を付けてください。(間違えたら作業フォルダ毎削除したら大丈夫だと思います。)

# You MUST set a secret to secure/pepper the stored user passwords here. Use at least 64 characters.
# Generate one by using for example: pwgen -N 1 -s 96
# ATTENTION: This value must be the same on all Graylog nodes in the cluster.
# Changing this value after installation will render all user sessions and encrypted values in the database invalid. (e.g. encrypted access tokens)
GRAYLOG_PASSWORD_SECRET=""

# You MUST specify a hash password for the root user (which you only need to initially set up the
# system and in case you lose connectivity to your authentication backend)
# This password cannot be changed using the API or via the web interface. If you need to change it,
# modify it in this file.
# Create one by using for example: echo -n yourpassword | shasum -a 256
# and put the resulting hash value into the following line
# CHANGE THIS!
GRAYLOG_ROOT_PASSWORD_SHA2=""

processbuffer_processors = 8
outputbuffer_processors = 3
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking
message_journal_max_age = 12h
elasticsearch_max_time_per_index = 3d
retention_strategy = delete

docker-compose.yamlファイルを作成する

vim docker-compose.yamlなどでファイルを作成し、以下の内容を貼り付けてください
※受信ポートを変更する場合はports:# Syslog部分を変更してください。(今回は1514)

version: "3.8"

services:
  mongodb:
    image: "mongo:5.0"
    volumes:
      - "mongodb_data:/data/db"
    restart: "on-failure"

  opensearch:
    image: "opensearchproject/opensearch:2.4.0"
    environment:
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "bootstrap.memory_lock=true"
      - "discovery.type=single-node"
      - "action.auto_create_index=false"
      - "plugins.security.ssl.http.enabled=false"
      - "plugins.security.disabled=true"
    ulimits:
      memlock:
        hard: -1
        soft: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - "os_data:/usr/share/opensearch/data"
    restart: "on-failure"

  graylog:
    hostname: "server"
    image: "${GRAYLOG_IMAGE:-graylog/graylog:5.1.5}"
    depends_on:
      opensearch:
        condition: "service_started"
      mongodb:
        condition: "service_started"
    entrypoint: "/usr/bin/tini -- wait-for-it opensearch:9200 --  /docker-entrypoint.sh"
    environment:
      TZ: "Asia/Tokyo"
      GRAYLOG_ROOT_TIMEZONE: "Asia/Tokyo"
      GRAYLOG_NODE_ID_FILE: "/usr/share/graylog/data/config/node-id"
      GRAYLOG_PASSWORD_SECRET: "${GRAYLOG_PASSWORD_SECRET:?Please configure GRAYLOG_PASSWORD_SECRET in the .env file}"
      GRAYLOG_ROOT_PASSWORD_SHA2: "${GRAYLOG_ROOT_PASSWORD_SHA2:?Please configure GRAYLOG_ROOT_PASSWORD_SHA2 in the .env file}"
      GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9000/"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
    ports:
    - "5044:5044/tcp"   # Beats
    - "1514:1514/udp"   # Syslog
    - "1514:1514/tcp"   # Syslog
    - "5555:5555/tcp"   # RAW TCP
    - "5555:5555/udp"   # RAW TCP
    - "9000:9000/tcp"   # Server API
    - "12201:12201/tcp" # GELF TCP
    - "12201:12201/udp" # GELF UDP
    #- "10000:10000/tcp" # Custom TCP port
    #- "10000:10000/udp" # Custom UDP port
    - "13301:13301/tcp" # Forwarder data
    - "13302:13302/tcp" # Forwarder config
    volumes:
      - "graylog_data:/usr/share/graylog/data/data"
      - "graylog_journal:/usr/share/graylog/data/journal"
    restart: "on-failure"

volumes:
  mongodb_data:
  os_data:
  graylog_data:
  graylog_journal:

docker-composeから起動

 ※作業フォルダ直下で実行

sudo docker-compose up -d
sudo docker-compose ps
停止・削除
コンテナを止める場合
sudo docker-compose down
イメージからすべて削除する場合
docker-compose down --rmi all --volumes --remove-orphans

ブラウザからアクセス

localhost:9000にアクセスしてください。
IDはadmin、パスワードは設定した<yourPassword>を入力してログインしてください。

受信ログの設定

「System」から「Inputs」を選択

image.png

「Syslog UDP」を選択して「Launch new input」をクリック

image.png

「Title」と「Port」を変更

 ※必要に応じて他の部分も変更してください。
image.png

「Launch input」を追加後、「Show received messages」をクリック

image.png
問題なければ以下のように表示される
image.png

よくあるエラー

  • Graylogサーバーが立ち上がらない
     curl localhost:9000を実行してRecv failure: Connection reset by peerが出る場合はopensearchが立っていない可能性がある
    docker-compose logs opensearchで状況を確認

  • ログインできない
     自分はこれで1週間悩んだが原因がよくわからなかったので、作業フォルダ(最初)から作り直すことをお勧めします。

  • サーバーを再起動したら受信できなくなった(ダッシュボードに表示されない)
     GraylogのInputs設定で使用している「More actions」>「Edit input」から「input設定」が正しい事を確認してください。特に再起動すると「Node」が選択されていない(「Select Node」になっている)時があります。

  • 「Input」には入ってそうだけど、ダッシュボード・サーチに表示されない
     「System」⇒「Overview」を選択し、ページ中央の「Time configuration」項目ですべて同じ時刻になっていることを確認

    また、OSの時刻とGraylog serverの時刻があっていることも一応確認
     ⇒OSの時刻とYour web browserは多分同じ...
    image.png
    なっていなければ修正すべき時刻を修正
     例えば、日本時間は+9:00なのでそれに準じていないものを修正する

    • Graylogの時刻設定はymlのファイルのTZ:GRAYLOG_ROOT_TIMEZONE:項目
    • VM内の時刻と現時刻が違うときはVMの設定を変更
    • Syslog側から書き出されるログの時刻が日本時間じゃない場合もある

兎にも角にもログとGraylog serverの時刻を同じにする
尚、ログの時刻の方が過去の場合、コンソールから時計マークの横のプルダウンから「all messages」を選択したら見える
(ログの時刻が未来の可能性がある場合は時計マークをクリックして「Absolute」から範囲を設定して見れるかも...?)

雑記になってしまったのでなにかわからないことがあれば連絡してください。
世の為、人の為になる事を願っております。

さばめろん

参照

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?