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?

ログ分析管理OSS(Graylog-6.0.3)のDocker実行Tips

Last updated at Posted at 2024-06-05

ログ分析管理OSSのGraylogのv6.0.3が公開されていたので早速、Dockerで立ち上げて操作性を確認した。その際、使用したdocker-compose.ymlを備忘かねて公開する。
以下公式HP等に記載あるdocker-compose.yml例をコピペするだけでは正常にサービス稼働しない為、一部改変している。
(参考)
https://hub.docker.com/r/graylog/graylog
https://graylog.org/post/announcing-graylog-6-0/
https://go2docs.graylog.org/current/downloading_and_installing_graylog/docker_installation.htm

docker-compose.yml

version: '3.8'

services:
# MongoDB: https://hub.docker.com/_/mongo/
  mongodb:
    image: "mongo:6.0.15"
    volumes:
      - "mongodb_data:/data/db"
    restart: "on-failure"
    networks:
      - graylog

  opensearch:
    image: "opensearchproject/opensearch:2.12.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"
      # Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a linux device via:
      # tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom  | head -c${1:-32}
      OPENSEARCH_INITIAL_ADMIN_PASSWORD: "+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M"
    ulimits:
      memlock:
        hard: "-1"
        soft: "-1"
      nofile:
        soft: "65536"
        hard: "65536"
    volumes:
      - "os_data:/usr/share/opensearch/data"
    restart: "on-failure"
    networks:
      - graylog

  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    hostname: "server"
    image: "graylog/graylog:6.0.3"
    depends_on:
      - mongodb
      - opensearch
    entrypoint: "/usr/bin/tini -- wait-for-it elasticsearch: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_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
      # To make reporting (headless_shell) work inside a Docker container
      GRAYLOG_REPORT_DISABLE_SANDBOX: "true"
      # CHANGE ME (must be at least 16 characters)!
      GRAYLOG_PASSWORD_SECRET: "somepasswordpepper"
      # Password: "admin"
      GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://127.0.0.1:9000/"
    ports:
      - "514:1514/udp"     # Syslog
      - "514:1514/tcp"     # Syslog
      # Graylog web interface and REST API
      - "9000:9000/tcp"
      # Beats
      - "5044:5044/tcp"
      # Syslog TCP
      - "5140:5140/tcp"
      # Syslog UDP
      - "5140:5140/udp"
      # GELF TCP
      - "12201:12201/tcp"
      # GELF UDP
      - "12201:12201/udp"
      # Forwarder data
      - "13301:13301/tcp"
      # Forwarder config
      - "13302:13302/tcp"
    volumes:
      - "graylog_data:/usr/share/graylog/data/data"
      - "graylog_journal:/usr/share/graylog/data/journal"
    restart: "on-failure"
    networks:
      - graylog
volumes:
  mongodb_data:
  os_data:
  graylog_data:
  graylog_journal:
networks:
  graylog:
    driver: "bridge"

docker compose up -d実行画面

image.png

▼Graylog 6.0のログイン画面
http://localhost:9000/
ID:admin PW:admin ※上記docker-compose.ymlをそのまま流用した場合
image.png
Graylog 5.x台までは白黒のトレーディングルーム?が背景だったが、6.0はずいぶんとシンプルになっているw
(参考)Graylog 5.0までのログイン画面背景
image.png

Graylog 6.0のSearch画面

今まで検索ワードの履歴が残らず不便だったが、やっと履歴をだせるようになったのが個人的に一番良いと思ったところ。
あとGraylog 5.x台までは赤色がGUI画面のメインカラーだったが、6.0からは青色がメインカラーに変更されている。
image.png

(補足)docker-compose.ymlの解説(ChatGPTにて生成)

version: '3.8'

この行では、Docker Composeファイルのバージョンを指定しています。ここでは3.8を使用しています。

services:

この行は、Docker Composeで起動するサービスのグループを定義する開始行です。

  mongodb:
    image: "mongo:6.0.15"
    volumes:
      - "mongodb_data:/data/db"
    restart: "on-failure"
    networks:
      - graylog

この部分は、MongoDBサービスの設定を定義しています。
image: "mongo:6.0.15" は、使用するMongoDBイメージとバージョンを指定しています。
※もしもAVXに対応しないCPUを利用する場合はimage指定とplatform指定を以下の通りにする。

    image: "arm64v8/mongo:6.0.15"
    platform: "linux/arm64/v8"

(参考)https://qiita.com/khat/items/6f4702ca105627e3648a

volumes: では、データを永続化するためのボリュームをマウントしています。mongodb_dataボリュームを /data/db にマウントします。
restart: "on-failure" は、Dockerコンテナが異常終了した場合に自動的に再起動するよう指示しています。
networks: では、このサービスが graylog ネットワークに参加することを指定しています。

  opensearch:
    image: "opensearchproject/opensearch:2.12.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"
      # Can generate a password for `OPENSEARCH_INITIAL_ADMIN_PASSWORD` using a linux device via:
      # tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom  | head -c${1:-32}
      OPENSEARCH_INITIAL_ADMIN_PASSWORD: "+_8r#wliY3Pv5-HMIf4qzXImYzZf-M=M"
    ulimits:
      memlock:
        hard: "-1"
        soft: "-1"
      nofile:
        soft: "65536"
        hard: "65536"
    volumes:
      - "os_data:/usr/share/opensearch/data"
    restart: "on-failure"
    networks:
      - graylog

