zabbix介绍
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Windows主流平台
zabbix中文手册
zabbix 基础架构
zabbix-agent - zabbix server - mysql <<---zabbix web获取数据库数据展示
zabbix 安装 [zabbix3.4.10]
zabbix安装包可以在官方,镜像站获取.
zabbix安装包安装zabbix
#安装zabbix相关依赖
yum -y install httpd mariadb-server php php-mysql
#安装zabbix源:
rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
此时/etc/yum.repos.d/ 会多出一个zabbix源.
[root@localhost zabbix]# ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 410 Aug 28 2017 zabbix.repo #这是已经下好的源
#下载zabbix相关包
wget http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-server-mysql-3.4.10-1.el7.x86_64.rpm
wget http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-web-3.4.10-1.el7.noarch.rpm
wget http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-get-3.4.10-1.el7.x86_64.rpm
wget http://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10-1.el7.x86_64.rpm
#安装软件iksemel (不安装可能会报错)
#http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/iksemel-1.4-6.sdl7.x86_64.rpm
yum localinstall -y iksemel-1.4-6.el7.centos.x86_64.rpm
#下载完成后直接批量安装,并且会自动解决依赖关系:
yum -y localinstall zabbix-*
#推荐安装软件:
yum install -y sysstat htop vmstat nethogs iftop
zabbix数据库创建
systemctl start mariadb.service
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
flush privileges;
exit
导入数据[默认就在zabbix中]:
cd /usr/share/doc/zabbix-server-mysql-3.4.10
zcat create.sql.gz | mysql -uroot zabbix
进入数据库检查:
mysql
use zabbix;
show tables;
看到里面有表证明成功
zabbix server配置文件修改:
[root@localhost zabbix-server-mysql-3.4.10]# egrep -v "#|^$" /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
启动zabbix
检查相关服务:
systemctl start httpd zabbix-server zabbix-agent mariadb
systemctl is-active httpd zabbix-server zabbix-agent mariadb #出现 active 证明成功,没出现就是失败了
active
active
active
active
web页面初始化
浏览器访问: http://10.0.0.70/zabbix/
默认的用户名: Admin
密码为: zabbix
报错处理:
解决方法:
sed -i -e '/# php_value/s/#//;s/Europe/Riga/Asia/Shanghai/' /etc/httpd/conf.d/zabbix.conf
systemctl restart httpd zabbix-server.service
重启后时区问题就会被解决
这里是zabbix数据库的账号密码:
/etc/zabbix/web/zabbix.conf.php
安装完成:
默认登录账号密码 Admin zabbix
zabbix改为中文页面显示
效果:
解决字体乱码
yum install -y wqy-microhei-fonts
cp -a /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
systemctl restart zabbix-server.service
ZAbbix server is not running:
监控主机
监控自己:
编辑配置文件: egrep -v "#|^$" /etc/zabbix/zabbix_agentd.conf
改为如下:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1 ## 允许谁向我取值
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
监控一台linux-server
在被监控的linux系统中安装zabbix安装包:
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10-1.el7.x86_64.rpm
配置服务器地址:
vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.80
#保存退出 重启zabbix-agent
systemctl restart zabbix-agent.service
#注意,这里的 10.0.0.70 这可以写多个server,这是允许谁可以取数据,可以写多个IP,用 , 逗号 隔开
zabbix服务器添加agent:
优化告警信息:
告警信息都是英文,对中国人不友好,所以..改成国人能看懂的吧
使用python脚本告警
脚本内容:
1. 进入zabbix目录 /usr/lib/zabbix/alertscripts 创建 mail.py
2. 将下面代码写入到mail.py中,记得修改邮箱和授权码
#-------------------------------------------------------------
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_user = 'xxx@163.com' ##你的邮箱
mail_pass = 'xxxxx' ##你的邮箱授权码
def send_mail(to_list,subject,content):
me = "zabbix 监控告警平台"+"<"+mail_user+">"
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP("smtp.163.com", 25)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False
if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
#-------------------------------------------------------------
3. 保存退出,进入zabbix中配置以下脚本参数:
管理 - 报警媒介类型 :
名称: email
类型: 脚本
脚本名称: mail.py
脚本参数: {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
勾选: 已启用
zabbix 操作和恢复操作汉化:
动作-操作 :
默认标题: 告警信息: {TRIGGER.NAME}
消息内容:
告警状态:【{TRIGGER.STATUS}】
告警主机:【{HOST.NAME}】
主机地址:【{HOST.IP}】
告警时间:【{EVENT.DATE} {EVENT.TIME}】
告警等级:【{TRIGGER.SEVERITY}】
告警名称:【{TRIGGER.NAME}】
当前状态:【{ITEM.NAME}:{ITEM.KEY}={ITEM.VALUE}】
事件代码:【{EVENT.ID}】
动作-恢复操作 :
默认标题: 故障恢复: {TRIGGER.NAME}
消息内容
告警状态:【{TRIGGER.STATUS}】
告警主机:【{HOST.NAME}】
主机地址:【{HOST.IP}】
恢复时间:【{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}】
告警等级:【{TRIGGER.SEVERITY}】
告警名称:【{TRIGGER.NAME}】
当前状态:【{ITEM.NAME}:{ITEM.KEY}={ITEM.VALUE}】
事件代码:【{EVENT.ID}】
shell 脚本告警配置:
shell脚本发信:
cd /usr/lib/zabbix/alertscripts
touch mail.sh
写入如下内容:
#----------------------------------
#!/bin/bash
export LANG=zh_CN.UTF-8
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。
/bin/mail -s "$2" $1 < $FILE
#------------------------------------
#脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
测试告警:
问题表现形式:
{10.0.0.63:system.users.num.last(,10)}>3
恢复表达式:
{10.0.0.63:system.users.num.last(,10)}<3
尝试开启多个 xshell窗口 检查告警是否发送:
最终效果:
mail.rc邮件告警
vim /etc/mail.rc
尾部添加:
set bsdcompat
set sendcharsets=iso-8859-1,utf-8
set from=18816997176@163.com #邮箱
set smtp=smtp://smtp.163.com
set smtp-auth-user=18816997176@163.com #账号
set smtp-auth-password=x83ue244 #授权密码
set smtp-auth=login
测试发信:
echo "this is test $(hostname -I)" | mail -s 'chenleilei.net test' 370460370@qq.com
常用软件安装
yum install -y htop uptime iftop iostat vmstat netstat nethogs
zabbix-get 取值
在没有配置前,可以通过zabbix-get来取值测试,取值成功即代表配置也没啥问题
zabbix-get安装: yum install -y zabbix-get
[root@localhost alertscripts]# zabbix_get -s 10.0.0.63 -k 'system.uptime'
19300
zabbix内置监控项
通过zabbix内置监控项可以获取绝大多数想要的数据
zabbix_agentd -p 拿到数据后,使用:
zabbix_get -s 10.0.0.63 -k "system.uptime"
[root@localhost ~]# zabbix_get -s 10.0.0.63 -k "system.uptime"
25906 <----获取到的系统启动时间值.[默认单位:秒]
统计内置监控项:
[root@localhost ~]# zabbix_agentd -p | grep -o '^.*[[tsdum]|' |wc -l
76