grafana官方使用文檔_使用 Loki 采集微服務日志

helm快速生效方法
wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz
cd linux-amd64/
cp helm /usr/local/bin
chmod a+x /usr/local/bin/helm


在 Kubernetes 上使用FluentBit+Loki +Grafana查看微服務日志

安裝 Loki 和 FluentBit

開始安裝 Loki ,使用 Helm 來快速安裝,首先添加 Chart 倉庫:

# Add the loki helm chart
helm repo add loki https://grafana.github.io/helm-charts
helm repo update

Chart 倉庫配置完成后就可以直接進行安裝了:

# Create the namespace to install loki
$ kubectl create ns loki
# Apply the loki helm chart
$ helm upgrade --install loki --namespace=loki loki/loki  --set fluent-bit.enabled=true,promtail.enabled=false,grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=true,prometheus.server.persistentVolume.enabled=true
Release "loki" does not exist. Installing it now.
NAME: loki
LAST DEPLOYED: Thu Nov 19 11:48:00 2020
NAMESPACE: loki
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Verify the application is working by running these commands:
  kubectl --namespace loki port-forward service/loki 3100
  curl http://127.0.0.1:3100/api/prom/label

安裝的時候要注意設置 fluent-bit.enabled=true,這樣就可以使用 FluentBit 作為日志轉發器了;

安裝 FluentBit:

$ helm upgrade --install fluent-bit --namespace=loki loki/fluent-bit --set loki.serviceName=loki.loki.svc.cluster.local
Release "fluent-bit" does not exist. Installing it now.
NAME: fluent-bit
LAST DEPLOYED: Thu Nov 19 11:51:12 2020
NAMESPACE: loki
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Verify the application is working by running these commands:
  kubectl --namespace loki port-forward daemonset/fluent-bit-fluent-bit-loki 2020
  curl http://127.0.0.1:2020/api/v1/metrics/prometheus

安裝完成后我們可以使用用 kubectl -n loki get pods 命令查看 loki 命名空間中正在運行的 pod。

kubectl get pods -n loki


image.png

安裝 Grafana ,使用 Loki 進行一些日志查詢

helm upgrade --install my-release --namespace=loki loki/grafana
安裝完成后查看 Pod 的狀態:
kubectl get pods -n loki


image.png

配置 Loki

這里我們直接使用 port-forward 來訪問 Grafana 服務:
kubectl -n loki port-forward svc/grafana 8080:80 kubectl --namespace loki port-forward $POD_NAME 3000

Navigate to http://localhost:8080 in the browser

在在瀏覽器中打開網址 http://localhost:8080 即可訪問,初次登錄需要輸入用戶名和密碼,用戶名為 admin,對應的密碼可以用下面的命令獲取:

kubectl get secret --namespace loki my-release-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
# The password for the admin user

查看loki命名空間中的service
kubectl get svc -n loki


image.png

這里因為要讓k8s集群外能訪問到所以將ClusterIP 修改為NodePort類型,具體修改后內容如下
kubectl edit svc my-release-grafana -n loki

spec:
  clusterIP: 10.100.87.199
  externalTrafficPolicy: Cluster
  ports:
  - name: service
    nodePort: 30060
    port: 80
    protocol: TCP
    targetPort: 3000

修改好以后保存即可。
生效之后就可以在192.168.100.203:30060訪問grafana了。

image.png

登錄完成后,我們就可以添加 Loki 作為數據源了,從左側面板,選擇配置 -> 數據源:


image.png

在數據源視圖中,點擊添加數據源,然后選擇 Loki。

image.png

給數據源起一個名字,然后設置一個 Grafana 實例可以訪問的 Loki URL。我們這里由于 Loki 和 Grafana 都在相同的命名空間中運行,不需要使用任何驗證方案,因此不需要其他配置,單擊 "保存和測試"。您應該會看到一條確認消息 Data source connected and labels found.。

image.png

http://loki.loki.svc.cluster.local:3100/

日志查詢

現在 Grafana 已經連接到 Loki 了,接下來我們可以查詢部署到 demo 命名空間的示例應用的日志,我們可以查找錯誤,通過 trace id 查找事務等等。

在 Grafana 頁面中,從側面板中選擇 "探索",選擇上一步中添加的 Loki數據源,在查詢框中,輸入{namespace="default"},然后點擊 "運行查詢",正常我們就可以看到日志返回了。


image.png

此外我們還可以添加更多的過濾器和標簽,來縮小我們想要查詢的日志范圍。要查看來自 default 命名空間的 shida-getaway 的日志,可以使用語句 {namespace="default",container="shida-getaway"} 進行查詢,我們也可以查找那些非正常的狀態碼的 http 請求 {namespace="default"} |= "http.resp.status"!= "200"。

我們還可以對來自日志的數據進行一些聚合分析。比如這里面匯總過去5分鐘內 default 命名空間的 http 狀態碼,查詢語句為:sum(count_over_time({namespace="default"} |= "http.resp.status" | json [5m])) by (http_resp_status)

image.png

上面的綠線代表 302 狀態碼,黃線代表 200 狀態碼,過去5分鐘內沒有其他狀態碼。關于 Loki 的查詢語言 LogQL 還有很多高級的操作,我們可以通過官方文檔查看更多。

此外查詢歷史記錄還會被保存下來,這樣我們就可以在將來重新訪問一個查詢歷史了,查詢檢查器還可以報告有關查詢執行的指標。

<main>

<article class="baidu_pl">

日志過濾器,更多參考官網

編寫日志流選擇器后,您可以通過編寫搜索表達式來進一步過濾結果。搜索表達式可以只是文本或正則表達式。
查詢示例:

{job="mysql"} |= "error"
{name="kafka"} |~ "tsdb-ops.*io:2003"
{instance=~"kafka-[23]",name="kafka"} != kafka.server:type=ReplicaManager

過濾器運算符可以被鏈接,并將順序過濾表達式-結果日志行將滿足每個過濾器。例如:

{job="mysql"} |= "error" != "timeout"

已實現以下過濾器類型:

  • |= 行包含字符串。
  • != 行不包含字符串。
  • |~ 行匹配正則表達式。
  • !~ 行與正則表達式不匹配。
    regex表達式接受RE2語法。默認情況下,匹配項區分大小寫,并且可以將regex切換為不區分大小寫的前綴(?i)。

參考資料:https://blog.csdn.net/weixin_39765280/article/details/111248445

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容