能用,裝好logtail之後要額外做一個配置
先找到自己的阿裡雲賬号id,例如:123456
linux
/etc/ilogtail/users/123456
windows
原理同linux,建立、删除使用者辨別同名檔案到目錄 c:logtaildatausers
c:logtaildatausers123456
注意:非阿裡雲的機器,或者是阿裡雲的ecs但是跟日志服務不是一個賬号買的,都必須做這一步
先看logtail狀态是否在running
/etc/init.d/ilogtaild status
如果狀态running的話,打開檔案/usr/local/ilogtail/ilogtail.log
主賬号沒有access key,會報錯 unauthorized errormessage:no authority, denied by acl,現在主賬号必須有access key才能正常運作logtail
找到配置(示例是杭州的project,走内網)
檢查project的域跟這個能否對上,測試一下網絡連通性,裝錯網絡請解除安裝後(指令 sh logtail.sh uninstall)後重裝logtail。
經典網絡ecs
vpc網絡ecs
公網
如果域沒有問題,網絡也是通的,找到uuid開頭的這一段
logtail started, appinfo:{ "uuid" : "ce0da1d4-be7e-41d3-b153-6f33b5471269",
"hostname" : "hostname",
"instance_id" : "8898cc48-566c-11e7-bffa-00163e13138d",
"ip" : "xxx.xxx.xxx.xxx",
"logtail_version" : "0.12.5",
"os" : "linux; 3.10.0-514.6.2.el7.x86_64; #1 smp thu feb 23 03:04:39 utc 2017; x86_64",
"update_time" : "2017-06-21 18:29:40"
}
找到這一行 "ip" : "xxx.xxx.xxx.xxx",控制台必須配置這個ip,否則無心跳。
如果發現檔案中這個ip為空,說明您的機器沒有第一塊網卡(ifconfig eth0),遇到這種情況,請手工綁定一下hosts
/etc/hosts
第一行添加,儲存
xxx.xxx.xxx.xxx machinename
xxx.xxx.xxx.xxx可以填其他網卡ip,machinename用hostname指令取一下。
控制台配置的ip必須跟這個檔案裡面的對上,這個ip是個标簽,不影響走哪個網絡,取這個ip的方法:先取/etc/hosts 裡面綁定的ip,如果沒有綁定,取第一塊網卡的ip(ifconfig eth0),最後會生成在/usr/local/ilogtail/ilogtail.log 這個檔案裡面,是以直接看這個檔案最簡單。
可以使用自動配置正則,參考這個動畫

logtail配置監控的檔案,有沒有實時寫入?logtail收集資料,要被監控的檔案有實時寫入,才會觸發收集動作。
如果logtail配置裡面有time字段,看看您的資料,時間區間要在 -12小時 ~ +15分鐘 這個區間的資料才能被收集。
然後确認下rsyslog版本,要裝7以上版本,否則ilogtail.log裡面會有報錯無法上傳資料 message:invalid time format, support unix-timestamp
要使用查詢功能,必須開啟索引。注意索引功能是收費的,是以需要您手動打開,如圖:
索引打開了,還是查不到資料
對索引的任何更改,打開索引/配置索引,都隻對這個時間點後收集上來的資料有效,舊資料都無效。
點選查詢頁面的統計圖表,為何沒有資料?
為什麼查有些關鍵詞查不到
索引有分詞配置,分為全文索引和鍵值索引,如截圖
隻有被分詞分出來的term才能被搜尋出來,隻有配置了鍵值索引才能用key:value這樣的文法查詢。
注意,為了節約索引費用,我們做了索引優化,配置了鍵值索引的key,不進全文索引。舉例: 日志裡面有個key叫做 message,并且配置了鍵值索引,加了空格做分詞(加空格做分詞,請把空格加到分詞字元串的中間)。例如:message: this is a test message。
可以用 key:value 的格式 message:this 查到,但是直接查this查不到,因為配置了鍵值索引的key,不進全文索引了。
配置時候,注意以下事項:
隻支援主賬号做投遞配置,不支援子賬号
如果maxcompute的項目裡面已經建好表,可以選一張表,如果沒有就選建立表,會自動幫您建立一張表,配置界面的左邊,填日志服務的key名稱,右邊填maxcompute表的列名。
分區列建議用日志服務的系統保留字段__partition_time__,用日志采集時間來做分區,分區時間格式使用java simpledateformat,例如: 以天為分區yyyymmdd,以小時為分區yyyymmddhh,以分鐘為分區yyyymmddhhmm,注意不要使用精确到秒的日期格式,很容易導緻單表的分區數目超過限制(6萬),該格式不得包含斜線字元/ ,因為斜線字元也是maxcompute 保留字。
maxcompute分區列不允許空,如果您不用系統保留字段__partition_time__,要用自己的key,一定要確定這個key存在且有值,如果這個key沒有值,投遞的時候會忽略這條資料,而且這個key的值枚舉不超過6萬。
投遞時候對于非分區列會做下cast,如果cast沒有成功,在maxcompute那邊看資料會發現裡面是 n,這種情況是您的日志服務上的資料格式不符合maxcompute表的要求。
如果同時配置了oss和maxcompute投遞,oss和maxcompute的投遞名稱不能重名。
投遞任務報錯
odps-0420095: access denied - authorization failed [4019], you have no privilege 'odps:describe' on {acs:odps:*:projects//tables/}.
是因為預設添加的權限丢失,在maxcompute上運作下面三個指令重新添加一下權限,odps_project_name odps_table_name替換成您自己的項目名和表名
使用者在調用sdk或者是在 ilogtail.log中發現這樣的錯誤, write quota exceed,就是分區處理能力不夠了,需要分裂下分區。
每個分區可提供一定的服務能力:
寫入:5mb/s,2000次/s
讀取:10mb/s,100次/s
分裂分區如截圖:
logtail的配置預設是不生成topic的,但是logtail的配置路徑往下遞歸,使用者很多時候需要區分資料來自哪個檔案夾,這個時候就可以通過檔案路徑正則來配置生成topic,舉個例子如截圖,監控 /var 這個目錄下的所有子目錄,info.log檔案
如果有個子目錄是這樣的 /var/abcd/info.log
abcd就會被抽取出來作為topic,這樣就可以通過topic來區分資料來自哪個目錄了。
資料過濾,指定字段key存在且value符合正規表達式的日志會被保留,多個條件是and的關系,下面的截圖配置,當request字段與(posts.)|(gets.) 比對成功,logtail将該日志上傳至日志服務。
授權政策采用通用的ram權限配置格式,下面這個配置可以登入控制台listproject,檢視project下的logstore
<a href="https://help.aliyun.com/document_detail/29050.html">資源清單</a>
<a href="https://help.aliyun.com/document_detail/29051.html">動作清單</a>
上傳資料時候如果有time字段,這個時間必須在目前基點[-7 天~15 分鐘]範圍内,否則會傳回400錯誤。
日志消費接口是直接讀loghub的,可以直接用速度快,日志查詢讀的是索引,要開通索引才能用速度慢。
索引查詢做全量查詢速度不是非常快,建議先用 gethistograms 取得日志分布區間,再用 getlogs一個區間一個區間去取資料,取資料的時候要檢查iscompleted()是不是true,否則查詢結果不準确需要重試,getlogs最大每次隻能傳回100條資料。