0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

《基于時(shí)間序列數(shù)據(jù)進(jìn)行有效報(bào)警》的實(shí)踐總結(jié)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-07-11 11:29 ? 次閱讀

本文可以看做是對(duì)《SRE》一書第10章《基于時(shí)間序列數(shù)據(jù)進(jìn)行有效報(bào)警》的實(shí)踐總結(jié)。 Prometheus是一款開源的業(yè)務(wù)監(jiān)控軟件,可以看作是Google內(nèi)部監(jiān)控系統(tǒng) Borgmon 的一個(gè)(非官方)實(shí)現(xiàn)。 本文會(huì)介紹我近期使用Prometheus構(gòu)建的一套完整的,可用于中小規(guī)模(小于500節(jié)點(diǎn))的半自動(dòng)化(少量人工操作)監(jiān)控系統(tǒng)方案。

主動(dòng)監(jiān)控

監(jiān)控是運(yùn)維系統(tǒng)的基礎(chǔ),我們衡量一個(gè)公司/部門的運(yùn)維水平,看他們的監(jiān)控系統(tǒng)就可以了。 監(jiān)控手段一般可以分為三種:

主動(dòng)監(jiān)控:業(yè)務(wù)上線前,按照運(yùn)維制定的標(biāo)準(zhǔn),預(yù)先埋點(diǎn)。具體的實(shí)現(xiàn)方式又有多種,可能通過日志、向本地 Agent 上報(bào)、提供 REST API 等。

被動(dòng)監(jiān)控:通常是對(duì)主動(dòng)監(jiān)控的補(bǔ)充,從外圍進(jìn)行黑盒監(jiān)控,通過主動(dòng)探測(cè)服務(wù)的功能可用性來(lái)進(jìn)行監(jiān)控。比如定期ping業(yè)務(wù)端口。

旁路監(jiān)控:主動(dòng)監(jiān)控和被動(dòng)監(jiān)控,通常還是都在內(nèi)部進(jìn)行的監(jiān)控,內(nèi)部運(yùn)行平穩(wěn)也不能保證用戶的體驗(yàn)都是正常的(比如用戶網(wǎng)絡(luò)出問題),所以仍然需要通過輿情監(jiān)控、第三方監(jiān)控工具等的數(shù)據(jù)來(lái)間接的監(jiān)控真實(shí)的服務(wù)質(zhì)量。

主動(dòng)監(jiān)控是最理想的方案,后兩種主要用作補(bǔ)充,本文只關(guān)注主動(dòng)監(jiān)控。 監(jiān)控實(shí)際是一個(gè)端到端的體系(基礎(chǔ)設(shè)施-服務(wù)器-業(yè)務(wù)-用戶體驗(yàn)),本文只關(guān)注業(yè)務(wù)級(jí)別的主動(dòng)監(jiān)控。

Prometheus

為什么選擇Prometheus而不是其它TSDB實(shí)現(xiàn)(如InfluxDB)?主要是因?yàn)镻rometheus的核心功能,查詢語(yǔ)言 PromQL,它更像一種可編程計(jì)算器,而不是其那么像 SQL,也意味著 PromQL 可以近乎無(wú)限之組合出各種查詢結(jié)果。 比如,我們有一個(gè)http服務(wù),監(jiān)控項(xiàng)http_requests_total用于統(tǒng)計(jì)請(qǐng)求次數(shù)。某一組監(jiān)控?cái)?shù)據(jù)可能是這個(gè)樣子:

http_requests_total{instance="1.1.1.1:80",job="cluster1",location="/a"} 100http_requests_total{instance="1.1.1.1:80", job="cluster1", location="/b"} 110http_requests_total{instance="1.1.1.2:80", job="cluster2", location="/b"} 100http_requests_total{instance="1.1.1.3:80", job="cluster3", location="/c"} 110 這里有3個(gè)標(biāo)簽,分別對(duì)應(yīng)抓取的實(shí)例,所屬的 Job(一般我用集群名),訪問路徑(你可以理解為Nginx的location),Prometheus多維數(shù)據(jù)模型意味著我們可以在任意一個(gè)或多個(gè)維度進(jìn)行計(jì)算:

如果你想統(tǒng)計(jì)單機(jī)qps,sum(rate(http_requests_total[1m])) by (instance)

如果想用統(tǒng)計(jì)每個(gè)集群每個(gè)不同 location 的 path 的 qps,sum(rate(http_requests_total[1m])) by (job, path),PromQL會(huì)依據(jù)標(biāo)簽job-path的值聚合出結(jié)果。

除了PromQL,豐富的數(shù)據(jù)類型可以提供更有意義的監(jiān)控項(xiàng):

Counter(計(jì)數(shù)器):標(biāo)識(shí)單調(diào)遞增的數(shù)據(jù),比如接口訪問次數(shù)。

Gauge(刻度):當(dāng)前瞬時(shí)的一個(gè)狀態(tài),可能增加,也可能減小,比如CPU使用率,平均延時(shí)等等。

Historgram(直方圖):用于統(tǒng)計(jì)數(shù)據(jù)的分布,比如95 percentile latency。

大部分監(jiān)控項(xiàng)都可以使用Counter來(lái)實(shí)現(xiàn),少部分使用Gauge和Histogram,其中Histogram在服務(wù)端計(jì)算是相當(dāng)費(fèi)CPU的,所以也沒要導(dǎo)出太多Histogram數(shù)據(jù)。 最后,Prometheus采用PULL模型的實(shí)時(shí)抓取存儲(chǔ)計(jì)算,主動(dòng)去抓取監(jiān)控實(shí)例數(shù)據(jù),相比于PUSH模型對(duì)業(yè)務(wù)侵入更低,相比于基于log的離線統(tǒng)計(jì)則更實(shí)時(shí),而監(jiān)控實(shí)例只需提供一個(gè)文本格式的/metrics接口也更容易debug。

服務(wù)框架的改造

筆者所在團(tuán)隊(duì)使用統(tǒng)一的服務(wù)框架來(lái)規(guī)范項(xiàng)目開發(fā)并有效降低了開發(fā)難度。 這里先介紹下我們的服務(wù)框架:

類似于 Nginx 的多進(jìn)程架構(gòu)(master/worker),但同時(shí)也支持多線程的事件循環(huán)編程模型

支持多種接入?yún)f(xié)議(HTTP,Thrift,PB等),但主流是HTTP

業(yè)務(wù)通過 Module 來(lái)加載進(jìn)框架執(zhí)行(類似 Nginx 的 module,但更簡(jiǎn)單)

提供純異步的下游訪問 API

為了使服務(wù)框架可以導(dǎo)出內(nèi)部監(jiān)控項(xiàng),主要涉及幾方面的工作:

提供基礎(chǔ)數(shù)據(jù)類型

目前并沒有官方的Prometheus Client Library,幾種開源實(shí)現(xiàn)也都不太符合框架的需求。目前實(shí)現(xiàn)了支持多線程多進(jìn)程的Counter和Histogram(除了初始化之外,更新操作都是無(wú)鎖的),而Gauge由于多進(jìn)程場(chǎng)景有的情況是無(wú)法聚合監(jiān)控?cái)?shù)據(jù)的(沒用統(tǒng)一的聚合方法,并不一定都可以相加),所以沒有提供具體實(shí)現(xiàn)

基礎(chǔ)數(shù)據(jù)要有類似注冊(cè)表的功能,方便自動(dòng)導(dǎo)出數(shù)據(jù)到/metrics接口

在服務(wù)框架埋點(diǎn)

要足夠靈活,將容易變化的信息通過標(biāo)簽來(lái)表達(dá)。 比如一個(gè)web服務(wù)可能有echo,date兩個(gè)location,如果要統(tǒng)計(jì)它們qps,不要定義echo_requests_total,date_requests_total兩個(gè)不同名字的 metrics,而應(yīng)該定義一個(gè)名為http_requests_total的 metrics,通過標(biāo)簽location(分別為echo/date)來(lái)區(qū)分,這樣再增加/減少接口是不需要改代碼的

