天天看點

日志服務十大經典問題日志服務十大經典問題

能用,裝好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條資料。

繼續閱讀