成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenObserve 指標(biāo)和鏈路追蹤方面的支持

運(yùn)維
OpenObserve 除了支持日志之外,也支持指標(biāo)數(shù)據(jù)的攝取,它支持 Prometheus 的遠(yuǎn)程寫入?yún)f(xié)議,這樣我們就可以直接將 Prometheus 的數(shù)據(jù)遠(yuǎn)程寫入到 OpenObserve 中了。

前面我們講到了 OpenObserve 的基本使用,使用 Fluentd 將日志采集后輸出到了 OpenObserve,此外 OpenObserve 還支持指標(biāo)和鏈路追蹤。

指標(biāo)

OpenObserve 除了支持日志之外,也支持指標(biāo)數(shù)據(jù)的攝取,它支持 Prometheus 的遠(yuǎn)程寫入?yún)f(xié)議,這樣我們就可以直接將 Prometheus 的數(shù)據(jù)遠(yuǎn)程寫入到 OpenObserve 中了。

下面的資源清單就是一個(gè)簡單的 Prometheus 示例,我們使用 node_exporter 來采集節(jié)點(diǎn)的指標(biāo)數(shù)據(jù),然后通過 Prometheus 將其遠(yuǎn)程寫入到 OpenObserve 中:

# prometheus.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
  namespace: openobserve
data:
  prometheus.yaml: |
    global:
      scrape_interval: 15s
      scrape_timeout: 15s
    remote_write:  # 寫入到遠(yuǎn)程 OO,url 是遠(yuǎn)程寫入接口地址
    - url: http://openobserve.openobserve.svc.cluster.local:5080/api/default/prometheus/api/v1/write
      basic_auth:
        username: root@example.com
        password: root321
      # queue_config:    # 如果 Prometheus 抓取指標(biāo)很大,可以加調(diào)整 queue,但是會(huì)提高內(nèi)存占用
      #   max_samples_per_send: 10000  # 每次發(fā)送的最大樣本數(shù)
      #   capacity: 20000
      #   max_shards: 30   # 最大分片數(shù),即并發(fā)量。
    scrape_configs:
    - job_name: "nodes"
      static_configs:
      - targets: ['10.206.16.6:9100', '10.206.16.5:9100', '10.206.16.10:9100']
      relabel_configs: # 通過 relabeling 從 __address__ 中提取 IP 信息,為了后面驗(yàn)證 VM 是否兼容 relabeling
      - source_labels: [__address__]
        regex: "(.*):(.*)"
        replacement: "${1}"
        target_label: 'ip'
        action: replace
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
  namespace: openobserve
spec:
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
        - args:
            - --config.file=/etc/prometheus/prometheus.yaml
            - --storage.tsdb.path=/prometheus
            - --storage.tsdb.retention.time=4h
            - --web.enable-lifecycle
          image: prom/prometheus:v2.44.0
          imagePullPolicy: IfNotPresent
          name: prometheus
          ports:
            - containerPort: 9090
              name: http
              protocol: TCP
          securityContext:
            runAsUser: 0
          volumeMounts:
            - mountPath: /etc/prometheus
              name: config-volume
            - mountPath: /prometheus
              name: data
      volumes:
        - name: data
          emptyDir: {}
        - configMap:
            defaultMode: 420
            name: prometheus-config
          name: config-volume
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: openobserve
spec:
  ports:
    - name: http
      port: 9090
      targetPort: 9090
  selector:
    app: prometheus
  type: NodePort

上面的資源清單文件中,我們使用了 Prometheus 的 remote_write 配置項(xiàng)來將數(shù)據(jù)遠(yuǎn)程寫入到 OpenObserve 中,其中 url 參數(shù)指定了遠(yuǎn)程寫入接口地址,username 和 password 參數(shù)指定了管理員的郵箱和密碼。

直接應(yīng)用上面的資源清單文件即可:

$ kubectl apply -f prometheus.yaml
$ kubectl get pods -n openobserve
NAME                          READY   STATUS    RESTARTS   AGE
openobserve-0                 1/1     Running   0          2d18h
prometheus-756c8c78f5-kvvbl   1/1     Running   0          20s
$ kubectl get svc -n openobserve
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
openobserve   ClusterIP   None            <none>        5080/TCP         2d18h
prometheus    NodePort    10.107.32.131   <none>        9090:31019/TCP   37s

部署后我們依然可以使用 Prometheus 的 UI 界面來查看指標(biāo)數(shù)據(jù):

Prometheus UI

正常現(xiàn)在 Prometheus 的指標(biāo)數(shù)據(jù)就會(huì)被寫入到 OpenObserve 中了,我們可以在 OpenObserve 的 UI 界面中查看該指標(biāo)流:

Prometheus stream

可以看到 OpenObserve 中是將每個(gè)指標(biāo)看成一個(gè)獨(dú)立的 stream 流來進(jìn)行管理的,這樣無疑大大增加了對指標(biāo)數(shù)據(jù)管理的靈活性,但要想針對某個(gè) job 進(jìn)行管理難度也就大大增加了。現(xiàn)在我們就可以在 OpenObserve 的 UI 界面中查看指標(biāo)數(shù)據(jù)了,比如查詢 node_load5 指標(biāo):

load5

可以和 Prometheus 中的查詢結(jié)果進(jìn)行對比:

load5

從圖形中可以看到 OpenObserve 的查詢結(jié)果和 Prometheus 的查詢結(jié)果是一致的。但是目前 OpenObserve 的 UI 界面中支持的 promql 語法還比較有限,比如不支持向量運(yùn)算等操作(本周發(fā)布的版本即將支持了)。

不支持

此外我們也可以使用 SQL 語法來查詢指標(biāo)數(shù)據(jù),比如查詢 node_load5 指標(biāo):

sql

除了使用 Prometheus 的遠(yuǎn)程寫入方式之外,OpenObserve 還支持通過 OpenTelemetry Collector(后面會(huì)講解)來寫入指標(biāo)數(shù)據(jù),只需要在 exporters 中配置 prometheusremotewrite 即可,如下所示配置:

exporters:
  prometheusremotewrite:
    endpoint: "http://<oo-url>/api/org_name/prometheus/api/v1/write"
    headers:
      Authorization: Basic base64_encoded_data_of(userid:password)

在指標(biāo)頁面查詢數(shù)據(jù)的時(shí)候我們還可以將查詢結(jié)果保存為 Dashboard:

Add Dashboard

在 Dashboard 里面還可以添加變量,比如我們這里添加一個(gè)變量 instance:

Add var

然后編輯 Panel,將查詢語句中的 instance 替換成 $instance:

編輯面板

然后就可以在 Dashboard 中選擇不同的 instance 來查看不同的指標(biāo)數(shù)據(jù)了:

篩選節(jié)點(diǎn)

鏈路追蹤

OpenObserve 除了支持日志和指標(biāo)之外,還支持鏈路追蹤,OpenObserve 遵循 OpenTelemetry 的追蹤標(biāo)準(zhǔn),我們可以使用通過 OpenTelemetry SDK 檢測的代碼將 Trace 數(shù)據(jù)發(fā)送到 OpenObserve,或通過自動(dòng)檢測將跟蹤發(fā)送到 OpenObserve。

下面是一個(gè)集成 OpenTelemetry SDK 的 Python 示例,代碼位于 git clone https://github.com/openobserve/sample-tracing-python:

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.resources import SERVICE_NAME, Resource
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter


# Service name is required for most backends
resource = Resource(attributes={
    SERVICE_NAME: "python-service"
})

# create a tracer provider
tracer_provider = TracerProvider(resource=resource)

# create an OTLP trace exporter
url = 'HTTP_Endpoint'
headers = {"Authorization": "Authorization"}

exporter = OTLPSpanExporter(endpoint=url, headers=headers)

# create a span processor to send spans to the exporter
span_processor = BatchSpanProcessor(exporter)

# add the span processor to the tracer provider
tracer_provider.add_span_processor(span_processor)

# set the tracer provider as the global provider
trace.set_tracer_provider(tracer_provider)

我們只需要將 HTTP_Endpoint 和 Authorization 替換成 OpenObserve 的地址和管理員的認(rèn)證信息即可。其中地址為 https://url:5080/api/<orgname>/traces,Authorization 為 Basic base64(userid:password)。然后運(yùn)行上面的代碼即可將 Trace 數(shù)據(jù)發(fā)送到 OpenObserve 中。

除此之外 OpenObserve 還支持通過 OpenTelemetry Collector 來收集鏈路追蹤數(shù)據(jù),只需要在 OpenTelemetry Collector 的配置文件中配置 otlp 輸出即可,如下所示:

# ......
exporters: # 導(dǎo)出器,用于導(dǎo)出數(shù)據(jù)
  jaeger:
    endpoint: "jaeger:14250" # 使用 jaeger 容器名稱
    tls:
      insecure: true # 不使用 TLS

  # Data sources: traces, metrics
  otlphttp:
    traces_endpoint: http://url:5080/api/<orgname>/traces # OpenObserve 的接口地址,這里要用 traces_endpoint
    headers:
      Authorization: Basic base64(userid:password) # 管理員的認(rèn)證信息

service: # 服務(wù)配置
  pipelines: # 管道配置
    traces: # 鏈路追蹤配置
      receivers: [otlp] # 接收器
      exporters: [otlphttp] # 導(dǎo)出器
      processors: [batch] # 處理器

然后我們在應(yīng)用中只需要通過 OpenTelemetry SDK 配置 OTLPTraceExporter 地址為 OpenTelemetry Collector 的地址即可,正常鏈路追蹤數(shù)據(jù)就可以被收集到 OpenObserve 中去了。

如下圖所示,我們可以在 OpenObserve 的 UI 界面中查看鏈路追蹤數(shù)據(jù):

traces

點(diǎn)擊某個(gè) Trace 可以查看詳細(xì)信息:

trace detail

關(guān)于如何使用 OpenTelemetry 來生成并收集 Traces 數(shù)據(jù)、OpenTelemetry Collector 的部署等知識(shí)點(diǎn)我們后面會(huì)詳細(xì)講解。

報(bào)警

OpenObserve 支持兩種警報(bào)方式,針對指定流進(jìn)行評估:

  • 計(jì)劃報(bào)警
  • 實(shí)時(shí)報(bào)警

要使用報(bào)警我們首先需要?jiǎng)?chuàng)建一個(gè)報(bào)警模板,當(dāng)發(fā)送警報(bào)通知時(shí)使用模板,模板構(gòu)建發(fā)送到目的地的請求正文,例如。對于 slack,可以創(chuàng)建如下模板:

{
  "text": "For stream {stream_name} of organization {org_name} alert {alert_name} of type {alert_type} is active"
}

在報(bào)警頁面先添加一個(gè)報(bào)警模板,如下所示:

Add Template

發(fā)送通知時(shí),OpenObserve 會(huì)將 {stream_name}、{org_name} 等占位符替換為 stream、alert、organization 的實(shí)際值。可以在模板中使用的變量有:

變量


描述

stream_name

流名稱

報(bào)警創(chuàng)建的流名稱

org_name

組織名

組織名稱

alert_name

報(bào)警名

報(bào)警名稱

alert_type

報(bào)警類型

可以取的值 : real time 或者 scheduled

然后接下來需要?jiǎng)?chuàng)建一個(gè) Destinations 目的地,用于發(fā)送警報(bào)通知,創(chuàng)建后可以在多個(gè)報(bào)警中使用。

比如我們這里創(chuàng)建一個(gè) Slack 目的地,用于發(fā)送警報(bào)通知,如下所示:

Add Destination

最后我們就可以創(chuàng)建一個(gè)報(bào)警了,如下所示:

Add Alert

這里我們添加了一個(gè)計(jì)劃報(bào)警,當(dāng) K8sLogs 日志流在 1 分鐘內(nèi)的日志數(shù)量大于 50 條時(shí)就會(huì)觸發(fā)報(bào)警,然后發(fā)送到 Slack 目的地中,需要注意的是這里查詢語句最終會(huì)加上時(shí)間范圍進(jìn)行過濾,比如我們這里的查詢語句在執(zhí)行的時(shí)候?qū)嶋H執(zhí)行的語句如下所示:

select count(*) as echocnt FROM 'K8sLogs' WHERE (_timestamp >= 1691488182902275 AND _timestamp < 1691488242902275)  LIMIT 100

正常情況下我們可以在 Slack 中看到報(bào)警信息:

Slack

另外對于實(shí)時(shí)報(bào)警是根據(jù)指定的條件在攝取時(shí)進(jìn)行評估:

實(shí)時(shí)報(bào)警

除此之外 OpenObserve 還支持函數(shù)功能,使用的是 Vector Remap Language (vrl)(https://vector.dev/docs/reference/vrl/) 定義的,可以在數(shù)據(jù)攝取或查詢期間用于幫助實(shí)現(xiàn)高級(jí)功能,例如增強(qiáng)、遮蔽、日志減少、合規(guī)性等。還有內(nèi)置的查詢函數(shù),如 match_all 和 match_all_ignore_case 等,可用于根據(jù)用戶的流設(shè)置或默認(rèn)設(shè)置進(jìn)行全文搜索,這些高級(jí)功能可以關(guān)注后續(xù)文章。

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

2022-05-23 08:23:24

鏈路追蹤SleuthSpring

2025-03-11 14:16:09

2022-05-25 08:23:32

ZipKinTwitter開源項(xiàng)目

2023-10-16 23:43:52

云原生可觀測性

2022-07-22 07:59:17

日志方案

2023-08-24 22:13:31

2020-12-16 09:24:18

Skywalking分布式鏈路追蹤

2024-06-07 13:04:31

2023-01-30 22:34:44

Node.js前端

2022-09-15 10:03:42

Jaeger分布式追蹤系統(tǒng)

2024-01-26 07:49:49

Go分布式鏈路

2022-05-19 13:33:39

系統(tǒng)客戶端鏈路追蹤

2021-02-22 07:58:51

分布式鏈路追蹤

2022-01-05 08:27:17

C++全鏈路追蹤

2020-09-11 09:44:04

微服務(wù)分布式鏈路

2024-08-21 08:09:17

2024-08-28 11:34:37

2023-11-21 08:25:09

2024-07-09 08:11:56

2024-09-06 12:24:19

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美高清视频 | 久久国产精品一区二区三区 | 伊人精品在线视频 | 亚洲精品免费在线 | 午夜影院在线观看视频 | 成人三级在线播放 | 天天色图 | 亚洲精品视频免费 | 一区二区精品 | 一区二区高清在线观看 | 国产精品久久久久久久久久久久 | 欧美午夜一区二区三区免费大片 | 久久国内精品 | 欧美亚洲视频 | www.亚洲区| 亚洲精品乱码久久久久久按摩观 | 天天躁日日躁xxxxaaaa | 久久久久国产 | 操操日| 久久国产精品一区二区三区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 国产精品一级在线观看 | 成人免费小视频 | 亚洲欧洲在线观看视频 | 亚洲精品视频久久 | 天天天堂 | 北条麻妃一区二区三区在线视频 | 亚洲国产一区二区三区四区 | 久久一区二区视频 | 国产综合av | 亚洲精久久| 国产一区二区视频在线 | 日本a网站| 毛片a级毛片免费播放100 | 亚洲精品福利视频 | 欧美成人a∨高清免费观看 色999日韩 | 国产精品色| 国产精品视频二区三区 | 国产高清在线精品一区二区三区 | 一区二区三区欧美 | 精品1区2区|