理想情況是業(yè)務(wù)幾乎為各種通信功能自行埋點(diǎn),所以內(nèi)置埋點(diǎn)要將常用監(jiān)控項(xiàng)都要覆蓋到(QPS,Latency,Error Ratio)

數(shù)據(jù)的抓取與展現(xiàn)

具備導(dǎo)出能力后,就可以通過Prometheus 進(jìn)行抓取了,但還有幾個(gè)小坑: 用戶定義的metrics名字,可能是不符合Prometheus規(guī)范的,而遇到一條不合法的數(shù)據(jù),Prometheus就會(huì)停止抓取,所以導(dǎo)出數(shù)據(jù)時(shí)要先做一遍過濾和改寫 要控制導(dǎo)出數(shù)據(jù)規(guī)模,一些只對(duì)單機(jī)監(jiān)控有意義的數(shù)據(jù)可以不導(dǎo)出(框架有針對(duì)單機(jī)的監(jiān)控頁(yè)面) 在使用 Prometheus 時(shí),也有幾個(gè)地方要注意: Prometheus即是一個(gè)CPU密集型(查詢)也是一個(gè)IO密集型(數(shù)據(jù)落地)的,CPU數(shù)量是多多益善,內(nèi)存越大越好(來(lái)緩存抓取的數(shù)據(jù),所以應(yīng)該減少不必要的業(yè)務(wù)數(shù)據(jù)導(dǎo)出),盡量要使用SSD(這個(gè)很關(guān)鍵?。?,因?yàn)橐坏㏄rometheus的內(nèi)存使用量達(dá)到閾值會(huì)停止抓取數(shù)據(jù)!這個(gè)停止抓取的時(shí)間,至少是分鐘級(jí),甚至是無(wú)法恢復(fù)!所以只要有條件就要用SSD。 Prometheus號(hào)稱支持 reload,但目測(cè)不是很好用,比如你修改了告警規(guī)則文件,重載之后,新舊告警規(guī)則似乎會(huì)一起計(jì)算執(zhí)行…. Prometheus本身也提供圖形界面,但是很簡(jiǎn)陋:

5780048a-00c3-11ed-ba43-dac502259ad0.png

通常還是使用Grafana來(lái)展示監(jiān)控?cái)?shù)據(jù)。

57993eaa-00c3-11ed-ba43-dac502259ad0.png

因?yàn)槭墙y(tǒng)一的業(yè)務(wù)框架,統(tǒng)一的監(jiān)控指標(biāo),所以 Grafana 的 Dashboard 很容易統(tǒng)一配置:

我沒有找到將默認(rèn)模板打包進(jìn) Grafana 的方法,只能迂回的創(chuàng)建了一個(gè)新的Grafana Plugin,在啟動(dòng)之后,每個(gè)業(yè)務(wù)實(shí)例只需要啟動(dòng)下這個(gè)插件,然后配置一個(gè)默認(rèn)的 Prometheus 數(shù)據(jù)源,就可以使用統(tǒng)一的監(jiān)控 Dashboard

Dashboard 分為3行

第一行展示實(shí)時(shí)的 QPS,平均延時(shí),平均排隊(duì)時(shí)間,Coredump 數(shù)量,下游引擎失敗率,下游引擎延時(shí)變化

第二行展示業(yè)務(wù)的延遲(50%和95%延遲),流量,吞吐(按照不同錯(cuò)誤碼)

第三行展示下游引擎的延遲(50%和95%延遲),流量,吞吐(按照不同錯(cuò)誤碼)

能夠展示 Prometheus 強(qiáng)大威力的是,這里面每一個(gè)圖表,都可以同時(shí)展示所有機(jī)房的監(jiān)控指標(biāo),而每一個(gè)指標(biāo)的計(jì)算只需要一條 Query 語(yǔ)句。比如第一行第五列,各個(gè)機(jī)房的各個(gè)下游的失敗率統(tǒng)計(jì)并排序,只用了一條語(yǔ)句:

