首先啓用 EPEL Repository:html
yum -y install epel-release
啓用 EPEL Repository 後, 能夠用 yum 直接安裝 Htop:java
yum -y install htop
安裝好 Htop 後, 啟動只需執行 「htop」 指令:python
htop
首先啓用 EPEL Repository:html
yum -y install epel-release
啓用 EPEL Repository 後, 能夠用 yum 直接安裝 Htop:java
yum -y install htop
安裝好 Htop 後, 啟動只需執行 「htop」 指令:python
htop
https://mp.weixin.qq.com/s/_YdwciFT6qu5_kUIyylR2glinux
做者 | Mark Litwintschik譯者 | ma.yao,小大非在開發軟件或監控運行的系統時,遙測和環境監測都很重要。以便了解系統的運行情況,本文介紹了 top、Htop、Glances 三個實用工具,以及一種用於監控分佈式系統的簡單解決方案。git
在開發軟件或監控運行的系統時,遙測和環境監測都很重要。在理解了歷史情境下什麼是正常行爲以後,一般兩個最緊迫的問題是:(1)什麼發生了變化?(2)什麼表現出異常?github
本文將介紹三個用於臨時監控的流行工具,以及一種用於監控分佈式系統的簡單解決方案。sql
top shell
在幾乎任何類 UNIX 的現代操做系統中,均可以經過輸入 top 來查看一些系統性能指標,這些指標每幾秒鐘更新一次。apache
$ top -b -n2 -d5
top - 09:43:05 up 1:08, 0 users, load average: 0.52, 0.58, 0.59 Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie %Cpu0 : 4.1 us, 22.2 sy, 0.0 ni, 72.3 id, 0.0 wa, 1.4 hi, 0.0 si, 0.0 st %Cpu1 : 4.3 us, 7.1 sy, 0.0 ni, 87.7 id, 0.0 wa, 0.9 hi, 0.0 si, 0.0 st %Cpu2 : 4.4 us, 9.0 sy, 0.0 ni, 85.3 id, 0.0 wa, 1.2 hi, 0.0 si, 0.0 st %Cpu3 : 3.6 us, 6.7 sy, 0.0 ni, 88.6 id, 0.0 wa, 1.0 hi, 0.0 si, 0.0 st KiB Mem: 33431016 total, 9521052 used, 23909964 free, 34032 buffers KiB Swap: 62455548 total, 27064 used, 62428484 free. 188576 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 8304 132 104 S 0.0 0.0 0:00.14 /init ro 3 root 20 0 8308 96 56 S 0.0 0.0 0:00.00 /init ro 4 mark 20 0 17856 5308 5192 S 0.0 0.0 0:00.35 -bash 228 mark 20 0 14452 1668 1172 R 0.0 0.0 0:00.01 top -b -n2 -d5
其二進制執行過程與 Comcast 公司的 James Warner 編寫的 top 版本最類似。這個版本的 top 是全新的,而且是做爲由包括 Lockheed Martin and Heidelberg University 在內的各個組織開發人員的合寫版本的替代品開發而成的。json
top.c 源代碼自己至關簡單,在撰寫本文時,總共有 約 4900 行 C 代碼。目前 top 仍然處於開發過程當中,其源代碼能夠在 GitLab 的 procps 倉庫(https://gitlab.com/procps-ng/procps)找到。該倉庫中還包含其餘工具,包括 kill、ps、sysctl、uptime 和 watch。
其默認佈局一直沒有改變過。可是經過過去幾十年與 UNIX 系統打交道,每次在一臺新機器上使用 top,我都會習慣性地輸入 zc1M。
top 默認採用單色顯示模式,使用 z 將切換至指定顏色模式。數字 1 將顯示單個 CPU 的狀態,而且可以突出顯示單個 CPU 核的負載。我喜歡輸入 M,以查看基於內存容量使用壓力排序後的各進程信息。top 總共提供了 49 個供查看和排序的指標。
默認狀況下,命令會截斷顯示,輸入 c 會顯示有關其路徑和參數的更多擴展信息。 我惟一不滿意的是命令和參數被截斷了。若是隻保留每條命令和參數的開頭與結尾,以便區分不一樣進程,會更加實用。
top 配置的更改只會在當前 session 有效。爲了解決這個問題,輸入大寫的 W 會默認將當前配置保存到~/.toprc 中。我對該文件惟一不滿的地方是,它包含了大於 0x7F 的字節值,於是不易在 top 以外對其進行更改。
$ hexdump -C ~/.toprc | head
00000000 74 6f 70 27 73 20 43 6f 6e 66 69 67 20 46 69 6c |top's Config Fil| 00000010 65 20 28 4c 69 6e 75 78 20 70 72 6f 63 65 73 73 |e (Linux process| 00000020 65 73 20 77 69 74 68 20 77 69 6e 64 6f 77 73 29 |es with windows)| 00000030 0a 49 64 3a 69 2c 20 4d 6f 64 65 5f 61 6c 74 73 |.Id:i, Mode_alts| 00000040 63 72 3d 30 2c 20 4d 6f 64 65 5f 69 72 69 78 70 |cr=0, Mode_irixp| 00000050 73 3d 31 2c 20 44 65 6c 61 79 5f 74 69 6d 65 3d |s=1, Delay_time=| 00000060 33 2e 30 2c 20 43 75 72 77 69 6e 3d 30 0a 44 65 |3.0, Curwin=0.De| 00000070 66 09 66 69 65 6c 64 73 63 75 72 3d a5 a8 b3 b4 |f.fieldscur=....| 00000080 bb bd c0 c4 b7 ba b9 c5 26 27 29 2a 2b 2c 2d 2e |........&')*+,-.| 00000090 2f 30 31 32 35 36 38 3c 3e 3f 41 42 43 46 47 48 |/012568<>?ABCFGH|
Htop
2004 年,Hisham Muhammad 開始致力於建立一個大相徑庭的系統遙測監控工具。Htop 關注遙測顯示的從新佈局:使用條形圖展現 CPU 和內存的關鍵指標;使用 F5 快捷鍵,使進程信息在扁平化列表和層次結構之間切換顯示;經過鼠標點擊,能夠實現屬性排序;而且支持 7 種不一樣的顏色模式。
該軟件可以很好地使您停留在應用當中。若是您想要查看一個進程使用的文件,您能夠選擇該進程,並只需輸入 l;若是您想要經過 strace 運行該進程,在以受權用戶身份運行 htop 的狀況下,只需輸入 s。
在 Ubuntu 16.04.2 LTS 上安裝和運行 htop:
$ sudo apt install htop $ htop
1 [ 0.0%] Tasks: 37, 145 thr; 1 running 2 [ 0.0%] Load average: 0.03 0.05 0.07 3 [ 0.0%] Uptime: 01:31:42 4 [ 0.0%] Mem[|||||||||||||||||||||||||||||||| 1.03G/3.84G] Swp[ 0K/4.00G] PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1 root 20 0 37556 5668 4004 S 0.0 0.1 0:03.03 /sbin/init noprompt 27884 clickhous 20 0 3716M 359M 49184 S 0.7 9.1 0:24.93 ├─ /usr/bin/clickhouse-server --config=/etc/cli 29668 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:00.10 │ ├─ /usr/bin/clickhouse-server --config=/etc/ 29667 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:01.02 │ ├─ /usr/bin/clickhouse-server --config=/etc/ 29666 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:00.08 │ ├─ /usr/bin/clickhouse-server --config=/etc/ 29665 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:00.48 │ ├─ /usr/bin/clickhouse-server --config=/etc/ 29409 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:03.48 │ ├─ /usr/bin/clickhouse-server --config=/etc/ 29408 clickhous 20 0 3716M 359M 49184 S 0.0 9.1 0:02.15 │ ├─ /usr/bin/clickhouse-server --config=/etc/
至於配置方面,使用該軟件的過程當中,任何配置修改都會默認自動保存至~/.config/htop/htoprc。該文件是個文本文件,可是附有下面的警告:
$ head -n2 ~/.config/htop/htoprc
# Beware! This file is rewritten by htop when settings are changed in the interface. # The parser is also very primitive, and not human-friendly.
鑑於其提供的功能比較簡單,它的源代碼量仍是至關小的。在撰寫本文時,它總共有約 12000 行 C 代碼,同時還包含約 3000 行代碼的其餘文件。
Glances
Glances (https://nicolargo.github.io/glances/)是一個基於 Python 的系統遙測監控工具。該項目由 Nicolas Hennion 於 2011 年開始建立。Nilcolas 的領英簡介顯示,他在法國南部的 Thales Alenia Space 衛星控制中心部門擔任項目經理。
當啓動 Glances 時,除了常見的 CPU、內存和進程列表,還將看到雲虛擬機類型以及網絡、硬盤、和 Docker 容器活動等等。
$ glances
ubuntu (Ubuntu 16.04 64bit / Linux 4.4.0-62-generic) Uptime: 18:55:00 CPU [ 1.7%] CPU - 1.7% nice: 0.0% ctx_sw: 923 MEM - 53.1% SWAP - 0.1% LOAD 4-core MEM [ 53.1%] user: 0.8% irq: 0.0% inter: 587 total: 3.84G total: 4.00G 1 min: 0.20 SWAP [ 0.1%] system: 0.7% iowait: 0.0% sw_int: 786 used: 2.04G used: 3.27M 5 min: 0.14 idle: 98.4% steal: 0.0% free: 1.80G free: 3.99G 15 min: 0.10 NETWORK Rx/s Tx/s TASKS 203 (349 thr), 1 run, 202 slp, 0 oth sorted automatically by CPU consumption ens33 152b 3Kb lo 59Kb 59Kb CPU% MEM% VIRT RES PID USER TIME+ THR NI S R/s W/s Command 2.6 4.5 524M 178M 16470 mark 35:48 1 0 S 0 0 /home/mark/. DISK I/O R/s W/s 2.3 0.6 372M 24.5M 14672 mark 0:01 1 0 R 0 0 /home/mark/. fd0 0 0 1.0 23.7 5.42G 931M 21151 root 13:00 71 0 S ? ? java -Xmx1G loop0 0 0 0.7 9.8 3.71G 385M 27884 clickhous 5:29 46 0 S ? ? /usr/bin/cli loop1 0 0 0.3 2.8 3.53G 109M 12883 zookeeper 1:36 20 0 S ? ? /usr/bin/jav loop2 0 0 0.3 0.2 31.4M 6.80M 333 root 0:53 1 0 S ? ? /lib/systemd loop3 0 0 0.3 0.1 13.8M 2.68M 4353 mark 1:07 1 0 S 0 0 watch ifconf loop4 0 0 0.0 0.3 186M 9.86M 1447 root 0:35 2 0 S ? ? /usr/bin/vmt loop5 0 0 0.0 0.2 75.2M 8.11M 1470 root 0:00 1 0 S ? ? /usr/bin/VGA loop6 0 0 0.0 0.2 90.6M 6.59M 4381 root 0:00 1 0 S ? ? sshd: mark [ loop7 0 0 0.0 0.1 269M 5.75M 595 root 0:13 3 0 S ? ? /usr/lib/acc sda 0 78K 0.0 0.1 36.7M 5.37M 1 root 0:37 1 0 S ? ? /sbin/init n sda1 0 78K 0.0 0.1 64.0M 5.31M 4246 root 0:00 1 0 S ? ? /usr/sbin/ss sda2 0 0 0.0 0.1 44.3M 5.05M 3402 mark 0:00 1 0 S 0 0 /lib/systemd sda5 0 0 0.0 0.1 21.8M 5.04M 4403 mark 27:23 1 0 S 0 0 -bash sr0 0 0 0.0 0.1 21.8M 4.93M 21493 mark 0:10 1 0 S 0 0 /bin/bash sr1 0 0 0.0 0.1 21.7M 4.62M 16114 mark 0:03 1 0 S 0 0 /bin/bash 0.0 0.1 21.7M 4.47M 21119 mark 0:00 1 0 S 0 0 /bin/bash FILE SYS Used Total 0.0 0.1 90.6M 4.14M 4402 mark 0:08 1 0 S ? ? 0 / (sda1) 2.48G 15.6G 0.0 0.1 250M 3.97M 588 syslog 0:28 4 0 S ? ? /usr/sbin/rs 0.0 0.1 21.8M 3.87M 3407 mark 0:04 1 0 S 0 0 -bash SENSORS 0.0 0.1 51.5M 3.76M 21144 root 0:00 1 0 S ? ? sudo nohup / Physical id 100C 0.0 0.1 41.9M 3.64M 597 messagebu 0:00 1 0 S ? ? /usr/bin/dbu Core 0 100C 0.0 0.1 43.2M 3.45M 396 root 0:01 1 0 S ? ? /lib/systemd Core 1 100C 0.0 0.1 64.3M 3.21M 3377 root 0:00 1 0 S ? ? /bin/login - Core 2 100C 0.0 0.1 28.0M 2.91M 592 root 0:00 1 0 S ? ? /lib/systemd Core 3 100C 0.0 0.1 26.7M 2.86M 16113 mark 0:06 1 0 S ? ? SCREEN 0.0 0.1 15.7M 2.81M 774 root 0:00 1 0 S ? ? /sbin/dhclie
Glances 由約 1 萬行 Python 代碼和約 2.5 萬行 JavaScript 代碼寫成,並依賴於 psutil (https://github.com/giampaolo/psutil/)軟件包以用於遙測數據收集。它還含有大量 插件,包括支持監控 GPU、Kafka、RAID 設置、文件夾監控以及 WiFi 等等。
除了基於 ncurses 的界面,Glances 也能以 Web 應用的形式運行。當在 Windows 10 上經過 cmd.exe 運行 Glances 的時候,將啓動一個運行在 TCP 端口爲 61209 的 Bottle Web 應用。在瀏覽器中打開 http://127.0.0.1:61209,會看到一個AngularJS 應用程序的歡迎頁面。該頁面模仿了 ncurses 界面。
也能夠經過調用其暴露的 API 接口,配合其餘工具使用:
$ curl http://127.0.0.1:61209/api/3/all \ | python -mjson.tool \ | head -n50 { "alert": [], "amps": [], "batpercent": [], "cloud": {}, "core": { "log": 4, "phys": 4 }, "cpu": { "cpucore": 4, "ctx_switches": 182358, "idle": 82.9, "interrupts": 113134, "soft_interrupts": 0, "syscalls": 215848, "system": 12.5, "time_since_update": 8.532670974731445, "total": 9.8, "user": 3.1 }, "diskio": [ { "disk_name": "PhysicalDrive6", "key": "disk_name", "read_bytes": 0, "read_count": 0, "time_since_update": 8.492774963378906, "write_bytes": 0, "write_count": 0 }, { "disk_name": "PhysicalDrive2", "key": "disk_name", "read_bytes": 0, "read_count": 0, "time_since_update": 8.492774963378906, "write_bytes": 0, "write_count": 0 }, ...
雖然默認的配置文件(https://github.com/nicolargo/glances/blob/develop/conf/glances.conf)有些冗長,可是用戶編輯起來還算方便。
Glances 還支持將遙測數據導出到 16 個以上不一樣的目標文件中,包括 StatsD、Kafka、RabbitMQ、JSON、SVG、ElasticSearch、CSV 以及自定義 RESTful API。
將 Glances 導入 Kafka
如下將介紹將遙測數據導入 CSV 文件,再導入 Kafka。我認爲本地硬盤一般要比網絡鏈接更靠譜。當網絡鏈接出現問題的時候,咱們還能夠利用本地文件再次回填 Kafka。
如下命令運行在新安裝的 Ubuntu 16.04.2 LTS 上:
$ sudo apt update $ sudo apt install \ kafkacat \ python-pip \ python-virtualenv \ screen \ zookeeperd
使用 Apache 鏡像上的二進制包,手動安裝 Kafka:
$ sudo mkdir -p /opt/kafka $ wget -c -O kafka.tgz \ http://www-eu.apache.org/dist/kafka/1.1.1/kafka_2.11-1.1.1.tgz $ sudo tar xzvf kafka.tgz \ --directory=/opt/kafka \ --strip 1
爲 Kafka 建立日誌文件,其權限使用個人 UNIX 帳號:
$ sudo touch /var/log/kafka.log $ sudo chown mark /var/log/kafka.log
ZooKeeper 支持了 Kafka 的大多數分佈式功能,如下命令將啓動 ZooKeeper 服務:
$ sudo /etc/init.d/zookeeper start
啓動完 ZooKeeper,啓動 Kafka 服務器進程:
$ sudo nohup /opt/kafka/bin/kafka-server-start.sh \ /opt/kafka/config/server.properties \ > /var/log/kafka.log 2>&1 &
建立 Python 虛擬環境,並安裝 Glances 以及 CSVKit,以便分析 Glances 的 CSV 文件輸出:
$ virtualenv ~/.monitoring $ source ~/.monitoring/bin/activate $ pip install \ csvkit \ glances
接着,啓動 screen 會話和 Glances。它將顯示 ncurses 界面,並向~/glances.csv 中寫入 215 條數據:
$ screen $ glances --export csv \ --export-csv-file ~/glances.csv
一旦運行起來,按 CTRL-A,接着按 CTRL-D,返回到常規的 Shell 界面。
以下所示,這裏有大量收集到的遙測數據:
$ csvstat --type ~/glances.csv | tail
206. mem_available: Number 207. mem_used: Number 208. mem_cached: Number 209. mem_percent: Number 210. mem_free: Number 211. mem_inactive: Number 212. mem_active: Number 213. mem_shared: Number 214. mem_total: Number 215. mem_buffers: Number
Kafkacat 是採用 C 語言寫的一個非 JVM 的 Kafka 生產者和消費者。靜態連接的包大小要小於 150KB。使用它,將~/glances.csv 中的內容導入 Kafka Topic 「glances_log」中,並對內容進行 Snappy 壓縮。
$ screen $ tail -F ~/glances.csv \ | kafkacat -b localhost:9092 \ -t glances_log \ -z snappy
接下來,一旦運行起來,按 CTRL-A,而後按 CTRL-D,返回到常規 Shell 界面。
以上這些運行在 screen 會話中的任何命令,均可以方便地添加到 Supervisord。另外,若是這些進程由於任何緣由掛了,都能很好地重啓它們。
完成上述操做以後,查看前 100 條記錄的前三列數據:
$ /opt/kafka/bin/kafka-console-consumer.sh \ --topic glances_log \ --from-beginning \ --zookeeper localhost:2181 \ | head -n100 \ | csvstat --columns 1-3 \ --no-header-row
如下是基於前 100 條記錄,收集到的時間戳、CPU 核數以及一分鐘負載均值的統計信息:
1. "a" Type of data: DateTime Contains null values: False Unique values: 100 Smallest value: 2018-10-07 05:53:49 Largest value: 2018-10-07 05:58:55 Most common values: 2018-10-07 05:53:49 (1x) 2018-10-07 05:53:52 (1x) 2018-10-07 05:53:55 (1x) 2018-10-07 05:53:58 (1x) 2018-10-07 05:54:01 (1x) 2. "b" Type of data: Number Contains null values: False Unique values: 1 Smallest value: 4 Largest value: 4 Sum: 400 Mean: 4 Median: 4 StDev: 0 Most common values: 4 (100x) 3. "c" Type of data: Number Contains null values: False Unique values: 18 Smallest value: 0.02 Largest value: 0.22 Sum: 6.57 Mean: 0.066 Median: 0.05 StDev: 0.045 Most common values: 0.04 (15x) 0.02 (14x) 0.03 (13x) 0.06 (9x) 0.05 (9x)
英文原文:http://tech.marksblogg.com/top-htop-glances.html
https://aniyo.iteye.com/blog/1454524
名稱:top
使用權限:全部使用者
使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
說明:實時顯示 process 的動態
參數:
d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,若是使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另外一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 "n" 參數一塊兒使用,能夠用來將 top 的結果輸出到檔案內
範例:
顯示更新十次後退出 ;
top -n 10
使用者將不能利用交談式指令來對行程下命令 :
top -s
將更新顯示二次的結果輸入到名稱爲 top.log 的檔案裏 :
top -n 2 -b < top.log
但願保存多個不一樣的配置文件,以便於輕鬆的切換預配置視圖?只須要建立一個 Top 二進制文件的軟鏈接到你喜歡的名字:
# ln -s /usr/bin/top /usr/bin/top-a
而後運行新的「top-a」。調整完畢後鍵入‘W’保存配置,它將被保存到 ~/.top-arc(格式爲你的 Top 別名+rc)。
這樣,運行原來的 Top 可使用以前的視圖,而 top-a 則使用第二個,依次類推。
有不少竅門使用top會更加高效。關鍵是知道你真正須要的是什麼和可能的對Linux低級別原理的通常理解。統計並不老是正確,但至少有助於整體衡量。全部這些數字收集自 /proc,所以首先確保它已掛載!
參考: