ウェブサイト検索

Puppet を使用して Graylog サーバーのインストールを自動化する |


このガイドでは、Puppet を使用して Ubuntu/Debian/CentOS に Graylog サーバーをインストールする方法を詳しく説明します。 Graylog は、ログの管理と集約に使用される無料のオープンソース ツールです。収集されたログに基づいてアラートを保存、分析、送信するために使用されます。このツールは通常、構造化データと非構造化データの両方を分析するために使用されます。

Graylog サーバーは次のコンポーネントで構成されます。

  • MongoDB – データと構成を保存します。
  • Graylog サーバー – 組み込みの Web インターフェイスを使用して視覚化するためにログを渡すサーバー。
  • ElasticSearch – これは、Graylog サーバーのログ分析ツールです。
  • Java /OpenJDK – ElasticSearch のランタイム環境を提供します。

ここではPuppet を使用して、これらすべてのコンポーネントを目的のノードにインストールすることを自動化します。この製品はPuppet Labs によって開発されており、Graylog サーバーの構成、管理、展開に使用できます。

Ansible を使用した GrayLog のインストールについては、以下のガイドを参照してください。

  • Ansible を使用して Ubuntu/Debian/CentOS に Graylog サーバーをデプロイする

ステップ 1 – Ubuntu/Debian/CentOS に Puppet をインストールして設定する

このガイドでは、システムに Puppet をインストールして設定する必要があります。これには、Puppet サーバーとそれに接続されるエージェント ノードのセットアップが含まれます。 Graylog の最新バージョンは、Puppet >= 6.21.0 < 8.0.0 と互換性があり、以下の専用ガイドを使用してインストールできます。

  • Debian/Ubuntu の場合
    • Ubuntu に Puppet マスターとエージェントをインストールする
  • CentOS 8 の場合
    • CentOS 8|RHEL 8|Rocky Linux 8 に Puppet サーバーをインストールする
  • CentOS 7 の場合
    • CentOS 7|RHEL 7 に Puppet サーバーとエージェントをインストールする

Puppet サーバーとクライアントを構成したら、接続を検証します

$ sudo /opt/puppetlabs/bin/puppet agent -t
Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for rocky-linux-8.localdomain
Info: Applying configuration version '1651833223'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.01 seconds

ステップ 2 – 必要な Puppet モジュールをインストールする

このガイドでは、Graylog モジュールだけでなく、Java、MongoDB、Elasticsearch などの依存関係の他のモジュールもインストールします。

Graylog Puppet モジュールをインストールする

まずGraylog モジュールをインストールします。

$ sudo /opt/puppetlabs/bin/puppet module install graylog/graylog
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ graylog-graylog (v1.0.0)
  ├── puppetlabs-apt (v8.3.0)
  └── puppetlabs-stdlib (v7.1.0)

Graylog モジュールには、他の必要なモジュールが付属しています。

  • Puppet APT モジュール – 次のコマンドを使用してインストールすることもできます。
sudo /opt/puppetlabs/bin/puppet module install puppetlabs-apt --version <version-number>
  • Puppet 標準ライブラリ モジュール – 以下のようにインストールすることもできます。
sudo /opt/puppetlabs/bin/puppet module install puppetlabs-stdlib --version <version-number>

MongoDB Puppet モジュールをインストールする

次に、MongoDB モジュールをインストールします。

$ sudo /opt/puppetlabs/bin/puppet module install puppet-mongodb
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppet-mongodb (v4.1.1)
  ├─┬ puppet-systemd (v3.8.0)
  │ └── puppetlabs-inifile (v5.2.0)
  ├─┬ puppet-zypprepo (v4.0.1)
  │ └── puppetlabs-concat (v7.1.1)
  ├── puppetlabs-apt (v8.3.0)
  └── puppetlabs-stdlib (v7.1.0)

残念ながら、このモジュールは Debian 11 システムと完全には互換性がありません。したがって、Debian 11 ノードを使用している場合は、インストール中にエラーが発生する可能性があります。

インストールするもう 1 つのモジュールはJava モジュールです。次のコマンドでインストールできます。

$ sudo /opt/puppetlabs/bin/puppet module install puppetlabs-java
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules .
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppetlabs-java (v8.0.0)
  ├── puppet-archive (v6.0.2)
  └── puppetlabs-stdlib (v7.1.0)

最後にElasticsearch モジュールをインストールします。

$ sudo /opt/puppetlabs/bin/puppet module install puppet-elasticsearch
Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ...
Notice: Downloading from https://forgeapi.puppet.com ...
Notice: Installing -- do not interrupt ...
/etc/puppetlabs/code/environments/production/modules
└─┬ puppet-elasticsearch (v8.0.2)
  ├─┬ puppet-elastic_stack (v8.0.0)
  │ ├─┬ puppet-yum (v5.4.0)
  │ │ └── puppetlabs-concat (v7.1.1)
  │ ├── puppetlabs-apt (v8.3.0)
  │ └── puppetlabs-stdlib (v7.1.0)
  ├── puppetlabs-java (v8.0.0)
  └── richardc-datacat (v0.6.2)

次のコマンドを使用して、インストールされている Puppet モジュールを一覧表示します。

$ sudo /opt/puppetlabs/bin/puppet module list --environment production
/etc/puppetlabs/code/environments/production/modules
├── graylog-graylog (v1.0.0)
├── puppet-archive (v6.0.2)
├── puppet-elastic_stack (v8.0.0)
├── puppet-elasticsearch (v8.0.2)
├── puppet-mongodb (v4.1.1)
├── puppet-systemd (v3.8.0)
├── puppet-yum (v5.4.0)
├── puppet-zypprepo (v4.0.1)
├── puppetlabs-apt (v8.3.0)
├── puppetlabs-concat (v7.1.1)
├── puppetlabs-inifile (v5.2.0)
├── puppetlabs-java (v8.0.0)
├── puppetlabs-stdlib (v7.1.0)
└── richardc-datacat (v0.6.2)
/etc/puppetlabs/code/modules (no modules installed)
/opt/puppetlabs/puppet/modules (no modules installed)

ステップ 3 – Puppet を使用して Graylog サーバーを Ubuntu/Debian/CentOS にインストールする

モジュールがインストールされたら、次のように、単一ノード上で MongoDB、Elasticsearch、および Graylog を管理するためのマニフェストを作成します。

パッケージのバージョンを取得する:

  • グレイログのリリース
  • システム要件 (Elasticsearch、MongoDB、Java のサポートされているバージョン)

以下のようにファイルを作成します。

sudo vim /etc/puppetlabs/code/environments/production/manifests/init.pp

ファイルには以下の行が含まれます。

class { 'mongodb::globals':
  manage_package_repo => true,
}->
class { 'mongodb::server':
  bind_ip => ['127.0.0.1'],
  ensure     => 'present',
  restart    => true,
}

include ::java

class { 'elasticsearch':
  ensure => 'present',
  status => 'enabled',
  version      => '7.10.2',
  restart_on_change => true,
  config => {
    'cluster.name' => 'graylog',
    'network.host' => '127.0.0.1',
  },
  jvm_options => [
    '-Xms512m',
    '-Xmx512m'
  ]
}

class { 'graylog::repository':
  version => '4.2'
}->
class { 'graylog::server':
  package_version => 'latest',
  config          => {
    'password_secret' => 'pmHuefc3sMv6SWN6wPoCss6hTy8vksYr1QkFmtVjChi1rdRr6s7FeqNJOrWOWlipMsfmFgqGJM8HLdpF3thwFA4QvLSPhC0O', # Fill in your password secret
    'root_password_sha2' => '434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75',# Fill in your root password hash
    'http_bind_address' => '0.0.0.0:9000',
     'http_external_uri'   => 'https://0.0.0.0:9000/',
  }
}

ファイル内で、生成された password_secret の値を次のように pwgen に置き換えます。

$ pwgen -N 1 -s 96
pmHuefc3sMv6SWN6wPoCss6hTy8vksYr1QkFmtVjChi1rdRr6s7FeqNJOrWOWlipMsfmFgqGJM8HLdpF3thwFA4QvLSPhC0O

root_password_sha2 は、管理者ユーザー用に生成された sha256 パスワードです。

$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password: Str0ngPassw0rd

出力例:

434e27fac24a15cbf8b160b7b28c143a67d9e6939cbb388874e066e16cb32d75

Debian/Ubuntu システムでは、マニフェストを適用するときにMongoDB に関するエラーが発生する可能性があります。このエラーは、 手動で追加されたMongoDB リポジトリを使用するようにマニフェストを編集することで解決できます。

たとえば、次のコマンドを使用して、MongoDB 4.4 リポジトリをDebian Buster に追加できます。

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main"|sudo tee /etc/apt/sources.list.d/mongodb-org.list
sudo apt update

リポジトリとそのGPGキーが追加され、システムが更新されたら、マニフェストを以下のように編集します。

 class { 'mongodb::globals':
  manage_package_repo => false,
  manage_package      => true,
}->
class { 'mongodb::server':
  bind_ip => ['127.0.0.1'],
  ensure     => 'present',
  restart    => true,
}->
class { 'mongodb::client':
}
....

最後に、次のようにエージェント上でマニフェストを実行します。

sudo /opt/puppetlabs/bin/puppet agent -t

サンプル出力:

Elasticsearch がポート 9200 で実行されているかどうかを確認します。

$ curl -X GET localhost:9200
{
  "name" : "graylog.example.com",
  "cluster_name" : "graylog",
  "cluster_uuid" : "tMJGsHuNS6OUgCk5q8RGBQ",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

ステップ 4 – Graylog Web インターフェイスにアクセスする

この時点で、Graylog サーバーはポート 9000 で待機しています。このポートがファイアウォールを通過できるようにします。

##For Firewalld
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

##For UFW
sudo ufw allow 9000/tcp

次に、URL http://IP_Address:9000 を使用して Graylog Web インターフェイスにアクセスします。

上記のようにログイン資格情報を入力します。デフォルトのユーザー名は admin 、パスワードは root_password_sha2 で設定されたものです。この場合、パスワードはStr0ngPassw0rdです。

認証が成功すると、以下の Graylog ダッシュボードが表示されます。

それだ!続いて、Graylog Web インターフェイスで収集されたログを視覚化するためのダッシュボードを作成します。

評決

Puppet を使用して Graylog Server を Ubuntu/Debian/CentOS にインストールする方法に関するこのガイドはこれで終わりです。 Puppet の自動化により、Graylog サーバーのインストールと構成が簡単になることに同意できます。これが有意義だったことを願っています。

続きを見る:

  • Let's Encrypt SSL を使用して Graylog Nginx プロキシを構成する
  • Let’s Encrypt SSL を使用して Graylog サーバーを Ubuntu にインストールする
  • パペットとシェフの自動化を学ぶのに最適な本

関連記事: