配置zabbix監控服務器

Linux監控平臺介紹

常見開源監控軟件

  • cacti、nagios、zabbix、smokeping、open-falcon等。
  • cacti、smokeping偏向於基礎監控,成圖很是漂亮。
  • cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態, zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖。
  • open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件。

zabbix監控介紹

  • C/S架構,基於C++開發,監控中心支持web界面配置和管理。
  • 單server節點能夠支持上萬臺客戶端。
  • 最新版本3.4,官方文檔https://www.zabbix.com/manuals
  • 5個組件:
  • zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據 數據存儲 存放數據,好比mysql。
  • web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由。
  • zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力。
  • zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報。 zabbix監控流程圖

1.安裝Zabbix服務端(192.168.6.120)

官網下載地址:www.zabbix.com/downloadphp

下載並安裝:java

wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

修改MySQL配置文件/etc/my.cnf,增長一行內容:mysql

character_set_server = utf8linux

而後重啓mysqld服務,進入mysql命令行,建立zabbix庫和用戶,並導入數據。ios

  • /etc/init.d/mysqld restart /重啓mysqld服務
  • mysql -uroot -p'123456' /進入mysql命令行
  • create database zabbix character set utf8; /建立zabbix庫
  • grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'zabbix'; /建立zabbix用戶

退出mysql,而後導入數據:nginx

cd /usr/share/doc/zabbix-server-mysql-3.2.11/ 
gzip -d create.sql.gz
mysql -uroot -p'123456' zabbix < create.sql

啓動httpd服務:web

systemctl start httpd; systemctl enable httpd  /若是報錯,通常是80端口被佔用,關閉nginx便可。

編輯zabbix的配置文件:sql

vim /etc/zabbix/zabbix_server.conf
在DBName=zabbix上面增長一行:DBHost=127.0.0.1
在DBuser下面增長一行:DBPassword=zabbix

保存後退出,啓動zabbix服務:數據庫

systemctl start zabbix-server    /啓動zabbix
systemctl enable zabbix-server   /開機啓動

能夠看到zabbix服務端監聽的端口是10051:apache

[root@jin-120 zabbix-server-mysql-3.2.11]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      3113/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      3113/zabbix_server
  • 而後在windows瀏覽器中輸入192.168.6.120/zabbix進入zabbix的安裝界面,點下一步(若是瀏覽器打不開頁面,把防火牆關了)
  • 看到一處Fail,看錯誤提示是PHP沒有設定時區,編輯文件/etc/php.ini,搜索timezone,把date.timezone前面的;去掉,並修改成date.timezone = Asia/Shanghai,保存後退出並重啓httpd服務systemctl restart httpd。
  • 再刷新zabbix的安裝界面,此時會顯示所有OK,再點擊下一步
  • 將Database host改成127.0.0.1,而後輸入以前設置的密碼,再點擊下一步
  • Name那一欄輸入jin-120(具體看你的主機名),再點下一步確認安裝信息,無誤後再點完成,此時會跳轉到zabbix的登陸界面
  • 輸入用戶admin和密碼zabbix登陸
  • 選擇Administration項,再選擇Users,而後點擊Admin,修改Admin的密碼
  • 修改密碼並更改語言爲中文,退出再從新登陸,能夠看到,已顯示爲中文界面

2.安裝zabbix客戶端(192.168.6.123)

wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
yum install -y zabbix-agent
修改配置文件:vim  /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1修改成Server=192.168.6.120 //定義服務端的ip(被動模式)
ServerActive=127.0.0.1修改成ServerActive=192.168.6.120 //定義服務端的ip(主動模式)
Hostname=Zabbix server修改成Hostname=jin-123 //這是自定義的主機名,一會還須要在web界面下設置一樣的主機名
systemctl start zabbix-agent
systemctl enable zabbix-agent

查看zabbix-agent監聽的端口,能夠發現,客戶端監聽的端口是10050:

