相關服務軟件版本環境:
https://monitoringartist.github.io/zabbix-searcher/ zabbix 全局配置
https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters 如何自定義
Linux:centos 6.7
nginx:1.10.3
MySQL:5.6.30
PHP:5.6.35
apache2.4yum源安裝
wget http://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
yum install httpd24-httpd -y(httpd24-httpd-devel httpd24-mod_ssl)
一:用yum源安裝:
#cd /etc/yum.repos.d
cat << EOF >> /etc/yum.repos.d/nginx.repo
> [nginx]
> name=nginx repo
> baseurl=http://nginx.org/packages/centos/6/$basearch/
> gpgcheck=0
> enabled=1
> EOF
第三方yum源:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
安裝程序:【Nginx+php】
yum install nginx openssh-clients -y
yum --enablerepo=remi,remi-php55 install php php-common
yum --enablerepo=remi,remi-php55 install php-cli php-gd php-redis php-pear php-mysqlnd php-pdo php-pgsql php-pecl-mongo php-sqlite php-pecl-memcached php-pecl-memcache php-mbstrin php-xml php-soap php-mcrypt php-fpm
------------------->國外比較好用
#rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
【php5.6.30版本】
yum install --enablerepo=remi --enablerepo=remi-php56 php-fpm
yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-bcmath php-gd --skip-broken
-------------------->國內比較好用
Php.ini配置
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = PRC
always_populate_raw_post_data = -1
mysql5.6 社區版yum源
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/5/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
比如要安裝5.7版本的mysql,要確定5.6的enabled=0,5.7的enabled=1,一次保證只啟用一個子倉庫
[mysql57-community-dmr]
name=MySQL 5.7 Community Server Development Milestone Release
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
二:測試php環境:(nginx+php整合)
在網站存放路徑下寫index.php文件,文件內容
<?php
phpinfo();
?>
然后進行訪問:http://192.168.0.160
三:安裝mysql5.6.35版本(社區版)
1. 查看是否已經默認安裝mysql軟件:
rpm -qa|grep mysql
如果存在的話,繼續刪除即可
yum remove mysql * -y
2.安裝mysql5.6
#sudo yum install mysql-community-server
mysql-community-libs-compat-5.6.35-2.el5.x86_64
mysql-community-devel-5.6.35-2.el5.x86_64
mysql-community-libs-5.6.35-2.el5.x86_64
mysql-5.6.35-2.el5.x86_64
mysql-community-server-5.6.35-2.el5.x86_64
mysql-community-client-5.6.35-2.el5.x86_64
mysql-community-common-5.6.35-2.el5.x86_64
#sudo service mysqld start
#mysql –uroot –p
update mysql.user set password = password('xxxxxxxx') where user='root' and Host = 'localhost'; (為root用戶添加密碼)
或者mysqladmin -uroot password "zabbix"
mysql> create database zabbix default charset utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
5 rows in set (0.00 sec)
四:安裝zabbix:
1.下載:wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.0/zabbix-3.0.0.tar.gz
-rw-r--r-- 1 root root 15407273 5月 21 2016 zabbix-3.0.0.tar.gz
[root@zabbix ~]# tar zxf zabbix-3.0.0.tar.gz && cd zabbix-3.0.0
2.編譯zabbix
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-proxy --with-mysql --with-net-snmp --with-libcurl --with-libxml2
#make && make install
3.編譯過程中如果出錯:
故障:checking for mysql_config... no
configure: error: MySQL library not found
解決: yum install mysql-community-devel -y
4.創建用戶:
[root@zabbix zabbix-3.0.0]#groupadd zabbix
[root@zabbix zabbix-3.0.0]#useradd zabbix -s /sbin/nologin -M -g
5.導入文件:
[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix <
database/mysql/schema.sql
[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix < database/mysql/images.sql
[root@zabbix zabbix-3.0.0]# mysql -uroot -pzabbix zabbix < database/mysql/data.sql
五:管理網站配置:
[root@zabbix zabbix-3.0.0]#mkdir /home/www/zabbix -p
[root@zabbix zabbix-3.0.0]#cp -rp frontends/php/* /home/www/zabbix
1.nginx虛擬主機配置:
2.將/etc/nginx/conf.d下的default.conf文件備份,原文件刪掉,在重新寫一個zabbix.conf文件:文件配置內容如下
[root@zabbix conf.d]#pwd
/etc/nginx/conf.d
[root@zabbix conf.d]#vim zabbix.conf
server{
listen 80;
server_name _;
index index.php;
root /home/www/zabbix;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
}
location ~* \.php$ {
root /home/www/zabbix;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/zabbix$fastcgi_script_name;
include fastcgi_params;
}
}
3.修改zabbix配置文件:
進入/usr/local/zabbix/etc
[root@zabbix etc]#ll
-rw-r--r-- 1 root root 10241 3月 17 03:20 zabbix_agentd.conf
drwxr-xr-x 2 root root 4096 3月 16 23:52 zabbix_agentd.conf.d
-rw-r--r-- 1 root root 15760 3月 16 23:52 zabbix_proxy.conf
drwxr-xr-x 2 root root 4096 3月 16 23:52 zabbix_proxy.conf.d
-rw-r--r-- 1 root root 14680 3月 17 00:52 zabbix_server.conf
drwxr-xr-x 2 root root 4096 3月 16 23:52 zabbix_server.conf.d
修改zabbix_server.conf的配置文件,配置如下
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
再修改zabbix_agentd.conf
Server=192.168.0.160
ServerActive=192.168.0.160
Hostname=Zabbix server (根據自己修改)
4.啟動所有服務:
Service nginx restart
Service php-fpm restart
Service mysql restart
/usr/local/zabbix/sbin/zabbix_server
/usr/local/zabbix/sbin/zabbix_agentd
六:訪問主頁:http://192.168.0.160
注:如果點擊下一步沒有反應:就執行setfacl -R -m u:nginx:rwx /var/lib/php
如果出現以下情況,請安裝php的依賴包
PHP bcmath extension missing (PHP configuration parameter --enable-bcmath).
PHP option "always_populate_raw_post_data" must be set to "-1"
PHP gd extension missing (PHP configuration parameter --with-gd).
PHP gd PNG image support missing.
PHP gd JPEG image support missing.
PHP gd FreeType support missing
需要下載文件,並上傳到指定的服務器目錄中.
修改界面為中文界面
默認登錄界面為英文:
修改以下配置,並重啟服務即可;
vim /home/www/zabbix/include/locales.inc.php
#'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false],
'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true],
接下來的配置就根據需求開發了
在Zabbix服務端設置郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動發送報警郵件到指定郵箱。
具體操作:(作為參考)
以下操作在Zabbix監控服務端進行
下載sendemail軟件
然后安裝那兩個依賴包,命令是:
yum install perl-Net-SSLeayperl-IO-Socket-SSL -y
解壓軟件,然后將復制sendemail到/usr/local/bin/目錄下,並加上可執行權限,然后修改用戶和群組。
[root@mysqla ~]# tar zxfsendEmail-v1.56.tar.gz
[root@mysqla ~]# cdsendEmail-v1.56/
[root@mysqlasendEmail-v1.56]# cp sendEmail /usr/local/bin/sendEmail
[root@mysqlasendEmail-v1.56]# chown zabbix:zabbix /usr/local/bin/sendEmail
[root@mysqlasendEmail-v1.56]# ll /usr/local/bin/sendEmail
-rwxr-xr-x. 1 zabbix zabbix80213 Nov 21 21:26 /usr/local/bin/sendEmail
執行#/usr/local/bin/sendEmail -h查看sendEmail的幫助
#/usr/local/bin/sendEmail -fbpcyh1@126.com -t bpcyh1@126.com -s smtp.126.com -u "hello" -omessage-content-type=html -o message-charset=utf8 -xu bpcyh1@126.com -xp 123abc-m "abcfdd"
命令主要選項說明:
/usr/local/bin/sendEmail #命令主程序
-f from@126.com #發件人郵箱
-t to@126.com #收件人郵箱
-s smtp.126.com #發件人郵箱的smtp服務器
-u "我是郵件主題" #郵件的標題
-o message-content-type=html #郵件內容的格式,html表示它是html格式
-o message-charset=utf8 #郵件內容編碼
-xu from@126.com #發件人郵箱的用戶名
-xp WEE78@12l$ #發件人郵箱密碼
-m "我是郵件內容" #郵件的具體內容
進入/usr/local/zabbix/share/zabbix/alertscripts/目錄
然后在這個目錄下創建報警腳本sendmail.sh
[root@mysqla alertscripts]#vi mail.sh
下面是腳本內容(塗顏色部分是你的郵箱和密碼,-f和-xu參數后面跟郵箱,-xp后面跟授權碼)
#!/bin/bash
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail-o tls=auto -f bpcyh1@126.com -t "$to" -s smtp.126.com -u"$subject" -o message-content-type=html -o message-charset=utf8 -xubpcyh1@126.com -xp 123abc -m "$body"
[root@mysqla alertscripts]#chmod +x mail.sh
執行腳本測試發郵件
[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123
*******************************************************************
Using the defaultof SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode toSSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
If you reallydon't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in yourapplication.
*******************************************************************
at /usr/local/bin/sendEmail line 1906.
invalid SSL_version specified at/usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415
注:進行發送郵件測試時,出現了第一個報錯
原因是sendemail軟件和perl5里面的ssl版本不兼容導致的,通過修改sendemail里面的內容可以解決這個問題。
解決方法:
在sendemail中1906行的內容,從
if (!IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
修改為
if (! IO::Socket::SSL->start_SSL($SERVER)){
即不指定SSL的版本,讓程序來自己選擇
不管你使用的是163/126郵箱還是qq郵箱,你都必須開通pop3服務,而且126/qq郵箱還要求使用第三方客戶端發送郵件是必須使用授權碼登錄,使用賬號密碼驗證時,會出現下面圖片中的錯誤。
sendEmail[5102]: ERROR =>ERROR => SMTP-AUTH: Authentication to smtp.126.com:25 failed.
至於郵箱的授權碼,自己登錄126郵箱去設置就好。
經過上面兩個問題的處理后就可以正常發送郵件如下所示顯示成功提示
[root@mysqla alertscripts]#./mail.sh bpcyh1@126.com test 123
Nov 21 22:50:47 mysqlasendEmail[5195]: Email was sent successfully!
zabbix web端配置
上面的郵件腳本配置好后,就要在web端添加報警媒介,在web頁面的管理,報警媒介類型頁面,點擊右邊的創建媒體類型
進入創建頁面,然后輸入名稱“郵件報警腳本”,類型選擇腳本,名稱選擇mail.sh,點擊添加按鈕,添加三個腳本參數,分別是{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESAGE},分別對於mail.sh中的to、subject和body。添加完成后點下面的添加按鈕,我們的報警媒介就創建完成了
創建好報警媒介后,就需要將報警媒介關聯到我們的用戶。點擊管理,用戶,然后選擇我們的用戶admin也可新建一個用戶,點擊用戶名就進入到用戶配置界面。點擊報警媒介,然后點添加,選擇我們上一步創建的郵件報警腳本,輸入收件人,選擇報警時間和類型,然后點擊添加,就將創建好的報警媒介關聯到我們的用戶上面了。
現在需要做的是,創建一個觸發動作,即系統出現故障時,觸發這個動作,然后給我們的郵箱發送報警郵件。點擊配置,選擇動作,然后點擊右邊的創建動作。
在動作這一頁名稱中寫入我們定義的動作名以及觸發條件
設置“操作”
步驟是1-3,也即是從1開始到3結束。一旦故障發生,就是執行Email.sh腳本發生報警郵件給zabbix用戶。
假如故障持續了1個小時,它也只發送3次,第1-3次(即前3次)郵箱發送給zabbix用戶,時間間隔為0秒。
如果改成1-0,0是表示不限制.無限發送
設置“恢復操作”
添加好以后就可以看到我們添加的動作名,以及該動作已啟用的狀態
報警測試
將192.16831.250服務器的zabbix_agent進程關閉。
發現可以正常收到故障報警郵件
最后,點擊”報表“->”動作日志“,可以看到觸發動作的次數(右邊還看查看到郵件發送狀態“已發送”)