昨天的文章中提到如何使用 Graylog 頁面查詢日誌,今天來聊聊如何使用 Graylog 的 RESTful API 來查詢。
Graylog RESTful API 支援多種驗證方式,包括帳號密碼與 Access Token。
Graylog 的所有 Web 界面操作皆可透過 RESTful API 完成,API enpoints 預設位於 http://<GRAYLOG_HOST>:9000/api
,採用 JSON 格式傳輸。我們可利用它實現自動化查詢、報表匯出或與第三方系統整合。
全域 API Browser:點選右上角的 Help 選單(問號圖示),選擇 Global API browser
節點特定 API Browser:進入 System > Cluster Configuration,選擇特定節點後點選 Actions 選單中的 API browser
注意事項:
http://<GRAYLOG_HOST>:9000/api/api-browser/
出現無法顯示的問題,這是已知的 API Browser 相容性問題。Graylog 支援三種主要驗證方式:
最直接的方式是使用 Graylog 登入憑證:
curl -u admin:admin \
-H "Accept: application/json" \
http://<GRAYLOG_HOST>:9000/api/system/cluster/nodes
/api/search/messages
:搜尋訊息(推薦使用)/api/search/universal/relative
:相對時間範圍查詢/api/search/universal/absolute
:絕對時間範圍查詢curl -u admin:admin \
-H "Accept: application/json" \
-G "http://<GRAYLOG_HOST>:9000/api/search/messages" \
--data-urlencode "query=error" \
--data-urlencode "limit=10"
query
:搜尋條件,支援 Elasticsearch 語法,如 level:ERROR AND source:nginx
range
:相對時間範圍(秒),如 range=3600
(過去1小時)from
/ to
:絕對時間,ISO8601 格式fields
:指定回傳欄位,如 fields=message,timestamp,source
limit
:限制回傳筆數查詢過去30分鐘的 ERROR 級別日誌
curl -u admin:admin \
-H "Accept: application/json" \
-G "http://<GRAYLOG_HOST>:9000/api/search/messages" \
--data-urlencode "query=level:ERROR" \
--data-urlencode "range=1800" \
--data-urlencode "limit=20"
查詢特定來源的日誌並指定回傳欄位
curl -u admin:admin \
-H "Accept: application/json" \
-G "http://<GRAYLOG_HOST>:9000/api/search/messages" \
--data-urlencode "query=source:apache" \
--data-urlencode "fields=timestamp,message,source" \
--data-urlencode "range=7200" \
--data-urlencode "limit=50"
使用複合查詢條件
curl -u admin:admin \
-H "Accept: application/json" \
-G "http://<GRAYLOG_HOST>:9000/api/search/messages" \
--data-urlencode "query=level:WARN AND message:timeout" \
--data-urlencode "range=3600"
匯出為 CSV 格式[6]
curl -u admin:admin \
-H "Accept: text/csv" \
-G "http://<GRAYLOG_HOST>:9000/api/search/universal/relative.csv" \
--data-urlencode "query=authentication" \
--data-urlencode "range=14400" \
--data-urlencode "fields=timestamp,source,message"