1.手動安裝,2.腳本自動安裝
1.手動安裝
yum install -y ntpdate # 安裝時間工具
timedatectl set-timezone Asia/Shanghai
# 設定時區:亞洲/上海
systemctl restart ntpdate # 重新啟動ntp
systemctl enable ntpdate # 添加開機啟動; system [ˈsɪstəm] 系統; enable [ɛˈnebəl] 啟動;
cat /etc/redhat-release # 檢視系統版本
yum install -y wget # 下載下傳工具
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# -U upgrade [ʌpˈɡreɪd] 改進
# -v verbose [vəːˈbəʊs] 沉長的;provide more detailed output [prəˈvʌɪd] [mɔr] [ˈdiːteɪld] [ˈaʊtpʊt] 提供更詳細的輸出
# -h hash [haʃ] 在...什麼(打撒,混雜);print hash marks as package installs [mɑːks]标記 [ˈpakɪdʒ] [ɪnˈstɔːl]安裝包 ;在軟體包安裝時列印散列标記
wget -rndp /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O 下載下傳檔案到指定目錄;此處是替換原有檔案
systemctl stop firewalld # 關閉防火牆 firewall [ˈfaɪrwɑl]
setenforce 0 # 臨時關閉selinux;永久關閉:sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config ; reboot
yum -y install httpd mariadb mariadb-server php php-mysql php-bcmath php-mbstring zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 安裝mariadb 等軟體
sed -i s/index.html/index.php/g /etc/httpd/conf/httpd.conf
# 修改預設通路檔案; find / -name "httpd.conf" | grep "etc" # 查找 etc目錄下的這個檔案
# httpd.conf 修改 index 添加運用:x-httpd-php .php 去過濾grep Add
cat -n `find / -name "httpd.conf" | grep etc` | grep "AddType application"
# cat -n 檢視檔案顯示行号;`find / -name "httpd.conf" | grep etc` 反單引号是執行結果為一個整體變量;find 查找檔案路徑
# grep 查找
sed -i "272 a\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# 添加運用的位置 ; a\ 是在指定272行下面插入字元
# 由上個檢視行号有四行,任意位置可以添加,我這裡是272行
cat -n /etc/php.ini | grep "date.timezone" # 檢視時間區域行号;我這裡是878行
sed -i "878 a\date.timezone = Asia/Shanghai" /etc/php.ini
systemctl start mariadb # 重新開機mariadb資料庫
systemctl enable mariadb # enable [ɛˈnebəl] 啟動;開機啟動
mysql # 預設沒有密碼,直接mysql 進入資料庫;設定密碼後需要 mysql -uroot -p密碼 進入資料庫
set password = password('eisccn') ; # 設定密碼
create database zabbix character set utf8 collate utf8_bin;
# create [kriˈet] 建立 ;database [ˈdædəˌbeɪs] 資料庫;character [ˈkɛrɪktər] 字元,設定字元類型,collate [kəˈlet] 核對字元
# 登陸資料庫,建立庫編碼為utf8
grant all on zabbix.* to 'zabbix'@'localhost' identified by '123'
# grant [grænt] 授權;all 所有,on 在...上; 授予zabbix賬戶在 localhost [ləʊkæl'həʊst] 本機的所有權限; identified [aɪ'dentɪfaɪd] 識别(設定密碼)
# identified [aɪ'dentɪfaɪd] 辨別;by 由 123密碼:設定zabbix 的 DBPassword
# 123 是密碼,需要單引号,資料庫賬戶和本機需要
find / -name "create.sql.gz" # 查找資料庫檔案路徑
zcat /usr/share/doc/zabbix-server-mysql-4.4.10/create.sql.gz | mysql -uzabbix -p123 zabbix
# 将查到的檔案導入資料庫賬戶 zabbix 下的庫名zabbix下
cat -n /etc/zabbix/zabbix_server.conf | grep DBPassword
# 檢視到是124行
sed -i "$NRuser a\DBPassword=123" /etc/zabbix/zabbix_server.conf
# 配置密碼
/usr/bin/systemctl restart httpd zabbix-server zabbix-agent
/usr/bin/systemctl enable httpd zabbix-server zabbix-agent
# enable [ɛˈnebəl] 啟動; 開機啟動
#################################添加主機####################################
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum list # 更新yum
yum -y install zabbix-agent
read -p "請輸入Zabbix-serve的ip位址:" server_IP
sed -i s/127.0.0.1/$server_IP/g /etc/zabbix/zabbix_agentd.conf
/bin/systemctl restart zabbix-agent.service
網頁操作:
ZABBIX 頂部導航欄 ---> 配置 --- 主機群組 --- 建立主機群組 --- 定義名稱:ceshi --- 點選添加
ZABBIX 頂部導航欄 ---> 配置 --- 主機 --- 建立主機 ---
主機名稱:zabbix_ceshi
群組: 選擇剛建立的 ceshi
agent代理程式的接口: 被監控的主機IP位址, 端口10050 儲存
ZABBIX 頂部導航欄 ---> 配置 --- 主機 --- 模版 --- 選擇模闆 Template OS Linux by Zabbix agent --- 更新
ps aux | grep zabbix # 檢視服務是否啟動
yum install -y telnet # 端口測試工具
telnet x.x.x.x 10050 # 測試端口是否聯通
再到首頁檢視狀态
##########################################郵件報警ping監控###################################################
systemctl stop firewalld # 關閉防火牆
yum install fping -y # 在server和proxy端均安裝fping
FpingLocation=/usr/sbin/fping # 在server和proxy端的配置檔案裡面打開注釋
telnet hc1.ssh.gs 10050 # ping 端口
ZABBIX 頂部導航欄 ---> 配置 --- 主機群組 --- 點選剛剛建立的使用者組裡的使用者zabbix_cesshi --- 監控項 --- 建立監控項
名稱:ping test
類型:簡單檢查
鍵值:icmpping[43.225.156.172,2,1000,68,3000]
主機接口:預設
資訊類型:數字
更新間隔:30s
自定義時間間隔:類型:靈活 間隔:50s 期間:預設
曆史資料保留時長:90d
儲存時間 :365d
檢視值:不變
應用集:無
儲存
ZABBIX 頂部導航欄 ---> 配置 --- 主機群組 --- 點選剛剛建立的使用者組裡的使用者zabbix_cesshi --- 監控項 --- 觸發器 --- 建立觸發器
名稱:fping
嚴重性:警告
表達式:選擇 ping test
儲存
ZABBIX 頂部導航欄 ---> 配置 --- 主機群組 --- 點選剛剛建立的使用者組裡的使用者zabbix_cesshi --- 圖形 --- 建立圖形
名稱:fping
監控項 --- 添加 --- ping test
添加儲存
##########################################實作郵件報警功能 server 端口配置###################################################
yum install mailx -y # 安裝linux郵件工具,在控制節點:server 端進行操作; agent 是被監控端
vi /etc/mail.rc
set bsdcompat
set sendcharsets=iso-8859-1,utf-8
set [email protected]
set smtp=smtp://smtp.exmail.qq.com
set [email protected]
set smtp-auth-password=xxxxxx
set smtp-auth=login
# 編輯郵件登陸配置資訊
echo "這是一封測試郵件" | mail -s "zabbix" [email protected]
# 測試郵件發送是否正常
mkdir -p /data/zabbix_server/data/alertscripts # 建立發郵件發警的腳本所在目錄
zabbix=`find / -name "zabbix_server.conf"` # 查找zabbix配置檔案目錄,将結果指派給zabbix變量
cat -n $zabbix | grep "AlertScriptsPath" # 檢視需要更改的位置
sed -i "517 s/AlertScriptsPath.*/AlertScriptsPath=\/data\/zabbix_server\/data\/alertscripts/g" $zabbix
# 517 指定517行的内容進行修改
# sed 修改, 将AlertScriptsPath.* 後面的所有内容修改為:AlertScriptsPath=/data/zabbix_server/data/alertscripts 特殊符号 /,用轉譯 \
systemctl restart zabbix-server.service # 重新開機服務
vi /data/zabbix_server/data/alertscripts/mailx.sh # 編寫發郵件腳本
#!/bin/bash
#echo "$3" | mail -s "$2" "$1"
FILE=/tmp/mailtmp${RANDOM}.txt
touch $FILE
echo "$3" >$FILE
dos2unix -k $FILE
mailx -v -s "$2" "$1" < $FILE
rm -rf $FILE
chmod +x /data/zabbix_server/data/alertscripts/mailx.sh
chown zabbix:zabbix /data/zabbix_server/data/alertscripts/mailx.sh
# 腳本增加執行權限
sudo -u zabbix /data/zabbix_server/data/alertscripts/mailx.sh [email protected] "zabbix alert" "/etc/passwd is changed"
# 測試一封郵件
# zabbix頁面配置web
ZABBIX 頂部導航欄 ---> 管理 ---> 報警媒介類型 ---> 建立媒體類型 --->
名稱:agent 報警器
類型:腳本
腳本名稱:mailx.sh
腳本參數(增加三個):
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
# 建立使用者 email
導航欄 --- 管理 --- 使用者 --- 右上角建立使用者 ---
别名:email
選擇群組: Zabbix administrators
密碼:aaaassss
儲存
# 建立使用者組
導航欄 --- 管理 --- 使用者群組 --- 右上角建立使用者群組
組名:emailgroup
使用者(點選選擇):email
再點選二級欄目的權限為讀寫
儲存
# 配置使用者報警媒介:
導航欄 --- 管理 --- 報警媒介類型 --- 建立媒體類型 --- 類型選擇腳本
名稱:Email腳本
類型:腳本
腳本名稱:mail.sh
# 點選添加,儲存
# alert [əˈlərt] 報警 ; to send [sɛnd tu] 發送到 ; message [ˈmɛsɪdʒ] 消息
#使用者配置
ZABBIX 頂部導航欄 ---> 管理 ---> 使用者 ---> Admin ---> 報警媒介 ---> 添加 --->
類型:agent 報警器
接受人: [email protected]
啟用時間預設
如果存在嚴重性則使用:全選
勾選已啟用
點選添加
# 配置動作
ZABBIX 頂部導航欄 ---> 配置 ---> 動作 ---> 建立動作
名稱: tcping
新的觸發條件: 主機 等于 test_centos
選擇後,再點選已啟用上面的【添加】
再點選【操作】
暫停操作以制止問題
操作【新的】
發送到使用者群組:【添加】【emailgroup】 【zabbix administrator】
發送到使用者: 【admin】 【email】
點選藍色【添加】上面的【添加】
再點選【恢複操作】
操作【新的】
發送到使用者群組:【添加】【emailgroup】 【zabbix administrator】
發送到使用者: 【admin】 【email】
點選藍色【添加】上面的【添加】
再點選下已啟用下面的【添加】 總添加完成
ZABBIX 頂部導航欄 ---> 管理 --- 使用者 --- Admin --- 報警媒介 --- 添加 : 填寫收件人:[email protected]
2.腳本安裝
#!/bin/bash
###################check network###################
echo '正在檢測網絡是否和zabbix官方通暢......'
ping -c 2 www.zabbix.com > /dev/null # 将ping -c 2 拼兩次的消息結果重定向到空洞/dev/null,清除消息記錄
if [ $? != 0 ];then # $? 是上一個程式執行是否成功的标志,如果執行成功則$? 為0,否則 不為0
echo "請檢查網絡!"
exit # 運作到此情況(網絡異常ping不通);就全局退出腳本 [ˈɛgzɪt] exit 出口
else
echo "網絡正常!" # 正常情況不僅僅列印一句話,然後繼續往下執行
fi
###################set yum#################################
yum install -y ntpdate
ntpdate -u cn.pool.ntp.org
timedatectl set-timezone Asia/Shanghai #
systemctl start ntpd # start [stɑrt] 開始;開始執行
systemctl enable ntpd # enable [ɛˈnebəl] 啟動;加入開啟啟動
#時間矯正
rm -rf /var/run/yum.pid # yum.pid 作用:防止啟動多個程序副本;此處不需要
yum -y install wget
system=`cat /etc/redhat-release | awk -F "." '{print $1}'`
# release [riˈlis] 釋出; system [ˈsɪstəm] 系統
# 檢視系統版本,awk字段處理以點為分隔符:列印第一列;将結果指派給變量 system
if [ "$system" == 'CentOS Linux release 7' ];then
# if 判斷變量 字元串絕對等于 指定字元串,then 然後執行
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# U更新,更新rpm ;v表示顯示安裝過程,h表示顯示進度
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget -O 下載下傳檔案到指定目錄;此處是替換原有檔案
systemctl stop firewalld # 關閉防火牆 firewall [ˈfaɪrwɑl]
setenforce 0 # 臨時關閉selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
#永久關閉selinux ; disabled [dɪˈsebəld] 廢除; config [kən'fɪg] 配置,設定
elif [ "$system" == 'CentOS release 6' ];then
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# base [bes] 基地;mirror [ˈmirəz] 鏡像,鏡子
rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
service iptables stop
setenforce 0 # 臨時關閉selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
#永久關閉selinux ; disabled [dɪˈsebəld] 廢除; config [kən'fɪg] 配置,設定
fi
##################install###############################
eth=`ip a| grep "BROADCAST" | awk -F ":" 'NR==1{print $2}' | sed "s/ //g"` ; echo "網卡名為:"$eth ;
# 指令 ip a 檢視網卡 過濾;broadcast [ˈbrɔːdkɑːst] >廣播;字段的行
# awk -F ":" 以冒号為分隔符 ; 選擇第一行,第二列,sed删除空格
# 符号 ; 分号表示第一條指令結束,第二條開始
ethCatalog=$(find / -name "*$eth" | grep "/etc/" | sed "s/ //g" ) ; echo "網卡路徑為: " $ethCatalog
# catalog [ˈkætəlɔg] 目錄
# find 查找網卡名稱的路徑,grep 過濾/etc 目錄下網卡名稱。sed删除空格
ip=$(cat $ethCatalog | grep IPADDR | awk -F "=" 'NR==1{print $2}' | sed "s/ //g") ; echo "IP位址為: " $ip
# 檢視網卡檔案,過濾IPADDR的行,awk -F"=" 分隔符是冒号,列印第一行第二列
sleep 5 # 等待5秒鐘;sleep [slip] 睡眠
server(){
yum -y install httpd mariadb mariadb-server php php-mysql php-bcmath php-mbstring
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 安裝mariadb 等軟體
sed -i s/index.html/index.php/g /etc/httpd/conf/httpd.conf
# 修改預設通路檔案
#######################修改配置檔案##################
# sed -i "N;286i\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# sed -i "N;880i\date.timezone = Asia/Shanghai" /etc/php.ini
NRhttpd=$(cat -n /etc/httpd/conf/httpd.conf | grep "AddType application/x-gzip .gz .tgz" | awk -F" " '{print $1}' | sed "s/ //g")
# add type [æd] [taɪp] 添加類型; application [ˌæpləˈkeʃən] 運用;
# cat -n 檢視檔案内容并顯示行号
# grep 比對字元串所在行的整行内容
# awk -F" " 字段處理指定分隔符為空格,列印第一列;删除空格
echo "根據字元串查找的文本中的行号:"$NR
sed -i "/AddType application\/x-httpd-php .php/d" /etc/httpd/conf/httpd.conf
# 在寫入前,先删除将要插入的字元串,保證不會重複插入
sed -i "$NRhttpd a\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# $NR a\ 根據查找到行号,的下一行插入字元串
# i\ 是上一行插入字元串
NRdate=`cat -n /etc/php.ini | grep ";date.timezone =" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NRdate
sed -i "/Asia\/Shanghai/d" /etc/php.ini
sed -i "$NRdate a\date.timezone = Asia/Shanghai" /etc/php.ini
# 其中符号 ; 表示注釋符号。
####################################################
/usr/bin/systemctl start mariadb # 重新開機mariadb資料庫
/usr/bin/systemctl enable mariadb # enable [ɛˈnebəl] 啟動;開機啟動
mysql -e "set password = password('WWWeisccn111@#')"
# 進入資料庫設定密碼
mysql -uroot -pWWWeisccn111@# -e "create database zabbix character set utf8 collate utf8_bin;"
# create [kriˈet] 建立 ;database [ˈdædəˌbeɪs] 資料庫;character [ˈkɛrɪktər] 字元,設定字元類型,collate [kəˈlet] 核對字元
# 登陸資料庫,建立庫編碼為utf8
mysql -uroot -pWWWeisccn111@# -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by '123'"
# grant [grænt] 授權;all 所有,on 在...上; 授予zabbix賬戶在 localhost [ləʊkæl'həʊst] 本機的所有權限; identified [aɪ'dentɪfaɪd] 識别(設定密碼)
# identified [aɪ'dentɪfaɪd] 辨別;by 由 123密碼:設定zabbix 的 DBPassword
# 123 是密碼,需要單引号,資料庫賬戶和本機需要
# 此處已經修改bugfind檢視資料庫檔案
createmysql=$(find / -name "create.sql.gz") ;
echo "$createmysql
資料庫檔案導入中,請耐心等待!"
# 查找檔案路徑并列印
/usr/bin/zcat $createmysql | mysql -uzabbix -p123 zabbix
# 導入資料庫,登陸資料,使用者名zabbix 密碼123,并且進入資料庫zabbix
# zcat 檢視壓縮包的檔案,管道到登陸資料庫裡面去執行
# sed -i "N;110i\DBPassword=123" /etc/zabbix/zabbix_server.conf # 配置zabbix密碼
NRuser=`cat -n /etc/zabbix/zabbix_server.conf | grep "DBUser=zabbix" |awk '{print $1}' | sed "s/ //g"` ; echo $NRuser
sed -i "/DBPassword=123/d" /etc/zabbix/zabbix_server.conf
sed -i "$NRuser a\DBPassword=123" /etc/zabbix/zabbix_server.conf
/usr/bin/systemctl restart httpd zabbix-server zabbix-agent
/usr/bin/systemctl enable httpd zabbix-server zabbix-agent
# enable [ɛˈnebəl] 啟動; 開機啟動
echo "請用浏覽器通路:http://$ip/zabbix
安裝配置:
資料庫名:zabbix
資料庫使用者:zabbix
密碼:123
登陸賬戶/密碼:Admin/zabbix"
}
agent(){
yum -y install zabbix-agent
read -p "請輸入Zabbix-serve的ip位址:" server_IP
sed -i s/127.0.0.1/$server_IP/g /etc/zabbix/zabbix_agentd.conf
/bin/systemctl restart zabbix-agent.service
}
##################install menu###########################
MYDATE=`date +%d/%m/%y` # 定義一個時間變量:格式化字元為:十進制日期,月份,年份抹除100
THIS_HOST=`hostname -s`
USER=`whoami`
while :
do
tput clear
echo "
# cat 與echo 相似,這裡列印顯示一段話;由 aMAYDAY 開始,也由它來結束;
---------------------------------------------------------
User:$USER Host:$THIS_HOST Date:$MYDATE
# cat 這裡直接列印字元串和變量的值
---------------------------------------------------------
1:安裝 zabbix-server和zabbix-agent
2:隻安裝 zabbix-agent
H:幫助
Q:退出
---------------------------------------------------------
" # 結束列印标記
echo -e -n "\tYour Choice [1,2,Q]>" # -e 開啟特殊字元轉換 \t上一行換行;-n 它的下一行不換行列印;
read CHOICE # 緊接着上一行的列印字元串,接着讓使用者輸入資訊,将輸入資訊寫入變量 $CHOICE
case $CHOICE in # 判斷變量是一下情形
1) server # 為 1 執行 server 函數
;;
2) agent
;;
3) who
;;
H|h) # 輸入為 H 則列印一段話
echo "
Zabbix-server是服務端,Zabbix-agent是用戶端!
" # 列印結束,MAYDAY 他為開始,也以他為結束
;;
Q|q) exit 0 # 輸入Q 退出
;;
*) echo -e "\t\007 輸入有有誤!" # 其他所有情況,提示
;;
esac # case 判斷結束
echo -e -n "\t按任意鍵傳回菜單!"
read DUMMY
done
# 腳本執行: yum install -y wget ; rm -rf zabbix.sh ; wget eisc.cn/file/shell/zabbix.sh ; chmod 755 zabbix.sh ; source zabbix.sh