zabbix远程报警的实现方法:
微信公众号
钉钉机器人接口
短信机(硬件)
邮件
利用钉钉报警
群设置-添加智能助手-创建机器人-输入关键字
vim /token.sh
#!bin/bash
curl 'https://oapi.dingtalk.com/robot/send?access_token=678ada1d4e84b6f771a33052c6f23d3a6c3f0ed62911d15e6303020d92e9c2d9' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "我就是我, 是不一样的烟火-for zabbix
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源 解决方案 ( 基于 GPL V2 )
zabbix能监视各种网络参数,保证服务器系统的安全运营; 并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由两部分构成,zabbix server 与可选组件
zabbix agent zabbix server可以通过SNMP,zabbix agent,ping, 端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix的主要特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
Zabbix主要功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
进程构成:
abbix 安装完成后会产生 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、
zabbix_sender、zabbix_server,zabbix_java_gateway是可选,这个需要另外安装
zabbix_agentd:客户端守护进程,此进程收集客户端数据,例如 cpu负载、
内存、硬盘使用情况等
zabbix_get:zabbix 工具,单独使用的命令,通常用于排错
zabbix_sender:zabbix工具,用于发送数据给 server 或者 proxy ,
在脚本完成之后使用 sender 主动将数据提交
zabbix_server:zabbix 服务端守护进程,所有的数据都是被提交或主动提交到
zabbix_server 端
zabbix_proxy:zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,
它需要把收集到的数据提交/被提交到server里
zabbix_java_gateway:zabbix2.0之后引入的一个功能。顾名思义:Java网关,
类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,
而不能被动获取数据。它的数据最终会给到server或者proxy
硬件需求:
实验需求:
centos7
1、关闭防火墙 systemctl disable firewalld
&& systemctl stop firewalld
setenforce 0
2.vim /etc/selinux/config
enforcing 换为disabled
3.vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.66.140
NETMASK=255.255.255.0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
进行shell远程连接
cd /etc/yum.repos.d
mkdir back
mv * back
# 打开浏览器
# http://mirrors.163.com/.help/
curl http://mirrors.163.com/.help/CentOS7-Base-163.repo > 163.repo
yum -y install wget vim net-tools lrzsz
Zabbix 安装部署
一、初始化系统设置
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
ystemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SE
二、安装 LAMP 环境
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum makecache
yum -y install mariadb mariadb-server httpd php php-mysql
systemctl enable httpd #自启
systemctl restart httpd
systemctl enable mariadb
systemctl restart mariadb
mysql_secure_installation #初始化
回车-y-y-y-y-y-回车
mysql -uroot -p
123123
show databases;
exit
三、Zabbix 初始化
# 安装 Zabbix 软件包
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 初始化数据库
mysql -u root -p
CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
exit
# 还原数据库
cd /usr/share/doc/zabbix-server-mysql-3.2.11/
zcat create.sql.gz | mysql -uroot -p zabbix #解压、查看并还原
mysql -uroot -p
123123
use zabbix;
show tables;
# 启动 Zabbix 服务
vim /etc/zabbix/zabbix_server.conf
DBHost=localhost #81行
DBName=zabbix #91行
DBUser=zabbix #107行
DBPassword=zabbix #115行
systemctl start zabbix-server
systemctl enable zabbix-server
#时间同步:
yum -y install chrony
yum -y install ntpdate
ntpdate -u ntp1.aliyun.com
vim /etc/chrony.conf
server ntp1.aliyun.com iburst #3行
allow 192.168.66.0/24 #23行
local stratum 10 #26行 权重
systemctl restart chronyd
systemctl enable chronyd
# 编辑 zabbix 前端 php 配置
vim /etc/httpd/conf.d/zabbix.conf
Alias /zabbix /usr/share/zabbix #1行zabbix的默认网页目录
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai #取消注释并将时区换为亚洲上海
systemctl restart httpd
修改HTTPD的默认网页
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/usr/share/zabbix" #119行
ServerName zabbix.xinxianghongfu.com #95行取消注释并修改
systemctl restart httpd
Windows登录网页
# 默认用户密码
Admin
zabbix
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.66.140 #95行指定服务器端的地址
ServerActive=192.168.66.140 #136行指定服务器端地址
Hostname=192.168.66.140
systemctl enable zabbix-agent
systemctl start zabbix-agent
netstat -antp | grep 10050
在Windows的网页中
配置-主机-删除-创建主机-
字符集缺失
四、修改中文乱码
Win+R - fonts - 将想换的字体拖至桌面并上传至shell
cd /usr/share/zabbix/fonts/
将Windows桌面上的字体拖至shell
chmod a+x simsun.ttc #为字体增加权限
mkdir back
mv graphfont.ttf back/
mv simsun.ttc graphfont.ttf #将自己想用的字体名称换为默认的字体名称
#第二种方法
vim /usr/share/zabbix/include/defines.inc.php
修改 zabbix php 页面配置,将'graphfont' 修改为 msyh define('ZBX_GRAPH_FONT_NAME', 'msyh');
触发器:
当怎么怎么样就怎么怎么样 if xxx else xxx
删除指定服务器:
批量检测
实验准备:
三台虚拟机:
监控端:192.168.66.140 (按照以上实验步骤安装)
被监控端:192.168.66.11(启动httpd)
192.168.66.12
#通过服务器端查看得到zabbix下载网站
cat /etc/yum.repos.d/zabbix.repo
http://repo.zabbix.com/zabbix/3.2/rhel #zabbix网站
被监控端:(两台都要做)
yum -y install httpd
service httpd start
chkconfig httpd on
echo "123" >> /var/www/html/index.html #写入一个网页
curl localhost #测试查看
yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.66.140 #95行
ServerActive=192.168.66.140 #136行
Hostname=192.168.66.140 #147行当前服务器的地址或者是可解析的域名
service zabbix-agent start
chkconfig zabbix-agent on
netstat -antp | grep 10050
zabbix端配置自动发现规则
Windows端浏览器登录192.168.66.140
配置-动作-创建动作(左边选项选择自动发现)
配置-自动发现-创建发现规则
创建监控项-键值(选择
下载一个页面自动刷新插件开启定时自动刷新
报警页面响应:
停止httpd开启页面自动刷新
开启httpd
监控大屏
检测中-聚合图形-创建聚合图形
监控大屏-编辑聚合图形-更改
Zabbix 监控 Mysql 数据库
实验准备:
两台虚拟机
监控端:192.168.66.140
被监控端:192.168.66.11
服务器端:
上传zabbix软件包
yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.66.140 #95行
ServerActive=192.168.66.140 #136行
Hostname=192.168.66.140 #147行当前服务器的地址或者是可解析的域名
service zabbix-agent start
chkconfig zabbix-agent on
netstat -antp | grep 10050
yum -y install mysql mysql-server #安装mysql
service mysqld start
chkconfig mysqld on
mysqladmin -uroot password 123
cd /etc/zabbix/zabbix_agentd.d #存放了当前MySQL的配置文件
一、创建用户,赋予能够被 Zabbix 监控的权利
mysql> GRANT ALL ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
mysql> FLUSH PRIVILEGES;
#时间同步
yum -y install chrony #安装chrony
vim /etc/chrony.conf #修改配置文件
server 192.168.66.140 iburst #3行
service chronyd restart
二、配置用户连接信息
vim /etc/zabbix/.my.cnf
[client]
user=zabbix
password=zabbix
三、修改 userparameter_mysql.conf 文件
cd /etc/zabbix/zabbix_agentd.d
cp -a userparameter_mysql.conf userparameter_mysql.conf.back
vim userparameter_mysql.conf
修改两处HOME=/etc/zabbix #第5/7行
service zabbix-agent restart
四、Windows页面监控创建
配置-主机-创建新主机-主机-模板
Zabbix 监控 Nginx 性能
实验准备:
三台虚拟机:
监控端:192.168.66.140
被监控端:192.168.66.11
192.168.66.12
一、开启 Nginx 自带状态统计模块
yum -y install gcc* pcre pcre-devel zlib zlib-devel
useradd -s /sbin/nologin -M nginx
tar -xf nginx-1.13.8.tar.gz
cd nginx-1.13.8
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make
make install
vim /usr/local/nginx/conf/nginx.conf
#sendfile on; #注释此选项
location /ngx_status {
stub_status on;
}
/usr/local/nginx/sbin/nginx -t #检查配置文件语法是否正确
/usr/local/nginx/sbin/nginx #开启
#若开启时报错可能是80端口被http占用关闭http即可
#开启成功后访问
http://192.168.66.12/ngx_status
二、编写客户端脚本
vim check-nginx.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
# 检测 nginx 进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测 nginx 性能
function active {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1
三、在客户端添加自定义脚本规则
scp zabbix-agent-3.2.1-1.el6.x86_64.rpm root@192.168.66.12:/root/
yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agent.conf
Server=192.168.66.140 #95行
ServerActive=192.168.66.140 #136行
Hostname=192.168.66.12 #147行当前服务器的地址或者是可解析的域名
service zabbix-agent start
chkconfig zabbix-agent on
netstat -antp | grep 10050
mv check-nginx.sh /etc/zabbix/zabbix_agentd.d/
/bin/bash /etc/zabbix/zabbix_agentd.d/check-nginx.sh #脚本调用路径
vim /etc/zabbix/zabbix_agent.conf
UnsafeUserParameters=1 #284行
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/check-nginx.sh $1 #294行
cd /etc/zabbix/zabbix_agentd.d
chown zabbix:zabbix check-nginx.sh
service zabbix-agent restart
四、在服务器端使用 zabbix-get 测试脚本获取数据情况
yum -y install zabbix-get
zabbix_get -s 192.168.66.12 -k 'nginx.status[ping]'
zabbix_get -s 192.168.66.12 -k 'nginx.status[requests]'
五、配置 Nginx 服务器并添加 Nginx 监控模板
Zabbix 监控 Windows 主机
c:\bin\win64\zabbix_agentd.exe -c c:\conf\zabbix_agentd.win.conf -i
c:\bin\win64\zabbix_agentd.exe -c c:\conf\zabbix_agentd.win.conf -s
写模板
配置-模板-创建模板
Zabbix 钉钉报警联立
一、建立钉钉群组,添加钉钉机器人
二、配置告警脚本路径
#先在服务器端创建脚本
vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=758cefbfde6108910a29fad7e35edd9ff76255df5ac16871ad7cf03b2262a7fc' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles": [
"'"$1"'"
],
"isAtAll": false
}
}'
chmod a+x token.sh
./token.sh 18832262486 test 123123121321231321321321321111
#先在服务器端创建脚本
vim token.sh
#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=758cefbfde6108910a29fad7e35edd9ff76255df5ac16871ad7cf03b2262a7fc' \
-H 'Content-Type: application/json' \
-d '
{"msgtype": "text",
"text": {
"content": "'"$text"'"
},
"at":{
"atMobiles": [
三、配置执行文件权限与归属
chown zabbix.zabbix token.sh
chmod +x token.sh
vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
mv token.sh /usr/lib/zabbix/alertscripts
cd /usr/lib/zabbix/alertscripts/
四、设置前端创建脚本媒介
管理-报警媒介类型-创建媒体类型
五、创建动作
配置-动作-触发器-创建动作
# 标题改为:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
# 信息改为:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for 111
# 标题改为
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
# 信息改为
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for 111
管理-用户-Admin
关闭nginx测试
开启nginx测试
zabbix
zabbix-server:从 zabbix-agent 或者是 zabbix-proxy 获取数据,
并分析将数据写入至数据库
zabbix-agent:通过主动或者被动方案向 zabbix-proxy 或者是 zabbix-server 提供数据
zabbix-web:或通过数据库读取数据进行前端显示,主要就是 PHP 代码
Mariadb:提供数据存储支持
apache+php:给 zabbix-web 提供运行环境
zabbix-get:通过 c/s 简单命令工具,获取收集数据(一般用于测试)
关键性的概念
模板:定义好需要收集的数据以及触发器以及图形化
触发器:当到达怎么样的条件 会进行对应的步骤
聚合图形:一般用于监控大屏,将一些重要数据集中化展示
自动发现:根据定义规则进行匹配发现主机可以触发自动发现的动作,完成集中化监控配置
自定义阈值:采用 zabbix-agent 调用 自定义脚本的方式收集数据