閱讀162 返回首頁    go 阿裏雲 go 技術社區[雲棲]


日誌服務十大經典問題

日誌服務十大經典問題

一. 非阿裏雲的機器能用logtail嗎?

能用,裝好logtail之後要額外做一個配置
先找到自己的阿裏雲賬號ID,例如:123456

  • Linux touch /etc/ilogtail/users/123456
  • Windows 原理同Linux,創建、刪除用戶標識同名文件到目錄 C:\LogtailData\users C:\LogtailData\users\123456

二. 安裝好logtail之後無心跳

  1. 先看logtail狀態是否在running sudo /etc/init.d/ilogtaild status 如果狀態running的話,打開文件/usr/local/ilogtail/ilogtail.LOG
  2. 主賬號沒有access key,會報錯 Unauthorized ErrorMessage:no authority, denied by ACL,現在主賬號必須有access key才能正常運行logtail
  3. 找到配置(示例是杭州的project,走內網) config server:https://logtail.cn-hangzhou-intranet.log.aliyuncs.com https config server:https://logtail.cn-hangzhou-intranet.log.aliyuncs.com 看看自己的project的域跟這個能否對上,檢查一下網絡連通性,裝錯網絡請卸載後(命令 sh logtail.sh uninstall)後重裝logtail。 javascript 經典網絡ECS telnet logtail.cn-regionName-intranet.log.aliyuncs.com 80 VPC網絡ECS telnet logtail.cn-regionName-vpc.log.aliyuncs.com 80 公網 telnet logtail~~.cn-regionName.log.aliyuncs.com 80
  4. 如果域沒有問題,網絡也是通的,找到UUID開頭的這一段 javascript 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 vi /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 這個文件裏麵,所以直接看這個文件最簡單。

三. 怎麼配置正則

可以使用自動配置正則,參考這個動畫

reg_ops
常見格式的采集配置可以參考下 采集方式

四. 機器有心跳,采集配置都做好,但是點擊預覽無數據

  1. Logtail配置監控的文件,有沒有實時寫入?logtail收集數據,要被監控的文件有實時寫入,才會觸發收集動作。
  2. 如果logtail配置裏麵有time字段,看看您的數據,時間區間要在 -12小時 ~ +15分鍾 這個區間的數據才能被收集。
  3. 打開文件/usr/local/ilogtail/ilogtail.LOG,看看裏麵有沒有報錯,常見錯誤參考 logtail 收集錯誤查詢
  4. 如果配置的不是監控文件,使用的是syslog發現沒有數據,請先確認下rsyslog配置是否正確正確,參考syslog配置文檔 然後確認下rsyslog版本,要裝7以上版本,否則ilogtail.LOG裏麵會有報錯無法上傳數據 message:invalid time format, support unix-timestamp

五. 點擊預覽有數據,點擊查詢沒有數據

  1. 要使用查詢功能,必須開啟索引。注意索引功能是收費的,所以需要您手動打開,如圖:
    11111

  2. 索引打開了,還是查不到數據
    對索引的任何更改,打開索引/配置索引,都隻對這個時間點後收集上來的數據有效,舊數據都無效。

  3. 點擊查詢頁麵的統計圖表,為何沒有數據?
    統計圖表隻支持統計語法,查詢框裏麵要輸入統計語法才能查到數據,參考:統計語法

  4. 為什麼查有些關鍵詞查不到
    索引有分詞配置,分為全文索引和鍵值索引,如截圖
    22222

  • 隻有被分詞分出來的term才能被搜索出來,隻有配置了鍵值索引才能用key:value這樣的語法查詢。

  • 注意,為了節約索引費用,我們做了索引優化,配置了鍵值索引的key,不進全文索引。舉例: 日誌裏麵有個key叫做 message,並且配置了鍵值索引,加了空格做分詞(加空格做分詞,請把空格加到分詞字符串的中間)。例如:message: this is a test message。
    可以用 key:value 的格式 message:this 查到,但是直接查this查不到,因為配置了鍵值索引的key,不進全文索引了。

  • 舉例:日誌裏麵是這個內容 abc%def 您必須把%加到分詞裏麵,才能查到 abc 或者 def,支持前綴模煳查詢,abc*可以搜索到abc開頭的短語,具體查詢語法,請參考:查詢語法

六. 投遞MaxCompute 配置

