CLI使用案例3:輕鬆跨庫查詢資料並下載到本地
當你需要查詢資料或者下載到本地時, 是否遇到一些困難:
- Web查詢不支援跨多個logstore查詢?
- 現在的Web控制檯只能一頁一頁的下載?
- SDK提供的介面需要用起來有些複雜, 例如大資料量分頁如何控制, 調整資料的輸出格式化? 需要重試不精確查詢.
如果是的, 你可以使用日誌服務的CLI輕鬆解決這些問題.
查詢日誌
介紹
查詢資料(GetLog)指的是針對索引資料, 在特定時間範圍內搜尋特定的日誌.
查詢日誌的特點是:
- 針對獲取索引的資料
- 按照索引獲取, 跨分割槽, 支援跨多個logstore查詢
- 可以按照主題, 全文分詞, 特定索引域等查詢條件獲取.
- 按照日誌資深時間查詢, 而不是伺服器接收.
參考查詢語法以瞭解如何開啟索引以及查詢的相關語法.
查詢日誌
根據設定好的查詢語句查詢資料, 即可通過CLI輕鬆查詢資料. 下面例子查詢某個時間範圍, 某臺伺服器響應速度大於5秒的訪問日誌.
aliyunlog log get_log_all --project_name="p1" --logstore_name="l1" --query="host:test.com and response_time>5000" --from_time="2018-01-24 16:00:00+8:00" --to_time="2018-01-24 17:00:00 +8:00"
這裡拉取從時間2018-01-24 16:00:00+8:00
到2018-01-24 17:00:00+8:00
在內滿足條件host:test.com and response_time>5000
的日誌, 例如:
{"count": 101, "logs": [{"k1":"a1", "k2":"a2"}, {"k1":"b1", "k2":"b2"}, ... ]}
注意:
- 這裡也可以使用子命令
get_log(s)
並傳入size=-1
, 但如果資料量特別多時, 例如總行數100萬行的時候, 推薦使用get_log_all
.
轉換格式並儲存到檔案
如果期望將資料按照一行一條的形式儲存下來, 一般需要加入jmes-filter
進行處理. 如果期望儲存到檔案, 這直接使用>>
重定向到檔案即可.
例如:
aliyunlog log get_log_all --project_name="p1" --logstore_name="l1" --query="host:test.com and response_time>5000" --from_time="2018-01-24 16:00:00+8:00" --to_time="2018-01-24 17:00:00 +8:00" --jmes-filter="join(`
`, map(&to_string(@), @))" >> ~/Desktop/test.data
輸出將被儲存在檔案test.data
中, 格式為:
{"k1":"a1", "k2":"a2"}
{"k1":"b1", "k2":"b2"}
...
時間格式
時間格式推薦是%Y-%m-%d %H:%M:%S %Z
, 如2018-01-24 17:00:00+8:00
, 但也支援其他合法的時間格式, 例如:Jan 01 2018 10:10:10+8:00
時間範圍
命令get_log(s)
或get_log_all
傳入的時間範圍, 需要注意幾點:
- 這裡的時間指的是解析出的日誌時間(日誌配置沒有指定的情況下, 伺服器接收日誌的時間會設為這個時間).
- 時間的範圍是左閉右閉
[]
, 上面例子中16:00:00
和17:00:00
時間的日誌都會獲得.
跨庫查詢
使用介面get_project_logs
可以跨庫查詢日誌. 例如:
aliyunlog log get_project_logs --request="{"project":"p1", "query":"select count(1) from logstore1, logstore2, logstore3 where __date__ >`2017-11-10 00:00:00` and __date__ < `2017-11-13 00:00:00`"}"
具體細節可以參考跨庫查詢.
進一步參考
- 阿里雲日誌服務
-
阿里雲日誌服務CLI
(Github開源)
相關文章
- 在`Laravel`中使用`cursor`來查詢並處理資料 (輕鬆處理千萬級的資料)Laravel
- 在Laravel中使用cursor來查詢並處理資料 (輕鬆處理千萬級的資料)Laravel
- SQL Server 跨資料庫查詢SQLServer資料庫
- 使用navicat匯出查詢大量資料結果集並匯入到其他資料庫(mysql)資料庫MySql
- 研究生論文寫到很頭疼嗎?送你個影像資料庫查詢文獻更輕鬆資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- oracle資料庫建立Squence序列並查詢Oracle資料庫
- 大型資料庫中跨shard查詢使用的技術對比資料庫
- 解析MSSQL跨資料庫查詢的實現方法SQL資料庫
- java 查詢資料庫並生成多層childrenJava資料庫
- 資料庫查詢第5到8行的資料資料庫
- 輕鬆搞跨資料治理,就靠這7招!
- langchain_chatchat+ollama部署本地知識庫,聯網查詢以及對資料庫(Oracle)資料進行查詢LangChain資料庫Oracle
- 一條SQL完成跨資料庫例項Join查詢SQL資料庫
- SQL server跨庫查詢SQLServer
- 資料庫查詢資料庫
- mysql 5.7後使用sys資料庫下的表查詢資料庫效能狀況MySql資料庫
- Android 下載Zip檔案,並解壓到本地Android
- pip和conda下載包到本地並安裝
- 資料庫 - 資料查詢資料庫
- 資料庫資料的查詢----連線查詢資料庫
- 使用ADO.NET輕鬆操縱資料庫(一)資料庫
- 使用ADO.NET輕鬆操縱資料庫(二)資料庫
- 破解微信資料庫 並查詢資料上傳伺服器資料庫伺服器
- 輕鬆查詢Windows自啟動程式(轉)Windows
- 輕鬆上雲系列之一:本地資料遷移上雲
- sqlite建立本地資料庫並插入資料SQLite資料庫
- 輕鬆讓別人訪問到自己本地專案
- iOS 輕鬆使用 App 資料統計iOSAPP
- 使用「TablePlus」輕鬆安全地管理多個資料庫資料庫
- 資料庫高階查詢之子查詢資料庫
- oracle 跨庫查詢greenplum慢Oracle
- 遠端登入server匯出linux下oracle資料庫中的資料並從本地下載ServerLinuxOracle資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 查詢資料庫大小資料庫
- 資料庫排序查詢資料庫排序
- Jemter查詢資料庫資料庫