Zabbix監控的應用
1.1 前言
1.1.1 我們的職責
1、保障企業的數據的安全可靠
2、爲客戶提供7*24小時服務
3、不斷提升用戶的體驗
1.2 我們需要監控什麼
路人甲:大神,我們需要監控什麼?
我:你想監控什麼!
1.3 我們到底要監控什麼
1. 硬盤監控:適用於物理機,遠程管理卡(IDRAC),IPMO(智能平臺管理接口)ipmitool,MegaCli(查看Raid磁盤)
2.系統監控:cpu(lscpu、uptime、top、vmstat1、mpstat1、htop),內存(free -m),硬盤(df -h、iotop),網絡(iftop、netstat、ss)
3.應用服務監控:nfs、mysql、nginx、apache、php、rsync
4.性能監控
5.日誌監控:系統日誌(安全日誌secure message sudo 日誌)、服務日誌(錯誤日誌error,訪問日誌)
6.安全監控
7.業務監控
舉些監控命令的栗子:
top
> 向右移動一位排序
1
lscpu
vmstat 1
htop
vmstat 1
mpstat 1
wget -O /etc/yum.repos.d/epel.repo
1.4 引入zabbinx
所有監控範疇,都可以整合到Zabbix中
硬件監控:Zabbix IPMIInterface
系統監控:Zabbix AgentInterface
Java監控:Zabbix JMX Interface
網絡設備監控:Zabbix SNMPInterface
應用服務監控:ZabbixAgent UserParameter
MySQL數據庫監控:percona-monitoring-plulgins
URL監控:Zabbix Web監控
2.1 Zabbix簡介
官網:http://www.zabbix.com/
zabbix是一個基於web界面的,提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各種網絡參數,保證服務器系統的安全運營,並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題
zabbix主要由2部分構成zabbix server和zabbix agent,可選組件zabbix proxy
zabbix server可以通過SNMP,zabbix agent,fping,端口監視等方法對遠程服務器或網絡狀態完成監視,數據收集功能。
支持Linux及類Unix平臺,Windows平臺只能安裝客戶端。
3.1 系統環境
[root@zb01 /]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@zb01 /]# uname -r
2.6.32-573.el6.x86_64
[root@zb01 /]# uname -m
x86_64
[root@zb01 /]# /etc/init.d/iptables stop
[root@zb01 /]# getenforce
Disabled
4.1安裝LNMP環境
yum -y install pcre-devel openssl-develncurses-devel zlib-devel libxml2-devel libjpeg-devel freetype-devellibpng-devel gd-devel curl-devel libxslt-devel libmcrypt-devel mhashmhash-devel mcrypt
rpm -ivh --aid *.rpm
5.1 編譯安裝Zabbix
5.1.1 安裝依賴
echo "192.168.14.200 mirrors.aliyun.com" >>/etc/hosts
yum -y install fping net-snmp-devel unixODBC-devel openssl-devel OpenIPMI-devel java-devel
5.1.2 添加Zabbix用戶
useradd zabbix -s /sbin/nologin
5.1.3 解壓Zabbix,編譯安裝
mkdir -p /application/tools
cd /application/tools
rz
tar xf zabbix-3.0.3.tar.gz
cd zabbix-3.0.3
./configure --prefix=/application/zabbix-3.0.3 --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl
make install
ln -s /application/zabbix-3.0.3 /application/zabbix
##################假如報這個錯誤:
configure:error: Not found mysqlclient library
這是由於沒有指定mysql的路徑導致的,yum安裝或者編譯安裝就不會有這樣的問題,主要是張導的/初始目錄在/application/tools下,我們的在/home/oldboy/tools下
####################################
./configure --prefix=/application/zabbix-3.0.3 --enable-server --enable-agent --enable-java --enable-ipv6 --with-mysql=/application/mysql-5.5.49/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl
#############################################
5.1.4 mysql 數據庫操作
[root@zb01 /]# mysql -uroot -poldboy123
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 209
Server version: 5.5.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or itsaffiliates. All rights reserved.
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarks of theirrespective
owners.
Type 'help;' or '\h' for help. Type '\c' to clearthe current input statement.
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
mysql> flush privileges;
data.sql #數據,最後導入
p_w_picpaths.sql #圖形,其次導入
schema.sql #表結構,首先導入
/home/oldboy/tools/zabbix-3.0.3/database/mysql
在mysql中操作
use zabbix
source /home/oldboy/tools/zabbix-3.0.3/database/mysql/schema.sql
source /home/oldboy/tools/zabbix-3.0.3/database/mysql/p_w_picpaths.sql
source /home/oldboy/tools/zabbix-3.0.3/database/mysql/data.sql
show tables from zabbix;
#########################################
use zabbix
source /application/tools/zabbix-3.0.3/database/mysql/schema.sql
source/application/tools/zabbix-3.0.3/database/mysql/p_w_picpaths.sql
source/application/tools/zabbix-3.0.3/database/mysql/data.sql
show tables from zabbix;
###################################################
5.1.5 web代碼
mkdir -p /application/nginx/html/zabbix
cp -a /home/oldboy/tools/zabbix-3.0.3/frontends/php/* /application/nginx/html/zabbix/
chown -R nginx /application/nginx/html/zabbix/
5.1.6 配置Zabbix
5.1.6.1 php配置
egrep -n "^post_max_size|^max_execution_time|^max_input_time|^date.timezone" /application/php/lib/php.ini
sed -i 's#max_execution_time = 30#max_execution_time = 300#;s#max_input_time = 60#max_input_time = 300#;s#post_max_size = 8M#post_max_size = 16M#;910a date.timezone = Asia/Shanghai' /application/php/lib/php.ini
/etc/init.d/php-fpm restart
沒有這個腳本就
killall php
/application/php/sbin/php-fpm
5.1.6.2 nginx配置
# 執行命令前注意備份你的Nginx配置文件!!
cat >/application/nginx/conf/nginx.conf<<EOF
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root html;
location / {
root html;
index index.php index.html index.htm;
}
location ~ .*\.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
access_log logs/zabbix.log;
}
}
EOF
/etc/init.d/nginx reload
5.1.6.3 zabbix服務配置
sed -i -e '77a DBHost=127.0.0.1' -e '111a DBPassword=zabbix' /application/zabbix/etc/zabbix_server.conf
# 啓動腳本
cp /home/oldboy/tools/zabbix-3.0.3/misc/init.d/fedora/core/zabbix_{server,agentd} /etc/init.d/
[root@oldboyedu ~]# ll -h /etc/init.d/zabbix_*
-rwxr-xr-x 1 root root 2.2K 5月 20 19:29 /etc/init.d/zabbix_agentd
-rwxr-xr-x 1 root root 2.2K 5月 20 19:29 /etc/init.d/zabbix_server
# 修改啓動腳本
sed -i 's#BASEDIR=/usr/local#BASEDIR=/application/zabbix#' /etc/init.d/zabbix_{server,agentd}
5.1.6.4 啓動腳本
[root@oldboyedu ~]# ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
[root@oldboyedu ~]# /etc/init.d/zabbix_server start
Starting zabbix_server: [確定]
6.1 windows中打開網頁
http://10.0.0.25/zabbix/setup.php
會發現沒有mysql和gettext模塊
cd /home/oldboy/tools/php-5.5.32/ext/gettext
/application/php/bin/phpize
./configure--with-php-config=/application/php/bin/php-config
make && make install
echo " extension = gettext.so">>/application/php/lib/php.ini
/application/php/bin/php -m|grep gettext
/application/php/bin/php -m|grep mysqli
cd /home/oldboy/tools/php-5.5.32/ext/mysqli
/application/php/bin/phpize
./configure--with-php-config=/application/php/bin/php-config
make && make install
echo " extension = mysqli.so">>/application/php/lib/php.ini
killall php-fpm
/application/php/sbin/php-fpm
操作完畢後回到網頁,刷新
第一項多出了MySQL,第二項也OK了。搞定,繼續下一步
排錯方法看服務是否運行和查看日誌:
/etc/init.d/zabbix_server status
tailf /tmp/zabbix_server.log
假如手賤不跟老師後面設置密碼,就可能會報這個錯誤
36269:20160603:171259.995 cannot set MySQL character set to "utf8"
36269:20160603:171259.995 database is down: reconnecting in 10 seconds
36269:20160603:171309.996 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
可能是sed替換的時候沒有替換對
7.1 監控頁面切換爲中文
8.1 Zabbix Agent客戶端安裝和使用
本機編譯安裝的時候已經開啓了zabbix客戶端功能。如果是其他新添加主機(CentOS6或7系統)不需要編譯安裝那麼麻煩,直接使用官網的rpm就可以了,或者自己編譯一個客戶端然後定製rpm包即可。
8.1.1 服務端的客戶端啓動
##vim /application/zabbix/etc/zabbix_agentd.conf
/etc/init.d/zabbix_agentd start
選擇配置→主機然後找到zabbix server,點擊停用的 狀態,使其變爲啓用的。靜待片刻後面可用性第一個ZBX會亮起綠燈,假如不亮點下過濾或者刷新即可.
8.1.2 新添加機器安裝方法
CentOS6:rpm -ivhhttp://repo.zabbix.com/zabbix/3.0/rhe1/6/x86_64/zabbix-release-3.0-1.e17.noarch.rpm
CentOS7: rpm -ivhhttp://repo.zabbix.com/zabbix/3.0/rhe1/7/x86_64/zabbix-release-3.0-1.e17.noarch.rpm
如果上述站點打不開,可以使用http://mirrors.aliyun.com/zabbix/zabbix/
wget http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-agent-3.0.3-1.el6.x86_64.rpm
yum localinstallzabbix-agent-3.0.3-1.e16.x86_64.rpm
rpm -ivh zabbix-agent-3.0.3-1.el6.x86_64.rpm
vim/etc/zabbix/zabbix_agentd.conf
Server=服務端的ip (約95行)
/etc/init.d/zabbix-agentstart
添加後等待一段時間後可看到
9.1 查看監控數據
10.1解決中文亂碼的問題
服務端操作
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /application/nginx/html/zabbix/fonts/DejaVuSans.ttf
11.1 簡單自定義監控
web01客戶端執行
sed -i '293a UserParameter=login-user,who|wc -l'/etc/zabbix/zabbix_agentd.conf
/etc/init.d/zabbix-agent restart
服務端操作
/application/zabbix/bin/zabbix_get --help
/application/zabbix/bin/zabbix_get -s 10.0.0.8 -p 10050 -k"login-user"
此處的IP地址填寫的是服務端的IP地址
10.0.0.8 客戶端
login-user 值
-p 端口
-k 值
11.1.1 創建應用集
11.1.2 創建監控項
11.1.3 創建觸發器
11.1.4 創建圖形
11.1.5 查看效果
選擇監測中---圖形---羣組Web Server---主機LNMP----圖形:登錄用戶數量趨勢
12.1 監控報警
開啓多個用戶登錄。。。。
12.2 郵件報警
1、Email 在zabbix2.x不支持認證郵箱,只能本機開啓sendmail或Postfix發送郵件;在zabbix3.x開始支持認證郵箱
2、jabber 一個開源即時通信軟件,jabber有第三方插件,能讓jbber用戶和MSN、YahooMessager、IQC等IM用戶互相通訊。因爲Google遵從jabber協議,並且Google已經將Gtalk的服務器開放給了其他的jabber服務。所以PSI、Giam等Jabber客戶端軟件支持GTalk用戶登錄。國內基本沒人使用
3、SMS 短信貓
4、Ez Texting 給用戶手機發短信,貌似只支持美國和加拿大
5、Scripts 自定義腳本,把信息傳遞給腳本,我們在腳本里使用mail、飛信發短信、調用短信接口發送短信等等
但是在zabbix3.0中使用自帶的email功能還是坑!因此我們還是使用老方法-寫腳本
12.2.1 配置mail.rc
[root@zb01 mysqli]# tail -2 /etc/mail.rc
#yxy mail
set from= xxxxxxxxx@126.com smtp=smtp.126.com smtp-auth-user= xxxxxxxxxsmtp-auth-password=xxxxxxxxx smtp-auth=login
12.2.2 郵件報警腳本
程序會傳給腳本3個參數,收件人,郵件標題,郵件主題,系統要有dos2unix、mail命令。
沒有就yum install -y dos2unix mail
cd /application/zabbix/share/zabbix/alertscripts/
[root@oldboyedu alertscripts]# vim email.sh
#!/bin/bash
email_File=/tmp/email.log
function main(){
echo "$3" >$email_File
/usr/bin/dos2unix $email_File
/bin/mail -s "$2" "$1" <$email_File
main "$1" "$2" "$3"
}
爲了避免測試時候的垃圾郵件,可以先創建一個模擬腳本用來測試
echo 'echo "$1" "$2" "$3" >/tmp/email.log' >email.sh
chmod +x email.sh
添加以下3個參數,分別對應sendEmail.sh腳本需要的3個參數:收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
很多人安裝zabbix 3.0之後,寫的腳本一直髮信不成功,手動執行時可以的。
那是因爲zabbix3.0之後,可以自定義參數了。所以不寫參數,它是不會傳參數的。
在2.x版本不存在這個問題,默認會傳3個參數。
測試:
tail -F /tmp/email.log
如果不成功需要,或者檢查其他錯誤
默認/tmp/email.log不存在,但是使用tail -F 是可以獲取的
chown zabbix.zabbix /tmp/email.log
[root@zb01 tmp]# tail -F /tmp/email.log
tail: cannot open `/tmp/email.log' for reading: Nosuch file or directory
tail: `/tmp/email.log' has become accessible
[email protected] PROBLEM: μó§31y3 Trigger:μó§31y3
Trigger status: PROBLEM
Trigger severity: Average
Trigger URL:
Item values:
1. μó§êyá (LNMP:login-user): 5
2. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
3. *UNKNOWN* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*
Original event ID: 104
tail: /tmp/email.log: file truncated
Original event ID: 104
開啓多個用戶登錄:
會檢測到報警