配置時候,注意以下事項:
1. 隻支持主賬號做投遞配置,不支持子賬號
2. 如果MaxCompute的項目裏麵已經建好表,可以選一張表,如果沒有就選新建表,會自動幫您創建一張表,配置界麵的左邊,填日誌服務的key名稱,右邊填MaxCompute表的列名。
3. 注意不要使用MaxCompute 保留字,表名稱,列名稱,都檢查一遍。MaxCompute 保留字
4. 分區列建議用日誌服務的係統保留字段__partition_time__,用日誌采集時間來做分區,分區時間格式使用Java SimpleDateFormat,例如: 以天為分區yyyyMMdd,以小時為分區yyyyMMddHH,以分鍾為分區yyyyMMddHHmm,注意不要使用精確到秒的日期格式,很容易導致單表的分區數目超過限製(6萬),該格式不得包含斜線字符/ ,因為斜線字符也是MaxCompute 保留字。
5. MaxCompute分區列不允許空,如果您不用係統保留字段__partition_time__,要用自己的key,一定要確保這個key存在且有值,如果這個key沒有值,投遞的時候會忽略這條數據,而且這個key的值枚舉不超過6萬。
6. 投遞時候對於非分區列會做下cast,如果cast沒有成功,在MaxCompute那邊看數據會發現裏麵是 \N,這種情況是您的日誌服務上的數據格式不符合MaxCompute表的要求。
7. 如果同時配置了oss和MaxCompute投遞,oss和MaxCompute的投遞名稱不能重名。
8. 投遞任務報錯
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替換成您自己的項目名和表名
ADD USER aliyun$shennong_open@aliyun.com;
GRANT Read, List ON PROJECT ODPS_PROJECT_NAME TO USER aliyun$shennong_open@aliyun.com;
GRANT Describe, Alter, Update ON TABLE ODPS_TABLE_NAME TO USER aliyun$shennong_open@aliyun.com;

七. 分區不夠用怎麼辦

用戶在調用SDK或者是在 ilogtail.LOG中發現這樣的錯誤, write quota exceed,就是分區處理能力不夠了,需要分裂下分區。

每個分區可提供一定的服務能力:
寫入:5MB/s,2000次/s
讀取:10MB/s,100次/s

分裂分區如截圖:
11111

八. logtail收集日誌topic以及數據過濾怎麼配置

logtail的配置默認是不生成topic的,但是logtail的配置路徑往下遞歸,用戶很多時候需要區分數據來自哪個文件夾,這個時候就可以通過文件路徑正則來配置生成topic,舉個例子如截圖,監控 /var 這個目錄下的所有子目錄,info.log文件
如果有個子目錄是這樣的 /var/abcd/info.log
把文件路徑正則填成 /var/([^/]*)/.*.log
abcd就會被抽取出來作為topic,這樣就可以通過topic來區分數據來自哪個目錄了。

數據過濾,指定字段Key存在且Value符合正則表達式的日誌會被保留,多個條件是AND的關係,下麵的截圖配置,當request字段與(POST\s.*)|(GET\s.*) 匹配成功,Logtail將該日誌上傳至日誌服務。22222

九. 如何使用子賬號

授權策略采用通用的RAM權限配置格式,下麵這個配置可以登錄控製台ListProject,查看project下的logstore

{
   "Version": "1",
   "Statement": [
     {
       "Action": ["log:ListProject"],
       "Resource": ["acs:log:*:*:project/*"],
       "Effect": "Allow"
     },
     {
       "Action": [
         "log:Get*",
         "log:List*"
       ],
       "Resource": "acs:log:*:*:project/<指定的Proejct名稱>/*",
       "Effect": "Allow"
     }
   ]
 }

資源列表
動作列表

十. 使用sdk的常見問題

  1. 上傳數據時候如果有time字段,這個時間必須在當前基點[-7 天~15 分鍾]範圍內,否則會返回400錯誤。
  2. 日誌消費接口是直接讀loghub的,可以直接用速度快,日誌查詢讀的是索引,要開通索引才能用速度慢。
  3. 索引查詢做全量查詢速度不是非常快,建議先用 GetHistograms 取得日誌分布區間,再用 GetLogs一個區間一個區間去取數據,取數據的時候要檢查IsCompleted()是不是true,否則查詢結果不準確需要重試,GetLogs最大每次隻能返回100條數據。

最後更新:2017-06-22 22:34:26

  上一篇:go  ionic自定義component
  下一篇:go  Spring Boot筆記——2