tencent cloud

Cloud Log Service

ドキュメントCloud Log Serviceユースケースログ収集ホストファイルログの収集・照会

ホストファイルログの収集・照会

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-12 15:13:59
AI翻訳

操作シナリオ

簡単な運用保守シナリオでは、ログは通常、まずサーバーのローカルファイルに直接出力され、その後Linuxシステムでよく使用されるgrepコマンドを使用して要件を満たすログを検索します。この方法は、ビジネスシステムが複雑になると、ログが異なるサーバーに分散していること、コマンドライン操作が直感的でないこと、サーバー権限管理の制限などの理由でログの検索が困難になり、運用保守効率に深刻な影響を与えます。ログに基づいて統計分析や監視アラートを行う必要がある場合は、さらに困難になります。
本文では、grepコマンドで検索したローカルログを迅速にCLS(Cloud Log Service)へ移行する方法を紹介し、以下の利点を得ます:
データを集中的に保存および検索できるため、複数のサーバーに個別にログインして照会する必要がなく、CLBやマイクロサービスなどのアーキテクチャでは特に重要です。
簡単にクリックするだけでログをすばやく検索でき、コマンドラインや煩雑なサーバー権限管理から解放されます。
ログに基づいて統計分析を行い、PV、インターフェース応答時間、インターフェースエラー率などの主要なビジネス指標を取得します。
異常ログをリアルタイムに検出し、SMS、メール、WeChatなどの複数の方法で通知を受け取ります。
説明
ログがすでにCLSに収集されている場合は、ログ収集とインデックス設定の手順をスキップし、直接手順3:ログ検索を実行できます。

操作手順

ステップ1:ログ収集

サーバーのローカルログに対して、LogListenerを使用して元のログをCLSに収集できます。LogListenerのインストール詳細については、LogListenerインストールガイドを参照してください。
サーバーがTencent Cloud CVM(Cloud Virtual Machine)である場合は、コンソールからLogListenerを自動的にインストールすることもできます。詳細については、CVMでのLogListener一括デプロイを参照してください。
サーバーのローカルログとは異なり、後でログをより便利に検索および統計分析するために、収集時に非フォーマットの元のログをフォーマット済みデータに変換できます。例えば、元のログは以下の通りです:
10.20.20.10 ::: [Tue Jan 22 14:49:45 CST 2019 +0800] ::: GET /online/sample HTTP/1.1 ::: 127.0.0.1 ::: 200 ::: 647 ::: 35 ::: http://127.0.0.1/
セパレータ:::を使用して8つのフィールドに分割し、各フィールドに名前を定義できます:
IP: 10.20.20.10
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]
具体的な操作については、区切り文字形式を参照してください。区切り文字によるログ分割のほか、CLSは正規表現、JSON、全文など複数のログ分割方法をサポートしています。詳細はテキストログの収集を参照してください。

ステップ2:インデックスの設定

インデックス設定の目的は、どのフィールドを検索する必要があるか、フィールドのタイプは何かを定義し、後でログを検索しやすくすることです。ほとんどの利用シーンでは、自動インデックス設定機能を使用してワンクリックで設定を完了できます。詳細については、インデックスの設定を参照してください。

ステップ3:ログの検索

本ドキュメントでは、一般的なgrepコマンドを例に、CLSを使用して同様のログ検索効果を実現する方法を紹介します。CLS検索方法の操作手順については、構文ルール > 操作手順を参照してください。
元のログの例は以下の通りです:
10.20.20.10 ::: [Tue Jan 22 14:49:45 CST 2019 +0800] ::: GET /online/sample HTTP/1.1 ::: 127.0.0.1 ::: 200 ::: 647 ::: 35 ::: http://127.0.0.1/
CLSに対応するフォーマット済みログは以下の通りです:
IP: 10.20.20.10
bytes: 35
host: 127.0.0.1
length: 647
referer: http://127.0.0.1/
request: GET /online/sample HTTP/1.1
status: 200
time: [Tue Jan 22 14:49:45 CST 2019 +0800]

事例1

requestが/online/sampleのログを検索します。
grepコマンドを使用します:
grep "/online/sample" test.log
CLS検索方法を使用します:
request:"/online/sample"

事例2

ステータスコードstatusが200ではないログを検索します。
grepコマンドを使用します:
grep -v "200" test.log
実際には、この方式では一部のログも除外される可能性があります(200が出現したが、statusが200ではないフィールド)。正確に検索するには、正規表現を作成する必要があります。
CLS検索方法を使用します:
NOT status:200
CLSはさらに柔軟な検索方法もサポートしています。例えば、ステータスコードstatusが500以上のログを検索できます。
status:>=500

事例3

statusが200ではないログの件数を集計します。
grepコマンドを使用します:
grep -c -v "200" test.log
CLS検索方法を使用します:
NOT status:200 | select count(*) as errorLogCounts

事例4

ステータスコードstatusが200、かつrequestが/online/sampleであるログを検索します。
grepコマンドを使用します:
grep "200" test.log | grep "/online/sample"
CLS検索方法を使用します:
status:200 AND request:"/online/sample"

事例5

requestが/online/sampleまたは/offline/sampleのログを検索します。
grepコマンドを使用します:
grep -E "/online/sample|/offline/sample" test.log
CLS検索方法を使用します:
request:"/online/sample" OR request:"/offline/sample"

事例6

requestが/online/sampleであり、かつログファイルがtest.logではないログを検索します。
grepコマンドを使用します:
grep -rn "/online/sample" --exclude=test.log
CLS検索方法を使用します:
request:"/online/sample" AND NOT __FILENAME__:"test.log"

事例7

timeが[Tue Jan 22 14:49:45 CST 2019 +0800]のログの先頭10行を検索します。
grepコマンドを使用します:
grep "[Tue Jan 22 14:49:45 CST 2019 +0800]" -B 10 test.log
CLS検索方法を使用します:
time:"[Tue Jan 22 14:49:45 CST 2019 +0800]"
一致するログを検索した後、コンテキスト検索機能を使用すると、そのログ付近のログを表示できます。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック