zabbix监控部署及其报警机制
- 一、zabbix简介
-
- 1、关于zabbix
- 2、zabbix主要功能
- 二、部署LNMP zabbix
-
- 1、LNMP安装环境
-
- 1)安装nginx
- 2)安装mysql 5.7
- 3)安装php 7.2
- 4)配置nginx支持php
- 5)配置php
- 6)测试首页
- 7)数据库授权
- 8)解决本地无法登录的问题(连接成功,可忽略)
- 2、部署zabbix Server
-
- 1)安装zabbix导入数据库脚本
- 2)修改zabbix配置文件
- 3)授权和开放服务
- 4)打开浏览器验证
- 3.配置代理端—即被控服务器
-
- 1)安装zabbix存储库与agent代理服务及修改代理配置文件
- 2)重启代理服务
- 三、配置邮件报警功能
-
- 1.获取邮箱客户端授权码
- 2.安装并配置邮箱发送功能
- 3试发信正常
- 4.编写邮件脚本
- 5、在服务器WEB页面上配置
-
- 1)定义报警媒体类型
- 2)指定用户
- 3)配置监控端
- 4)配置触发动作和条件
- 5)重启zabbix在监控端停止服务sshd服务验证
一、zabbix简介
1、关于zabbix
Zabbix 是企业级分布式开源监控解决方案。
Zabbix 该软件可以监控许多网络参数和服务器的健康和完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 提供基于存储的数据的优秀报表和数据可视化功能。这些功能使 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。zabbix由两部分组成,zabbix server与可选组件zabbix agent。Zabbix所有报表、统计数据和配置参数都可以基于 Web 访问前端页面。基于 Web 前端页面确保您可以访问您监控的网络状态和服务器健康状况。适当配置后,Zabbix 可以在监控 IT 在基础设施方面发挥着重要作用。同样适用于服务器少的小组织和服务器多的大企业。
Zabbix 由 Alexei Vladishev 目前成立的公司—— Zabbix SIA 积极开发、更新和维护, 并为用户提供技术支持服务。
Zabbix 一个高度成熟完善的网络监控解决方案,一个软件包包包含多种功能。 所有的监控和协议都离不开SNMP协议。
2、zabbix主要功能
- 可用性和性能检查;
- 支持 SNMP(包括主动轮询和被动捕获),IPMI、JMX、VMware 监控;
- 定制检查;
- 根据自定义时间间隔收集所需数据;
- 通过 Server/Proxy 和 Agents 执行数据采集。
- 您可以参考后端数据库中非常灵活的报警阈值,即触发器
- 报警通知可根据递增计划、接收者、媒体类型自定义发送;
- 使用宏变量可以使警告通知更有效、更有用;
- 自动操作包括远程执行命令。
- 使用内置图形功能实时绘制监控项。
- Zabbix可以追踪模拟鼠标在 Web 查看网站上的点击操作 Web 网站的功能和响应时间。
- 可将多个监控项组合到单个视图中,创建自定义图表;
- 网络拓扑图;
- 自定义聚合图形和幻灯片演示以仪表盘风格展示;
- 报表;
- 监控资源的更高层次展示视图(业务视图)。
- 存储在数据库中的数据;
- 历史配置;
- 内置数据管理机制(housekeeping)。
- 主机添加监控设备;
- 一旦主机添加到数据库中,将收集数据进行监控;
- 监控设备使用模板。
- 分组检查模板;
- 模板可以关联模板,继承相关模板的属性。
- 网络设备自动发现;
- Zabbix Agent 发现设备后自动注册;
- 自动发现文件系统、网络接口和 SNMP OIDs 值。
- 基于 PHP 的 Web 前端;
- 任何地方都可以访问;
- 您可以定制自己的操作方法;
- 您可以通过审计日志查看您的操作。
- Zabbix API 为 Zabbix 批量操作、第三方软件集成等用途提供可编程接口。
- 安全用户身份验证;
- 指定用户只能在指定权限范围内查看视图。
- 部署在被监控对象上;
- 支持 Linux 和 Windows ;
- 为了更好的性能和更少的内存占用,使用 C 语言编写;
- 便于移植。
- 使用 Zabbix Proxy 可轻松实现分布式远程监控。
二、部署LNMP zabbix
环境搭建
主机 | IP地址 | 软件 |
---|---|---|
server | 192.168.140.11 | LNMP zabbix |
client(node) | 192.168.140.12 | zabbix |
server:192.168.140.11 这个部署LNMP zabbix除了配置代理端,它们都部署在服务器上
1、LNMP安装环境
然后修改主机名称关闭防火墙及安全机制
hostnamectl set-hostname server
su
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
1)安装nginx
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm //从官网上下载nginx的rpm包
vim /etc/yum.repos.d/nginx.repo //手动创建nginx yum安装源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum clean all
yum list
其中baseul=http://nginx.org/packages/OS/OSRELEASE/$basearch/,把”OS”替换成” thel”或” centos”,把”OSRELEASE”替换成”6”或”7”
安装并启动nginx
yum install nginx -y
systemctl start nginx
systemctl enable nginx
netstat -natp | grep nginx
//如果企业中开着软件防火墙,可以使用下面两条命令允许使用nginx通过
firewall-cmd --permanent --add-service=http --zone=public
firewall-cmd --reload
真机上访问nginx主页
http://192.168.140.11
2)安装mysql 5.7
yum install -y mariadb-server mariadb
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
mysql -uroot -p
3)安装php 7.2
//使用rpm或yum下载epel源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
或
yum install epel-release -y
//yum仓库建立
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #建立yum的webtatic源
//等待时间取决于网络
yum install -y php72w php72w-devel php72w-fpm php72w-gd php72w-mbstring php72w-mysql
----------------
php72w是本身服务包;
php72w-devel用于构建PHP扩展所需的文件;
php72w-fpm是PHP FastCGI进程管理器;
php72w-gd是PHP应用程序的模块,用于使用gd图形库;
php72w-mbstring模块是需要多字节字符串处理的PHP应用程序的模块;
php72w-mysql是数据库mysql驱动模块,在mysql的官网下载的
————————————————
php -v //查看php版本
4)配置nginx支持php
修改php-fpm配置文件
vim /etc/php-fpm.d/www.conf #修改php-fpm配置文件,把apache改为nginx
//8 user = nginx //属主
//10 group = nginx //属组
vim /etc/nginx/conf.d/default.conf #配置location,在index中添加index.php。以支持index.php的首页
/10 index index.php index.html index.htm;
//配置php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改
/30~36
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
//把fastcgi_param中的/scripts改为$document_root。root是配置php程序放置的根目录。
5)配置php
vim /etc/php.ini #修改PHP配置文件 /202 short_open_tag = On /支持php短
标签 /359 expose php = Off /隐藏php版本 //以下为zabbix优化配置要求 /368 max_execution_time = 300 //执行时间 /378 max_input_time = 300 //接收数据等待时间 /389 memory_limit = 128M /每个脚本占用内存 /656 post_max_size = 16M //POST数据大小 /799 upload_max_filesize = 2M //上传文件大小 /800 always_populate_raw_post_data = -1 //需要添加可以用$HTTP_RAW POST_DATA接收post raw data(原始未处理数据) /877 date.timezone = Asia/Shanghai //时区 systemctl start php-fpm systemctl enable php-fpm netstat -natp | grep 9000 systemctl restart nginx
6)测试首页
vim /usr/share/nginx/html/info.php
<?php
phpinfo();
?>
浏览器端访问
http://192.168.140.11/info.php
测试连接数据库
vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','root','123123');
if ($link) echo "连接成功!!!";
else echo "连接失败!!!";
?>
注: mysql_connect扩展自PHP 5.5.0起已废弃,改用mysqli或pdo_mysql
浏览器端再访问或者刷新
http://192.168.140.11/info.php
连接数据库成功
7)数据库授权
mysql -u root -p
CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';
flush privileges;
collate的作用: 对于mysql中那些字符类型的列,如VARCHAR,CHAR,TEXT类型的列,都需要有一个COLLATE类型来告知mysql如何对该列进行排序和比较。COLLATE会影响到WHERE条件中大于小于号筛选出来的结果,会影响DISTINCT、GROUP BY、HAVING语句的查询结果。另外,mysql建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和COLLATE有关。
vim /usr/share/nginx/html/info.php
<?php
$link=mysqli_connect('127.0.0.1','zabbix' , 'admin123');
if ($link) echo "Zabbix数据库连接成功!";
else echo "Zabbix数据库连接失败!";
?>
浏览器端再访问或者刷新
http://192.168.140.11/info.php
8)解决本地无法登录问题(连接成功,可忽略)
mysql -u root -p
select user,host from mysql.user; //有空用户名称占用导致本地无法登录远程可登录
drop user ''@localhost;
drop user ''@server;
flush privileges;
浏览器端访问
http://192.168.2.6/info.php
2、部署zabbix Server
1)安装zabbix及导入数据库脚本
zabbix官网https://www.zabbix.com/download
//安装一个zabbix仓库;
rpm -i https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm //网络问题,需要多安装几次
//安装zabbix server,Web前端,agent
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
//导入数据库脚本
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix //生成数据库文件,注意密码不要输成root的
mysql -uzabbix -p
use zabbix;
show tables;
2)修改zabbix配置文件
vim /etc/zabbix/zabbix_server.conf
38:LogFile=/var/log/zabbix/zabbix_server.log //日志文件位置
49:LogFileSize=0 //日志文件大小;设置为0,不限制日志文件大小
72:PidFile=/var/run/zabbix/zabbix_server.pid //pid文件位置
82:SocketDir=/var/run/zabbix //套接字文件位置;套接字是计算机之间进行通信的一种约定或一种方式
91 DBHost=localhost //注释去掉,连接本地数据库
101:DBName=zabbix //数据库名
117:DBUser=zabbix //数据库用户名
124:DBPassword=admin123 //修改本行,登录数据库密码
356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log //采用的网络管理协议SNMP
473:Timeout=4 //超时时间
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts //脚本文件
529:ExternalScripts=/usr/lib/zabbix/externalscripts //扩展脚本文件
565:LogSlowQueries=3000 //慢日志时间,超过3000秒记录
grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf
-------------------可选择操作-------
vim /usr/share/zabbix/include/defines.inc.php //修正图表中文乱码
:%s /graphfont/kaiti/g //从微软系统下复制相应的字体文件到/usr/share/zabbix/fonts目录中注意字体名称要对应配置文件,且注意大小写cp STKAITI.TTF /usr/share/zabbix/fonts/
3)赋权及开启服务
systemctl stop firewalld
iptables -F
cp -r /usr/share/zabbix/ /usr/share/nginx/html/
chown -R zabbix:zabbix /etc/zabbix
chown -R zabbix:zabbix /usr/share/nginx/
chown -R zabbix:zabbix /usr/lib/zabbix/
//处理指定目录以及其子目录下的所有文件'
chmod -R 755 /etc/zabbix/web/
chmod -R 777 /var/lib/php/session/
//递归修改文件权限
systemctl start zabbix-server.service
systemctl enable zabbix-server.service
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -natp | grep 10051 #server的端口
netstat -natp | grep 10050 #agent的端口
systemctl restart php-fpm.service
systemctl restart nginx
4)打开浏览器验证
http://192.168.140.11/zabbix
cd /etc/zabbix/web/
ls
把zabbix.conf.php拖进来
ls
chmod +x zabbix.conf.php
ls
systemctl restart zabbix-server.service
打开浏览器
http://192.168.140.11/zabbix
设置为中文界面
3、配置代理端----就是被控服务器
1)安装zabbix存储库与agent代理服务及修改代理配置文件
client:192.168.140.12 如果服务器也需要被自己监控也需要安装–zabbix-agent
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm //安装zabbix源
yum install -y zabbix-agent //安装zabbix代理端,即被监控端
vim /etc/zabbix/zabbix_agentd.conf
13:PidFile=/var/run/zabbix/zabbix_agentd.pid //pid文件位置
32:LogFile=/var/log/zabbix/zabbix_agentd.log //日志文件位置
43:LogFilesize=0 //日志文件大小;设置为0,不限制日志文件大小
98:Server=192.168.140.11 //指向监控服务器
139:ServerActive=192.168.140.11 //指向监控服务器
150:Hostname=client //名称
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf //包含zabbix_agentd.d目录下的所有.conf结尾的配置文件
grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
2)重启代理服务
systemctl stop firewalld
setenforce 0
systemctl enable zabbix-agent.service
systemctl restart zabbix-agent.service
netstat -anpt | grep zabbix //监听在10050端口
三、配置邮件报警功能
1、获取邮箱的客户端授权码
2、安装并配置邮箱发送功能
server:192.168.140.11
yum install -y mailx
vim /etc/mail.rc //注意网易邮箱需要开启客户端授权码进行第三方登录
----文件未尾新增---
set from=1418183423@qq.com
set smtp=1418183423.qq.com
set smtp-auth-user=1418183423@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
3、测试发信正常
echo "hello world" | mail -s "zb-test" 1418183423@qq.com
4、编写发邮件脚本
cd /usr/lib/zabbix/alertscripts
vim mailx.sh
#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
touch /tmp/mailx.log
chown -R zabbix:zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
./mailx.sh 1418183423@qq.com "主题" "内容”//测试发邮件脚本是否可以正常工作
进入邮箱刷新查看
5、在服务器WEB页面上配置
1)定义报警媒体类型
管理-》报警媒体类型-》创建媒体类型-》
名称:Mail-Test
类型:脚本
脚本名称:mailx.sh
脚本参数://新增以下三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
2)指定用户
管理-用户-点击Admin-报警媒介:
类型:Mail-Test //调用上面的脚本
收件人:1418183423@qq.com
其它默认-保存
3)配置被监控端
配置--->主机--->创建主机
主机:
主机名称:client
群组:linux servers
agent代理程序的接口:192.168.140.12
模板:
链接指示器:Template App SSH Service
4)配置触发动作和条件
配置-》动作-》创建动作-》删除默认标签,修改触发条件
名称:Mailx
条件A主机群组=Linux servers
操作-》如下配置
默认操作步骤持续时间60
默认接收人: {
TRIGGER.STATUS}:{
TRIGGER.NAME}
默认信息:
告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{
TRIGGER.SEVERITY)
告警信息:{
TRIGGER.NAME}:{ITEM.VALUE}
事件ID:{EVENT.ID}
操作细节:-》
操作类型:发送消息
发送到用户: Admin (zabbix Administrator)
仅送到:Mail-Test //一定要配置否则邮件发送不成功
恢复操作:{
TRIGGER.STATUS}:{
TRIGGER.NAME}
恢复主机:{HOST.NAME}
恢复IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{
TRIGGER.SEVERITY}
恢复信息:{
TRIGGER.NAME}:{ITEM.VALUE}
恢复ID:{EVENT.ID}
操作细节:
操作类型:发送消息
发送到用户: Admin (Zabbix Administrator)
仅送到:Mail-Test //一定要配置否则邮件发送不成功
5)重启zabbix服务,并在被监控端停止sshd服务验证
systemctl restart zabbix-server
systemctl restart zabbix-agent.service
停止监控的sshd服务,验证是否发送服务down的邮件
systemctl restart zabbix-agent.service
systemctl stop sshd
systemctl restart sshd