この部分は、OpenSearchサービスの設定を定義しています。

image: "opensearchproject/opensearch:2.12.0" は、使用するOpenSearchイメージとバージョンを指定しています。
environment: では、OpenSearchの環境変数を設定しています。JVMヒープサイズ、シングルノードディスカバリ、インデックス自動作成無効化、セキュリティ無効化、初期管理パスワードなどが含まれています。
ulimits: では、メモリロックとファイル記述子の制限を設定しています。
volumes: では、データを永続化するためのボリュームをマウントしています。os_data ボリュームを /usr/share/opensearch/data にマウントします。
restart: "on-failure" は、Dockerコンテナが異常終了した場合に自動的に再起動するよう指示しています。
networks: では、このサービスが graylog ネットワークに参加することを指定しています。

  graylog:
    hostname: "server"
    image: "graylog/graylog:6.0.3"
    depends_on:
      - mongodb
      - opensearch
    entrypoint: "/usr/bin/tini -- wait-for-it elasticsearch: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_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
      # To make reporting (headless_shell) work inside a Docker container
      GRAYLOG_REPORT_DISABLE_SANDBOX: "true"
      # CHANGE ME (must be at least 16 characters)!
      GRAYLOG_PASSWORD_SECRET: "somepasswordpepper"
      # Password: "admin"
      GRAYLOG_ROOT_PASSWORD_SHA2: "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://127.0.0.1:9000/"
    ports:
      - "514:1514/udp"     # Syslog
      - "514:1514/tcp"     # Syslog
      # Graylog web interface and REST API
      - "9000:9000/tcp"
      # Beats
      - "5044:5044/tcp"
      # Syslog TCP
      - "5140:5140/tcp"
      # Syslog UDP
      - "5140:5140/udp"
      # GELF TCP
      - "12201:12201/tcp"
      # GELF UDP
      - "12201:12201/udp"
      # Forwarder data
      - "13301:13301/tcp"
      # Forwarder config
      - "13302:13302/tcp"
    volumes:
      - "graylog_data:/usr/share/graylog/data/data"
      - "graylog_journal:/usr/share/graylog/data/journal"
    restart: "on-failure"
    networks:
      - graylog

この部分は、Graylogサービスの設定を定義しています。
hostname: "server" は、このコンテナのホスト名を "server" に設定します。
image: "graylog/graylog:6.0.3" は、使用するGraylogイメージとバージョンを指定しています。
depends_on: では、MongoDBとOpenSearchサービスが起動した後にGraylogが起動するよう指定しています。
entrypoint: では、Graylogの起動時にOpenSearchが利用可能になるまで待機するよう指示しています。
environment: では、Graylogの環境変数を設定しています。タイムゾーン、ノードIDファイル、HTTPバインドアドレス、Elasticsearchホスト、MongoDBURI、パスワードシークレット、rootパスワードハッシュ、外部URIなどが含まれています。
ports: では、ホストとコンテナ間でマッピングする
514:1514/udp と 514:1514/tcp は、SyslogのUDP/TCPポートをマップしています。
9000:9000/tcp は、GraylogウェブインターフェースとRESTAPIのポートをマップしています。
5044:5044/tcp は、Beatsのポートをマップしています。
5140:5140/tcp と 5140:5140/udp は、Syslog TCP/UDPのポートをマップしています。
12201:12201/tcp と 12201:12201/udp は、GELF TCP/UDPのポートをマップしています。
13301:13301/tcp は、Forwarderデータのポートをマップしています。
13302:13302/tcp は、Forwarder設定のポートをマップしています。
この部分では、Graylogのデータを永続化するためのボリュームをマウントしています。
graylog_data ボリュームを /usr/share/graylog/data/data にマウントします。
graylog_journal ボリュームを /usr/share/graylog/data/journal にマウントします。
restart: "on-failure" は、Dockerコンテナが異常終了した場合に自動的に再起動するよう指示しています。
networks: では、このサービスが graylog ネットワークに参加することを指定しています。

volumes:
  mongodb_data:
  os_data:
  graylog_data:
  graylog_journal:

この部分では、使用するボリュームを定義しています。
mongodb_data は、MongoDBのデータ永続化用のボリュームです。
os_data は、OpenSearchのデータ永続化用のボリュームです。
graylog_data と graylog_journal は、Graylogのデータとジャーナルの永続化用のボリュームです。

networks:
  graylog:
    driver: "bridge"

この部分では、サービス間の通信に使用するネットワークを定義しています。
graylog という名前のブリッジネットワークを作成します。

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?