Zabbix之十----批量安裝zabbix-agent及web監控


實戰一:實現批量安裝zabbix-agent包

環境准備:

zabbox-server服務器:192.168.7.100

zabbix-agent(node1):192.168.7.101

zabbix-agent(node2):192.168.7.102

mariadb數據庫(node3):192.168.7.103

zabbix-proxy-mysql(node4 主動proxy代理):192.168.7.104

1、在指定的/usr/local/src目錄下創建關鍵文件,打包做為安裝zabbix-agent來用

1、創建zabbix.repo阿里雲倉庫,存放在/usr/local/src目錄下

[root@localhost yum.repos.d]# cat zabbix.repo 
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
 
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/
enabled=1
gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX
gpgcheck=1
 
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1

 2、創建一個nginx_status.sh狀態頁腳本

[root@node1 src]# cat nginx_status.sh 
#!/bin/bash 

nginx_status_fun(){ #函數內容
	NGINX_PORT=$1 #端口,函數的第一個參數是腳本的第二個參數,即腳本的第二個參數是段端口號
	NGINX_COMMAND=$2 #命令,函數的第二個參數是腳本的第三個參數,即腳本的第三個參數是命令
	nginx_active(){ #獲取nginx_active數量,以下相同,這是開啟了nginx狀態但是只能從本機看到
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
	nginx_reading(){ #獲取nginx_reading狀態的數量
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
	nginx_writing(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
	nginx_waiting(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
	nginx_accepts(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
	nginx_handled(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
	nginx_requests(){
        /usr/bin/curl "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
  	case $NGINX_COMMAND in
		active)
			nginx_active;
			;;
		reading)
			nginx_reading;
			;;
		writing)
			nginx_writing;
			;;
		waiting)
			nginx_waiting;
			;;
		accepts)
			nginx_accepts;
			;;
		handled)
			nginx_handled;
			;;
		requests)
			nginx_requests;
		esac 
}

main(){ #主函數內容
	case $1 in #分支結構,用於判斷用戶的輸入而進行響應的操作
		nginx_status) #當輸入nginx_status就調用nginx_status_fun,並傳遞第二和第三個參數
			nginx_status_fun $2 $3;
			;;
		*) #其他的輸入打印幫助信息
			echo $"Usage: $0 {nginx_status key}"
	esac #分支結束符
}

main $1 $2 $3

3、在/usr/local/src/目錄下,創建一個調用nginx_status.sh腳本以conf結尾的配置文件:zabbix-linux.conf

UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh  $1 $2 $3  # 調用nginx_status.sh腳本的鍵值

4、在安裝好zabbix-agent包的服務器中,配置/etc/zabbix/zabbix_agentd.conf文件,放到/usr/local/src目錄下

LogRemoteCommands=1  # 允許遠程連接
Server=192.168.7.100,192.168.7.104 # zabbix服務器的IP地址和proxy主動模式的IP地址
ServerActive=192.168.7.104 # proxy服務器主動模式IP地址
Hostname=  # 將Hostname命名空出來,使用sed -i 命令進行替換
Timeout=30 # 超時時延改為30s
UnsafeUserParameters=1  # 允許特殊字符傳遞:如管道符、單引號、雙引號等。

 5、創建一個安裝zabbix-agent腳本

