在监控方面,Zabbix,夜莺,Prometheus,open-falcon;其中,Zabbix和Prometheus可以称得上监控界的老大哥,而Prometheus适用于监控容器,搭配k8s使用效果最佳,而基础,传统服务器架构监控,用Zabbix更适合一些;
本文章将带领大家部署一套可用于生产环境的zabbix 4.0监控系统,文章中尽最大可能避免大家踩坑!
系统 | Centos 7.9 |
base源 | 国内阿里云,epel,zabbix |
前端 | Apache |
Zabbix官方针对server端的前端提供两个方案,一个是Apache,一个是Nginx,本文使用Apache,如果需要使用Nginx,去查看Zabbix官方设置参数即可!
一,配置zabbix
1.设置Centos的yum源
##配置阿里云的base源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
##配置阿里云的epel扩展源
yum -y install epel-release
##配置Zabbix源
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
2.安装相应组件!
#安装MySQL,Apache,Zabbix-server相关
yum install mariadb-server mariadb httpd zabbix-server-mysql zabbix-web-mysql zabbix-agent
3.启动服务前最后的倔强
如果你是公网环境,请设置防火墙开放相应服务端口,MySQL(3306),Apache(80),zabbix(10050/10051);如果是内网环境,直接关闭防火墙即可;
##关闭防火墙
systemctl stop firewalld
##禁用防火墙
systemctl disable firewalld
##关闭selinux(临时关闭),如果你是购买的云服务器,默认就是关闭着的,而且云厂商也不允许我们开启
setenforce 0
##永久关闭
vim /etc/sysconfig/selinux
SELINUX=disabled
3.启动MySQL
##启动MySQL,并加入开机自启
systemctl start maraidb
systemctl enable mariadb
##登录数据库
mysql -u root -p #数据库暂未初始化,所以没有密码,直接回车即可!
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 38996
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
##创建zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zabbix'; 创建zabbix用户,供zabbix使用
mysql> grant all privileges on zabbix.* to zabbix@localhost; 授权zabbix用户本地登录权限,并设置密码
mysql> grant all on in *.* to root@localhost identified by 'root'; 等同于给root用户设置本地登录密码,此时,数据库无法远程登录!如果要远程登录,授权远程登录权限!
#可选步骤:授权root用户远程登录
mysql> grant all on in *.* to root@'%' identified by 'root';
mysql> flush privileges; #刷新一下,做完授权操作以后需要flush一下才会生效!
mysql> exit; 退出数据库!
Bye
#初始化zabbix数据库,导入zabbix的sql文件!
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
输入刚才设置的zabbix用户的密码,如果导入成功,不会出错任何内容,如果有错误,请检查密码是否正确,如果是其他报错,根据报错内容分析问题原因!
4.编辑zabbix的配置文件,加入数据库密码
cat /etc/zabbix/zabbix_server.conf |grep DBPassword=
DBPassword=zabbix
5.修改zabbix所采用的时区为上海
cat /etc/httpd/conf.d/zabbix.conf |grep date.timezone
php_value date.timezone Asia/Shanghai
6.接下来就可以启动相应的服务了
##启动服务
systemctl restart zabbix-server zabbix-agent httpd
##把zabbix-server zabbix-agent httpd加入到开机自启
systemctl enable zabbix-server zabbix-agent httpd
7.登录zabbix前端初始化zabbix
访问地址:http://ip/zabbix (Apache)
http://ip/ (Nginx)
整个过程,除了设置zabbix连接数据库的密码需要修改外,其他无需做任何修改,保持默认即可!
8.初始化完成,登录前端!
账户:Admin
密码:zabbix
登陆上以后,查看执行过的安装命令,我们不难发现这台机器上我们不仅安装了server,也安装了agent,本机安装agent是不需要修改agent的配置文件的,保持默认的即可!
9.添加客户端
##同样,关闭firewalld,selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
##导入zabbix rpm
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
##安装agent
yum -y install zabbix-agent
##加入开机自启
systemctl enable zabbix-agent
##修改agent配置文件
cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid #zabbix-agent的pid文件路径
LogFile=/var/log/zabbix/zabbix_agentd.log #zabbix-agnet的log位置
LogFileSize=0 #log文件大小限制,0表示不限制;
Server=127.0.0.1 #zabbix-server的地址
ServerActive=127.0.0.1 #zabbix-server的地址(主动上传)
Hostname=Zabbix server #本机在server端的名称,需要和添加主机时名称一致;
Include=/etc/zabbix/zabbix_agentd.d/*.conf
##基本agent端配置文件有用的信息都在上面了;
##启动zabbix-agent
systemctl start zabbix-agent
##注意查看log是否报错,如果有与主机无法通信,是正常的,因为我们还没有添加主机;
10.添加主机
配置-->主机-->创建主机 #默认前端是英文,从右上角有个小人的图标,点一下,语言选择中文即可!
注意添加模板,一般添加一个系统模板即可,因为我是linux主机,所以我只添加了一个Template OS Linux模板
注意,主机名称一定要和agent端配置文件写的Host name保持一致,否则添加不上!
11.添加完主机等一会儿(2~3分钟)状态正常
12.其实,这个模板是有内存/CPU/的监控图形状态的,我们添加一个磁盘的监控项
配置-->模板-->搜索Template OS Linux-->监控项-->创建监控项
到此,磁盘监控图形就添加结束了
二,邮件告警
1.安装sendmail mailx
##yum源使用我们之前添加过的即可
yum -y install sendmail mailx
##测试能否发送邮件
echo "11" |mail -s "22" xxxx@qq.com/xxxx@163.com
#查看邮箱能否收到邮件(到垃圾箱去找,把这个地址添加到白名单)
2.添加脚本
##查看zabbix配置文件有关脚本的设置
cat /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
##添加脚本
cat sendmail.sh
#!/bin/bash
to=$1
subject=$2
body=$3
FILE=/tmp/mail.tmp
echo "$body" > $FILE
dos2unix -k $FILE # 解决正文变成附件.bin问题,如果没有dos2unix就使用yum安装dos2unix
mail -s "$subject" "$to" < $FILE
chmod +x sendmail.sh
chown zabbix. sendmail.sh
3.添加管理媒介
4.创建动作
以下为上面的文字,直接Ctrl c/v即可
(1.)操作:
默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
(2)恢复操作:
默认标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
注意,操作和恢复操作都要添加动作!发送邮件给zabbix administrator组即可!
5.添加用户告警媒介
之前的告警不会触发邮件发送,从此时往后,告警都会触发发送邮件!
所有的邮件发送动作都会保留在动作日志中!
邮箱收到的邮件内容
至此,这篇文档就结束了,如果你部署过程中遇到任何问题,可以私信/评论 一起交流!
还是那句话:
⚠:我依旧是那个不懂技术的小白!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)