RHEL / CentOS 安裝配置 SmokePing

25 November 2016 Linux No Comments

SmokePing 是一套相當實用的網路監督工具, 畫出的圖片也很漂亮。雖然要安裝 SmokePing 比較麻煩, 但只要透過 yum 安裝 SmokePing 所需的套件就方便很多了, 以下是 RHEL 及 CentOS 安裝及配置 SmokePing 的方法。

首先啟用 EPEL Repo:

# yum install epel-release

接著安裝 SmokePing 所需的套件:

# yum install perl httpd httpd-devel mod_fcgid rrdtool perl-CGI-SpeedyCGI fping rrdtool-perl perl-Sys-Syslog

然後安裝以下 CPAN 模組:

# yum install perl-CPAN perl-local-lib perl-Time-HiRes

安裝編譯器, 用作編譯 SmokePing 原始碼:

# yum groupinstall “Development tools”

—————————————————————————————————————–

安裝好所需的套件後, 現在到官網下載 SmokePing 原始碼安裝, 目前最新的版本是 2.6.11:

# wget http://oss.oetiker.ch/smokeping/pub/smokeping-2.6.11.tar.gz

解壓縮原始碼:

# tar -zxvf smokeping-2.6.11.tar.gz

安裝 SmokePing 所需的 Perl 模組, 以及編譯 SmokePing:

# cd smokeping-2.6.11/
# ./setup/build-perl-modules.sh
# mkdir /opt/smokeping
# cp -R thirdparty /opt/smokeping/
# ./configure –prefix=/opt/smokeping
# make install

安裝好 SmokePing 後, 現在是配置 SmokePing 的設定檔, 輸入以下指令:

 

1

2

# cd /opt/smokeping/etc

# for foo in *.dist; do cp $foo 'basename $foo .dist'; done

 

然後開啟 Apache 的設定檔 httpd.conf:

# vi /etc/httpd/conf/httpd.conf

找到設定 DirectoryIndex 的一行, 加入 smokeping.fcgi 及AddHandler 部份, 例如:

DirectoryIndex index.html index.html.var smokeping.fcgi
AddHandler cgi-script .cgi

開啟 /etc/httpd/conf.d/smokeping.conf 檔案, 改成這樣:

 

1

2

3

<Directory "/var/www/html/smokeping">

    Options +ExecCGI

</Directory>

 

執行以下指令, 建立 SmokePing 儲存資料目錄及設定權限:

# mkdir /opt/smokeping/img
# mkdir /opt/smokeping/data
# mkdir /opt/smokeping/var
# mkdir /opt/smokeping/cache
# chown -R apache:apache /opt/smokeping/img
# chown -R apache:apache /opt/smokeping/cache
# ln -s /opt/smokeping/htdocs /var/www/html/smokeping
# ln -s /opt/smokeping/img /var/www/html/smokeping
# ln -s /opt/smokeping/cache /var/www/html/smokeping
# chmod 600 /opt/smokeping/etc/smokeping_secrets
# chmod 600 /opt/smokeping/etc/smokeping_secrets.dist
# chown -R apache:apache /var/www/html/smokeping

現在建立 SmokePing 的設定檔, 要根據自己的需要修改某些設定:

# vi /opt/smokeping/etc/config

範例檔案:

1

2

3

4

5

6

7

8

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

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

owner    = Sam Tang

contact  = you@youremail.com

mailhost = SMTP Server (Ignore if you do not have smtp server)

sendmail = /usr/sbin/sendmail

# NOTE: do not put the Image Cache below cgi-bin

# since all files under cgi-bin will be executed … this is not

# good for images.

imgcache = /opt/smokeping/cache

imgurl   = cache

datadir  = /opt/smokeping/data

piddir  = /opt/smokeping/var

cgiurl   = http://some.url/smokeping.cgi

smokemail = /opt/smokeping/etc/smokemail.dist

tmail = /opt/smokeping/etc/tmail.dist

# specify this to get syslog logging

syslogfacility = local0

# each probe is now run in its own process

# disable this to revert to the old behaviour

# concurrentprobes = no

 

*** Alerts ***

to = you@youremail.com

from = from@youremail.com

 

+someloss

type = loss

# in percent

pattern = >0%,*12*,>0%,*12*,>0%

comment = loss 3 times  in a row

 

*** Database ***

 

step     = 300

pings    = 20

 

# consfn mrhb steps total

 

AVERAGE  0.5   1  1008

AVERAGE  0.5  12  4320

    MIN  0.5  12  4320

    MAX  0.5  12  4320

AVERAGE  0.5 144   720

    MAX  0.5 144   720

    MIN  0.5 144   720

 

*** Presentation ***

 

template = /opt/smokeping/etc/basepage.html.dist

 

+ charts

 

menu = Charts

title = The most interesting destinations

 

++ stddev

sorter = StdDev(entries=>4)

title = Top Standard Deviation

menu = Std Deviation

format = Standard Deviation %f

 

++ max

sorter = Max(entries=>5)

title = Top Max Roundtrip Time

menu = by Max

format = Max Roundtrip Time %f seconds

 

++ loss

sorter = Loss(entries=>5)

title = Top Packet Loss

menu = Loss

format = Packets Lost %f

 

++ median

sorter = Median(entries=>5)

title = Top Median Roundtrip Time

menu = by Median

format = Median RTT %f seconds

 

+ overview

 

width = 600

height = 50

range = 10h

 

+ detail

 

width = 600

height = 200

unison_tolerance = 2

 

"Last 3 Hours"    3h

"Last 30 Hours"   30h

"Last 10 Days"    10d

"Last 400 Days"   400d

 

#+ hierarchies

#++ owner

#title = Host Owner

#++ location

#title = Location

 

*** Probes ***

 

+ FPing

 

binary = /usr/sbin/fping

 

*** Slaves ***

secrets=/opt/smokeping/etc/smokeping_secrets.dist

+boomer

display_name=boomer

color=0000ff

 

+slave2

display_name=another

color=00ff00

 

*** Targets ***

 

probe = FPing

 

menu = Top

title = Network Latency Grapher

remark = Welcome to the SmokePing website of xxx Company. \

         Here you will learn all about the latency of our network.

 

+ Server

menu= Localhost

 

++ Google

 

menu = google.com

title = google.com

alerts = someloss

host = www.google.com

 

然後啟動 httpd:

# systemctl start httpd

設定 SmokePing 開機自動啟動, 需要下載 SmokePing 的開機 script 到 /etc/init.d/ 目錄, 及設定可執行權限:

# cd /etc/init.d/
# wget http://oss.oetiker.ch/smokeping/pub/contrib/smokeping-start-script
# chmod 755 smokeping-start-script

將 smokeping-start-script 第 10 行的 SMOKEPING binary 檔位置, 改成這樣:

SMOKEPING=/usr/local/smokeping/bin/smokeping

最後啟動 SmokePing 便完成了:

# /etc/init.d/smokeping start