CentOS7+Zabbix4.2监控环境搭建

[此文转载自]https://blog.51cto.com/13659253/2165146   

在原基础上使用最新zabbix4.2。https://www.zabbix.com/download

目录

实验环境

Zabbix服务端环境部署

1、部署LAMP环境

2、部署Zabbix Server

 2.1解决图形中的方框乱码

zabbix被监控端代理设置

WEB管理界面添加被管理主机

配置邮箱报警功能

1、配置自动邮箱发送

2、编写邮件发送脚本

3、配置服务监控自动触发邮件发送脚本

4、在被监控主机模拟故障

 企业微信发送警告信息

1、注册企业微信

2、创建群组并获取部门ID

3、创建应用:

4、配置微信报警脚本

5、配置zabbix报警媒介


Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、nagios类似,提供分布式监控以及集中的web管理界面。zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp等通用协议的监控,能够灵活利用可定制警告机制,允许用户对事件发送基于E-mail的警告,保证相关人员可以快速解决。还能够利用存储数据提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。

Zabbix通过C/S模式采集数据通过B/S模式在web端展示和配置,通过SNMP协议传输,而被监控对象只需要支持SNMP协议或者运行Zabbix——agents代理程序即可。服务端监听端口为10051,而被监控端即Zabbix——agents代理程序监控10050端口。

本篇基于centos7.3版本安装zabbix4.2实现对centos7.3主机的监控管理以及警告机制邮箱发送的搭建。

实验环境

主机 操作系统 IP地址 主要软件
zabbix服务端 centos7.3 x86_64 192.168.8.80 zabbix-server4.2
windows被监控端 win7 64位 192.168.8.78  

Zabbix服务端环境部署

1、部署LAMP环境

  • 由于zabbix提供集中的web监控管理界面,因此服务在web界面的呈现需要LAMP架构支持。

# yum install -y httpd mariadb-server mariadb php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash

如果出现中文乱码,进行如下操作。

#  localectl set-locale LANG=zh_CN
*此命令相当于修改locale.conf
* # vi /etc/locale.conf
* LANG="zh_CN"
* 保存
重启CentOS,用date查看是否正确。

  • 编辑配置httpd

vim /etc/httpd/conf/httpd.conf

ServerName www.yun.com

...

DirectoryIndex index.html index.php   //添加首页支持格式
  • 编辑配置php,配置中国时区

vim /etc/php.ini

date.timezone = PRC    //PRC为中国时区
  • 启动httpd,mysql

systemctl stop firewalld.service
setenforce 0

systemctl start httpd.service
systemctl start mariadb.service

netstat -ntap | egrep '(80|3306)'   

---------如netstat出现未找到命令,则需要安装net工具包-----

yum install net-tools

--------------------------------------------------------------------------------

 

  • 启动msyql后执行初始安全设置。

mysql_secure_installation  
mysql -u root -p

Mariadb[None]>CREATE DATABASE zabbix character set utf8 collate utf8_bin;    
Mariadb[None]>GRANT all  ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';    //创建zabbix数据库,并设定用户密码
Mariadb[None]>flush privileges;
Mariadb[None]>quit;
  • 数据库设置完成,检测php与数据库连通情况

vim /var/www/html/index.php

<?php
$link=mysql_connect('192.168.144.113','zabbix','zabbix');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>

Zabbix4.0监控环境搭建实现7x24监控服务

出现上图则PHP连通数据库完成。

为保证zabbix用户也可以登录数据库,若出现本地无法登录情况,解决方式如下。
使用root账户登录数据库。
select user,host from mysql.user;   //有空用户名称占用导致本地无法登录远程可登录
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
|        | cacti     |
| root   | cacti     |
|        | localhost |
| root   | localhost |
+--------+-----------+

drop user ''@localhost;  //删除空用户

drop user ''@cacti;

flush privileges;

2、部署Zabbix Server

yum install php-bcmath php-mbstring -y   //安装php支持zabbix组件

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-2.el7.noarch.rpm  //会自动生成yum源文件,保证系统可以上网

yum clean all  //清理缓存

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent   //安装zabbix组件

注释:如果此处提示三个组件下载不下来,没有合适的镜像的话,这是由于网络问题,下载支持续传,可进行n次尝试直至安装完毕。

cd /usr/share/doc/zabbix-server-mysql-4.X.X/       //到安装后的zabbix-server-mysql-4.X.X目录底下,XX代表安装的版本号

zcat  create.sql.gz | mysql -uzabbix -p zabbix //生成数据库文件,注意密码不要输成root的,而是之前的zabbix

如果出现ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES),使用root账号登陆数据库,删除空用户。
为保证zabbix用户也可以登录数据库,若出现本地无法登录情况,解决方式如下。
使用root账户登录数据库。
select user,host from mysql.user;   //有空用户名称占用导致本地无法登录远程可登录
+--------+-----------+
| user   | host      |
+--------+-----------+
| zabbix | %         |
| root   | 127.0.0.1 |
| root   | ::1       |
|        | cacti     |
| root   | cacti     |
|        | localhost |
| root   | localhost |
+--------+-----------+

drop user ''@localhost;  //删除空用户

drop user ''@cacti;

flush privileges;
  • 查看、修改zabbix配置文件

grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf

38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix        //访问数据库名称
117:DBUser=zabbix        //zabbix访问数据库用户
125:DBPassword=zabbix //配置文件中只需修改本行,zabbix访问数据库密码
347:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
465:Timeout=4
507:AlertScriptsPath=/usr/lib/zabbix/alertscripts
517:ExternalScripts=/usr/lib/zabbix/externalscripts
553:LogSlowQueries=3000
  • 修改zabbix在httpd中的时区

vim /etc/httpd/conf.d/zabbix.conf

如果这个目录下没有zabbix.conf 需要cp /usr/share/doc/zabbix-web-3.4.15/httpd22-example.conf  /etc/httpd/conf.d/

然后vim /etc/httpd/conf.d/httpd22-example.conf

php_value date.timezone Asia/Shanghai

 2.1解决图形中的方框乱码

  • 为防止web界面中文乱码现象,需要将相应字体文件复制,使zabbix识别

     参考链接https://blog.csdn.net/xiaolinyouni/article/details/102840203

  • zabbix基本配置完成,启动服务,实现web界面安装

systemctl enable zabbix-server
systemctl start zabbix-server
netstat -anpt | grep zabbix //监听在10051端口上
systemctl restart httpd.service

  • web界面安装访问。

http://192.168.144.113/zabbix/

web界面安装流程如下:

Zabbix4.0监控环境搭建实现7x24监控服务

Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务

Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务

zabbix被监控端代理设置

  • 安装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 -y zabbix-agent

  • 编辑修改配置文件

grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf
vim /etc/zabbix/zabbix_agentd.conf

13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.144.113         //zabbix服务器地址
139:ServerActive=192.168.144.113   //活跃服务器地址
150:Hostname=test
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
  • 关闭防火墙,启动服务

systemctl stop firewalld.service
setenforce 0
systemctl enable zabbix-agent.service
systemctl restart zabbix-agent.service

netstat -anpt | grep zabbix //监听在10050端口

WEB管理界面添加被管理主机

Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务

配置邮箱报警功能

1、配置自动邮箱发送

yum install mailx -y
vim /etc/mail.rc 编辑mailx配置文件

set [email protected]
set smtp=smtp.qq.com
set [email protected]
set smtp-auth-password=邮箱密码
set smtp-auth=login

Zabbix4.0监控环境搭建实现7x24监控服务

  • 测试邮箱软件是否可用

echo "hello world" | mail -s "testmail" [email protected] //测试发信正常

2、编写邮件发送脚本

  • 邮件发送触发脚本一定要写在zabbix指定的alterscripts目录下,后面直接指定脚本名称即可触发。

cd /usr/lib/zabbix/alertscripts

vi 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 [email protected] "主题" "内容"

3、配置服务监控自动触发邮件发送脚本

Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务

Zabbix4.0监控环境搭建实现7x24监控服务
Zabbix4.0监控环境搭建实现7x24监控服务

4、在被监控主机模拟故障

  • 关闭被监控主机的httpd服务,验证邮箱接收情况。

Zabbix4.0监控环境搭建实现7x24监控服务

Zabbix4.0监控环境搭建实现7x24监控服务

 企业微信发送警告信息

1、注册企业微信

到https://work.weixin.qq.com/申请注册,可不认证即可实现推送消息的功能。

2、创建群组并获取部门ID

3、创建应用:

 

点击“我的企业”获取Corpid(企业ID)

4、配置微信报警脚本

下面请在Zabbix端进行操作:

1. 在server端创建自定义报警脚本(修改红色字体部分为自己的信息)。
 

#cd /usr/lib/zabbix/alertscripts
#vim wechat.sh

#! /bin/bash
#set -x
CorpID="***************"                   #我的企业下面的CorpID
Secret="*******************************"            #创建的应用那有Secret
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CorpID&corpsecret=$Secret"
Token=$(/usr/bin/curl -s -G $GURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
function body(){
        local int agentid=1000002   #改为AgentId 在创建的应用那里看
        local UserID=$1             #发送的用户位于$1的字符串
        local PartyID=2           #第一步看的通讯录中的部门ID
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'"$agentid"\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

 给予wechat.sh权限

# chmod +x wechat.sh
# chown zabbix.zabbix wechat.sh

测试微信发信息

# bash wechat.sh xxx(你的员工ID) 告警测试 告警测试信息

 

 

5、配置zabbix报警媒介

(1) 配置报警媒介:

>>管理>>报警媒介>>创建报警媒介。

 

(2)配置用户:

>>管理>>用户>>点击系统自带的用户。

 

 

Admin>>点击报警媒介>>权限>>更新添加:

报警媒介中需要修改收件人(即企业微信员工ID,如果想发给部门所有人,在收件人处输入 @all)。

(3)配置动作:

配置>>动作>>创建动作

点击“操作”

 

恢复操作,确认操作可以同上。

操作中,消息内容模板可参考以下:

故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件标识:{EVENT.ID}
------------------------
恢复:{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}
---------------

=================================================================================================

至此,就可以在微信端收到报警消息了:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章