天天看點

nagios監控windows主機 && linux主機

一、NSclient++與nrpe

nagios對windows的監控主要有兩種方法,一種是NSclient++,另一種是通過nrpe的方式來達到監控目的

NSclient++與nrpe最大的差別就是:

1、被監控機上安裝有nrpe,并且還有插件,最終的監控是由這些插件來進行的.當監控主機将監控請求發給nrpe後,nrpe調用插件來完成監控.

2、NSclient++則不同,被監控機上隻安裝NSclient++,沒有任何的插件.當監控主機将監控請求發給NSclient++後,NSclient++直接完成監控,所有的監控是由NSclient++完成的。

這也說明了NSclient++的一個很大的問題,不靈活,沒有可擴充性.它隻能完成自己本身包含的監控操作,不能由一些插件來擴充.好在NSclient++已經做的不錯了,基本上可以完全滿足我們的監控需要。

NSclient++的原理圖

<a href="http://s3.51cto.com/wyfs02/M00/46/35/wKiom1PvKYqT3zN_AACJ0zqers8519.jpg" target="_blank"></a>

二、部署過程

1、在windows上安裝NSclient++

(1)一直下一步

<a href="http://s3.51cto.com/wyfs02/M01/46/35/wKiom1PvKuiCrk9AAAAjAmNM0Rg841.png" target="_blank"></a>

(2)設定nagios伺服器IP位址

<a href="http://s3.51cto.com/wyfs02/M02/46/35/wKiom1PvKv2ATA65AACCPbwcXss954.png" target="_blank"></a>

(3)檢查NSclient++的端口是否成功開啟

<a href="http://s3.51cto.com/wyfs02/M00/46/37/wKioL1PvLIChR2F7AAAZ7iDZyZk706.png" target="_blank"></a>

    如果服務沒有開啟,就:win+r --&gt; services.msc --&gt; nsclient++ 開啟服務即可

(4)防火牆打開tcp 12489端口

2、設定nagios伺服器

(1)檢測nagios指令是否可以正常監測windows主機

1

2

3

4

5

6

7

8

<code>[root@cacti libexec]</code><code>#  ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v UPTIME</code>

<code>System Uptime - 3 day(s) 12 hour(s) 32 minute(s)</code>

<code>[root@cacti libexec]</code><code># </code>

<code>[root@cacti libexec]</code><code># ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v CPULOAD -w 80 -c 90 -l 5,80,90</code>

<code>CPU Load 0% (5 min average) |   </code><code>'5 min avg Load'</code><code>=0%;80;90;0;100                     </code><code>#-w 警告比例 -c 緊急比例  -l(小寫L) 表示過去5分鐘的平均值,80%為警告,90%為緊急</code>

<code>[root@cacti libexec]</code><code># ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v USEDDISKSPACE -w 80 -c 90 -l C </code>

<code>C:\ - total: 100.83 Gb - used: 13.71 Gb (14%) - </code><code>free</code> <code>87.12 Gb (86%) | </code><code>'C:\ Used Space'</code><code>=13.71Gb;80.66;90.74;0.00;100.83</code>

(2)定義指令、主機、服務

    ①、定義指令

<code>[root@cacti ~]</code><code># vim /usr/local/nagios/etc/objects/commands.cfg</code>

<code>define </code><code>command</code><code>{</code>

<code>        </code><code>command_name    check_win</code>

<code>        </code><code>command_line    $USER1$</code><code>/check_nt</code> <code>-H </code><code>"$HOSTADDRESS$"</code> <code>-p 12489 -s dianyi123 -</code><code>v</code> <code>$ARG1$ $ARG2$</code>

<code>}</code>

    ②、定義主機和服務

    為了友善,主機和監控服務都定義在一個配置檔案裡面

    首先創在/usr/local/nagios/etc建一個檔案夾servers專門儲存各伺服器的配置檔案,然後以伺服器IP命名各伺服器配置檔案

    這樣的話,nagios.cfg裡面就需要開啟對servers目錄的支援

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

<code>[root@cacti etc]</code><code># pwd</code>

<code>/usr/local/nagios/etc</code>

<code>[root@cacti etc]</code><code># </code>

<code>[root@cacti etc]</code><code># ls</code>

<code>cgi.cfg  htpasswd.</code><code>users</code>  <code>nagios.cfg  objects  resource.cfg  servers</code>

<code>[root@cacti etc]</code><code># vim nagios.cfg</code>

<code>cfg_dir=</code><code>/usr/local/nagios/etc/servers</code>

<code>[root@cacti etc]</code><code># vim servers/192.168.200.15.cfg</code>

<code>define host{</code>

<code>        </code><code>use                     windows-server            ; Name of host template to use</code>

<code>        </code><code>host_name               192.168.200.15</code>

<code>        </code><code>alias</code>                   <code>my computer</code>

<code>        </code><code>address                 192.168.200.15</code>

<code>        </code><code>}</code>

<code>#define hostgroup{</code>

<code>#       hostgroup_name  windows-servers ; The name of the hostgroup</code>

<code>#       alias           Windows Servers ; Long name of the group</code>

<code>#       }</code>

<code>define service{</code>

<code>        </code><code>use                             generic-service</code>

<code>        </code><code>host_name                       192.168.200.15</code>

<code>        </code><code>service_description             NSClient++ Version</code>

<code>        </code><code>check_command                   check_win!CLIENTVERSION</code>

<code>         </code><code>}</code>

<code>        </code><code>service_description             Uptime</code>

<code>        </code><code>check_command                   check_win!UPTIME</code>

<code>        </code><code>service_description             CPU Load</code>

<code>        </code><code>check_command                   check_win!CPULOAD!-l 5,80,90</code>

<code>       </code><code>use                     generic-service</code>

<code>       </code><code>host_name               192.168.200.15</code>

<code>       </code><code>service_description     Memory Usage</code>

<code>       </code><code>check_command           check_win!MEMUSE!-w 80 -c 90</code>

<code>       </code><code>}</code>

<code>       </code><code>service_description     C:\ Drive Space</code>

<code>       </code><code>check_command           check_win!USEDDISKSPACE!-l c -w 80 -c 90</code>

<code>       </code><code>service_description     D:\ Drive Space</code>

<code>       </code><code>check_command           check_win!USEDDISKSPACE!-l d -w 80 -c 90</code>

<code>       </code><code>service_description     E:\ Drive Space</code>

<code>       </code><code>check_command           check_win!USEDDISKSPACE!-l e -w 80 -c 90</code>

<code>#define service{</code>

<code>#       use                     generic-service</code>

<code>#       host_name               192.168.200.15</code>

<code>#       service_description     W3SVC</code>

<code>#       check_command           check_win!SERVICESTATE!-d SHOWALL -l W3SVC</code>

<code>       </code><code>service_description     Explorer</code>

<code>       </code><code>check_command           check_win!PROCSTATE!-d SHOWALL -l Explorer.exe</code>

(3)檢查配置檔案有無錯誤

<code>/usr/local/nagios/bin/nagios</code> <code>-</code><code>v</code> <code>/usr/local/nagios/etc/nagios</code><code>.cfg</code>

如果沒有消息,那就是最好的消息,下一步,就可以重新開機nagios服務了

(4)重新開機nagios服務

<code>[root@cacti ~]</code><code># service nagios restart</code>

<code>Stopping nagios:                                           [  OK  ]</code>

<code>Starting nagios:                                           [  OK  ]</code>

三、nagios監控頁面檢視主機與服務

1、主機狀态

<a href="http://s3.51cto.com/wyfs02/M01/46/37/wKioL1PvOGOCMIo0AACZgKI45rU930.png" target="_blank"></a>

2、服務狀态

<a href="http://s3.51cto.com/wyfs02/M00/46/35/wKiom1PvN2nQ0ruDAABa77H1RVc898.png" target="_blank"></a>

四、排錯階段

本次部署nagios監控windows主機主要碰到兩個問題

1、主機狀态(status)是down,而不是正常的up

  原因:這種情況下,一般都是伺服器禁ping了,監控伺服器是通過ping服務來檢查被監控伺服器是否線上,當把windows伺服器ping的回應要求開啟後,監控成功

  解決:win2008:伺服器管理器——設定——進階安全windows防火牆——入站規則——找到“檔案和列印機共享(回應要求-ICMPv4-in)”右擊……選擇“啟用規則”

2、could not fetch information from server

  當把第1個問題解決掉後,Status是UP起來了,可是所有的服務全部都是could not fetch information from server

<a href="http://s3.51cto.com/wyfs02/M00/46/37/wKioL1PvOneR3f1lAABUd5w7O6k288.png" target="_blank"></a>

  原因:出現這種狀況的原因是因為nagios伺服器沒有從被監控端伺服器上獲得相關資料,直接原因就是NSclient++的配置檔案中Allowed hosts的IP沒有設定正确

  解決:NSclient++的配置檔案中 Allowed hosts = nagios伺服器IP

<a href="http://s3.51cto.com/wyfs02/M01/46/35/wKiom1PvOveg0Z7bAABSyeAbrf0246.png" target="_blank"></a>

  當時在安裝NSclient++時,我的 Allowed hosts = 192.168.200.105 ,我的設定是正确的,但是為什麼會變成15我也不知道為什麼

五、nagios監控linux主機

1、服務端定義主機

<code>        </code><code>use                     linux-server</code>

<code>        </code><code>host_name               192.168.200.111</code>

<code>        </code><code>alias</code>                   <code>linux</code>

<code>        </code><code>address                 192.168.200.111</code>

<code>        </code><code>host_name                       192.168.200.111</code>

<code>        </code><code>service_description             root_/</code>

<code>        </code><code>check_command                   check_nrpe!check_xvda!5%!10%</code>

<code>        </code><code>service_description             </code><code>/dev/xvdb2</code>

<code>        </code><code>check_command                   check_nrpe!check_xvdb2!5%!10%</code>

<code>        </code><code>service_description             Check Swap</code>

<code>        </code><code>check_command                   check_nrpe!check_swap</code>

<code>        </code><code>service_description             total</code>

<code>        </code><code>check_command                   check_nrpe!check_total_procs</code>

<code>        </code><code>service_description             check_load</code>

<code>        </code><code>check_command                   check_nrpe!check_load</code>

<code>        </code><code>service_description             check_tcp_3306</code>

<code>        </code><code>check_command                   check_tcp!3306</code>

<code>        </code><code>service_description             check_users</code>

<code>        </code><code>check_command                   check_nrpe!check_users</code>

<code>        </code><code>service_description             check_mem</code>

<code>        </code><code>check_command                   check_nrpe!check_mem</code>

<code>        </code><code>service_description             check_mysql</code>

<code>        </code><code>check_command                   check_nrpe!check_mysql</code>

<code>        </code><code>service_description             check_mysql_slave</code>

<code>        </code><code>check_command                   check_nrpe!check_mysql_slave</code>

<code>   </code> 

<code>        </code><code>service_description             check_http  192.168.200.111</code><code>/test</code><code>.html</code>

<code>        </code><code>check_command                   check_http!</code><code>'-u /test.html'</code>     <code>#nagios監控網頁狀态(如 200),在commands.cfg中有自帶check_http指令,也可監控域名!</code>

2、用戶端修改:vim /usr/local/nagios/etc/nrpe.cfg

<code>command</code><code>[check_users]=</code><code>/usr/local/nagios/libexec/check_users</code> <code>-w 3 -c 5</code>

<code>command</code><code>[check_load]=</code><code>/usr/local/nagios/libexec/check_load</code> <code>-w 15,10,5 -c 30,25,20</code>

<code>command</code><code>[check_xvda]=</code><code>/usr/local/nagios/libexec/check_disk</code> <code>-w 10% -c 5% -p </code><code>/dev/xvda</code>

<code>command</code><code>[check_zombie_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 5 -c 10 -s Z</code>

<code>command</code><code>[check_total_procs]=</code><code>/usr/local/nagios/libexec/check_procs</code> <code>-w 150 -c 200 </code>

<code>command</code><code>[check_xvdb2]=</code><code>/usr/local/nagios/libexec/check_disk</code> <code>-w 10% -c 5% -p </code><code>/dev/xvdb2</code>   <code>#阿裡雲</code>

<code>command</code><code>[check_swap]=</code><code>/usr/local/nagios/libexec/check_swap</code> <code>-w 20% -c 10%                 </code><code>#/dev/xvdb1 分區做了swap</code>

<code>command</code><code>[check_mem]=</code><code>/usr/bin/sudo</code> <code>/usr/local/nagios/libexec/check_mem</code> <code>-w 20 -c 10 </code>

<code>command</code><code>[check_mysql]=</code><code>/usr/local/nagios/libexec/check_mysql</code> <code>-H 192.168.200.111 -unagios -dnagios_monitor -p dianyi123</code>

<code>command</code><code>[check_mysql_slave]=</code><code>/usr/local/nagios/libexec/check_mysql_slave</code>

3、在nrpe.cfg配置檔案中允許nagios伺服器IP

<code>[root@localhost ~]</code><code># vim /usr/local/nagios/etc/nrpe.cfg </code>

<code>allowed_hosts=127.0.0.1,192.168.200.105</code>

4、用戶端以獨立程序方式啟動 nrpe

<code>/usr/local/nagios/bin/nrpe</code> <code>-c </code><code>/usr/local/nagios/etc/nrpe</code><code>.cfg -d</code>

5、修改nagios的指令模闆

<code>[root@monitor ~]</code><code># vim /usr/local/nagios/etc/objects/commands.cfg #添加以下一行</code>

<code>define </code><code>command</code> <code>{</code>

<code>      </code><code>command_name  check_nrpe</code>

<code>      </code><code>command_line    $USER1$</code><code>/check_nrpe</code> <code>-H $HOSTADDRESS$ -c $ARG1$</code>

否則重新開機nagios會報錯:

<code>Error: Service check </code><code>command</code> <code>'check_nrpe!check_total_procs'</code> <code>specified </code><code>in</code> <code>service </code><code>'total'</code> <code>for</code> <code>host </code><code>'192.168.200.105'</code> <code>not defined anywhere!</code>

6、服務端檢測 :

/usr/local/nagios/libexec/check_nrpe -H 192.168.200.111 -c check_sda

六、補充

1、nagios監控windows端口

    基本上socket(收發通信協定)寫的程式都會對應一個tcp端口出來,我們隻要監控此端口就相當于監控了此程式;如FTP 21,pop 110,smtp 25 這些是常見的tcp端口,常見的端口一般nagios内都有定義的check_nt!,如果不是常見的端口,就需自定義程式的tcp端口。

    在監控之前,要确認端口是打開的,可以在CMD中telnet一下端口

<code>C:\Users\Administrator&gt;telnet 192.168.200.15 3389</code>

(1)定義指令

<code>[root@cacti objects]</code><code># vim /usr/local/nagios/etc/objects/commands.cfg</code>

<code>       </code><code>command_name    tcp3389</code>

<code>       </code><code>command_line    $USER1$</code><code>/check_tcp</code> <code>-H $HOSTADDRESS$ -p 3389 -</code><code>v</code> <code>CLIENTVERSION</code>

(2)定義服務

    主機已定義,主機和服務在一個配置檔案裡

<code>[root@cacti servers]</code><code># vim /usr/local/nagios/etc/servers/192.168.200.15.cfg</code>

<code>        </code><code>use                     generic-service</code>

<code>        </code><code>service_description     port3389</code>

<code>        </code><code>check_command           tcp3389</code>

(3)重新開機nagios服務

(4)檢視驗證

<a href="http://s3.51cto.com/wyfs02/M01/46/CB/wKiom1P0jpHhVLokAABsKpw7J9w674.png" target="_blank"></a>

2、nagios監控linux端口

<code>[root@cacti servers]</code><code># pwd</code>

<code>/usr/local/nagios/etc/servers</code>

<code>[root@cacti servers]</code><code># </code>

<code>[root@cacti servers]</code><code># vim 192.168.200.18.cfg</code>

<code>        </code><code>host_name                       192.168.200.18</code>

<code>        </code><code>service_description             check_tcp_873</code>

<code>        </code><code>check_command                   check_tcp!873</code>

<code>#</code>

<code>############# 如果監聽的端口是這樣的,而不是 *:5666 這樣 ###############</code>

<code>tcp    LISTEN     0      50                             61.138.78.59:7003                                     *:*     </code>

<code>tcp    LISTEN     0      5                                         *:5666                                     *:*  </code>

<code>則需要修改commands中的 $HOSTADDRESS$ 為61.138.78.59,然後修改command_name,再定義服務即可</code>

3、nagios監控mysql主從同步

   判斷mysql的主從同步主要還是看那兩個線程:Slave_IO線程和Slave_SQL線程,兩個都是YES的話,就證明是沒有問題的

<code>MariaDB [(none)]&gt; show slave status\G</code>

<code>*************************** 1. row ***************************</code>

<code>               </code><code>Slave_IO_State: Waiting </code><code>for</code> <code>master to send event</code>

<code>                  </code><code>Master_Host: 192.168.200.17</code>

<code>                  </code><code>Master_User: doteyplay</code>

<code>                  </code><code>Master_Port: 3306</code>

<code>                </code><code>Connect_Retry: 60</code>

<code>              </code><code>Master_Log_File: master-bin.000008</code>

<code>          </code><code>Read_Master_Log_Pos: 1277</code>

<code>               </code><code>Relay_Log_File: relay-bin.000025</code>

<code>                </code><code>Relay_Log_Pos: 1486</code>

<code>        </code><code>Relay_Master_Log_File: master-bin.000008</code>

<code>             </code><code>Slave_IO_Running: Yes</code>

<code>            </code><code>Slave_SQL_Running: Yes</code>

第一部分:用戶端配置

(1)在被監控的從伺服器增加一個使用者

<code>MariaDB [(none)]&gt; grant Replication client on *.* to nagios@localhost identified by </code><code>'nagios'</code><code>;</code>

<code>Query OK, 0 rows affected (0.00 sec)</code>

<code>MariaDB [(none)]&gt; </code>

<code>MariaDB [(none)]&gt; flush privileges;</code>

(2)驗證命名執行狀态

<code>[root@DBSlave ~]</code><code># mysql -unagios -pnagios -e "show slave status\G;"  </code>

(3)編寫腳本/usr/local/nagios/libexec/check_mysql_slave(這是監控其作用的核心)

<code>#!/bin/sh </code>

<code>declare</code> <code>-a    slave_is </code>

<code>slave_is=($(</code><code>/usr/local/mysql/bin/mysql</code> <code>-unagios -pnagios    -e </code><code>"show slave status\G"</code><code>|</code><code>grep</code> <code>Running |</code><code>awk</code> <code>'{print $2}'</code><code>)) </code>

<code>if</code> <code>[ </code><code>"${slave_is[0]}"</code> <code>= </code><code>"Yes"</code> <code>-a </code><code>"${slave_is[1]}"</code> <code>= </code><code>"Yes"</code> <code>] </code>

<code>     </code><code>then</code> 

<code>     </code><code>echo</code> <code>"OK C2-slave is running"</code> 

<code>     </code><code>exit</code> <code>0 </code>

<code>else</code> 

<code>     </code><code>echo</code> <code>"Critical C2-slave is error"</code> 

<code>     </code><code>exit</code> <code>2 </code>

<code>fi</code> 

<code>[root@DBSlave libexec]</code><code># chmod +x check_mysql_slave   #賦予執行權限</code>

<code>[root@DBSlave libexec]</code><code># chown  nagios.nagios check_mysql_slave</code>

(4)在從伺服器安裝 nrpe,然後在配置檔案nrpe.cfg加入一行

<code>[root@DBSlave ~]</code><code># vim /usr/local/nagios/etc/nrpe.cfg</code>

(5)手動執行腳本,觀察輸出狀态

<code>[root@DBSlave libexec]</code><code># sh check_mysql_slave </code>

<code>OK C2-slave is running</code>

(6)檢查被監控端的5666端口

<code>[root@DBSlave libexec]</code><code># ss -antulp | grep 5666</code>

<code>tcp    LISTEN     0      5                     :::5666                 :::*      </code><code>users</code><code>:((</code><code>"nrpe"</code><code>,26512,5))</code>

<code>tcp    LISTEN     0      5                      *:5666                  *:*      </code><code>users</code><code>:((</code><code>"nrpe"</code><code>,26512,4))</code>

<code>[root@DBSlave libexec]</code><code># /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d</code>

第二部分:服務端配置

(1)在監控機上檢查是否可成功監控被監控機

<code>[root@cacti ~]</code><code># /usr/local/nagios/libexec/check_nrpe -H 192.168.200.18 -c check_mysql_slave</code>

<code>NRPE: Command </code><code>'check_mysql_slave'</code> <code>not defined     </code><code>#遇到問題</code>

排錯:<code>NRPE: Command </code><code>'check_mysql_slave'</code> <code>not defined</code>

<code>[root@cacti ~]</code><code># /usr/local/nagios/libexec/check_nrpe -H 192.168.200.18 </code>

<code>NRPE v2.15</code>

 證明在被監測主機上配置的NRPE已經正常工作,并且監測主機能夠通過SSL與被監測主機上的NRPE正常通信。

<code>[root@DBSlave libexec]</code><code># ps -ef | grep nrpe</code>

<code>root     10287  9703  0 12:01 pts</code><code>/1</code>    <code>00:00:00 vim </code><code>/usr/local/nagios/etc/nrpe</code><code>.cfg</code>

<code>root     10522  9639  0 12:30 pts</code><code>/0</code>    <code>00:00:00 </code><code>grep</code> <code>nrpe</code>

<code>nagios   26512     1  0 Aug15 ?        00:01:09 </code><code>/usr/local/nagios/bin/nrpe</code> <code>-c </code><code>/usr/local/nagios/etc/nrpe</code><code>.cfg -d   </code><code>#這裡的nrpe是以獨立程序運作的,而非守護程序。先kill一下nrpe再說</code>

<code>[root@DBSlave libexec]</code><code># </code>

<code>[root@DBSlave libexec]</code><code># kill -9 26512   #kill nrpe程序</code>

<code>root     10524  9639  0 12:31 pts</code><code>/0</code>    <code>00:00:00 </code><code>grep</code> <code>nrpe       </code><code>#kill 成功</code>

<code>[root@DBSlave libexec]</code><code># /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d   #重新開機nrpe</code>

<code>nagios   10526     1  0 12:31 ?        00:00:00 </code><code>/usr/local/nagios/bin/nrpe</code> <code>-c </code><code>/usr/local/nagios/etc/nrpe</code><code>.cfg -d</code>

<code>root     10528  9639  0 12:31 pts</code><code>/0</code>    <code>00:00:00 </code><code>grep</code> <code>nrpe</code>

再次在監控端測試

<code>OK C2-slave is running   </code><code>#終于順利通過了,就是nrpe程序的事兒</code>

(2)定義主機、服務

<code>        </code><code>host_name               192.168.200.18</code>

<code>        </code><code>address                 192.168.200.18</code>

<code>       </code> 

(4)檢視監控狀态

<a href="http://s3.51cto.com/wyfs02/M02/46/FA/wKioL1P1eVvjb_cnAAAzfT1y6aY028.png" target="_blank"></a>

4、nagios通過web界面修改某個服務時報錯

例如對某個服務進行臨時安排其執行時間,或者不讓它發警告,web頁面上都有這樣的設定.但是常常會有錯誤資訊如下:

Could not open command file '/usr/local/nagios/var/rw/nagiosNaNd' for update!The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.An error occurred while attempting to commit your command for processing.

 (1)修改屬組

<code>[root@monitor ~]</code><code># chown -R nagios.nagios /usr/local/nagios/var/rw/</code>

(2)把apache使用者加入到nagios組

<code>[root@monitor ~]</code><code># usermod -G nagios apache</code>

(3)重新開機服務

<code>[root@monitor ~]</code><code># service nagios restart</code>

<code>[root@monitor ~]</code><code># service httpd restart</code>

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1541083,如需轉載請自行聯系原作者

繼續閱讀