sansible.rsyslog

Rsyslog

マスター: ビルドステータス
デベロップ: ビルドステータス

この役割はログを送信するためにrsyslog v8をインストールします。

rsyslogに関する詳細はrsyslogドキュメントを参照してください。

インストールと依存関係

インストールするには、ansible-galaxy install sansible.rsyslogを実行するか、次の内容をroles.ymlに追加してください。

- name: sansible.rsyslog
  version: v3.0

その後、ansible-galaxy install -p ./roles -r roles.ymlを実行します。

タグ

この役割は2つのタグを使用します:buildconfigure

  • build - Rsyslogとその依存関係をインストールします。

組み込みログ設定

Logstashにログファイルを送信するために、いくつかの組み込み設定が含まれています。これらは特定のログファイル形式用に設計されており、常にJSON形式で出力されます。各組み込みハンドラーの例設定は、defaults/main.ymlのbuiltin_configsの下にあります。

Syslogファイル

デフォルトで、syslogメッセージはJSON形式で送信されます。このための追加設定は必要ありません。

Syslogメッセージは次の形式で送信されます:

  • type - 常にsyslog
  • host - 発信元のホスト名
  • timestamp - RFC-3339形式の日付
  • version - JSONログでは常に2
  • role - rsyslog役割設定のapp_nameフィールド
  • message - ログ行自体
  • priority - syslogの重要度番号
  • program - メッセージを発信したサービス名
  • facility - syslogのファシリティ
  • severity - syslogの重要度名
{
  "type": "syslog",
  "host": "192.168.1.1",
  "timestamp": "2017-10-21T14:29:30.739200+00:00",
  "@version": "2",
  "role": "some_application",
  "message": "Something happened",
  "priority": "3",
  "program": "some-local-service",
  "facility": "daemon",
  "severity": "err"
}

認証ログファイル

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_application_logs_enabled: true

認証とauthprivファシリティのメッセージを送信します。Syslogメッセージと同じテンプレートを使用し、typeフィールドはauthlogに設定されます:

{
  "type": "authlog",
  "host": "192.168.1.1",
  "timestamp": "2018-01-09T10:45:01.117615+00:00",
  "@version": "2",
  "role": "some_application",
  "message": " pam_unix(cron:session): session closed for user some_user",
  "priority": "6",
  "program": "CRON",
  "facility": "authpriv",
  "severity": "info"
}

プレーンテキストログファイル

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_application_logs_enabled: true
sansible_rsyslog_builtin_configs_application_logs_logs:
  - path: "/var/log/some_log.log"
    options:
      type: some_application_log

application_logs組み込みは、プレーンテキスト形式のログファイルを処理するために設計されています。これらのログファイルの行はそのままLogstashに送信され、次のJSON形式になります:

  • type - ログファイル設定のtypeフィールド、Logstashフィルタに役立ちます
  • host - 発信元のホスト名
  • timestamp - RFC-3339形式の日付
  • version - プレーンテキストログでは常に1
  • role - rsyslog役割設定のapp_nameフィールド
  • sourcefile - 行が取得されたログファイルの場所
  • message - ログ行自体

例えば:

{
  "type": "application_log",
  "host": "192.168.1.1",
  "timestamp": "2017-10-21T13:58:40.098660+00:00",
  "@version": "1",
  "role": "some_application_log",
  "sourcefile": "/var/log/some_log.log",
  "message": "A plain text log line"
}

JSONログファイル

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_json_logs_enabled: true
sansible_rsyslog_builtin_configs_json_logs_logs:
  - path: "/var/log/some_log.log"
    options:
      type: some_application_log

json_logs組み込みは、JSON形式のログファイルを処理するために設計されています。すべてのフィールドはJSON形式で送信され、いくつかの追加フィールドが追加されています:

  • type - ログファイル設定のtypeフィールド、Logstashフィルタに役立ちます
  • host - 発信元のホスト名
  • version - JSONログでは常に2
  • role - rsyslog役割設定のapp_nameフィールド
  • sourcefile - 行が取得されたログファイルの場所

例えば、次のログ行があるとします:

{ "message": "Some log message", "datetime": "2017-01-01 00:00:00", "level": "info" }

これは次のように送信されます:

{
  "type": "some_application_log",
  "host": "192.168.1.1",
  "@version": "2",
  "role": "some_application",
  "sourcefile": "/var/log/some_log.log",
  "message": "Some log message",
  "datetime": "2017-01-01 00:00:00",
  "level": "info"
}

Nginxアクセスログファイル

nginx_access_logs組み込みは、json_logs組み込みと基本的に同じですが、typeフィールドはnginx-access-logsにハードコードされています。

NginxアクセスログをJSON形式で表示するには、nginx.confで次の設定を使用できます:

log_format main '{ '
    '"http_host": "$http_host", '
    '"clientip": "$remote_addr", '
    '"datetime": "$time_iso8601", '
    '"verb": "$request_method", '
    '"request_full": "$request", '
    '"response": "$status", '
    '"response_length": "$body_bytes_sent", '
    '"request_length": "$request_length", '
    '"referrer": "$http_referer", '
    '"agent": "$http_user_agent", '
    '"request_time": "$request_time", '
    '"upstream_time": "$upstream_response_time", '
    '"user_id": "$http_x_user", '
    '"request_id": "$http_x_request_id" '
'}';

access_log  /var/log/nginx/access.log main;

Dockerコンテナログ

Dockerコンテナログ設定は、ECSコンテナインスタンスに追加することを目的としています。この設定は、ホスト上でunixソケットファイルを作成し、Dockerが実行中のコンテナから生成されたログを転送します。

プレーンテキストログ

sansible_rsyslog_builtin_configs_docker_application_logs_enabled: true

この設定は、/var/run/rsyslog/text.sockにソケットを作成します。アプリケーションのタスク定義内のログ設定は次のようにすべきです:

"LogConfiguration": {
    "LogDriver": "syslog",
    "Options": {
        "tag": { "Ref": "ServiceName" },
        "syslog-address": "unixgram:///var/run/docker/text.sock"
    },
}

JSONログ

sansible_rsyslog_builtin_configs_docker_json_logs_enabled: true

この設定は、/var/run/rsyslog/json.sockにソケットを作成します。アプリケーションのタスク定義内のログ設定は次のようにすべきです:

"LogConfiguration": {
    "LogDriver": "syslog",
    "Options": {
        "tag": { "Ref": "ServiceName" },
        "syslog-address": "unixgram:///var/run/docker/json.sock"
    },
}

Journaldを介したテキストまたはJSONログ

sansible_rsyslog_builtin_configs_docker_journald_logs_enabled: false

この設定は、journaldサービスに接続してリッスンします。これにより、コンテナのログファイルのみが処理され、journald内の他のすべてのログエントリは無視されます。コンテナからのJSONおよびテキスト出力の両方を処理できます。基本ログ記録のために、アプリケーションのタスク定義内のログ設定は次のようにすべきです:

"LogConfiguration": {
    "LogDriver": "journald"
}

ECSデプロイメントでは、ログエントリのメタデータを拡張するために次のように設定できます:

sansible_rsyslog_custom_ecs_properties: yes

これを有効にした場合、アプリケーションのタスク定義内のログ設定は次のようにすべきです:

"LogConfiguration": {
    "LogDriver": "journald",
    "Log-Opts": {
        "labels": "role,ecs_task_container,app_version"
    }
}

インストールするには:

- name: Some app
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_builtin_configs_application_logs_enabled: true
      sansible_rsyslog_builtin_configs_application_logs_logs:
        - path: "/home/application_user/app_log.log"
      sansible_rsyslog_builtin_configs_json_logs_enabled: true
      sansible_rsyslog_builtin_configs_json_logs_logs:
        - path: "/home/application_user/app_log_json.log"
          options:
            type_tag: "application_log"
      sansible_rsyslog_builtin_configs_nginx_access_logs_enabled: true
      sansible_rsyslog_builtin_configs_nginx_access_logs_logs:
        - path: "/var/log/nginx/application_access.log"

設定ファイルにはグローバルデフォルト設定が適用されます。これらはvars/main.ymlで見れます。追加の設定を上書きしたり追加するには、sansible_rsyslog_config_global、sansible_rsyslog_config_imfile、sansible_rsyslog_config_main_queue、sansible_rsyslog_config_omfwdの変数を使用できます:

- name: Some app
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_builtin_configs_application_logs_enabled: true
      sansible_rsyslog_builtin_configs_application_logs_logs:
        - path: "/home/application_user/app_log.log"
      sansible_rsyslog_builtin_configs_json_logs_enabled: true
      sansible_rsyslog_builtin_configs_json_logs_logs:
        - path: "/home/application_user/app_log_json.log"
          options:
            type_tag: "application_log"
      sansible_rsyslog_builtin_configs_nginx_access_logs_enabled: true
      sansible_rsyslog_builtin_configs_nginx_access_logs_logs:
        - path: "/var/log/nginx/application_access.log"
      sansible_rsyslog_config_global:
        maxMessageSize: 32K
        oversizemsg.input.mode: accept
      sansible_rsyslog_config_imfile:
        reopenOnTruncate: "on"
      sansible_rsyslog_config_main_queue:
        queue.size: 100000
      sansible_rsyslog_config_omfwd:
        action.resumeRetryCount: 10

デフォルト設定なしでインストールするには:

- name: Some app
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_default_config: no

特定のパッケージバージョンをインストールするには:

- name: Some app
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_version: "8.30*"
      sansible_rsyslog_version_libfastjson4: "0.99.*"
      sansible_rsyslog_version_mmjsonparse: "8.30.*"
プロジェクトについて

Install rsyslog.

インストール
ansible-galaxy install sansible.rsyslog
ライセンス
mit
ダウンロード
13.1k
所有者
See https://github.com/sansible/sansible for more information