topk(5, 100*sum(rate(downstream_responses{error_code!="0"}[5m])) by (job, server)/sum(rate(downstream_responses[5m])) by (job, server)) 注意這里的Range Vector Selector - [5m],意味著我們是基于過去5分鐘的數(shù)據(jù)來(lái)計(jì)算rate,這個(gè)值取的越小,得到的監(jiān)控結(jié)果波動(dòng)越大,越大則越平滑,選擇多大的值,取決于你想要什么結(jié)果。建議圖表使用5m,而告警規(guī)則計(jì)算采用1m。如果業(yè)務(wù)不是很重要,可以適當(dāng)增大這個(gè)值。 這一套監(jiān)控模板基本覆蓋了業(yè)務(wù)對(duì)可用性監(jiān)控的需求,同時(shí)業(yè)務(wù)也可以自己定義監(jiān)控指標(biāo)并進(jìn)行監(jiān)控。

AlertManager

Prometheus 周期性進(jìn)行抓取數(shù)據(jù),完成抓取后會(huì)檢查是否有告警規(guī)則并進(jìn)行計(jì)算,滿足告警規(guī)則就會(huì)觸發(fā)告警,發(fā)送到 alertmanager?;谶@個(gè)流程,當(dāng)你在監(jiān)控圖表看到異常時(shí),告警已經(jīng)先行觸發(fā)了。

57aa5f82-00c3-11ed-ba43-dac502259ad0.png

默認(rèn)情況我們配置了不到10條告警規(guī)則,要注意的是周期的選擇,過長(zhǎng)的話會(huì)產(chǎn)生較大延遲,太短的話一個(gè)小的流量波動(dòng)都會(huì)導(dǎo)致大量報(bào)警出現(xiàn)。 Prometheus 的設(shè)計(jì)是產(chǎn)生報(bào)警,但報(bào)警的匯總、分發(fā)、屏蔽則在 AlertManager 服務(wù)完成。

57c574b6-00c3-11ed-ba43-dac502259ad0.png

AlertManager 目前還是非常簡(jiǎn)單的,但它可以將告警繼續(xù)分發(fā)到其他接收者:

可以通過webhook機(jī)制,發(fā)送告警到一個(gè)中間服務(wù)轉(zhuǎn)換格式再發(fā)送到內(nèi)部告警接口

如果使用第三方告警管理平臺(tái),如PageDuty、OneAlert,可以直接用內(nèi)置的 pageduty 支持或 webhook 發(fā)送告警過去

如果是一窮二白的團(tuán)隊(duì),建議配置 email + slack,實(shí)現(xiàn)告警歸檔和手機(jī) Push

更復(fù)雜告警分級(jí)管理,AlertManager 還是有很長(zhǎng)的路要走,這個(gè)話題也值得今后單獨(dú)講下。

Prometheus + Grafana + Mesos

Prometheus + Grafana 的方案,加上統(tǒng)一的服務(wù)框架,可以滿足大部分中小團(tuán)隊(duì)的監(jiān)控需求。我們將這幾個(gè)組件打包一起部署在 Mesos 之上,統(tǒng)一的安裝包進(jìn)一步降低監(jiān)控系統(tǒng)部署的難度,用戶需要配置一些簡(jiǎn)單的參數(shù)即可。但還需要注意幾點(diǎn):

目前并沒有將 Prometheus 和 Grafana 容器化部署,因?yàn)檫@兩者本身就沒有什么特殊依賴;安裝包存儲(chǔ)在 minio 中。

由于 Prometheus 系統(tǒng)的特殊性,我們通常將其指定在一臺(tái)固定的機(jī)器上執(zhí)行,且將數(shù)據(jù)落地到一個(gè)固定的目錄,這樣重啟 Prometheus 的影響會(huì)非常低

Grafana 是展示給用戶的,需要盡可能的保持固定入口,所以我們通過HAPROXY_CONSUL給其配置了代理

57d7909c-00c3-11ed-ba43-dac502259ad0.png

結(jié) 論

