共计 7651 个字符,预计需要花费 20 分钟才能阅读完成。
初步了解 Zabbix:
Zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位 / 解决存在的各种问题。是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。被监控对象只要支持 SNMP 协议或者运行 Zabbix_agents 代理程序即可。
agent 端:主机通过安装 agent 方式采集数据。
server 端:通过收集 agent 发送的数据,写入数据库(MySQL,Oracle 等),再通过 php+apache 在 web 前端展示.
SNMP:
SNMP 是英文 ”Simple Network Management Protocol” 的缩写,中文意思是 ” 简单网络管理协议 ”。SNMP 是一种简单网络管理协议,它属于 TCP/IP 五层协议中的应用层协议,用于网络管理的协议。SNMP 主要用于网络设备的管理。
Zabbix 工作原理:
Agentd 安装在被监控的主机上,Agent 负责定期收集客户端本地各项数据,并发送至 Zabbix Server 端,Zabbix Server 收到数据,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 Zabbix 监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install 等)。
Zabbix 重要的五个组件:
1、Zabbix Server:负责接收 agent 发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由 Zabbix 收集的数据;
3、Web interface:Zabbix 的 GUI 接口,通常与 Server 运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理 Server 收集部分被监控端的监控数据并统一发往 Server 端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往 Server 端或 Proxy 端;
Zabbix 基本组件拓扑:
下面我对如何部署 zabbix 进行详细配置
实验环境:
—————————————— 分割线 ——————————————
STKAITI 字体文件可从以下信息得到下载:
点击这个 http://www.linuxidc.com/Linux/2013-12/93755.htm 链接去 关注 Linux 公社官方微信,关注后回复数字155200。即可得到网友的分享密码。
如果取消关注 Linux 公社公众号,即使再次关注,也将无法提供本服务!
链接: https://pan.baidu.com/s/1VRFCbBpBsceJ9YD0VPXPHQ 密码:获得见上面的方法,地址失效请在下面留言。
—————————————— 分割线 ——————————————
一、部署 LAMP 架构
下载 LAMP 所需安装包
[root@localhost ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash -y
配置 Apache 主配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com:80 #修改域名
DirectoryIndex index.html index.php #让 Apache 支持 PHP
为了让 zabbix 连接互联网,设置中国时区
[root@localhost ~]# vim /etc/php.ini
date.timezone = PRC
开启 httpd 服务和 mysql
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# netstat -ntap | egrep ’80|3306′ #查看两个服务的端口
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 38513/mysqld
tcp6 0 0 :::80 :::* LISTEN 38242/httpd
重新配置 mariadb 数据库的参数
[root@localhost ~]# mysql_secure_installation
Set root password? [Y/n] y #是否设置密码
Remove anonymous users? [Y/n] n #是否删除默认用户
Disallow root login remotely? [Y/n] n #是否禁止 root 远程登录
Remove test database and access to it? [Y/n] n #是否删除测试数据库
Reload privilege tables now? [Y/n] y #是否对数据库进行初始化配置
创建 zabbix 数据库
[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #创建一个 zabbix 数据库
MariaDB [(none)]> grant all on zabbix.* to ‘zabbix’@’%’ identified by ‘123123’; #为 zabbix 数据库创建管理用户
MariaDB [(none)]> flush privileges;
创建 PHP 测试首页
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>
编写测试脚本,测试 PHP 能否连接数据库
<?php
$link=mysql_connect(‘192.168.199.129′,’zabbix’,’123123′);
if($link) echo “<h1>success</h1>”;
else echo “fail”;
mysql_close();
?>
在使用 zabbix 用户进行登录数据库时有时会出现登录失败的现象,这是因为里面有空用户占用导致本地用户无法登录,所以需要删除空用户
[root@localhost ~]# mysql -u zabbix -p #登录失败
Enter password:
ERROR 1045 (28000): Access denied for user ‘zabbix’@’localhost’ (using password: YES)
[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> select user,host from mysql.user; #有空用户占用导致本地用户无法登陆
+——–+———————–+
| user | host |
+——–+———————–+
| zabbix | % |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+——–+———————–+
7 rows in set (0.00 sec)
MariaDB [(none)]> drop user ”@’localhost’; #删除空用户
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> drop user ”@’localhost.localdomain’; #删除空用户
Query OK, 0 rows affected (0.00 sec)
[root@localhost ~]# mysql -u zabbix -p #再次登录就可以了
MariaDB [(none)]>
到此为止,LAMP 架构就部署完了
二、部署 zabbix server
[root@localhost ~]# yum install php-bcmath php-mbstring -y #下载两个 PHP 依赖包
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm #下载 zabbix yum 源,安装完成后会自动产生 repo 文件
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql -y #安装 zabbix 软件包
修改 zabbix 配置文件
[root@localhost ~]# 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
125:DBPassword=123123 #密码改为 zabbix 登陆密码
357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
475:Timeout=4
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts
529:ExternalScripts=/usr/lib/zabbix/externalscripts
565:LogSlowQueries=3000
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf #修改时区
php_value date.timezone Asia/Shanghai
[root@localhost ~]# vim /usr/share/zabbix/include/defines.inc.php #修正图表中文乱码
:%s /graphfont/kaiti/g #将配置文件中的 graphfont 替换为 kaiti
[root@localhost ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/ #从微软系统下复制相应的字体文件到 /usr/share/zabbix/fonts/
开启 zabbix 服务端
[root@localhost ~]# systemctl start zabbix-server.service
[root@localhost ~]# systemctl enable zabbix-server.service
[root@localhost ~]# netstat -ntap | grep 10051 #查看端口
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 40703/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 40703/zabbix_server
[root@localhost ~]# systemctl restart httpd.service #重启 Apache 服务
http://192.168.199.129/zabbix #在浏览器上登陆 zabbix 页面
首先看见的是 zabbix 的版本:
这里所有的选项都为 OK 表示配置是没问题的:
密码为 zabbix 的登陆密码:
名字填写 zabbix:
默认的用户名和密码为 Admin 和 zabbix:
登陆完成后便会到 zabbix 的监控页面:
点击右上角头像可以选择语言,这里我选择中文:
三、安装被监控端
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
[root@localhost ~]# setenforce 0
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm #下载 yum 源
[root@localhost ~]# yum install zabbix-agent -y #被监控端需要装 agent 包,如果想要监控本机器,也可以在监控服务器上进行安装
更改配置文件
[root@localhost ~]# grep -n ‘^'[a-Z] /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.199.129 #将地址指向服务器端
139:ServerActive=192.168.199.129 #将地址指向服务器端
150:Hostname=test #名字可自行定义
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf
开启服务
[root@localhost ~]# systemctl start zabbix-agent.service
[root@localhost ~]# systemctl enable zabbix-agent.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@localhost ~]# netstat -ntap | grep zabbix #查看端口
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 40351/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 40351/zabbix_agentd
在服务器上配置完了就可以到 zabbix 监控页面进行配置
首先在监控页面中添加被监控服务器
配置主机项基本信息
配置模板选项,添加想要监控的模块
查看添加好的主机信息
回到主界面,点击刷新,过一会就回出现监控信息
四、配置邮件报警功能 —– 在监控服务器上配置
[root@localhost ~]# yum install mailx -y #下载邮箱服务
[root@localhost ~]# vim /etc/mail.rc #在文件末尾添加如下配置
set from= 邮箱地址
set smtp=smtp.qq.com
set smtp-auth-user= 邮箱地址
set smtp-auth-password=********** #如果填写的是 qq 邮箱,密码为 qq 邮箱的 SMTP 密码
set smtp-auth=login
[root@localhost ~]# systemctl restart postfix.service #重新启动邮箱服务
[root@localhost ~]# echo “hello world” | mail -s “testmail” 邮箱地址 #发送一个测试邮件
可以看到我在 QQ 邮箱中收到了一封邮件
[root@localhost ~]# vim /usr/lib/zabbix/alertscripts/mail.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/mail.log 2>&1[root@localhost ~]# chmod +x /usr/lib/zabbix/alertscripts/mail.sh #给脚本执行权限
[root@localhost ~]# touch /tmp/mail.log #创建邮箱日志文件
[root@localhost ~]# chown -R zabbix.zabbix /tmp/mail.log #将权限给 zabbix 用户
[root@localhost ~]# chown -R zabbix.zabbix /usr/lib/zabbix/ 再次发送一封测试邮件使用脚本执行
[root@localhost ~]# cd /usr/lib/zabbix/alertscripts/
[root@localhost alertscripts]# ./mail.sh 邮箱地址 “yun” “hahahahaha” #发送格式为“地址”“标题”“内容”
六、配置 zabbix 邮件报警机制
1 选择报警媒介类型
2 选择管理用户
3 在动作配置项中定义报警邮件的发送形式
4 配置恢复操作后邮件的发送形式
七、测试,如果我关闭受监控的服务来模拟服务故障,zabbix 一个会发送一封邮件提醒我,当我再次打开这个服务时表示这个服务已经被修复,zabbix 一个也会发一封恢复邮件。
[root@localhost ~]# systemctl stop sshd.service #关闭被监控端的 ssh 服务
接着便会收到邮件信息了:
[root@localhost ~]# systemctl start sshd.service #我再次开启被监控端的 SSH 服务
到此为止 Zabbix 监控系统就搭建完成了。
: