自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

當(dāng) Pod 崩潰后如何在報警信息中獲取對應(yīng)的日志信息?

開源
Robusta 會自動執(zhí)行部署應(yīng)用程序后發(fā)生的所有事情。它有點(diǎn)像用于 DevOps 的 Zapier/IFTTT,強(qiáng)調(diào)的是預(yù)置的自動化,而不僅僅是“構(gòu)建你自己的”。例如,當(dāng) Pod 崩潰的警報觸發(fā)時。

Robusta 是一個 Python 開發(fā)的用于 Kubernetes 故障排除的開源平臺。它位于你的監(jiān)控堆棧(Prometheus、Elasticsearch 等)之上,并告訴你警報發(fā)生的原因以及如何修復(fù)它們。?

Robusta 包含三個主要部分,全部開源:

  1. 用于 Kubernetes 的自動化引擎
  2. 內(nèi)置自動化以豐富和修復(fù)常見警報
  3. 其他一些手動故障排除工具

還有一些其他額外的可選組件:

  1. 包含 Robusta、Prometheus Operator 和默認(rèn) Kubernetes 警報的工具包
  2. 用于查看集群中所有警報、變更和事件的 Web UI。

Robusta 會自動執(zhí)行部署應(yīng)用程序后發(fā)生的所有事情。它有點(diǎn)像用于 DevOps 的 Zapier/IFTTT,強(qiáng)調(diào)的是預(yù)置的自動化,而不僅僅是“構(gòu)建你自己的”。例如,當(dāng) Pod 崩潰的警報觸發(fā)時,下面的自動化程序也會將日志發(fā)送到 Slack:

triggers:
- on_prometheus_alert:
alert_name: KubePodCrashLooping
actions:
- logs_enricher: {}
sinks:
- slack

每個自動化程序都包含3個部分:

  • Triggers:何時運(yùn)行(基于警報、日志、變更等)
  • Actions:要做什么操作(超過50個內(nèi)置操作)
  • Sinks:將結(jié)果發(fā)送到何處(Slack等)

圖片

架構(gòu)

Robusta 可以通過 Helm 進(jìn)行安裝和管理。

自動化引擎

Robusta 的主要組件是自動化引擎,它作為兩個 Kubernetes Deployments 在集群內(nèi)運(yùn)行。

  • robusta-forwarder:連接到 APIServer 并監(jiān)控 Kubernetes 的變化,將它們轉(zhuǎn)發(fā)給 robusta-runner。
  • robusta-runner:執(zhí)行 playbooks。

圖片

打包的 Prometheus 堆棧(可選)

Robusta 包括一個可選的嵌入式 Prometheus 堆棧,根據(jù)最佳實(shí)踐預(yù)先配置了 Kubernetes 警報。如果已經(jīng)在使用 kube-prometheus-stack,則可以將其指向 Robusta。

Web UI(可選)

有一個 Web UI,它提供一個單一的管理面板來監(jiān)控跨多個集群的所有警報和 pod。

CLI(可選)

robusta 的命令行工具有兩個主要用途:

  1. 通過自動生成 Helm values 使安裝 Robusta 變得更容易。
  2. 手動觸發(fā) Robusta 故障排除工作流程(例如從任何 Java pod 獲取 heap dump)。

它還具有開發(fā) Robusta 本身有用的一些功能。

使用場景

Robusta 默認(rèn)情況下會監(jiān)控下面這些報警和錯誤,并會提供一些修復(fù)建議。

Prometheus Alerts

  • CPUThrottlingHigh - 顯示原因和解決方法。
  • HostOomKillDetected - 顯示哪些 Pods 被 killed 掉了。
  • KubeNodeNotReady - 顯示節(jié)點(diǎn)資源和受影響的 Pods。
  • HostHighCpuLoad - 顯示CPU使用情況分析。
  • KubernetesDaemonsetMisscheduled - 標(biāo)記已知錯誤并建議修復(fù)。
  • KubernetesDeploymentReplicasMismatch - 顯示 deployment 的狀態(tài)。
  • NodeFilesystemSpaceFillingUp - 顯示磁盤使用情況。