[root@node1 src]# cat zabbix-agent-install.sh 
#!/bin/bash
DIR="/usr/local/src" # 調用當前目錄
useradd -s /sbin/nologin  zabbix  # 創建zabbix用戶
\cp $DIR/zabbix.repo  /etc/yum.repos.d/  #將zabbix.repo倉庫復制到/etc/yum.repos.d/目錄下
yum install zabbix-agent -y  # 安裝zabbix-agent包
\cp $DIR/zabbix-linux.conf  /etc/zabbix/zabbix_agentd.d/ # 復制調用nginx_status.sh腳本狀態頁的腳本到指定的目錄下
\cp $DIR/nginx_status.sh /etc/zabbix/zabbix_agentd.d/  # 復制nginx_status.sh腳本到指定目錄下
\cp $DIR/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf # 復制zabbix_agentd.conf配置文件到指定的目錄下
chmod +x /etc/zabbix/zabbix_agentd.d/*.sh  # 將此目錄下的.sh后綴文件加上執行權限
chown zabbix.zabbix /etc/zabbix -R  # 將/etc/zabbix權限進行修改
IP=`ifconfig |grep -w inet | awk '{print $2}' | head -n1`  # 取出本機的IP地址
sed -i 's/Hostname=/Hostname='$IP'/g' /etc/zabbix/zabbix_agentd.conf   # 將zabbix配置文件的Hostname=的IP地址進行替換
systemctl start zabbix-agent && systemctl enable zabbix-agent  # 啟動zabbix-agent服務,並設置為開機啟動

6、配置/etc/yum.repos.d目錄下的epel.repo源倉庫

# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo  # 安裝阿里雲自帶的epel源倉庫
#  yum install nginx  -y  # 安裝nginx服務

7、配置nginx的狀態頁:/etc/nginx/nginx.conf

location /nginx_status {  # 在server段進行配置
    stub_status;
}

8、啟動nginx服務:nginx  

9、在zabbix網頁上創建主機

10、關聯nginx狀態自定義模板

 11、查看nginx監控結果

 node1安裝zabbix-agent腳本打包並傳到node2主機

1、將node1主機/usr/local/src目錄下的相關文件打包,並傳到node2主機/usr/local/src目錄下

[root@node1 src]# tar cvf linux-zabbix-agent-install.tar.gz ./*  打包/usr/local/src目錄下的文件
./nginx_status.sh 
./zabbix_agentd.conf
./zabbix-agent-install.sh
./zabbix-linux.conf
./zabbix.repo
[root@node1 src]# scp linux-zabbix-agent-install.tar.gz  192.168.7.102:/usr/local/src # 將node1主機打包的文件傳到node2

2、在node2主機/usr/local/src目錄下解壓打包的文件

[root@node2 src]# tar xvf linux-zabbix-agent-install.tar.gz 

3、在/usr/local/src目錄下執行腳本,安裝zabbix-agent包

[root@node2 src]# bash zabbix-agent-install.sh 

4、配置epel.repo源,安裝nginx服務

[root@node2 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@node2 ~]# yum install nginx -y

5、配置nginx狀態頁:/etc/nginx/nginx.conf

        location /nginx_status {
            stub_status;
        }

6、啟動nginx服務:nginx

在zabbix網頁上配置主機並關聯模板

1、創建node2主機

 2、關聯自定義的nginx_status模板

 3、此時可以看到ZBX已經變綠了

 4、此時查看nginx的狀態頁:

 實戰二:Zabbix監控web頁面

1、實現返回200狀態碼的web網頁監控

1、在node1主機上創建web場景

 2、配置web監測

 3、創建步驟,指定網站的URL,創建第一個web頁面

 4、創建第二頁監控 web頁面,指定URL地址

 5、查看此時監控的web頁面效果

 2、網頁響應時間超時監控web網頁

Response time for step "網站首頁" of scenario "網站首頁": 在以上創建的web場景的基礎上添加此觸發器即可,選擇響應超出的時間,來判斷web網頁是否宕機。

Response code for step "網站首頁" of scenario "網站首頁":此觸發器就是對web網頁響應返回的狀態碼進行監控。

1、在上面創建的web場景的主機基礎上創建觸發器,我們可以看到以下的web監測后面顯示1,說明此主機進行了web網頁監控,點擊此主機

 2、在監控web網頁的主機創建觸發器,選擇以響應超時時長的觸發器

 3、配置詳細的觸發器,一般采用的是第一種配置,在最后一次網頁超過5s未響應,說明網頁掛掉了,第二種配置是在網頁相對不穩定的情況下,可以多加幾個判斷。

第一種配置:最后一次網頁超過5s未響應,說明網頁掛掉了

{192.168.7.102:web.test.time[網站首頁,網站首頁,resp].last()}>5 

第二種配置:最后一次網頁超過5s未響應,倒數第二次以及倒數第三次網頁超過5s未響應,說明網頁都掛了。

{192.168.7.102:web.test.time[網站首頁,網站首頁,resp].last(0)}>5 and {192.168.7.102:web.test.time[網站首頁,網站首頁,resp].last(1)}>5 and {192.168.7.102:web.test.time[網站首頁,網站首頁,resp].last(2)}>5

 

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM