国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何使用ELK來監(jiān)控性能

darryrzhong / 3127人閱讀

摘要:最終,軟件服務(wù)操作組成員使用這些圖形展示系統(tǒng)性能。配置文件看上去類似下面使用是另一個(gè)容器組件。容器檢查清單鏈接輸出文件的腳本腳本文件的配置上面用到的鏡像可以在上拉取,鏈接解析數(shù)據(jù)在收集和裝箱發(fā)送后,我們需要做數(shù)據(jù)的解析。

每當(dāng)我解決一些應(yīng)用性能問題的時(shí)候,我常常會(huì)看到一個(gè)服務(wù)由于高的CPU利用率而使得一臺(tái)或者多臺(tái)服務(wù)器運(yùn)行變得非常緩慢。這也許意味著它因?yàn)楦哓?fù)載而導(dǎo)致資源缺乏,但是通常情況下這其實(shí)是代碼有bug,一個(gè)異常或者一個(gè)錯(cuò)誤的流程導(dǎo)致過多占用了系統(tǒng)資源。為了把這些問題找出來,我不得不在NewRelic/Nagios和ELK之間查看信息。

所以我確信我需要有一個(gè)單一的管理面板來查看從各個(gè)應(yīng)用,操作系統(tǒng)以及網(wǎng)絡(luò)設(shè)備上收集來的事件組合而成的性能指標(biāo)

為了使用ELK來監(jiān)控你平臺(tái)的性能,你需要集成一系列的工具。Probes是必須包含的組件,它運(yùn)行在各個(gè)主機(jī)上用來收集各種系統(tǒng)性能指標(biāo)。然后,采集的數(shù)據(jù)需要發(fā)送給Logstash,然后在Elasticsearch中進(jìn)行聚集,最后由Kibana轉(zhuǎn)換成圖形。最終,軟件服務(wù)操作組成員使用這些圖形展示系統(tǒng)性能。在這篇文章中,我將分享我們?nèi)绾谓?gòu)我們的ELK軟件棧來監(jiān)控服務(wù)的性能。

1. 收集和傳送 收集

在收集和傳送數(shù)據(jù)到Logstash中的第一個(gè)步驟,我們使用一個(gè)名為 Collectl 的工具。該工具來自于一個(gè)開源項(xiàng)目,它包含的大量的選項(xiàng)允許系統(tǒng)管理員從多個(gè)不同的IT系統(tǒng)中獲取各種指標(biāo),并且運(yùn)行保存這些數(shù)據(jù)供以后分析。我們使用它來生成,追蹤,以及保存指標(biāo)數(shù)據(jù),例如網(wǎng)絡(luò)吞吐量,CPU的磁盤IO等待時(shí)間,空閑的內(nèi)存,以及CPU的空閑時(shí)間(指出過度/未充分使用計(jì)算機(jī)資源)。它也常被用于監(jiān)控其他類型的系統(tǒng)資源,例如inode的使用以及打開的socket數(shù)量。

Collectl命令輸出樣例

最后,Collectl使用指定格式(in plot format)將采集的指標(biāo)輸出到一個(gè)日志文件中。該開源項(xiàng)目知道如何收集信息但是它并不會(huì)自動(dòng)發(fā)送數(shù)據(jù)到ELK軟件棧中。

使用一個(gè)Docker容器

我們把Collectl封裝到了一個(gè)Docker容器中來獲取一個(gè)Docker鏡像,該鏡像會(huì)包含了數(shù)據(jù)采集和數(shù)據(jù)發(fā)送的基本軟件。我們使用版本4.0.0的Collectl以及下面提到的配置,這樣可以避免一系列的問題:

—— 為了避免數(shù)據(jù)在容器中過載,我們只保存了當(dāng)天的數(shù)據(jù)。更久的數(shù)據(jù)都是維護(hù)在ELK軟件棧中,因此你無需擔(dān)心在容器的日志中保存所有的數(shù)據(jù)導(dǎo)致的問題。

—— Collectl可以以指定的時(shí)間周期收集各種采樣數(shù)據(jù),當(dāng)它會(huì)用不同的時(shí)間周期把數(shù)據(jù)持久到磁盤。這被稱為刷新周期。如果數(shù)據(jù)每秒鐘都被刷新到磁盤那么你可以得到近乎實(shí)時(shí)的數(shù)據(jù)。不過例如對(duì)于一個(gè)30秒的采集間隔,那么選擇一個(gè)十分激進(jìn)的采樣周期不是必須的。一個(gè)輸出格式化器會(huì)用于輸出指定格式(a plot format)的輸出,默認(rèn)它會(huì)在每一行輸出多個(gè)值,每個(gè)值用空格分開。

Collectl配置文件看上去類似下面:

DaemonCommands = -f /var/log/collectl/performance-tab -r00:00,0 -F1 -s+YZ -oz -P --interval 30
PQuery =   /usr/sbin/perfquery:/usr/bin/perfquery:/usr/local/ofed/bin/perfquery
PCounter = /usr/mellanox/bin/get_pcounter
VStat =    /usr/mellanox/bin/vstat:/usr/bin/vstat
OfedInfo = /usr/bin/ofed_info:/usr/local/ofed/bin/ofed_info
Resize=/usr/bin/resize:/usr/X11R6/bin/resize
Ipmitool =  /usr/bin/ipmitool:/usr/local/bin/ipmitool:/opt/hptc/sbin/ipmitool
IpmiCache = /var/run/collectl-ipmicache
IpmiTypes = fan,temp,current
使用RSYSLOG

RSYSLOG是另一個(gè)容器組件。它用來從日志文件中提取數(shù)據(jù),并且發(fā)送數(shù)據(jù)到ELK軟件棧中。為了讓Logstash專注于需要字段而不是所有的數(shù)據(jù)上,這里建議使用RSYSLOG在日志里增加一些元數(shù)據(jù)來對(duì)日志進(jìn)行篩選。這里可以在數(shù)據(jù)發(fā)送前對(duì)指標(biāo)進(jìn)行過濾或者增加一些信息比如實(shí)例名稱以及IP地址。附加上了時(shí)間戳后,這些信息可以被發(fā)送到Logstash。

一些注意點(diǎn)

在本步驟,有兩個(gè)問題需要注意:

1 - 時(shí)間戳: 首先,Collectl并不在采集的數(shù)據(jù)中輸出它的時(shí)間戳。因此如果你不同的主機(jī)運(yùn)行在不同的時(shí)區(qū),它們?cè)谀愕腅LK里面并不會(huì)對(duì)齊。為了解決這個(gè)問題,我們需要查詢?nèi)萜鳟?dāng)前運(yùn)行的時(shí)區(qū),然后設(shè)置相應(yīng)的時(shí)間戳。

2 - 遵循Collectl日志文件名: 另一個(gè)復(fù)雜的問題是Collectl輸出數(shù)據(jù)到一個(gè)文件中,但是該文件名不是固定不變的。僅僅文件名的前綴是可以自定義的,然后Collectl自動(dòng)在文件名上加上了當(dāng)前日期。這個(gè)問題導(dǎo)致RSYSLOG不能通過文件名來監(jiān)視文件,當(dāng)日期切換時(shí)文件名也會(huì)改變。我們可以用最新版本的RSYSLOG —— 版本8來解決它,但是這里我假設(shè)大多數(shù)用戶還沒有用上這個(gè)版本。我們創(chuàng)建了一個(gè)很小的腳本,它調(diào)用了老版本的RSYSLOG,該腳本在容器里運(yùn)行了一個(gè)定時(shí)的任務(wù),該任務(wù)會(huì)鏈接一個(gè)指定的名稱的文件名到一個(gè)固定的日志文件名上。然后SYSLOG只中那個(gè)固定日志文件中提取數(shù)據(jù),即便該文件鏈接的目標(biāo)文件改變了也沒有關(guān)系。這就像一個(gè)指針,它在一定的時(shí)間下總是指向正確的Collectl日志文件。

$ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup adm
$WorkDirectory /var/spool/rsyslog
 
# Logengine access file:
$InputFileName /var/log/collectl/daily.log
$InputFileTag performance-tab:
$InputFileStateFile stat-performance
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
 
$template logzioPerformanceFormat,"[XXLOGZTOKENXX] <%pri%>%protocol-version% %timestamp:::date-rfc3339% XXHOSTNAMEXX %app-name% %procid% %msgid% [type=performance-tab instance=XXINSTANCTIDXX] XXOFSETXX %msg% XXUSERTAGXX
"
if $programname == "performance-tab" then @@XXLISTENERXX;logzioPerformanceFormat
容器檢查清單

— Collectl

RSYSLOG

鏈接Collectl輸出文件的腳本

腳本文件的配置

上面用到的Docker鏡像可以在DockerHub上拉取,鏈接: https://registry.hub.docker.com/u/logzio/logzio-perfagent/

2. 解析數(shù)據(jù)

在收集和裝箱發(fā)送后,我們需要做數(shù)據(jù)的解析。Collectl返回的是未結(jié)構(gòu)化的日志數(shù)據(jù),它基本是由一系列的數(shù)字組成, Logstash Grok表達(dá)式使用這些數(shù)據(jù)來獲取每個(gè)字段的名稱和指定的值。

Collectl的配置參數(shù)顯示設(shè)置了一個(gè)特定的輸出模式。RSYSLOG日志配置在發(fā)送的消息中的特定位置增加了時(shí)區(qū)的信息。如果你想同時(shí)使用了這兩個(gè)配置,那Grok模式配置如下:

%{GREEDYDATA:zone_time} %{NUMBER:cpu__user_percent:int} %{NUMBER:cpu__nice_percent:int}
%{NUMBER:cpu__sys_percent:int} %{NUMBER:cpu__wait_percent:int} %{NUMBER:cpu__irq_percent:int}
%{NUMBER:cpu__soft_percent:int} %{NUMBER:cpu__steal_percent:int}
%{NUMBER:cpu__idle_percent:int} %{NUMBER:cpu__totl_percent:int} 
%{NUMBER:cpu__guest_percent:int} %{NUMBER:cpu__guestN_percent:int} 
%{NUMBER:cpu__intrpt_sec:int} %{NUMBER:cpu__ctx_sec:int} %{NUMBER:cpu__proc_sec:int} 
%{NUMBER:cpu__proc__queue:int} %{NUMBER:cpu__proc__run:int} %{NUMBER:cpu__load__avg1:float} 
%{NUMBER:cpu__load__avg5:float} %{NUMBER:cpu__load__avg15:float} %{NUMBER:cpu__run_tot:int} 
%{NUMBER:cpu__blk_tot:int} %{NUMBER:mem__tot:int} %{NUMBER:mem__used:int} 
%{NUMBER:mem__free:int} %{NUMBER:mem__shared:int} %{NUMBER:mem__buf:int} 
%{NUMBER:mem__cached:int} %{NUMBER:mem__slab:int} %{NUMBER:mem__map:int} 
%{NUMBER:mem__anon:int} %{NUMBER:mem__commit:int} %{NUMBER:mem__locked:int} 
%{NUMBER:mem__swap__tot:int} %{NUMBER:mem__swap__used:int} %{NUMBER:mem__swap__free:int} 
%{NUMBER:mem__swap__in:int} %{NUMBER:mem__swap__out:int} %{NUMBER:mem__dirty:int} 
%{NUMBER:mem__clean:int} %{NUMBER:mem__laundry:int} %{NUMBER:mem__inactive:int} 
%{NUMBER:mem__page__in:int} %{NUMBER:mem__page__out:int} %{NUMBER:mem__page__faults:int} 
%{NUMBER:mem__page__maj_faults:int} %{NUMBER:mem__huge__total:int} 
%{NUMBER:mem__huge__free:int} %{NUMBER:mem__huge__reserved:int} 
%{NUMBER:mem__s_unreclaim:int} %{NUMBER:sock__used:int} %{NUMBER:sock__tcp:int} 
%{NUMBER:sock__orph:int} %{NUMBER:sock__tw:int} %{NUMBER:sock__alloc:int} 
%{NUMBER:sock__mem:int} %{NUMBER:sock__udp:int} %{NUMBER:sock__raw:int} 
%{NUMBER:sock__frag:int} %{NUMBER:sock__frag_mem:int} %{NUMBER:net__rx_pkt_tot:int} 
%{NUMBER:net__tx_pkt_tot:int} %{NUMBER:net__rx_kb_tot:int} %{NUMBER:net__tx_kb_tot:int} 
%{NUMBER:net__rx_cmp_tot:int} %{NUMBER:net__rx_mlt_tot:int} %{NUMBER:net__tx_cmp_tot:int} 
%{NUMBER:net__rx_errs_tot:int} %{NUMBER:net__tx_errs_tot:int} %{NUMBER:dsk__read__tot:int} 
%{NUMBER:dsk__write__tot:int} %{NUMBER:dsk__ops__tot:int} %{NUMBER:dsk__read__kb_tot:int} 
%{NUMBER:dsk__write__kb_tot:int} %{NUMBER:dsk__kb__tot:int} %{NUMBER:dsk__read__mrg_tot:int} %{NUMBER:dsk__write__mrg_tot:int} %{NUMBER:dsk__mrg__tot:int} %{NUMBER:inode__numDentry:int} %{NUMBER:inode__openfiles:int} %{NUMBER:inode__max_file_percent:int} 
%{NUMBER:inode__used:int} %{NUMBER:nfs__reads_s:int} %{NUMBER:nfs__writes_s:int} 
%{NUMBER:nfs__meta_s:int} %{NUMBER:nfs__commit_s:int} %{NUMBER:nfs__udp:int} 
%{NUMBER:nfs__tcp:int} %{NUMBER:nfs__tcp_conn:int} %{NUMBER:nfs__bad_auth:int} 
%{NUMBER:nfs__bad_client:int} %{NUMBER:nfs__reads_c:int} %{NUMBER:nfs__writes_c:int} 
%{NUMBER:nfs__meta_c:int} %{NUMBER:nfs__commit_c:int} %{NUMBER:nfs__retrans:int} 
%{NUMBER:nfs__authref:int} %{NUMBER:tcp__ip_err:int} %{NUMBER:tcp__tcp_err:int} 
%{NUMBER:tcp__udp_err:int} %{NUMBER:tcp__icmp_err:int} %{NUMBER:tcp__loss:int} 
%{NUMBER:tcp__f_trans:int} %{NUMBER:buddy__page_1:int} %{NUMBER:buddy__page_2:int} 
%{NUMBER:buddy__page_4:int} %{NUMBER:buddy__page_8:int} %{NUMBER:buddy__page_16:int} 
%{NUMBER:buddy__page_32:int} %{NUMBER:buddy__page_64:int} %{NUMBER:buddy__page_128:int} 
%{NUMBER:buddy__page_256:int} %{NUMBER:buddy__page_512:int} %{NUMBER:buddy__page_1024:int}?( 
%{GREEDYDATA:user_tag})
3. 可視化

如果你運(yùn)行了一個(gè)快速的ELK軟件棧,那你會(huì)幾乎同時(shí)得到這些數(shù)據(jù)的展示。顯然這依賴于你安裝的ELK的性能,不過你可以預(yù)期會(huì)在半分鐘之內(nèi)得到結(jié)果 - 一個(gè)最新的數(shù)據(jù)流的信息。

在Logz.io,我們有一些預(yù)定義的報(bào)警和儀表板來展示性能指標(biāo),它們都是使用Collectl。如果你也使用Logz.io服務(wù),請(qǐng)?jiān)诹奶焓依镎业轿覀儯覀儗?huì)分享這些有用的信息。

如果你想了解更多,請(qǐng)隨意在下面留言!

翻譯自這里

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26563.html

相關(guān)文章

  • [elk]基于elk的業(yè)務(wù)日志格式設(shè)計(jì)

    摘要:背景項(xiàng)目,業(yè)務(wù)監(jiān)控為,需要搭建一套日志查看,閥值告警等功能的監(jiān)控系統(tǒng)。需求業(yè)務(wù)需求并不是很多,因?yàn)槭窃诔跗冢葓F(tuán)隊(duì)使用熟練后,業(yè)務(wù)日志會(huì)接入更多項(xiàng)目決定。后面項(xiàng)目上還需要接入隊(duì)列日志異步事務(wù)日志具體實(shí)現(xiàn)思路敬請(qǐng)期待后面的文章。 背景 php項(xiàng)目,業(yè)務(wù)監(jiān)控為0,需要搭建一套日志查看,閥值告警等功能的監(jiān)控系統(tǒng)。撒都不用說,直接上ELK。 我們跳過搭建過程(網(wǎng)上太多了)。通過docker搭建...

    2i18ns 評(píng)論0 收藏0
  • 朱曄的互聯(lián)網(wǎng)架構(gòu)實(shí)踐心得S1E4:簡(jiǎn)單好用的監(jiān)控六兄弟

    摘要:還可以初步判斷出問題的原因是異常導(dǎo)致還是突增的壓力所致。通過面板配置的服務(wù)調(diào)用量和業(yè)務(wù)進(jìn)出量,排除上下游問題,定位出問題的模塊。 這里所說的六兄弟只指ELK套件(ElasticSearch+Logstash+Kibana)以及TIG套件(Telegraf+InfluxDb+Grafana)。 showImg(https://segmentfault.com/img/bVbhS81?w=...

    xiaoxiaozi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<