其他錯誤

這些是通過監(jiān)聽 APIServer 來識別的:

  • CrashLoopBackOff
  • ImagePullBackOff
  • Node NotReady

此外,WARNING 級別及以上的所有 Kubernetes 事件(kubectl get events)都會發(fā)送到 Robusta UI。

變更追蹤

默認(rèn)情況下,對 Deployments、DaemonSets 和 StatefulSets 的所有變更都會發(fā)送到 Robusta UI,以便與 Prometheus 警報和其他錯誤相關(guān)聯(lián)。默認(rèn)情況下,這些更改不會發(fā)送到其他接收器(例如 Slack),因?yàn)樗鼈兪抢]件。

安裝

要在你的 K8s 集群中配置 Robusta,首先我們需要安裝 Robusta,并連接至少一個目的地(“接收器”)和至少一個源(“觸發(fā)器”)。

為了配置 robusta,我們需要安裝 Robusta CLI 工具,直接使用下面的命令即可安裝:

# 需要 Python3.7 或以上版本
pip install -U robusta-cli --no-cache

然后就可以生成 Robusta 配置文件,這會配置安裝 Slack 或其他集成工具,也非常推薦開啟 cloud UI 工具:

robusta gen-config

上面的命令默認(rèn)情況下會讓我們配置 Slack,所以需要提前做好配置,提供一個 channel 用于接收相關(guān)信息,最后會生成一個名為 generated_values.yaml 的 Helm values 文件,如果在你的 Slack 頻道中收到了如下所示的信息則證明配置是正確的:

圖片

然后我們就可以使用 Helm 進(jìn)行安裝了,首先添加 Helm Chart Repo:

helm repo add robusta https://robusta-charts.storage.googleapis.com && helm repo update

然后可以使用下面的命令進(jìn)行安裝:

helm install robusta robusta/robusta -f ./generated_values.yaml \
--set clusterName=<YOUR_CLUSTER_NAME>

如果你使用的是 KinD 測試集群,則可以提供一個 isSmallCluster=tru 的參數(shù),這樣可以減少相關(guān)資源:

helm install robusta robusta/robusta -f ./generated_values.yaml \
--set clusterName=<YOUR_CLUSTER_NAME> \
--set isSmallCluster=true

比如我這里是 KinD 的測試集群,安裝完成后會有如下所示的 Pod 列表:

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
alertmanager-robusta-kube-prometheus-st-alertmanager-0 2/2 Running 3 (30m ago) 3h25m
prometheus-robusta-kube-prometheus-st-prometheus-0 2/2 Running 2 (34m ago) 4h21m
robusta-forwarder-579fb4b548-7xqq8 1/1 Running 1 (30m ago) 4h23m
robusta-grafana-797c64d5b4-2dbhl 3/3 Running 3 (30m ago) 4h23m
robusta-kube-prometheus-st-operator-7c5db9ccb9-gczlp 1/1 Running 1 (30m ago) 4h23m
robusta-kube-state-metrics-649fd7db9f-6sd8p 1/1 Running 1 (34m ago) 4h23m
robusta-prometheus-node-exporter-5426b 1/1 Running 1 (30m ago) 4h23m
robusta-prometheus-node-exporter-hx6r4 1/1 Running 1 (30m ago) 4h23m
robusta-prometheus-node-exporter-np4jj 1/1 Running 1 (30m ago) 4h23m
robusta-runner-9f4f56c8b-49s7p 1/1 Running 1 (30m ago) 3h48m

如果安裝的時候啟用了 Robusta 的 UI 功能,則可以在 Web UI 中看到當(dāng)前集群的相關(guān)監(jiān)控數(shù)據(jù)。

圖片

測試

默認(rèn)情況下,Robusta 會在 Kubernetes pod 崩潰時發(fā)送通知,這里我們創(chuàng)建一個 crashing 的 pod 來進(jìn)行測試,該測試應(yīng)用的資源清單如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
name: crashpod
spec:
selector:
matchLabels:
app: crashpod
template:
metadata:
labels:
app: crashpod
spec:
containers:
- image: busybox
command: ["sh"]
args:
- "-c"
- "wget -O - https://gist.githubusercontent.com/odyssomay/1078370/raw/35c5981f8c139bc9dc02186f187ebee61f5b9eb9/gistfile1.txt 2>/dev/null; exit 125;"
imagePullPolicy: IfNotPresent
name: crashpod
restartPolicy: Always

直接應(yīng)用該清單即可(或者執(zhí)行 robusta demo 命令也可以),正常啟動后很快該 pod 就會崩潰:

$ kubectl get pods -A
NAME READY STATUS RESTARTS AGE
crashpod-64d8fbfd-s2dvn 0/1 CrashLoopBackOff 1 7s

一旦 pod 達(dá)到兩次重啟后,Slack 頻道就可以接收到有關(guān)崩潰 pod 的消息。

圖片

而且還可以看到完整的 pod 崩潰日志,這個對于監(jiān)控報警是非常有意義的。同樣如果開啟了  Robusta UI,在 Web UI 頁面中也可以看到類似的消息。

圖片

自動化基礎(chǔ)

為了演示 Robusta 自動化是如何工作的,我們將配置一個在 Deployment 發(fā)生變化時發(fā)送 Slack 消息的自動化。

首先添加下面內(nèi)容到 generated_values.yaml 文件中:

customPlaybooks:
- triggers:
- on_deployment_update: {}
actions:
- resource_babysitter:
omitted_fields: []
fields_to_monitor: ["spec.replicas"]

然后更新 Robusta:

helm upgrade robusta robusta/robusta --values=generated_values.yaml

更新后我們來更改一個 Deployment 的副本數(shù):

kubectl scale --replicas NEW_REPLICAS_COUNT deployments/DEPLOYMENT_NAME

正常然后 Slack 的頻道就會收到對應(yīng)的一條如下所示消息通知了:

圖片

如果啟用了 Robusta UI,所有的報警和變更也都會出現(xiàn)在 timeline 下面:

圖片

我們也可以點(diǎn)擊查看變更的內(nèi)容:

圖片

當(dāng)然我們還可以利用 Robusta 來做很多事情,可以自己來實(shí)現(xiàn) playbook 操作,關(guān)于 Robusta 的更多高級使用可以參考官方文檔 https://docs.robusta.dev 了解更多信息。

責(zé)任編輯:姜華 來源: k8s技術(shù)圈
相關(guān)推薦

2017-08-06 19:43:31

2020-05-15 07:00:00

Linux硬盤信息

2024-03-11 16:13:26

C#編程開發(fā)

2018-06-24 15:23:05

軟件工程環(huán)境開發(fā)

2019-09-16 13:48:03

Linux管理日志

2021-04-01 11:28:44

C++ LinuxWindows

2011-06-02 09:51:05

Android 手機(jī)

2020-10-10 09:05:25

信息安全手機(jī)技術(shù)

2018-01-16 16:01:10

Google Chro手動位置

2020-04-30 13:50:11

Linux網(wǎng)卡信息

2009-02-16 20:16:52

Linux網(wǎng)卡硬件查看

2009-11-13 10:53:54

ADO.NET Dat

2021-05-28 10:10:05

LinuxCPU機(jī)器學(xué)習(xí)

2009-03-30 14:30:52

2024-10-10 15:08:40

2013-10-18 10:10:45

Linux漏洞代碼提權(quán)

2021-08-30 13:08:54

Linux實(shí)時監(jiān)控日志文件

2022-10-28 16:42:04

Linuxcrontab日志

2010-10-29 13:30:33

Oracle歸檔日志

2014-03-13 15:14:19

Zabbix監(jiān)控報警Zabbix
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號