FailureUrl API

概要

FailureUrl APIは、Fess のクロール障害URLを管理するためのAPIです。 クロール中にエラーが発生したURLの一覧取得、個別取得、削除などを操作できます。

ベースURL

/api/admin/failureurl

エンドポイント一覧

メソッド パス 説明
GET /logs 障害URL一覧取得
GET /log/{id} 障害URL取得
DELETE /log/{id} 障害URL削除
DELETE /all 全障害URL削除

障害URL一覧取得

リクエスト

GET /api/admin/failureurl/logs

パラメーター

パラメーター 型 必須 説明
size Integer いいえ 1ページあたりの件数(デフォルト: 25。fess_config.properties の paging.page.size で変更可能)
page Integer いいえ ページ番号(1から開始、デフォルト: 1)
url String いいえ URLフィルター(ワイルドカード * ? 使用可)
error_count_min Integer いいえ エラー発生回数の下限フィルター(指定値以上)
error_count_max Integer いいえ エラー発生回数の上限フィルター(指定値以下)
error_name String いいえ エラー名フィルター(格納されている完全修飾クラス名に対するワイルドカード検索。* ? 使用可)

これらのパラメーターは、JSON のリクエストボディ(例: {"size": 50, "page": 1} )で指定します。URL のクエリ文字列(例: ?size=50 )で指定した値は無視されるため、指定しない場合は常に先頭の 25 件が返ります。

レスポンス

{
  "response": {
    "status": 0,
    "logs": [
      {
        "id": "failure_id_1",
        "url": "https://example.com/broken-page",
        "thread_name": "Crawler-1",
        "error_name": "java.net.ConnectException",
        "error_log": "Connection refused: connect",
        "error_count": "3",
        "last_access_time": "1738144800000",
        "config_id": "webConfig_id_1"
      },
      {
        "id": "failure_id_2",
        "url": "https://example.com/not-found",
        "thread_name": "Crawler-2",
        "error_name": "org.codelibs.fess.exception.ContentNotFoundException",
        "error_log": "Not found: https://example.com/not-found",
        "error_count": "1",
        "last_access_time": "1738143000000",
        "config_id": "webConfig_id_1"
      }
    ],
    "total": 45
  }
}

レスポンスフィールド

フィールド 説明
id 障害URL ID
url 失敗したURL
thread_name スレッド名
error_name エラー名(発生した例外の完全修飾クラス名。例: java.net.ConnectException)
error_log エラーログ(例外のメッセージやスタックトレース)
error_count エラー発生回数(数値を表す文字列)
last_access_time 最終アクセス時刻(エポックミリ秒を表す文字列)
config_id クロール設定ID

注釈

レスポンスの各フィールドはすべて文字列(JSON string)として返されます。 error_count は数値を表す文字列、last_access_time はエポックミリ秒を表す文字列です。

障害URL取得

リクエスト

GET /api/admin/failureurl/log/{id}

レスポンス

{
  "response": {
    "status": 0,
    "log": {
      "id": "failure_id_1",
      "url": "https://example.com/broken-page",
      "thread_name": "Crawler-1",
      "error_name": "java.net.ConnectException",
      "error_log": "Connection refused: connect",
      "error_count": "3",
      "last_access_time": "1738144800000",
      "config_id": "webConfig_id_1"
    }
  }
}

障害URL削除

リクエスト

DELETE /api/admin/failureurl/log/{id}

レスポンス

{
  "response": {
    "status": 0
  }
}

全障害URL削除

すべての障害URLを削除します。パラメーターはありません。

リクエスト

DELETE /api/admin/failureurl/all

レスポンス

{
  "response": {
    "status": 0
  }
}

エラータイプ

error_name には、クロール中に発生した例外の完全修飾クラス名がそのまま格納されます。 固定の列挙値ではなく、発生した例外に応じて任意のクラス名が入ります。 以下は代表的な例です。

エラー名(例) 説明
java.net.ConnectException 接続拒否(サーバーに接続できない)
java.net.UnknownHostException ホスト名を解決できない(DNSエラー)
java.net.SocketTimeoutException 接続または読み取りのタイムアウト
javax.net.ssl.SSLException SSL/TLS のハンドシェイクまたは証明書エラー
java.io.IOException 入出力エラー
org.codelibs.fess.exception.ContentNotFoundException crawler.failure.url.status.codes に設定したHTTPステータスコード(デフォルト: 403, 404, 410)が返されたURL
org.codelibs.fess.crawler.exception.MaxLengthExceededException コンテンツが最大長を超過

使用例

障害URL一覧の取得

curl -X GET "http://localhost:8080/api/admin/failureurl/logs" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"size": 100, "page": 1}'

エラー回数でフィルター

# 3回以上エラーが発生したURLのみ取得
curl -X GET "http://localhost:8080/api/admin/failureurl/logs" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"error_count_min": 3}'

エラー名でフィルター

# error_name には完全修飾クラス名が格納されるため、ワイルドカードで指定する
curl -X GET "http://localhost:8080/api/admin/failureurl/logs" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"error_name": "*ConnectException"}'

障害URLの取得

curl -X GET "http://localhost:8080/api/admin/failureurl/log/failure_id_1" \
     -H "Authorization: Bearer YOUR_TOKEN"

障害URLの削除

curl -X DELETE "http://localhost:8080/api/admin/failureurl/log/failure_id_1" \
     -H "Authorization: Bearer YOUR_TOKEN"

全障害URLの削除

curl -X DELETE "http://localhost:8080/api/admin/failureurl/all" \
     -H "Authorization: Bearer YOUR_TOKEN"

エラータイプ別の集計

# エラータイプごとにカウント
curl -X GET "http://localhost:8080/api/admin/failureurl/logs" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"size": 1000}' | \
     jq '[.response.logs[].error_name] | group_by(.) | map({error: .[0], count: length})'

参考情報