您好,登錄后才能下訂單哦!
博主QQ:819594300
博客地址:http://zpf666.blog.51cto.com/
有什么疑問的朋友可以聯系博主,博主會幫你們解答,謝謝支持!
一、 zabbix簡介
zabbix是完全開源的工具,整合了cacti和nagios等特性
附:SNMP(udp 161 udp 162)
眾多網絡工具都支持此協議,比如常見路由交換,常見OS
其既可以做管理端也可以做被管理端
snmp協議大致有3個版本分別是v1 v2 v3
無論是v1 和 v2 的安全性是比較差的,因為傳輸是明文的, V3的認證密碼用MD5/SHA摘要算法加密。
很多工具支持網絡管理的功能,而對于非網絡設備(操作系統),可以完全拋開snmp這種不安全的架構來實現監控的。所以很多工具都是控制端和agent架構,他們有專屬的agent
Zabbix的主要功能:
①具備常見的商業監控軟件所具備的功能(主機的性能監控、網絡設備性能監控、數據庫、FTP 等通用協議監控、多種告警方式、詳細的報表圖表繪制)。
②支持自動發現網絡設備和服務器(可以通過配置自動發現服務器規則來實現)。
③支持分布式,能集中展示、管理分布式的監控點,擴展性強。
④server 提供通用接口(api 功能),可以自己開發完善各類監控(根據相關接口編寫程序實現),編寫插件容易,可以自定義監控項,報警級別的設置。
⑤數據收集,支持 snmp(包括 trapping and polling ),IPMI,JMX,SSH,TELNET。
⑥自定義的檢測;自定義收集數據的頻率;
⑦服務器/代理和客戶端模式。
⑧靈活的觸發器(可以定義非常靈活的問題閾值,稱為觸發器)。
⑨高可定制的報警,發送通知,可定制的報警升級,收件人,媒體類型。
⑩CPU負荷、內存使用、磁盤使用、網絡狀況、端口監視、日志監視等等。
硬件監控:Zabbix IPMI Interface
系統監控:Zabbix Agent Interface
Java監控:ZabbixJMX Interface
網絡設備監控:Zabbix SNMP Interface
應用服務監控:Zabbix Agent UserParameter
MySQL數據庫監控:percona-monitoring-plulgins
URL監控:ZabbixWeb 監控
zabbix重要組件說明:
①zabbix server:負責接收agent發送的報告信息的核心組件,所有配置、統計數據及操作數據都由它組織進行;
②database storage:專用于存儲所有配置信息,以及由zabbix收集的數據;
③web interface:zabbix的GUI接口;
④proxy:可選組件,常用于監控節點很多的分布式環境中,代理server收集部分數據轉發到server,可以減輕server的壓力;
⑤agent:部署在被監控的主機上,負責收集主機本地數據如cpu、內存、數據庫等數據發往server端或proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的參數需要在這里配置,后面會詳細說明。
一個監控系統運行的大概的流程是這樣的:
agentd需要安裝到被監控的主機上,它負責定期收集各項數據,并發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這里agentd收集數據分為主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,并主動將監控項內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。
zabbix常用的監控架構平臺
①server-agentd模式:
這個是最簡單的架構了,常用于監控主機比較少的情況下。
②server-proxy-agentd模式:
這個常用于比較多的機器,使用proxy進行分布式監控,有效的減輕server端的壓力。
zabbix的系統架構:
說明:abbix是一個基于Web界面的提供分布式系統監視以及網絡監視功能的企業級開源解決方案。借助Zabbix,可以很輕松地減輕運維人員們繁重的服務器管理任務,實現業務系統的持續運行。
下面會逐步介紹Zabbix分布式監控系統的部署及使用。
配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器。
二、Zabbix部署前的LNMP環境的搭建過程:
虛擬機環境:
監控端和被監控端ip:
①zabbix監控服務器(即:zabbix_server):
192.168.1.8
說明:zabbix的服務端(若要監控本機,則需要在本機的配置zabbix agent)
②zabbix被監控主機(即:zabbix_agent):
192.168.1.9
說明:zabbix的客戶端(被監控端,必須配置zabbix agent)
系統環境:
centos7.2x86_64
1)安裝編譯工具及庫文件
圖中內容如下:
yum-y install make apr* autoconf automake curl-devel gcc gcc-c++ openssl openssl-devel gd kernel keyutilspatch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-develkeyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-develzlib-devel libXpm* freetype libjpeg* libpng* libtool* libxml2 libxml2-devel patch libcurl-devel bzip2-develfreetype-devel
2)安裝mysql5.7.13
①在這里安裝mysql的步驟就省略了,不會安裝mysql5.7.13的朋友可以瀏覽我的博文,地址如下:
http://zpf666.blog.51cto.com/11248677/1908988
②mysql安裝完畢后,看一下mysql的服務:
③防火墻開啟3306端口例外
④mysql數據庫密碼
我的數據庫密碼是:123456
3)安裝nginx1.10.2
①解壓zlib和pcre
說明:不需要編譯,只需要解壓就行。
②創建組賬戶和用戶賬戶
③下載安裝nginx
下載nginx的源碼包:http://nginx.org/download
圖中內容如下:
./configure--prefix=/usr/local/nginx1.10 --with-http_dav_module--with-http_stub_status_module --with-http_addition_module--with-http_sub_module --with-http_flv_module --with-http_mp4_module--with-pcre=/root/pcre-8.39 --with-zlib=/root/zlib-1.2.8 --with-http_ssl_module--with-http_gzip_static_module --user=www --group=www && make&& make install
④做軟鏈接
⑤nginx語法檢測、啟動nginx服務并查看服務
⑥防火墻開啟80端口例外
⑦在一臺客戶端訪問測試
4)安裝php5.6.27
①安裝libmcrypt
②做軟鏈接
③安裝php
圖中內容如下:
./configure--prefix=/usr/local/php5.6 --with-config-file-path=/etc --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config--with-mysql-sock=/usr/local/mysql/mysql.sock --with-gd --with-iconv--with-libxml-dir=/usr --with-mhash --with-mcrypt--with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib--with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath--enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex--enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf--with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip--enable-soap --without-pear --with-gettext --enable-session --with-mcrypt--with-curl && make && make install
④拷貝樣例配置文件并修改
//設置時區
//禁止顯示php版本的信息
//支持php短標簽
//上傳文件大小
//php腳本最大執行時間
//以秒為單位對通過POST、GET以及PUT方式接收數據時間進行限制
⑤創建php-fpm服務啟動腳本
⑥提供php-fpm配置文件并編輯
⑦啟動php-fpm服務并查看
5)配置nginx支持php
user www www;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent"$http_referer" '
# '"$http_user_agent""$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.phpindex.html index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#error_page 404 /404.html;
# redirectserver error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /status {
stub_status on;
}
}
}
6)測試LNMP
進入nginx默認的網頁根目錄,創建.php的測試頁:
在客戶端上訪問:
至此,LNMP部署完畢。
三、監控系統Zabbix-3.2.1的安裝
1)zabbix-server端的操作
說明:zabbix服務器端要提前安裝好LNMP環境(mysql,nginx,php5的安裝目錄均是/usr/local)
①創建zabbix運行的用戶
②安裝libcurl和net-snmp等依賴包
圖中內容如下:
yum-y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdkjava-1.8.0-openjdk-devel OpenIPMI-devel libssh3-devel
注意:OpenIPMI-devel 和libssh3-devel軟件包必須使用centos在線yum軟件源安裝。
③安裝Fping
④安裝zabbix Server
圖中內容如下:
./configure--prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java--with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl--with-openipmi && make && make install
注意:
⑴編譯時最好帶上--enable-java這個參數,方便后續監控tomcat程序所用。
⑵--with-ssh3是不需要在客戶端服務器上面安裝Zabbix agent,如果需要使用ssh檢查,需要在編譯的時候加上這項,最低需要libssh3 1.0.0版本,需要安裝ssh開發包
⑶--with-openipmi用戶可以利用IPMI 監視服務器的物理特征,如溫度、電壓、電扇工作狀態、電源供應等。
⑷如果添加了--enable-proxy, 那么會生成get和sender兩條命令. 如下, 用于接收agent發生過來的信息, 同時發送給server。
⑤添加系統軟連接
2)zabbix server配置與啟動
①創建zabbix數據庫和mysql用戶
②導入zabbix初始數據
切換到zabbix的解壓目錄下:
進行zabbix初始數據導入:
③編輯/usr/local/zabbix/etc/zabbix_server.conf
④啟動zabbix server
從上圖可以看到啟動zabbix server服務失敗了。
我們先分析下失敗原因:
從圖上可以看出,說是沒發現libmysqlclient.so.20這個庫文件。那我們用find命令搜索一下看一看,到底有沒有這個文件:
libmysqlclient.so.20這個庫文件確實存在。現在我們再去看看ld.so.conf文件,看看里面有沒有libmysqlclient.so.20的路徑。
可以看見里面沒有libmysqlclient.so.20的路徑,我們把libmysqlclient.so.20路徑添加到ld.so.conf里面即可。
注明:ld.so.conf文件是系統搜索動態連接庫的目錄設置,在這個文件里面寫下的地址系統在運行程序時會自動去這些個目錄里面找需要的動態庫文件
解決辦法如下:
⑴進入ld.so.conf文件
⑵在末尾新增兩行內容
⑶讓其修改生效
再次嘗試啟動:
從上圖我們可以看到啟動后沒有報錯,啟動成功了,確認一下服務是否真正開啟,我們可以看到zabbix_server默認監聽的端口號是10051。
⑤添加開機啟動腳本
⑥修改zabbix開機啟動腳本中的zabbix安裝目錄
編輯服務端配置文件:
//zabbix安裝目錄
//pid文件路徑
編輯客戶端配置文件:
⑥重載systemctl,并重新啟動zabbix_server服務
⑦在防火墻上開啟10051端口例外
3)配置zabbix web頁面
①在安裝目錄將frontends拷貝到指定的web root:
注1:/usr/local/nginx/html為Nginx默認站點目錄
注2:www為Nginx運行賬戶
注3:PHP需要至少開啟擴展:
gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
②查看是否包括了上面所提到的所有擴展模塊
從上圖里看到的擴展和注3進行對比,少一個都不行,少一個你都沒有繼續做下去的必要了。
我這里可以對比出,全部的擴展模塊都存在了。
③在頁面上安裝zabbix_server
說明:訪問Web界面http://192.168.1.8/zabbix,進行相關web配置,配置完成后使用默認用戶admin(密碼:zabbix)登陸即可。
⑴進入ZABBIX WEB安裝畫面
⑵進入ZABBIX檢測畫面
⑶對數據庫進行設置,這里如果數據庫在本地的話端口可以使用0
⑷點擊Next step,下一步步進行zabbix server 細節的設置 這一步可以默認
⑸點擊安裝,安裝完成后,如果沒有錯誤就會進入完成畫面
⑹使用賬號:admin,用默認密碼:zabbix 登錄
⑺登錄后畫面如下
至此 ZABBIX的基礎安裝完成。
④此時你看到的是英文頁面,我們現在讓其顯示簡體中文頁面
⑴由于在安裝數據庫時已經將zabbix庫設置了utf-8字符
首先確定zabbix開啟了中文支持功能:
說明:登錄到zabbix服務器的數據目錄下(前面部署的zabbix數據目錄是/usr/local/nginx1.10/html/zabbix/),打開locales.inc.php文件。
我們可以從第55行看到,zabbix是支持簡體中文的。
⑵登陸zabbix后,點擊右上角的“用戶”圖標,將語言設置為“中文”
⑤解決zabbix繪圖中出現中文亂碼問題
⑴從windows下控制面板->字體->選擇一種中文字庫。
例如“楷體”
⑵把它拷貝到zabbix的web端的fonts目錄下
⑶把原有的字體文件DejaVuSans.ttf移動到別處
注意:如果你的simkai文件的后綴TTF是大寫字母,一定要改成小寫字母ttf。
⑷接著修改代碼include/defines.inc.php文件中的字體配置,將里面關于字體設置從DejaVuSans替換成simkai
這樣,修改后,zabbix監控圖形中的中文字就不會出現亂碼了。
四、zabbix客戶端的安裝
說明:既然要監控,我們就要添加要監控的主機,在添加主機之前我們首先要在被檢測主機上面安裝agent,安裝agent比較簡單,我們也是按照安裝server的流程,下載軟件包,在編譯的時候,我們只選擇agent即可。
192.168.1.9作為zabbix的被監控端,它提供web和mysql應用服務。
1)安裝zabbix,配置zabbix agent
①安裝zabbix agent
②配置開機自動啟動
③修改zabbix開機啟動腳本中的zabbix安裝目錄
編輯客戶端配置文件:
④重載systemctl
⑤編輯zabbix_agentd.conf文件
注明:其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被動后者是主動。也就是說Server這個配置是用來允許192.168.1.8這個ip來我這取數據。而serverActive的192.168.1.8的意思是,客戶端主動提交數據給他。
Hostname=XXX,這個定義的名字必須和web頁面里面host的名字一樣。
⑥啟動zabbix_agentd
⑦防火墻開啟10050端口例外
到此,zabbix3.2.1監控系統的基本環境安裝完成。
2)實現zabbix添加監測項,添加對Linux主機的監控
說明:先在“配置”-“主機”里添加主機監控,監控os資源:內存,cpu,io,負載,帶寬等.
①登錄zabbix,先在“配置”-“主機”里單擊”創建主機”:
②在“主機”標簽,填寫相關信息
其它選項默認即可。
③在“模板”標簽,填寫相關信息
至此,Zabbix監控Linux主機設置完成,如下圖所示:
④過一段時間后,可以來觀察監控圖效果出來了沒有
3)添加對Linux主機的mysql的監控
說明:zabbix3.0 server已自帶mysql的模板了,只需配置好agent客戶端,然后在web端給主機增加模板就行了。
①首先在客戶端的mysql里添加權限,即本機使用zabbix賬號連接本地的mysql(在zabbix_agent客戶端上操作)
②在zabbix_agent服務目錄下創建.my.cnf 連接文件(注意有個“.”)
說明:zabbix安裝目錄是/usr/local/zabbix
注意:
⑴如果在數據庫grant授權時,針對的是localhost,這個.my.cnf里面就不用加host參數了【就如上面的配置】
⑵如果grant授權時針對的是本機的ip(如192.168.1.9),那么在.my.cnf文件里就要加上host參數進行指定了
即在.my.cnf文件就要加上:
host=192.168.1.9
socket=/usr/local/mysql/mysql.sock
user=zabbix
password=123456
③配置mysql的key文件
說明:這個可以從zabbix3.2安裝時的解壓包里拷貝過來
從zabbix_server服務端安裝時解壓目錄/root/zabbix-3.2.1/conf/zabbix_agentd/userparameter_mysql.conf 拷貝到zabbix_agent客戶端上的/usr/local/zabbix/etc/zabbix_agentd.conf.d/ 目錄下。
④查看 userparameter_mysql.conf 文件,看到類似HOME=/var/lib/zabbix 的路徑設置,把路徑全都替換為/usr/local/zabbix/etc/,也就是上面的.my.cnf文件所在的目錄路徑。
另外,注意userparameter_mysql.conf 文件里的mysql命令路徑(提前做好mysql的系統環境變量,以防mysql命令不被系統識別)。
⑤重啟zabbix_agent服務
注明:如果stop關不了服務,可以使用“pkill -9 zabbix_agent”命令強制殺死進程。
另外還可以使用“/usr/local/zabbix/sbin/zabbix_agentd”開啟服務。
⑥接著在zabbix_server服務端進行命令行測試
解決辦法如下:
⑴在userparameter_mysql.conf中關于mysql命令前面添加絕對路徑(在zabbix_agent上操作)
⑵修改三個地方
⑶重啟服務
再次回到zabbix_server服務端進行命令行測試:
注明1:如果出現類似這一串key的數字,就說明配置ok,服務端能監控到客戶端的mysql數據了!
成功了之后在監控界面增加主機對應的MySQL模板就ok了。
注明2:
zabbix_get命令介紹
參數說明:
-s--host:指定客戶端主機名或者IP
-p--port:客戶端端口,默認10050
-I--source-address:指定源IP,寫上zabbix server的ip地址即可,一般留空,服務器如果有多ip的時候,你指定一個。
-k--key:你想獲取的key
zabbix_get獲取數據:
⑴獲取負載
⑵獲取主機名
⑦登錄zabbix監控界面,在“配置”-“模板”里可以看到自帶的mysql監控模板
⑧在相應主機監控配置里添加mysql的監控模版(zabbix自帶的)即可:
⑨下面是mysql監控項的效果圖
⑴監控mysql的帶寬:在zabbix前端可以實時查看mysql發送接收的字節數。其中bytes received表示從所有客戶端接收到的字節數,bytes sent表示發送給所有客戶端的字節數。
⑵監控mysql的操作狀態:在zabbix前端可以實時查看各種SQL語句每秒鐘的操作次數。
五、zabbix3.2.1郵件報警設置
說明:zabbix監控服務端、客戶端都已經部署完成,被監控主機已經添加,zabiix監控運行正常。
在zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。
具體操作如下(操作在Zabbix監控服務端進行):
1)安裝sendmail兩個依賴包
2)解壓sendmail,然后將sendemail復制到/usr/local/bin/目錄下,并加上可執行權限,然后修改用戶和群組
3)執行# /usr/local/bin/sendEmail -h可查看sendEmail的幫助
4)下面開始進行發郵件測試
①先去申請一個郵箱,我這里以網易的163郵箱為例
②登錄郵箱,申請授權碼
注明:這里我將我的授權碼設置成了123abc
③正式開始測試
從上圖我們看出,郵件沒發成功,有報錯。
原因是:sendemail軟件和perl5里面的ssl版本不兼容導致的,通過修改sendemail里面的內容可以解決這個問題。
解決辦法如下:
1906行改為如下內容:
再次進行重試測試:
我們去郵箱查看:
命令主要選項說明:
/usr/local/bin/sendEmail #命令主程序
-f from@126.com #發件人郵箱
-tto@126.com #收件人郵箱
-ssmtp.126.com #發件人郵箱的smtp服務器
-u"我是郵件主題" #郵件的標題
-omessage-content-type=html #郵件內容的格式,html表示它是html格式
-omessage-charset=utf8 #郵件內容編碼
-xufrom@126.com #發件人郵箱的用戶名
-xp123abc #發件人郵箱密碼或授權碼
-m"我是郵件內容" #郵件的具體內容
5)測試成功了,我們還可以創建報警腳本,自動給我們發郵件
①進入/usr/local/zabbix/share/zabbix/alertscripts/目錄
②創建腳本
圖中內容如下:
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail-o tls=auto -f dabiaoge999@126.com -t "$to" -s smtp.126.com -u"$subject" -o message-content-type=html -o message-charset=utf8 -xu dabiaoge999@126.com -xp 123abc -m "$body"
③給腳本可執行權限
④執行腳本測試發郵件
⑤再次去郵箱看一下
6)zabbix web端配置
①上面的郵件腳本配置好后,就要在web端添加報警媒介,在web頁面的管理,報警媒介類型頁面,點擊右邊的創建媒體類型
②進入創建頁面,然后輸入名稱“郵件報警腳本”,類型選擇腳本,名稱選擇mail.sh,點擊添加按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE},分別對于mail.sh中的to、subject和body。添加完成后點下面的添加按鈕,我們的報警媒介就創建完成了。
③創建好報警媒介后,就需要將報警媒介關聯到我們的用戶。點擊管理,用戶,然后選擇我們的用戶admin也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,然后點添加,選擇我們上一步創建的郵件報警腳本,輸入收件人,選擇報警時間和類型,然后點擊添加,就將創建好的報警媒介關聯到我們的用戶上面了。
④現在需要做的是,創建一個觸發動作,即系統出現故障時,觸發這個動作,然后給我們的郵箱發送報警郵件。點擊配置,選擇動作,然后點擊右邊的創建動作。
在動作這一頁名稱中寫入我們定義的動作名以及觸發條件。
說明:步驟是1-3,也即是從1開始到3結束。一旦故障發生,就是執行Email.sh腳本發生報警郵件給zabbix用戶。
假如故障持續了1個小時,它也只發送3次,第1-3次(即前3次)郵箱發送給zabbix用戶,時間間隔為0秒。
如果改成1-0,0是表示不限制.無限發送
接著設置“恢復操作”:
⑤報警測試
將192.168.1.9服務器的zabbix_agent進程關閉,然后等待郵件。
最后,點擊”報表“->”動作日志“,可以看到觸發動作的次數(右邊還看查看到郵件發送狀態“已發送”)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。