zabbix4.4.10使用小結
阿新 • • 發佈:2020-08-19
目錄
源
【1-1】如果有映象源可以忽略此步驟
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.下載源的rpm包
一.zabbix安裝
【1-1】 安 裝 源
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
【1-2】清理快取
yum clean all
【1-3】服務安裝
yum install -y zabbix-server-mysql zabbix-agent zabbix-web-mysql zabbix-nginx-conf
【1-4】修改配置
1.#備份並修改【/etc/nginx/nginx.conf】
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
vim /etc/nginx/nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; }
2.#修改【/etc/nginx/conf.d/zabbix.conf】
vim /etc/nginx/conf.d/zabbix.conf
server {
listen 80; #修改埠
server_name dev-picture-xssh.bilibiligame.jp; #公司域名
root /usr/share/zabbix;
allow 114.86.224.135; # 放行公司IP
deny all;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
3.#修改區時
vim /etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Tokyo
4.#啟動並開機自啟
systemctl start nginx.service && systemctl enable nginx.service
systemctl start php-fpm.service && systemctl enable php-fpm.service
二.安裝資料庫
【2-1】下載工具
yum install -y ncurses-devel libaio-devel cmake gcc gcc-c++ glibc rpm-build autoconf numactl
【2-2】上 傳 包
下載地址 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
【2-3 】 配 置
(一)【建立目錄,使用者,解壓,改名,軟連線】
mkdir /data
useradd mysql -s /sbin/nologin -M
tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
ln -s /data/mysql.5.7.28/ /data/mysql
【在support-flie目錄下建立default.cnf檔案】
cat <<EOF> /data/mysql/support-files/my_default.cnf
[mysqld]
server_id=2
log-bin = /data/mysql/logs/mysql-bin.log
#設定mysql的安裝目錄
basedir =/data/mysql/
#設定mysql資料庫的資料存放目錄
datadir = /data/mysql/data
#設定埠
port = 3306
socket = /var/lib/mysql/mysql.sock
#設定字符集
character-set-server=utf8
#日誌存放目錄
log-error = /data/mysql/logs/mysqld.log
pid-file = /data/mysql/data/mysqld.pid
EOF
(三)【複製啟動配置檔案】
\cp /data/mysql/support-files/my_default.cnf /etc/my.cnf
建立目錄
mkdir -p /data/mysql/logs/
(四)【授權目錄,初始化】
chown mysql.mysql /data/mysql/ -R
/data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql/ --datadir=/data/mysql/data/
(五)【複製初始化指令碼並替換啟動指令碼中的路徑】
cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i "s#usr/local#data#g" /etc/init.d/mysqld /data/mysql/bin/mysqld_safe
(六)【設定成systemctl啟動】
cat <<EOF> /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
(七)【配置環境變數 ,載入環境變數 ,給啟動指令碼授權700】
echo 'PATH=/data/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
chmod 700 /etc/init.d/mysqld
(八)【啟動資料庫,做連結,】
systemctl start mysqld && systemctl enable mysqld.service
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
(九)【查詢mysql密碼,登陸資料庫】
[root@suzhu ~]# grep "local" /data/mysql/logs/mysqld.log
mysql -uroot -p
set password=password('qazwsx123456');
flush privileges;
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@"192.168.24.%" identified by 'zabbix';
(十)匯入zabbix資料
zcat /usr/share/doc/zabbix-server-mysql-4.2.8/create.sql.gz |mysql -uroot -p zabbix
三.zabbix配置
【3-1】server端
vim /etc/zabbix/zabbix_server.conf
在如下行進行修改
91 DBHost=localhost
100 DBName=zabbix
116 DBUser=zabbix
124 DBPassword=zabbix
【3-2】agent端
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.24.132
ServerActive=192.168.24.132
【3-3】啟動
systemctl start zabbix-agent.service && systemctl enable zabbix-agent.service
systemctl start zabbix-server.service && systemctl enable zabbix-server.service
瀏覽器輸入192.168.24.132/zabbix即可安裝
【3-3】補 充
修改zabbix web介面字型
電腦 C:\Windows\Fonts拉出來一個字型msyh.ttc ,傳上去,重新命名為DejaVuSans.ttf
ll /etc/alternatives |grep zabbix-web-font
cd /usr/share/fonts/dejavu
mv DejaVuSans.ttf DejaVuSans.ttf.bak
mv msyh.ttc DejaVuSans.ttf
重新整理zabbix web頁面即可
四.服務指標監控
【4-1】監控1:java監控
1.【監控內容】 針對java的堆,老年代,新生代,gc回收
2.【命令提權】 java程式時,由於部分命令zabbix沒有許可權,我們需要給zabbix提權,在93行左右
3.【指令碼樣例】下面例子是監控GameServer的指令碼
2.#命令提權
vim /etc/sudoers +101
zabbix ALL=(ALL) NOPASSWD:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/jstat
3.#建立指令碼目錄放置指令碼
mkdir -p /etc/zabbix/scripts
4.#建立監控指令碼
vim /etc/zabbix/scripts/GameServer.sh
#!/bin/bash
#獲取服務程序(pid)
pid=`ps -ef | grep "GameServer" |grep -v $$| grep -v "cgroup" | grep -v "grep" | awk '{print $2}'`
sudo=/usr/bin/sudo
###################################################################################
#s0c 年輕代中第一塊survivor容量
#s1c 年輕代中第二個survivor(倖存區)的容量
#s0u 年輕代中第一個survivor(倖存區)目前已使用空間 (位元組)
#s1u 年輕代中第二個survivor(倖存區)目前已使用空間 (位元組)
#s1u_per 倖存區使用的容量百分比
###################################################################################
#ec EdenCount 年輕代中Eden(伊甸園)的容量 (位元組)
#eu EdenUsed年輕代中Eden(伊甸園)目前已使用空間 (位元組)
#ecu_per EdenUsed %
###################################################################################
#oc OldCount Old代的容量 (位元組)
#ocu Oldcount Used代的容量 (位元組)
#ocuper Old used%
###################################################################################
#ygc 年輕代gc回收次
#ygct 年輕代gc回收時間
#ogc 老年代gc回收次數
#ogct 老年代gc回收時間
#all_gct 老年代&&和年輕代總的回收時間
###################################################################################
#heap Game堆的大小
#heapused Game堆的使用情況
#heap_per GAME堆的使用百分比
###################################################################################
#MB=kb/1024
#GC
s0c=`$sudo jstat -gc $pid|awk 'NR==2{print $1/1024}'`
s1c=`$sudo jstat -gc $pid|awk 'NR==2{print $2/1024}'`
s0u=`$sudo jstat -gc $pid|awk 'NR==2{print $3/1024}'`
s1u=`$sudo jstat -gc $pid|awk 'NR==2{print $4/1024}'`
s1u_per=`$sudo jstat -gc $pid|awk 'NR==2{print $4/$2*100}'`
ec=`$sudo jstat -gc $pid|awk 'NR==2{print $5/1024}'`
ecu=`$sudo jstat -gc $pid|awk 'NR==2{print $6/1024}'`
ecu_per=`$sudo jstat -gc $pid|awk 'NR==2{print $6/$5*100}'`
oc=`/usr/bin/sudo jstat -gc $pid|awk 'NR==2{print $7/1024}'`
ocu=`$sudo jstat -gc $pid|awk 'NR==2{print $8/1024}'`
ocu_per=`$sudo jstat -gc $pid|awk 'NR==2{print $8/$7*100}'`
ygc=`$sudo jstat -gcnew $pid|awk 'NR==2{print $(NF-1)}'`
ygct=`$sudo jstat -gcnew $pid|awk 'NR==2{print $NF}'`
ogc=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $(NF-2)}'`
ogct=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $(NF-1)}'`
all_gct=`$sudo jstat -gcoldcapacity $pid|awk 'NR==2{print $NF}'`
heap=`$sudo jstat -gc $pid|awk 'NR==2{print ($2+$5+$7)/1024}'`
heapused=`$sudo jstat -gc $pid|awk 'NR==2{print ($4+$6+$8)/1024}'`
heap_per=`$sudo jstat -gc $pid|awk 'NR==2{print ($4+$6+$8)/($2+$5+$7)*100}'`
case $1 in
s0c)
echo $s0c
;;
s1c)
echo $s1c
;;
s0u)
echo $s1u
;;
s1u)
echo $s1u
;;
s1u_per)
echo $s1u_per
;;
ec)
echo $ec
;;
ecu)
echo $ecu
;;
ecu_per)
echo $ecu_per
;;
oc)
echo $oc
;;
ocu)
echo $ocu
;;
ocu_per)
echo $ocu_per
;;
ygc)
echo $ygc
;;
ygct)
echo $ygct
;;
ogc)
echo $ogc
;;
ogct)
echo $ogct
;;
all_gct)
echo $all_gct
;;
heap)
echo $heap
;;
heapused)
echo $heapused
;;
heap_per)
echo $heap_per
;;
*)
echo "USAGE:{heap|heap_per|...}"
;;
esac
5.【客戶端配置】獲取引數,新增如下
vim /etc/zabbix/zabbix_agentd.d/system.conf
#GameServer的效能指標
UserParameter=Game[*],/usr/bin/sh /etc/zabbix/scripts/GameServer.sh $1
6.重啟
systemctl restart zabbix-agent.service
【4-2】監控2: cpu 記憶體
1【監控內容】針對各種服務的cpu佔用,記憶體佔用 指令碼如下
vim /etc/zabbix/scripts/processstatus.sh
#!/bin/bash
# auth-tomcat forest-friend forest-gateway forest-server gm-tomcat idip-tomcat pay-tomcat
auth-memory(){
ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
auth-cpu(){
ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
friend-memory(){
ps aux|grep "FriendServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
forest-cpu(){
ps aux|grep "FriendServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
gateway-memory(){
ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
gateway-cpu(){
ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
game-memory(){
ps aux|grep "GameServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
game-cpu(){
ps aux|grep "GameServer"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
gm-memory(){
ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
gm-cpu(){
ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
idip-memory(){
ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
idip-cpu(){
ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
pay-memory(){
ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$6}; END{print sum*1024}'
}
pay-cpu(){
ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "processstatus.sh"|awk '{sum+=$3}; END{print sum}'
}
case "$1" in
'auth-memory')
auth-memory
;;
'auth-cpu')
auth-cpu
;;
'friend-memory')
friend-memory
;;
'friend-cpu')
friend-cpu
;;
'gateway-memory')
gateway-memory
;;
'gateway-cpu')
gateway-cpu
;;
'game-memory')
game-memory
;;
'game-cpu')
game-cpu
;;
'gm-memory')
gm-memory
;;
'gm-cpu')
gm-cpu
;;
'idip-memory')
idip-memory
;;
'idip-cpu')
idip-cpu
;;
'pay-memory')
pay-memory
;;
'pay-cpu')
pay-cpu
;;
*)
echo "Usage: $0 {auth-memory|....}"
;;
esac
1.【客戶端配置】獲取引數
echo "UserParameter=process[*],/etc/zabbix/scripts/processstatus.sh \$1" >>/etc/zabbix/zabbix_agentd.d/system.conf
2.重啟
systemctl restart zabbix-agent.service
【4-3】監控3: 端 口
1.【監控內容】各個服務的存活狀態,0表示非存活,1表示存活,指令碼如下
vim /etc/zabbix/scripts/check_process_id.sh
#!/bin/bash
# auth-tomcat forest-friend forest-gateway forest-server gm-tomcat idip-tomcat pay-tomcat
auth(){
ps aux|grep "auth-tomcat"|grep -v "grep"|grep -v "check_process_id.sh"| wc -l
}
friend(){
ps aux|grep "FriendServer"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
}
gateway(){
ps aux|grep "forest-gateway"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
}
game(){
ps aux|grep "GameServer"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
}
gm(){
ps aux|grep "gm-tomcat"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
}
idip(){
ps aux|grep "idip-tomcat"|grep -v "grep"|grep -v "check_process_id.sh" | wc -l
}
pay(){
ps aux|grep "pay-tomcat"|grep -v "grep"|grep -v "check_process_id.sh"|wc -l
}
case "$1" in
'auth')
auth
;;
'friend')
friend
;;
'gateway')
gateway
;;
'game')
game
;;
'gm')
gm
;;
'idip')
idip
;;
'pay')
pay
;;
*)
echo "Usage: $0 {auth|friend|...}"
;;
esac
1.【客戶端配置】獲取引數
echo "UserParameter=check[*],/usr/bin/sh /etc/zabbix/scripts/check_process_id \$1" >>/etc/zabbix/zabbix_agentd.d/system.conf
重啟客戶端
systemctl restart zabbix-agent.service
五.系統指標監控
【5-1】系統指標
1.【監控內容】此監控指令碼包含系統記憶體,CPU,磁碟的Io讀寫,目錄的使用大小
vim /etc/zabbix/scripts/system_status1.sh
#記憶體空餘(%)
mem_ava=`free -m|awk '/^Mem/{print $NF*100/$2}'`
#交換分割槽空餘(%)
swap_ava=`free -m|awk '/^Swap/{print $NF*100/$2}'`
#伺服器的開機時間(days)
system_runtime=`w|awk 'NR==1{print $3}'`
#/data目錄的使用大小(Gb)
data_size=`/usr/bin/sudo du -sh /data/|awk -F \G 'NR==1{print $1*1000*1000*1000}'`
#buffer快取(Mb)
buffer_size=`free -m|awk 'NR==2{print $(NF-1)}'`
#swap的容量(Mb)
swap_size=`free -m|awk 'NR==3{print $2}'`
#CPU監控(%)
#1.cpu平均1min的利用百分比
cpu_load_1min=`w |awk -F \, 'NR==1{print $(NF-2)}'|awk '{print $3}'`
#2.cpu平均5min的利用百分比
cpu_load_5min=`uptime |awk -F \, '{print $(NF-1)}'`
#3.cpu平均15min的利用百分比
cpu_load_15min=`w|awk '/load average/{print $(NF)}'`
case $1 in
mem_ava)
echo $mem_ava
;;
swap_ava)
echo $swap_ava
;;
system_runtime)
echo $system_runtime
;;
data_size)
echo $data_size
;;
buffer_size)
echo $buffer_size
;;
swap_size)
echo $swap_size
;;
cpu_load_1min)
echo $cpu_load_1min
;;
cpu_load_5min)
echo $cpu_load_5min
;;
cpu_load_15min)
echo $cpu_load_15min
;;
*)
echo "USAGE:{mem_ava|swap_ava|....}"
;;
esac
1.【客戶端配置】獲取引數
vim /etc/zabbix/zabbix_agentd.d/system.conf
2.#新增如下
echo "UserParameter=system[*],/usr/bin/sh /etc/zabbix/scripts/system_status1.sh \$1" >>/etc/zabbix/zabbix_agentd.d/system.conf
3.【重啟客戶端】
systemctl restart zabbix-agent.service
【5-2】磁碟監控
1【監控內容】磁碟的各項指標監控
2【監控指令碼】僅供參考
vim /etc/zabbix/scripts/zbx_parse_iostat_values.sh
#!/bin/bash
dev=$1
type=$2
#enable debug mode
debug=0
if [[ -z "$dev" ]]; then
echo "error: wrong input value (device)"
exit 1
fi
if [[ -z "$type" ]]; then
echo "error: wrong input value (type)"
exit 1
fi
columns=`iostat -xN |egrep -o "^Device.*"`
columnsarray=($columns)
column_id=1
for i in "${columnsarray[@]}"
do
#echo "column: $i"
if [[ "$i" = "$type" ]]; then
if [[ $debug -eq 1 ]]; then
echo "right column (${i}) found...column_id: $column_id "
fi
id="$"
column_id_id=$id$column_id
iostats=`iostat -dxk 1 2|tail -5|egrep -o "^${dev}[[:space:]]+.*" |awk "{print ${column_id_id}}"`
fi
column_id=$[column_id + 1]
done
if [ -z "$iostats" ]; then
echo "error: \"device\" or \"type\" not found (${dev},${type})"
exit 3
fi
iostats_lines=`wc -l <<< "$iostats"`
if [ $iostats_lines -ne 1 ]; then
echo "error: wrong output value (${iostats_lines})"
exit 2
fi
echo $iostats
if [[ $debug -eq 1 ]]; then
echo "- - - - - - - - - -"
echo $columns
iostats_debug=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*"`
echo $iostats_debug
echo "- - - - - - - - - -"
fi
exit 0
1.【客戶端配置】獲取引數.
vim /etc/zabbix/zabbix_agentd.d/system.conf
# 磁碟讀寫
#UserParameter=discovery.disks.iostats,/etc/zabbix/scripts/discover_disk.pl
UserParameter=custom.vfs.dev.iostats.rrqm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "rrqm/s" # 每秒進行 merge 的讀運算元目
UserParameter=custom.vfs.dev.iostats.wrqm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "wrqm/s" # 每秒進行 merge 的寫運算元目
UserParameter=custom.vfs.dev.iostats.rps[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "r/s" # 每秒完成的讀 I/O 裝置次數
UserParameter=custom.vfs.dev.iostats.wps[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "w/s" # 每秒完成的寫 I/O 裝置次數
UserParameter=custom.vfs.dev.iostats.rkb[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "rkB/s" # 每秒讀K位元組數
UserParameter=custom.vfs.dev.iostats.wkb[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "wkB/s" # 每秒寫K位元組數
UserParameter=custom.vfs.dev.iostats.avgrq[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "avgrq-sz" # 平均每次裝置I/O操作的資料大小
UserParameter=custom.vfs.dev.iostats.avgqu[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "avgqu-sz" # 平均I/O佇列長度
UserParameter=custom.vfs.dev.iostats.await[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "await" # 平均每次裝置I/O操作的等待時間 (毫秒)
UserParameter=custom.vfs.dev.iostats.svctm[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "svctm" # 平均每次裝置I/O操作的服務時間 (毫秒)
UserParameter=custom.vfs.dev.iostats.util[*],/etc/zabbix/scripts/zbx_parse_iostat_values.sh $1 "%util" # 一秒中有百分之多少的時間用於 I/O 操作
2.【重啟客戶端】
systemctl restart zabbix-agent.service
六.企業微信傳送告警
【6-1】微信申請
1.【進入企業微信網頁版本】
https://work.weixin.qq.com/wework_admin/gdt/25?from=0014100470&bd_vid=11860413431973884778
2.【申請註冊並登陸】
3.點選: 【應用管理】——》【建立應用】——》【應用名稱】--》【應用介紹】——》【選擇部門成員】--完成
4.點選: 【通訊錄】——》【建立部門】————》【新增子部門】——》【運維部】——》【點選成員】——》【設定所在部門】
5.三個資訊:
【企業】:corpid = 'ww3c487ba1e6eec2ab' #CorpID是企業號的標識
【應用】:AgentId 1000002 應用的標識
【Secret】:LStqb7q8Ymh3ZecammdHdX134qyjFGRKqhKbTyGOqeo
6-1安裝
yum install python-simplejson -y
【6-2】配置指令碼
1.#在zabbix特定目錄下建立指令碼
vim /usr/lib/zabbix/alertscripts/wechat.py
#!/usr/bin/python
#_*_coding:utf-8 _*_
import urllib,urllib2
import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding('utf-8')
def gettoken(corpid,corpsecret):
gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
print gettoken_url
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode("utf8")
sys.exit()
token_data = token_file.read().decode('utf-8')
token_json = json.loads(token_data)
token_json.keys()
token = token_json['access_token']
return token
def senddata(access_token,user,subject,content):
send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
send_values = {
"touser":"LiuZongLiang", #企業號中的使用者帳號,在zabbix使用者Media中配置,如果配置不正常,將按部門傳送。
"toparty":"2", #企業號中的部門id。
"msgtype":"text", #訊息型別。
"agentid":"1000002", #企業號中的應用id。
"text":{
"content":subject + '\n' + content
},
"safe":"0"
}
# send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)
if __name__ == '__main__':
user = str(sys.argv[1]) #zabbix傳過來的第一個引數
subject = str(sys.argv[2]) #zabbix傳過來的第二個引數
content = str(sys.argv[3]) #zabbix傳過來的第三個引數
corpid = 'ww3c487ba1e6eec2ab' #CorpID是企業號的標識
corpsecret = 'LStqb7q8Ymh3ZecammdHdX134qyjFGRKqhKbTyGOqeo' #corpsecretSecret是管理組憑證金鑰
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)
【6-3】授權檔案
chmod 777 wechat.py
chown zabbix.zabbix wechat.py
【6-4】配置頁面
配置一:報警媒介
*名稱:【wechat】
型別:【指令碼】 #下拉選擇“指令碼”
指令碼名稱【wechat.py】
指令碼引數
引數 動作
{ALERT.SENDTO} 【移除】
{ALERT.SUBJECT} 【移除】
{ALERT.MESSAGE} 【移除】
【新增】
已啟用【√】
【新增】【取消】 #點選新增
新增完後,點選右邊測試(沒有測試按鈕的屬於zabbix版本過低)
傳送使用者:LiuZongLiang #傳送接收的企業微信成員
配置二:使用者關聯
1.點選:
【管理】——》【使用者】--》【別名】
2進入後,點選使用者右邊【報警媒介】
3.新增
型別:wechat
收件人:LiuZongLiang #新增企業微信成員
當啟用時間
1-7,00:00-24:00
如果存在嚴重性則使用如下
v【未分類】
v【資訊】
v【警告】
v【一般嚴重】
v【嚴重】
v【災難】
點選【已啟用】
點選【新增】
配置三:動作配置
點選:
1.【動作】——》【名稱】——》【觸發器或者觸發名稱】——》[新增]——》【已啟用】
然後點選【操作】——》【新的】——》【操作型別】——》【傳送到使用者群組】——》【使用者】——>【僅送到所有】改為【wechat】——》點選[新增]——》【恢復操作】....——》【更新操作】——》【新增】
完成
七.QQ郵箱傳送告警
【7-1】開啟功能
1.點選【QQ】——》【郵箱】--》【設定】——》【賬戶設定】
開啟服務:
POP3/SMTP服務 (如何使用 Foxmail 等軟體收發郵件?) 已關閉 | 開啟
IMAP/SMTP服務 (什麼是 IMAP,它又是如何設定?) 已關閉 | 開啟
2.點選右邊開啟,然後會隨機生成一個一長串的密碼【figpneovepwwbecd】
【7-2】配置頁面
【提示:】打√號的為選擇方式
1.點選zabbix-web介面版
點選【管理】——》【建立媒體型別】——》
報警媒介型別
報警媒介型別選項
【名稱】:QQ郵箱 #自定義為QQ郵箱
【型別】:電子郵件 #型別選擇電子郵件
【SMTP伺服器】: smtp.qq.com #填寫smtp.qq.com
【SMTP伺服器埠】:465 #埠號:456
【SMTP HELO】:qq.com #qq.com
SMTP電郵: [email protected] #郵箱
安全連結 【無STARTTLS(純文字通訊協議擴充套件)】 [√]【SSL/TLS】 #安全連線選擇SSl和TLS,下面兩個SSL驗證對端,和SSL驗證主機打鉤
SSL驗證對端[√]
SSL驗證主機[√]
認證:【無】 [√]【使用者名稱和密碼】 #選擇使用者名稱密碼認證,下面資料使用者名稱和密碼
使用者名稱稱 [email protected]
密碼 figpneovepwwbecd
Message format
【HTML】【文字】
已啟用[√]
【新增】 【取消】
【新增完成後,右邊有個測試的按鈕,測試傳送郵件是否成功
如果沒有測試按鈕的,屬於zabbix版本過低,升級服務即可
【7-3】使用者配置
1.測試成功後——》點選【配置】——》【使用者】--》【Admin】——》右邊【報警媒介】
2.點選【新增】
報警媒介
型別: QQ郵箱
收件人 【[email protected]】 移除
新增
當啟用時 【1-7,00:00-24:00】
如果存在嚴重性則使用【】未分類
【】資訊
【√】警告
【√】一般嚴重
【√】嚴重
【√】災難
已啟用【√】
【新增】 【取消】
【8-4】動作配置
點選:
1.【動作】——》【名稱】——》【觸發器或者觸發名稱】——》[新增]——》【已啟用】
然後點選【操作】——》【新的】——》【操作型別】——》【傳送到使用者群組】——》【使用者】——>【僅送到所有】改為【wechat】——》點選[新增]——》【恢復操作】....——》【更新操作】——》【新增】
完成