安装数据库
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql zabbix-server zabbix-agent mariadb-server -y
mysql_secure_installation
systemctl start mariadb
systemctl enable mariadb
mysql –uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by '123456';
导入储室架构和数据
cd /usr/share/doc/zabbix-server-mysql-3.4.15/
zcat create.sql.gz | mysql -uroot zabbix -p123456
配置zabbix-server
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost(指定的ip,本机为内网。其他为公网)
DBName=zabbix
DBUser=zabbix
DBPassword=123456 (zabbix数据库密码一致)
cat /etc/zabbix/zabbix_server.conf | grep -v ^#| grep -v ^$ (过滤#与空行的)
systemctl start zabbix-server
systemctl enable zabbix-server
更改时区
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
systemctl start httpd
systemctl enable httpd
防火墙(在官网设置,在主机内可跳过)
firewall-cmd --permannet -add-service=http(开启http端口,可直接写http)
firewall-cmd --reload
firewall-cmd --list-all
vi /etc/chrony.conf
server cn.ntp.org.cn iburst(注释其他4个时间server)
systemctl start chronyd
systemctl enable chronyd
timedatectl(查看是否同步,同步为yes)
访问网站
默认用户名:Admin
默认密码 :zabbix
二、Web乱码问题,用winscp上传本地电脑C:\Windows\Fonts的 simkai.ttf
find / -name graphfont.ttf 直接找到zabbix(linux)字体文件夹
cd /usr/share/zabbix/fonts/
rm -f /etc/alternatives/zabbix-web-font
ln -s /usr/share/zabbix/fonts/simkai.ttf /etc/alternatives/zabbix-web-font
systemctl restart zabbix-server
安装zabbix_agent客户端
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm
yum install -yzabbix-agent zabbix-sender
设置映射
vi /etc/hosts #写入公网和对应的虚拟机名字
服务端公网IP server
管理端公网ip 214agent
vi/etc/zabbix/zabbix_agentd.conf
Server=$zabbix_server_ip(zabbix_server服务端的内网ip,有些会报错)
firewall-cmd –permanent–add-port=10050/tcp
firewall-cmd –reload
添加linux主机
添加群组(群组中模板可共用,就不用重新添加监控项)
我自己创建的模板
成功为绿色
添加监控项
https://www.zabbix.com/documentation/4.2/manual/config/items/itemtypes/zabbix_agent(键值参考)
键值使用可参考zabbix官网
传参
在agent写入绝对路径的脚本
UserParameter=Meminfo[*],/usr/bin/cat /proc/meminfo|grep $1|awk '{print $$2}'
在server中用zabbix_get命令执行测试,命令可运行,无报错,查看结果正常
在web界面找到写入参数的agent的主机,去创建监控项
写入想查的项 例如:Meminfo[Buffers] Meminfo[MemFree]等。
查出来是没有单位的
find / -name func.inc.php
cat /usr/share/zabbix/include/func.inc.php |grep blackList
在$ blackList中加入单位,注意格式逗号隔开
邮件报警系统
流程:触发器----动作----报警媒介
创建触发器
创建报警媒介(我用的163这个是配置发送邮箱)
再配置接收人的邮箱
创建动作
这个在网上截取的,只改前面的正文
“操作”里的
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
恢复操作
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}
恢复项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
添加完成后,开始测试,写入代码在agent中
dd if=/dev/zero of=/tmp/zabbix bs=1G count=25
/dev/zero—传字符设备
/tmp/zabbix:到这个临时文件
bs=1G:字符产生的每个文件大小为1G
count=25:数量25个
删除:
直接删除文件
rm –rf /tmp/zabbix
若没有恢复就kill掉进程
查看结果
企业微信报警(要自己去注册,比较简单 地址:https://work.weixin.qq.com)
配置环境
创建应用:1、上传一张图片 2、写入应用名称
记住3个值
Corpid(企业ID) :ww5ee*************
Secret :eHn5mdONdjckh**********************
Agentid :1000002
在server修改拥有人与拥有组
chown -R zabbix:zabbix/usr/lib/zabbix/alertscripts/
在网上找的python脚本写入alertscripts(.py结尾,如wechat.py)
脚本内容(修改圈起部分)
#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
import requests,sys,json
import urllib3
urllib3.disable_warnings()
reload(sys)
sys.setdefaultencoding('utf-8')
defGetTokenFromServer(Corpid,Secret):
Url ="https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid":Corpid,
"corpsecret":Secret
}
r = requests.get(url=Url,params=Data,verify=False)
print(r.json())
if r.json()['errcode'] != 0:
return False
else:
Token = r.json()['access_token']
file =open('/tmp/zabbix_wechat_config.json', 'w')
file.write(r.text)
file.close()
return Token
defSendMessage(User,Agentid,Subject,Content):
try:
file =open('/tmp/zabbix_wechat_config.json', 'r')
Token = json.load(file)['access_token']
file.close()
except:
Token = GetTokenFromServer(Corpid,Secret)
n = 0
Url ="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" %Token
Data = {
"touser": User, #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
#"totag": Tagid, #企业号中的标签id,群发使用(推荐)
#"toparty": Partyid, #企业号中的部门id,群发时使用。
"msgtype":"text", #消息类型。
"agentid": Agentid, #企业号中的应用id。
"text": {
"content": Subject + '\n'+ Content
},
"safe": "0"
}
r =requests.post(url=Url,data=json.dumps(Data),verify=False)
while r.json()['errcode'] != 0 and n <4:
n+=1
Token = GetTokenFromServer(Corpid,Secret)
if Token:
Url ="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" %Token
r =requests.post(url=Url,data=json.dumps(Data),verify=False)
print(r.json())
return r.json()
if __name__ == '__main__':
User = sys.argv[1] # zabbix传过来的第一个参数
Subject = str(sys.argv[2]) # zabbix传过来的第二个参数
Content = str(sys.argv[3]) # zabbix传过来的第三个参数
Corpid ="ww5ee**************" #CorpID是企业号的标识
Secret = "eHn5mdONdjc******************" # Secret是管理组凭证密钥
#Tagid = "1" #通讯录标签ID
Agentid ="1000002" #应用ID
Partyid = "2" #部门ID
Status =SendMessage(User,Agentid,Subject,Content)
print Status
if __name__ =='__main__':
User = sys.argv[1] # zabbix传过来的第一个参数
Subject = str(sys.argv[2]) # zabbix传过来的第二个参数
Content = str(sys.argv[3]) # zabbix传过来的第三个参数
Corpid = "ww5ee8*************" #CorpID是企业号的标识
Secret = "eHn5mdONdj*******************" # Secret是管理组凭证密钥
#Tagid = "1" #通讯录标签ID
Agentid = "1000002" #应用ID
#Partyid = "1" #部门ID(点击 部门后面的省略号可查看)
Status =SendMessage(User,Agentid,Subject,Content)
print Status
下载simplejson压缩包
可以在网址搜索包名 https://pypi.org/
解压:tar -zxvf
simplejson-3.17.0.tar.gz
进目录安装
cd simplejson-3.17.0
python setup.py build
python setup.py install
安装request,否则运行会报错,还要安装额外的两个工具
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz
tar -xvf setuptools-12.0.3.tar.gz
cd setuptools-12.0.3
python setup.py install
wget https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a145f557cffaffc1bf/pip-19.3.1.tar.gz
tar -xvf pip-19.3.1.tar.gz
cd pip-19.3.1
python setup.py install
pip install requests
运行测试
/usr/lib/zabbix/alertscripts/wechat.py chenyuexiang zabbix "test"
测试成功
开始配置触发器,和邮件配置差不多
创建用户
创建动作
创建报警媒介
写入宏定义语言:
{ALERT.SENDTO} (收件人)
{ALERT.SUBJECT} (标题)
{ALERT.MESSAGE} (内容)
利用ping提高入口流量
ping -n 1000 -l 65500 agetn_ip