UbuntuのシステムログFilebeatによって収集

需要:Ubuntuの収集システムログ、送信されlogstashする、そのデータはlogstashのelasticsearchに伝達され、最終的にkibana表示ログデータによる。

Filebeatシステムモジュール

Filebeatモジュールは、共通ログ形式、解析と可視化の収集を簡素化することができます。1つ以上のログファイル(ファイルセット)組成物(nginxのために、デフォルトのaccess.logとerror.logファイルである)によって一般的なモジュール(例えば、nginxのログ用)。ここでは、Filebeat使用することができるシステムモジュールの完全なUbuntuのシステムログ。

次の手順で設定システムモジュールの導入(すでにFilebeatをインストールした場合)。

モジュールシステムを有効
Filebeatサポートモジュールはデフォルトで有効になっていません、私たちは以下の方法を使用して、モジュールを有効にすることができます。moudles enableコマンドを実行し、filebeatプログラムを検索:

$ sudoをする ./filebeatモジュールは、システムを有効にします

上記コマンドは、現在有効になっているモジュールを表示するために、次のコマンドを使用して、システムモジュールをイネーブルにします。

$のsudoの ./filebeatモジュールリスト

データを送信するにはlogstashする
Filebeat Logstashにログの行を送信するように設定。これを行うには、コンフィギュレーション・ファイルfilebeat.ymlにElasticsearch出力を無効にし、Logstash出力を有効にします。

#1 output.elasticsearch:
  #hosts:[ " xxx.xxx.xxx.xxx:9200 " ] 
output.logstash:
  ホスト:[ " xxx.xxx.xxx.xxx:5044 " ]

filebeatサービスを再起動します

$ sudoを systemctl再起動filebeat.service

データ処理設定Logstash

logstash Filebeatシステムモジュールは、送信されたデータやいくつかの困難を受け入れましょう、少なくとも我々は少し複雑に見える必要がある設定を

入力{ 
  ビート{ 
    ポート => 5064 
    ホスト => " 0.0.0.0 " 
  } 
} 
フィルタ{ 
  なら [ファイルセット] [モジュール] == " システム" {
     なら [ファイルセット] [名] == " AUTH " { 
      GROK { 
        マッチ = > { " メッセージ" => "%{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}のsshd(?:\ [%{POSINT:[システム] [AUTH] [PID]} \] )?:%{DATA:[システム] [AUTH] [SSH] [イベント]}%{DATA:[システム] [AUTH] [SSH] [方法]}(無効なユーザーのために)%{DATA:[システム] [AUTH] [ユーザー]}%から{IPORHOST:[システム] [AUTH] [SSH] [IP]}ポート%{NUMBER:[システム] [AUTH] [SSH] [ポート]} SSH2(:%{GREEDYDATA。 [システム] [AUTH] [SSH] [署名]})?" " %{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}のsshd(?:\ [%{POSINT:[システム] [AUTH] [PID] } \])?:%{DATA:[システム] [AUTH] [SSH] [イベント]}ユーザ%{DATA:%から[システム] [AUTH] [ユーザー]} {IPORHOST:[システム] [AUTH] [ SSH] [IP]} " "%{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}のsshd(?:\ [%{POSINT:[システム] [AUTH] [PID]} \] )?:識別文字列を受信しなかった%から{IPORHOST:[システム] [AUTH] [SSH] [dropped_ip]} " " %{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}須藤(?:\ [%{POSINT:[システム] [AUTH] [PID]} \])?:\ S *%{DATA:[システム] [AUTH] [ユーザー]}。 (%{DATA:[システム] [AUTH] [須藤] [エラー]};)?TTY =%{DATA:[システム] [AUTH] [須藤] [TTY]}。PWD =%{DATA:[システム] [AUTH] [須藤] [PWD]}。USER =%{DATA:[システム] [AUTH] [須藤] [ユーザー]}。COMMAND =%{GREEDYDATA:[システム] [AUTH] [須藤] [コマンド]} " "%{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]} groupaddの(?:\ [%{POSINT:[システム] [AUTH] [PID]} \] )?:新しいグループ:名前=%{DATA:system.auth.groupadd.name}、GIDは=%{NUMBER:system.auth.groupadd.gid} " " %{SYSLOGTIMESTAMP:[システム] [AUTH] [タイム・スタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}のuseradd(?:\ [%{POSINT:[システム] [AUTH] [PID]} \])?:新しいユーザー:名=%{DATA: [システム] [AUTH] [ユーザー] [名]}、UID =%{NUMBER [追加]:[システム] [AUTH] [ユーザー] [追加] [UID]}、GID =%{NUMBER:[システム] [ AUTH] [ユーザー] [追加] [GID]}、家庭=%{DATA:[システム] [AUTH] [ユーザー] []追加[ホーム]}、シェル=%{DATA:[システム] [AUTH] [ユーザ] [] [シェル]} $を追加" "%{SYSLOGTIMESTAMP:[システム] [AUTH] [タイムスタンプ]}%{SYSLOGHOST:[システム] [AUTH] [ホスト名]}%{DATA:[システム] [AUTH] [プログラム]}(?:\ [%{POSINT [システム] [AUTH] [PID]} \])?:%{GREEDYMULTILINE:[システム] [AUTH] [メッセージ]} " ]} 
        pattern_definitions => {
           " GREEDYMULTILINE " => " (|の\ n)*。" 
        } 
        remove_field => " メッセージ" 
      } 
      { 
        マッチ => " [システム] [AUTH] [タイムスタンプ] " " MMM dがHH:MM:SS " "MMM DD HH:mm:ssの" ] 
      } 
      のGeoIP { 
        ソース => " [システム] [AUTH] [SSH] [IP] " 
        ターゲット => " [システム] [AUTH] [SSH] [のGeoIP] " 
      } 
    } 
    そう なら [ファイルセット] [名] = = " syslogの" { 
      GROK { 
        マッチ => { " メッセージ" => " %{SYSLOGTIMESTAMP:[システム] [システムログ] [タイムスタンプ]}%{SYSLOGHOST:[システム] [システムログ] [ホスト名]}%{DATA: [システム] [システムログ] [プログラム]}(?:\ [%{POSINT:[システム] [システムログ] [PID]} \])?:%{GREEDYMULTILINE。[システム] [システムログ] [メッセージ]} "]} 
        pattern_definitions => { " GREEDYMULTILINE " => " (|。の\ n)* " } 
        remove_field => " メッセージ" 
      } 
      { 
        マッチ => " [システム] [システムログ] [タイムスタンプ] "MMMは、D HH :MM:SS " " MMMはHHを×:MM:SS " ] 
      } 
    } 
  } 
} 
出力{ 
  elasticsearch { 
    ホスト => xxx.xxx.xxx.xxx
    manage_template =>
    インデックス => " %{[メタデータ@] [ビート]} - %{[@メタデータ] [バージョン]} - %{+ YYYY.MM.DD} " 
  } 
}

問題領域を扱う
この構成は、私はああ直接操作できるようにする方法を参照してください!残念ながら、それは、少なくともではない私のUbuntu 18.04で、うまく動作しません。問題の核心は、地域のすべてのローカルタイムゾーンを記録し、auth.logをまたはsyslogかどうかです。

に対処するためのUTC時刻として、これらの時間の上記構成では。その理由を調べ、上のローカルプラグインの日付のタイムゾーン情報を追加、修正するために非常に簡単です。例えば、東8地区に著者のタイムゾーンは、それぞれ、2つの構成日付で、以下の情報を追加します。

タイムゾーン=> アジア/重慶

让独立的 pipeline 处理该数据流
下面创建一个新的目录 /etc/logstash/myconf.d,并在 /etc/logstash/myconf.d 目录下创建 Logstash 配置文件 krtest.conf。然后在 /etc/logstash/pipelines.yml 文件中添加新的 pipeline 配置:
- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"
- pipeline.id: krtest
  path.config: "/etc/logstash/myconf.d/krtest.conf"
其中 pipeline.id 为 main 的管道是默认的配置,我们新添加了 id 为 krtest 的管道并指定了对应的配置文件路径。把上面的配置写入到 /etc/logstash/myconf.d/krtest.conf 文件中。然后重启 logstash 服务:

$ sudo systemctl restart logstash.service

在 Kibana 中查看日志

最后在 kibana 中添加 filebeat 开头的 index pattern,就可以通过图形界面查看 ubuntu 的系统日志了:

参考:
Filebeat Modules
System module
Working with Filebeat Modules

おすすめ

転載: www.cnblogs.com/sparkdev/p/11125811.html