[root@jin-123 src]# netstat -lntp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1731/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1731/zabbix_agentd

至此,Zabbix服務端和客戶端安裝均已完成。


3.解決圖形界面中文亂碼的問題:

在服務端(120)上查看文件vim /usr/share/zabbix/include/defines.inc.php,搜索ZBX_FONTPATH

它定義的路徑是「fonts」,它是一個相對路徑,絕對路徑爲/usr/share/zabbix/fonts,而字體文件爲「ZBX_GRAPH_FONT_NAME」所定義的「graphfont」,它是一個文件,絕對路徑爲/usr/share/zabbix/fonts/graphfont

windows字體路徑爲「C:\Windows\Fonts\」,找到「simhei.ttf」(其實就是那個黑體簡體),先把它複製到桌面上,而後上傳到linux的/usr/share/zabbix/fonts/,而且更名爲graphfont.ttf。

mv /root/simhei.ttf /usr/share/zabbix/fonts/
mv graphfont.ttf graphfont.ttf.bak
ln -s simhei.ttf graphfont.ttf
[root@jin-120 fonts]# ll
總用量 9524
lrwxrwxrwx 1 root root      10 1月  19 22:09 graphfont.ttf -> simhei.ttf
lrwxrwxrwx 1 root root      33 1月  19 11:28 graphfont.ttf.bak ->  /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 9751960 6月  11 2009 simhei.ttf

此時再刷新圖形界面,就能夠看到中文正常顯示了。

4.建立自動發現規則,發現網絡上的主機並監控

點擊配置-自動發現-建立發現規則 

   名稱:自動發現網絡主機(自定義),IP範圍:192.168.0.1-254,檢查類型:SSH,而後點」添加「。

5.添加監控項目


(1)監控各個主機基礎指標,CPU,內存,硬盤,網卡流量成圖,web站點的可用性 。

添加主機:

先添加主機組zhangjin-test,再添加主機,建立主機,主機名稱和可見名稱都寫jin-123,羣組選擇zhangjin-test ,IP地址填寫客戶端的ip 192.168.6.123

建立模板:

模板名稱:test,羣組選擇Templates,連接的模板選擇Template OS Linux,而後點添加,再選擇「取消連接」,點更新。

自動發現網卡和硬盤 :

把兩個自動發現的更新時間修改成 30s, 當圖形中有了自動發現的圖形後能夠改回30m 或者1h。

這兩個自動發現會自動建立網卡流量和硬盤狀態的圖形。

檢測web站點的可用性 :

在zbx-server中寫入一條 hosts:

echo '192.168.6.123 www.test-zabbix.com' >> /etc/hosts

在zabbix的web頁面選擇 配置 -- 主機 -- zbx-server -- web監測 -- 右上角建立web場景

場景選項卡中填寫

名稱:web可用性檢測

新的應用集: web_check

客戶端:隨意選擇一個,這裏選擇的是「Chrome 38.0(Windows)」

步驟選項卡填寫:

點擊步驟框中的添加,添加一個步驟, 填寫一個自定義的步驟名稱 填寫要檢測的站點的URL: http://www.baidu.com 填寫最下面的狀態碼 200 ,點擊最下邊的添加按鈕完成步驟的添加。

點擊添加按鈕完成web場景的添加。

再按照前面的步驟將web站點也添加上。

添加完成過幾十秒就能夠在監測中 -- web檢測 中查看狀態了。


(2)監控web服務器(80端口)的併發鏈接數 。

在客戶端目錄/usr/local/sbin下編寫一個名爲estab.sh的腳本,內容以下:

#!/bin/bash
##獲取80端口併發鏈接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

授授予755權限

chmod 755 /usr/local/sbin/estab.sh

再編輯zabbix客戶端的配置文件:vim /etc/zabbix/zabbix_agentd.conf,搜索UnsafeUserParameters,去掉前面的#號,並把0改成1,再搜索UserParameter,去掉前面的#號,並在後面加上=my.estab.count[*],/usr/local/sbin/estab.sh,保存後退出並重啓客戶端的zabbix服務:

