中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

如何監控多個進(jin)程(cheng)的存活和CPU、內存占用

對于很多(duo)偏傳統的(de)企業,尚(shang)未大規模應(ying)用 Kubernetes 技術,也沒有為應(ying)用埋點,此時進程(cheng)監控(kong)就(jiu)很關鍵了(le)。最典(dian)型的(de)需求就(jiu)是監控(kong)進程(cheng)的(de)存(cun)活(huo)性和進程(cheng)的(de)資源(CPU、內存(cun)等)占用。

本(ben)文分享使用夜鶯(ying)監控開源項目和 Categraf 來構(gou)建這個監控能力(li)。

夜鶯監控簡介

夜(ye)鶯(ying)監控(Nightingale)是(shi)一款(kuan)側重告警(jing)的(de)(de)監控類開源項目。類似 Grafana 的(de)(de)數據(ju)源集(ji)成方式,夜(ye)鶯(ying)也是(shi)對接(jie)多(duo)種(zhong)既(ji)有(you)的(de)(de)數據(ju)源,不過 Grafana 側重在可視化,夜(ye)鶯(ying)是(shi)側重在告警(jing)引擎、告警(jing)事件(jian)的(de)(de)處理(li)和分(fen)發。

夜(ye)鶯監(jian)控(kong)項目,最(zui)初由(you)滴滴開(kai)發和開(kai)源,并于 2022 年 5 月 11 日,捐贈予中國計(ji)算機學會開(kai)源發展委員會(CCF ODC),為 CCF ODC 成(cheng)立后接受捐贈的第一個開(kai)源項目。

其開源倉庫地址:

  • 后端(主倉庫):
  • 前端:

雖然夜鶯(ying)的側重點是告警(jing),但(dan)是也支持基本(ben)的看圖(tu)能力(li),基本(ben)夠用(yong),為了省(sheng)事(shi)就不引入 Grafana 等其他看圖(tu)工具(ju)了,告警(jing)、看圖(tu)都用(yong)夜鶯(ying)來搞。

但是注意,夜鶯沒有內(nei)置時序(xu)數據(ju)存儲能(neng)力,即監控數據(ju)的存儲需要單獨(du)找一個時序(xu)庫,目前業(ye)內(nei)情況來看,最(zui)推薦的是 VictoriaMetrics,和(he) Prometheus 接(jie)口(kou)兼容(rong)、性能(neng)好、支持集群版本。待會(hui)演示(shi)的時候我們就用 VictoriaMetrics 來作(zuo)為時序(xu)庫(TSDB)。

Categraf 簡介

Categraf 也是一個開源項目,專門做數(shu)(shu)據(ju)采集的,集成(cheng)了數(shu)(shu)十(shi)種(zhong)采集插件,涵蓋了機器的 CPU、內存、磁(ci)盤、網絡、IO、進程 等(deng)常規采集能力(li),也集成(cheng)了 MySQL、Redis、Postgres、Oracle、Tomcat 等(deng)各類常見數(shu)(shu)據(ju)庫、中間件的采集能力(li)。

Categraf 的代碼倉(cang)庫地址(zhi)是:

Categraf 采集了監(jian)控數據(ju)之后,要推送(song)給服務端,使用 Prometheus Remote Write 協議。很多后端存(cun)儲(chu)都支持這個協議。所以(yi),Categraf 可(ke)以(yi)直接(jie)推送(song)監(jian)控到 Prometheus、VictoriaMetrics,也支持把(ba)數據(ju)寫到夜鶯(ying)監(jian)控(Nightingale),再由(you)夜鶯(ying)把(ba)數據(ju)轉存(cun)到后端時序(xu)庫。

今天我(wo)們介(jie)紹(shao)進程監控,就使用 Categraf 來做。待會做具體演示。

下面進入(ru)安裝(zhuang)環節,先安裝(zhuang)時序庫(ku)。

部署 VictoriaMetrics 時序庫

如果(guo)你已經部署過 VictoriaMetrics 或者 Prometheus 了,可以(yi)跳過這(zhe)一(yi)步。

VictoriaMetrics 也是(shi)開(kai)源的,開(kai)源項目的發布(bu)包通常在(zai) releases 頁面,所(suo)以,VictoriaMetrics 的發布(bu)包下載地址就是(shi):

當前社區(qu)最(zui)新版(ban)是 v1.123.0,后綴(zhui)帶有 enterprise 的發布包(bao)是企業版(ban),咱們就(jiu)用社區(qu)版(ban)就(jiu)夠(gou)了,我是 arm64 的環境,所以下載 arm64 的發布包(bao):

  • victoria-metrics-linux-arm64-v1.123.0.tar.gz

解(jie)壓縮(suo)會發現,里邊(bian)只有一個 victoria-metrics-prod 二進制,真省(sheng)事。

通過(guo)如下命令可以直接啟動(dong) VictoriaMetrics:

./victoria-metrics-prod

默認會監聽在 8428 端口。VictoriaMetrics 各類(lei)參(can)數(shu)都是通過(guo)命(ming)令行參(can)數(shu)來控制的(de),可(ke)以通過(guo)查看其 help 信息了解具體有哪些參(can)數(shu):

./victoria-metrics-prod --help

我這里是做演示,所以直接前臺啟動進程了。如果你(ni)要在(zai)生(sheng)產環境使用(yong),建(jian)議使用(yong) systemd 或者(zhe) supervisor 等來托管(guan)。

部署夜鶯監控

夜鶯監控的發布包和 VictoriaMetrics 一樣(yang),都是在 github releases 頁面:

當前最新版本是 v8.2.2,我是 arm64 的環境(jing),所以下載:n9e-v8.2.2-linux-arm64.tar.gz

實際上,夜(ye)鶯也可以跑在 Windows 或者 Mac 上面,只是官方(fang)沒有提供默認(ren)的發(fa)布包,需(xu)要自行(xing)編譯了。

使(shi)用(yong)如(ru)下命令解壓(ya)縮:

mkdir n9e
tar zxvf n9e-v8.2.2-linux-arm64.tar.gz -C n9e

然后進入 n9e 目錄直接啟動就可(ke)以了:

./n9e

默認監聽在 17000 端口,可以使用瀏覽器訪問 WEB UI,默認用戶名是 root,默認密碼是 root.2020

之所以可以一鍵啟動時因為默認使用的存儲是 sqlite,默認使用緩存是 miniredis(內置到進程內存里了),如果是生產環境,請使用單獨的 MySQL 和 Redis。MySQL 和 Redis 相關的連接配置在 n9e 二進制同級目錄下的 etc 目錄的 config.toml 里。

配置文件里各(ge)項是什(shen)么含(han)義,請參考:。

Ctrl + C 先把剛才的夜鶯進程停掉,咱們修改一下 etc/config.toml 中的(de)(de)時序庫地(di)址(zhi),改成剛才(cai)啟(qi)動的(de)(de) VictoriaMetrics 的(de)(de)地(di)址(zhi):

[[Pushgw.Writers]]
Url = "//127.0.0.1:8428/api/v1/write"

127.0.0.1:8428 是(shi)我剛部署的 VictoriaMetrics 的地址,請你根(gen)據自身(shen)環境調整具體的 IP 和(he)端(duan)口。

這(zhe)個配置的(de)含義是:夜(ye)鶯接收到 Categraf 上報的(de)監控數據之后,轉(zhuan)存到這(zhe)個地址指向的(de)時序庫(ku)。

OK,重啟啟動夜鶯(ying)進程(cheng):

./n9e

我這里是做(zuo)演(yan)示,所(suo)以直接前(qian)臺啟動進程了。如(ru)果你要(yao)在生產環境使用,建議使用 systemd 或者 supervisor 等來托管。

服務端搞定了,接下來搞客戶端。

部署 Categraf

Categraf 需要部署在所有要監控的目(mu)標機器上(shang)。其發布包(bao)的下載地址(zhi)是:

當前最新版是 v0.4.14,我(wo)就下(xia)載(zai):categraf-v0.4.14-linux-arm64.tar.gz

解壓縮,修改 Categraf 的主配置文件:conf/config.toml。這里核心是要修改 writers 部分(fen):

[[writers]]
url = "//127.0.0.1:17000/prometheus/v1/write"

我的測試環境里,Categraf 和夜鶯是在一臺機器上的,所以連接地址寫的是 127.0.0.1,如果你不(bu)在一臺機器上,請根(gen)據自身情況做調整。

接下來我們用如下命(ming)令做個測(ce)試,看看 Categraf 能否啟動(dong)并(bing)采(cai)集(ji)系(xi)統基礎(chu)指標:

./categraf --test --inputs system

我的環(huan)境里輸出如(ru)下內容:

$ ./categraf --test --inputs system
2025/08/08 12:14:48 main.go:151: I! runner.binarydir: /home/ulric/demo/categraf-v0.4.14-linux-arm64
2025/08/08 12:14:48 main.go:152: I! runner.hostname: ubuntu
2025/08/08 12:14:48 main.go:153: I! runner.fd_limits: (soft=1048576, hard=1048576)
2025/08/08 12:14:48 main.go:154: I! runner.vm_limits: (soft=unlimited, hard=unlimited)
2025/08/08 12:14:48 provider_manager.go:60: I! use input provider: [local]
2025/08/08 12:14:48 prometheus_agent.go:19: I! prometheus scraping disabled!
2025/08/08 12:14:48 ibex_agent.go:19: I! ibex agent disabled!
2025/08/08 12:14:48 agent.go:38: I! agent starting
2025/08/08 12:14:48 metrics_agent.go:323: I! input: local.system started
2025/08/08 12:14:48 agent.go:46: I! [*agent.MetricsAgent] started
2025/08/08 12:14:48 agent.go:49: I! agent started
1754626488 12:14:48 system_load5 agent_hostname=ubuntu 0.11
1754626488 12:14:48 system_load15 agent_hostname=ubuntu 0.09
1754626488 12:14:48 system_n_cpus agent_hostname=ubuntu 8
1754626488 12:14:48 system_load_norm_1 agent_hostname=ubuntu 0.0075
1754626488 12:14:48 system_load_norm_5 agent_hostname=ubuntu 0.01375
1754626488 12:14:48 system_load_norm_15 agent_hostname=ubuntu 0.01125
1754626488 12:14:48 system_uptime agent_hostname=ubuntu 1134501
1754626488 12:14:48 system_load1 agent_hostname=ubuntu 0.06

表示一切正常(chang)。然后通過如下命令啟動 Categraf:

./categraf

注意,測試的時候加了 --test 參數,測試模式下是不會把采集的數據上報服務端的,只是打印在本地控制臺里。正式啟動的時候,就要拿掉 --test 這個參數了。

另外,categraf 的 conf 目錄下有很多 input. 打(da)頭的(de)配(pei)置(zhi)目(mu)錄,是(shi)一個(ge)一個(ge)的(de)采集插件的(de)配(pei)置(zhi)目(mu)錄,通常來講(jiang),如(ru)果(guo)各類(lei)系統(tong)指標都(dou)想(xiang)采集的(de)話,就可以維持這(zhe)個(ge)配(pei)置(zhi)目(mu)錄里(li)的(de)內容不動(dong),如(ru)果(guo)只想(xiang)啟用部分(fen)插件,那就把其他(ta)的(de)插件配(pei)置(zhi)目(mu)錄都(dou)刪除即(ji)可。

我(wo)上面的操作是(shi)直接啟動了 Categraf,各類 CPU、內存之類的指標也就會被采集到。那(nei)我(wo)們去夜鶯(ying)里查(cha)看一下相關數據看看。

配置數據源查看數據

首(shou)先,把剛才的 VictoriaMetrics 作為數據源配進(jin)來,這點跟 Grafana 很(hen)像:

把 VictoriaMetrics 的地址配置到(dao) URL 里。

然后到 指標-即時查詢,即可查詢 Categraf 采集(ji)的監控(kong)數據。

配置進程監控

Categraf 監控進程,使用 procstat 插件,配置文件在 conf/input.procstat/procstat.toml。假設我(wo)要監控(kong) victoria-metrics-prod 進(jin)程(cheng)和 n9e 進(jin)程(cheng),我(wo)的配置樣(yang)例如(ru)下:

[[instances]]
search_exec_substring = "victoria"
gather_total = true
gather_per_pid = true
gather_more_metrics = [
    "threads",
    "fd",
    "io",
    "uptime",
    "cpu",
    "mem",
    "limit",
]

[[instances]]
search_exec_substring = "n9e"
gather_total = true
gather_per_pid = true
gather_more_metrics = [
    "threads",
    "fd",
    "io",
    "uptime",
    "cpu",
    "mem",
    "limit",
]

然后(hou)通過如下(xia)命令可(ke)以測(ce)試(shi)能否采(cai)集到(dao)數據:

./categraf --test --inputs procstat

采集(ji)到(dao)的一些關(guan)鍵指標為:

  • procstat_lookup_count 進程數量,如果為 0,表示對應的進程掛了
  • procstat_rlimit_num_fds_soft 進程的軟限制句柄數,如果是 1024,通常表示系統參數沒有調優好
  • procstat_cpu_usage_total 進程 CPU 使用率
  • procstat_mem_usage_total 進程內存使用率
  • procstat_num_fds_total 進程打開的文件句柄數
  • procstat_read_bytes_total 進程讀取的總字節數
  • procstat_write_bytes_total 進程寫入的總字節數

機(ji)器上的(de)(de)進程(cheng)數量很(hen)多(duo)(duo),還有(you)很(hen)多(duo)(duo)內(nei)核進程(cheng),要采集哪些進程(cheng),你得(de)告訴 Categraf 如何(he)過(guo)濾(lv),也就是那幾(ji)個 search 相關的(de)(de)配置:

  • search_exec_substring 相當于拿 readlink -e /proc/<pid>/exe 與 search_exec_substring 的內容做字符串匹配,如果匹配上了,就采集這個進程的信息
  • search_cmdline_substring 相當于拿 cat /proc/<pid>/cmdline 與 search_cmdline_substring的內容做字符串匹配,如果匹配上了,就采集這個進程的信息
  • search_win_service 用于 windows 機器,表示要監控的 windows 服務名字, 當然 windows 機器上也可以用 search_exec_substring 或者 search_cmdline_substring 來做進程篩選

OK,我們(men)去查看一下相(xiang)關數據是(shi)否(fou)能夠正常(chang)查到:

一(yi)切正常。后面就可以(yi)對這(zhe)些數據配置(zhi)告警(jing)、配置(zhi)儀表盤了。最(zui)重要的(de)告警(jing)規則是:

procstat_lookup_count < 1

即(ji)(ji),要(yao)采集(ji)的進程數量為 0,即(ji)(ji)進程掛了(le),需要(yao)告警。

后記

對于 SRE 或對穩定性(xing)比較在意(yi)的 DEV 人員,監控系統絕(jue)對是必備(bei)利器(qi)。希望本文對大家有所幫助。

posted @ 2025-08-08 13:27  IT運維監控  閱讀(531)  評論(0)    收藏  舉報