Prometheus 是相當(dāng)強(qiáng)大并快速成長(zhǎng)的一個(gè)監(jiān)控系統(tǒng)實(shí)現(xiàn),雖然在穩(wěn)定性、性能、文檔上仍有很大提升空間,但對(duì)于中小團(tuán)隊(duì)是一個(gè)很棒的選擇,通過定制服務(wù)框架,設(shè)計(jì)完善的埋點(diǎn),統(tǒng)一的Prometheus/Grafana配置模板,再加上Mesos平臺(tái),可以半自動(dòng)化的部署實(shí)時(shí)業(yè)務(wù)監(jiān)控系統(tǒng)。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:無(wú)監(jiān)控,不運(yùn)維!Prometheus 在線服務(wù)的監(jiān)控實(shí)操指南

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測(cè)

    使用BP(Backpropagation)神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測(cè)是一種常見且有效的方法。以下是一個(gè)基于BP神經(jīng)網(wǎng)絡(luò)進(jìn)行時(shí)間序列預(yù)測(cè)的詳細(xì)步
    的頭像 發(fā)表于 02-12 16:44 ?207次閱讀

    時(shí)空引導(dǎo)下的時(shí)間序列自監(jiān)督學(xué)習(xí)框架

    考慮各個(gè)序列之間的關(guān)系。因此,本文提出的方法更適合作為時(shí)空預(yù)測(cè)領(lǐng)域的預(yù)訓(xùn)練模型。下面為大家詳細(xì)介紹一下這篇文章。 摘要 相關(guān)時(shí)間序列分析在許多現(xiàn)實(shí)行業(yè)中扮演著重要的角色。為進(jìn)一步的下游任務(wù)學(xué)習(xí)這個(gè)大規(guī)模
    的頭像 發(fā)表于 11-15 11:41 ?426次閱讀
    時(shí)空引導(dǎo)下的<b class='flag-5'>時(shí)間</b><b class='flag-5'>序列</b>自監(jiān)督學(xué)習(xí)框架

    如何使用RNN進(jìn)行時(shí)間序列預(yù)測(cè)

    一種強(qiáng)大的替代方案,能夠?qū)W習(xí)數(shù)據(jù)中的復(fù)雜模式,并進(jìn)行準(zhǔn)確的預(yù)測(cè)。 RNN的基本原理 RNN是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù)。在RNN中,每個(gè)輸入
    的頭像 發(fā)表于 11-15 09:45 ?523次閱讀

    LSTM神經(jīng)網(wǎng)絡(luò)在時(shí)間序列預(yù)測(cè)中的應(yīng)用

    時(shí)間序列預(yù)測(cè)是數(shù)據(jù)分析中的一個(gè)重要領(lǐng)域,它涉及到基于歷史數(shù)據(jù)預(yù)測(cè)未來(lái)值。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,長(zhǎng)短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)因其在處理序列
    的頭像 發(fā)表于 11-13 09:54 ?1122次閱讀

    請(qǐng)問PCM4220復(fù)位之后多長(zhǎng)時(shí)間輸出數(shù)據(jù)有效?

    電壓進(jìn)行采集),這些零之后的數(shù)據(jù)是正確的。 我想知道pcm具體工作時(shí)各個(gè)引腳的時(shí)序是什么樣?復(fù)位或者power-down之后有什么影響,正常之后多長(zhǎng)時(shí)間數(shù)據(jù)有效的?希望有人幫忙解答一
    發(fā)表于 11-07 07:23

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】時(shí)間序列的信息提取

    方法為該時(shí)間序列填充缺失值。 時(shí)間序列的縮放是指對(duì)原有的時(shí)間序列
    發(fā)表于 08-17 21:12

    【《時(shí)間序列與機(jī)器學(xué)習(xí)》閱讀體驗(yàn)】+ 時(shí)間序列的信息提取

    之前對(duì)《時(shí)間序列與機(jī)器學(xué)習(xí)》一書進(jìn)行了整體瀏覽,并且非常輕松愉快的完成了第一章的學(xué)習(xí),今天開始學(xué)習(xí)第二章“時(shí)間序列的信息提取”。 先粗略的翻
    發(fā)表于 08-14 18:00

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】+ 鳥瞰這本書

    清晰,從時(shí)間序列分析的基礎(chǔ)理論出發(fā),逐步深入到機(jī)器學(xué)習(xí)算法在時(shí)間序列預(yù)測(cè)中的應(yīng)用,內(nèi)容全面,循序漸進(jìn)。每一章都經(jīng)過精心設(shè)計(jì),對(duì)理論知識(shí)進(jìn)行
    發(fā)表于 08-12 11:28

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】+ 簡(jiǎn)單建議

    這本書以其系統(tǒng)性的框架和深入淺出的講解,為讀者繪制了一幅時(shí)間序列分析與機(jī)器學(xué)習(xí)融合應(yīng)用的宏偉藍(lán)圖。作者不僅扎實(shí)地構(gòu)建了時(shí)間序列分析的基礎(chǔ)知識(shí),更巧妙地展示了機(jī)器學(xué)習(xí)如何在這一領(lǐng)域發(fā)揮巨
    發(fā)表于 08-12 11:21

    【《時(shí)間序列與機(jī)器學(xué)習(xí)》閱讀體驗(yàn)】+ 了解時(shí)間序列

    收到《時(shí)間序列與機(jī)器學(xué)習(xí)》一書,彩色印刷,公式代碼清晰,非常精美。感謝作者,感謝電子發(fā)燒友提供了一個(gè)讓我學(xué)習(xí)時(shí)間序列及應(yīng)用的機(jī)會(huì)! 前言第一段描述了編寫背景: 由此可知,這是一本關(guān)于
    發(fā)表于 08-11 17:55

    【「時(shí)間序列與機(jī)器學(xué)習(xí)」閱讀體驗(yàn)】全書概覽與時(shí)間序列概述

    ,可以將相似的時(shí)間序列分組,以便進(jìn)一步理解時(shí)間序列數(shù)據(jù)中的結(jié)構(gòu)和模式。 ●第6章“多維時(shí)間
    發(fā)表于 08-07 23:03

    深度學(xué)習(xí)中的時(shí)間序列分類方法

    的發(fā)展,基于深度學(xué)習(xí)的TSC方法逐漸展現(xiàn)出其強(qiáng)大的自動(dòng)特征提取和分類能力。本文將從多個(gè)角度對(duì)深度學(xué)習(xí)在時(shí)間序列分類中的應(yīng)用進(jìn)行綜述,探討常用的深度學(xué)習(xí)模型及其改進(jìn)方法,并展望未來(lái)的研究方向。
    的頭像 發(fā)表于 07-09 15:54 ?1401次閱讀

    名單公布!【書籍評(píng)測(cè)活動(dòng)NO.35】如何用「時(shí)間序列與機(jī)器學(xué)習(xí)」解鎖未來(lái)?

    設(shè)備的運(yùn)行狀況,生成各種維度的報(bào)告。 同時(shí),通過大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)技術(shù),可以對(duì)業(yè)務(wù)進(jìn)行預(yù)測(cè)和預(yù)警,從而協(xié)助社會(huì)和企業(yè)進(jìn)行科學(xué)決策、降低成本并創(chuàng)造新的價(jià)值。 當(dāng)今時(shí)代,數(shù)據(jù)無(wú)處不在,
    發(fā)表于 06-25 15:00

    如何有效減少PCBA的打樣時(shí)間

    一站式PCBA智造廠家今天為大家講講PCBA加工如何減少打樣時(shí)間?有效減少PCBA打樣時(shí)間的方法。 如今,國(guó)內(nèi)電子加工業(yè)十分繁榮,作為專業(yè)PCBA加工廠家,訂單完成得越快越好,尤其是針對(duì)PCBA打樣
    的頭像 發(fā)表于 06-04 09:27 ?394次閱讀

    stm32 tim1輸入捕獲+DMA,如果長(zhǎng)時(shí)間無(wú)脈寬信號(hào),輸出報(bào)警信號(hào)怎么解決?

    記取完成脈寬的全局變量后清除數(shù)據(jù),連接長(zhǎng)時(shí)間讀取全局變量,如果無(wú)脈寬數(shù)據(jù),報(bào)警輸出。 最終測(cè)試發(fā)現(xiàn):1,開機(jī)后,如果一直無(wú)脈寬數(shù)據(jù),可以檢
    發(fā)表于 05-11 06:08