systemctl restart zabbix-agent

再到服務端執行如下命令進行驗證:

[root@jin-120 ~]# zabbix_get -s 192.168.6.123 -p 10050 -k 'my.estab.count'
0
其中,參數-s表示源地址,-p表示端口,-k表示鍵,結果爲0,表示沒有任何鏈接。

進入zabbix服務器的web頁面,給主機建立監控項,名字爲「併發鏈接數」,鍵值爲「my.estab.count」,其餘保持默認。

再給主機建立圖形,名字爲「併發鏈接數」,監控項添加併發鏈接數,,而後添加。

再選擇觸發器,建立觸發器,表達式爲「{jin-123:my.estab.count.last()}>100」,其餘默認,而後保存。


(3)檢測Mysql隊列,超過300報警

在客戶端中進入目錄/usr/local/sbin,編寫名稱爲process_count.sh的腳本,內容以下:

[root@jin-123 ~]# cd /usr/local/sbin
[root@jin-123 sbin]# vim process_count.sh
#!/bin/bash
export MYSQL_PWD=123456
process_count=`mysql -uroot -e "SHOW FULL PROCESSLIST" |wc -l`
echo $process_count

保存並賦予x權限後,修改客戶端的配置文件zabbix_agentd.conf,搜索UserParameter,並將其路徑更改成:process.count[*],/usr/local/sbin/process_count.sh,而後重啓zabbix客戶端:

systemctl restart zabbix-agent

在瀏覽器進入zabbix網頁,選擇「配置」-->「主機」-->「監控項」-->「建立監控項」

名稱寫「檢測Mysql隊列」,鍵值填寫「process.count[*]」,其餘默認,而後點「添加」。

再選擇「配置」-->「主機」-->「觸發器」-->「建立觸發器」

名稱爲「jin-123: 檢測Mysql隊列」,嚴重性選擇「警告」,表達式爲「{jin-123:process.count[*].last()}>300」,而後點「添加」便可。


(4)監控mysql的慢查詢日誌,每分鐘超過60條日誌須要告警。

客戶端中進入目錄/usr/local/sbin,編寫名稱爲slow_query_count.sh的腳本,內容以下:

#!/bin/bash
slow_log=/data/mysql/dbm-slow.log
grep 'timestamp' $slow_log | awk -F '=' '{print $2}' |awk -F ';' '{print $1}'|sort -r > /tmp/timestamp.log
now=`sed -n '1'p /tmp/timestamp.log`
alert_num=60
one_min_ago=$[$now-60]
num=0
##### 判斷兩個時間戳以前的差值
slow_query_sum() {
    if [ $1 -ge $2 ]
    then
        num=$[$num+1]
    else
    break
    fi
}
##### 獲取在一分鐘內的慢查詢數

for n in `cat /tmp/timestamp.log`
do
    slow_query_sum $n $one_min_ago
done
##### 刪除臨時文件
rm -f /tmp/timestamp.log
# There are $num slow query in a minute.
echo $num

保存後賦予x權限,而後更改配置文件zabbix-agentd.conf,搜索UserParameter,將其路徑改成:slow.query.count[*],/usr/local/sbin/slow_query_count.sh,再重啓zabbix-agent服務。

systemctl restart zabbix-agent

在瀏覽器進入zabbix網頁,選擇「配置」-->「主機」-->「監控項」-->「建立監控項」

名稱寫「Mysql的慢查詢日誌」,鍵值填寫「slow.query.count[*]」,其餘默認,而後點「添加」。

再選擇「配置」-->「主機」-->「觸發器」-->「建立觸發器」

名稱爲「jin-123: Mysql的慢查詢日誌」,嚴重性選擇「警告」,表達式爲「{jin-123:slow.query.count[*].last()}>60」,而後點「添加」便可。


(5)利用jmx,在zabbix上監控tomcat

以前的zabbix安裝方式是yum安裝的,咱們再用源碼包安裝,進入目錄/usr/local/src,下載zabbix安裝包,解壓並編譯安裝:

[root@jin-120 src]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.12/zabbix-3.4.12.tar.gz
[root@jin-120 src]# tar zxf zabbix-3.4.12.tar.gz 
[root@jin-120 src]# cd zabbix-3.4.12
[root@jin-120 zabbix-3.4.12]# ./configure --prefix=/usr/local/zabbix-3.4.2 --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl --enable-java
[root@jin-120 zabbix-3.4.12]# make
[root@jin-120 zabbix-3.4.12]# make install

安裝完成後,編輯文件/usr/local/zabbix-3.4.2/sbin/zabbix_java/settings.sh,更改如下字段的值

LISTEN_IP="0.0.0.0"            
LISTEN_PORT=10052           
PID_FILE="/tmp/zabbix_java.pid"    
START_POLLERS=5
TIMEOUT=3

編輯zabbix服務端的配置文件/usr/local/zabbix-3.42/etc/zabbix_server.conf,內容以下:

LogFile=/tmp/zabbix_server.log    //指明zabbix_server的日誌文件地址
DBHost=localhost                //鏈接的數據庫地址
DBName=zabbix                //鏈接的數據庫名稱
DBUser=zabbix                //鏈接數據庫的用戶名
DBPassword=zabbix            //鏈接數據庫密碼
JavaGateway=192.168.6.120        //java網關地址,即server端ip地址
JavaGatewayPort=10052            //java網關監聽端口
Timeout=20                    //超時時間
FpingLocation=/usr/sbin/fping    //fping命令絕對地址
LogSlowQueries=3000
AllowRoot=1                    //容許root啓動
User=root                    //zabbix服務的啓動用戶
StartPollers=50
StartPingers=100
StartJavaPollers=5
AlertScriptsPath=/usr/local/zabbix3.4.2/share/zabbix/alertscripts    //zabbix額外的腳本地址

拷貝源碼包的啓動腳本到/etc/init.d

[root@jin-120 zabbix-3.4.12]# cd /usr/local/src/zabbix-3.4.12/misc/init.d/fedora/core
[root@jin-120 core]# ls
zabbix_agentd  zabbix_server
[root@jin-120 core]# cp zabbix_* /etc/init.d/
[root@jin-120 core]# ln -s /usr/local/zabbix-3.4.2/etc/ /etc/zabbix

修改啓動腳本:

[root@jin-120 core]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix-3.4.2/#g" /etc/init.d/zabbix_server
[root@jin-120 core]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix-3.4.2/#g" /etc/init.d/zabbix_agentd

重啓zabbix server服務,以及啓動zabbix java支持服務

[root@jin-120 core]# /etc/init.d/zabbix_server restart
Reloading systemd:                                         [  肯定  ]
Restarting zabbix_server (via systemctl):                  [  肯定  ]
[root@jin-120 core]# cd /usr/local/zabbix-3.4.2/sbin/zabbix_java && sh startup.sh

修改tomcat的配置文件/vim /usr/local/tomcat/bin/catalina.sh,在第2行添加如下內容:

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=192.168.6.123"

重啓tomcat應用服務器,同時查看端口12345是否處於監聽狀態。

[root@jin-120 bin]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@jin-120 bin]# netstat -lntp |grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      27241/java

下載對應的java jmx監控的相關jar包並複製到tomcat對應的目錄下。

[root@jin-120 tomcat]# cd /usr/local/src
[root@jin-120 src]# wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/extras/catalina-jmx-remote.jar
[root@jin-120 src]# cp catalina-jmx-remote.jar /usr/local/tomcat/lib/

而後在zabbix網頁中添加對應的模板便可。

相關文章
相關標籤/搜索