PHPでログインサービスを作成します


私たちのログをマイニングし、出荷するベクトルを使用して、我々はすべてのこれらのログを格納する場所が必要です.
私は、このロギングサービスを構築して、簡単で迅速なデバッグとdevチームのために警告します.私の目標は:高速かつ格安.ログサービスを失敗することができますし、失敗し、再び再起動を得るためにokieです.
私は、私のログのために以下の表スキーマを思いつきました(異なるソースからログを保存するのは可能であるのと同じくらい一般的でありたいです).
CREATE TABLE IF NOT EXISTS log (
        instance_id String,
        node_id String,
        project_id String,    
        app_name String, 
        app_version String,
        client_ip String,            
        log_level String,
        log_message String,
        log_code Int32,
        log_context String,        
        log_created_timestamp UInt32,
        log_time DateTime,
        log_date Date DEFAULT toDate(log_time)               
    )
    ENGINE = MergeTree()
    PARTITION BY toYYYYMM(log_date)
    TTL log_date + INTERVAL 1 Week
    ORDER BY (project_id, log_created_timestamp)
いくつか指摘したいことがあります.
  • 私は古いログを気にしないので、今のところ、1週間以上のログを削除することができます.
  • 私はログを常に作成された日付(最新のログを最初に)で表示されます.
  • 私は特定の基準(アプリケーション、クライアントなどでログをグループ化する)
  • によってフィルタリングしたい
  • 私はClickhouse初心者です、そして、私はまだものを考え出しています.私はひそかに誰かがテーブル・スキーマを見て、私がすることができる改善を指摘することを望みます.
  • 初めに、私はアクセスログと同様にエラーログを記録しました、そして、記録の数はちょうど数日後に数十億に達します.良いことは、ログサービスがかなり小さなサーバインスタンス(CPU:2 Vcore RAM:4096 MBのストレージ:80 GBのSSD)で驚くほどよく動作していることです.悪いことはリストがタイミングを保つことです.私は後で私のテーブルのための正しいインデックスを設定していないことを発見しました(あなたが本当にフィルタリングして注文する列のインデックスを設定しなければなりません).
    次に、PHPを使ってログを処理する方法を示します.