部署 Zabbix 集中监控系统

zabbix

概述

Zabbix 是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级开源监控套件

服务端端口:10051

客户端端口:10050

Zabbix 主要功能

主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细报表图表绘制

Zabbix 可监控对象

Linux、Windows 等主机系统;路由器、交换机等网络设备

Zabbix-proxy使用场景

监控远程位置,解决跨机房;监控主机多,性能跟不上,延迟大;解决网络不稳定

Zabbix 是怎么实施监控的

agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式

默认为zabbix-agent被动模式;
主动模式与被动模式主要是站在zabbix-agent身份来说;
被动模式(zabbix-server轮询检测zabbix-agent);
主动模式(zabbix-agent主动上报给zabbix-server);
当(Queue)队列中有大量的延迟监控项,当监控主机超过300+ ,建议使用主动模式

Zabbix 运行条件

  • Server:Zabbix Server 需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下(或者LNMP),对硬件要求低

  • Agent:目前已有的agent 基本支持市面常见的OS,包含 Linux、HPUX、Solaris、Sun、 windows

  • SNMP:支持各类常见的网络设备

SNMP(简单网络管理协议)是一种广泛应用于 TCP/IP 网络的网络管理标准协议(应用层协议),它提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来监控和管理计算机网络的标准化管理框架(方法)。目前已颁布了SNMPv1、SNMPv2c 和 SNMPv3 三个版本,广泛应用于网络交换机、路由器、打印机等网路设备上。

安装 Zabbix 服务

yum 安装配置 LAMP

1 安装 mariadb

[root@zabbix ~]# yum -y install mariadb-server mariadb-client mariadb-devel 

2 安装 Apache/2.4.6 和 php5.4.16

如果是源码安装注意安装 php 时需要注意 php 的版本要高于 5.4

[root@zabbix ~]# yum install -y httpd php

php 安装后确定 httpd 文件中有 php 内容

[root@zabbix ~]# cd /etc/httpd/conf.d
[root@zabbix conf.d]# ll
···
-rw-r--r-- 1 root root  691 4月   1 2020 php.conf

3 安装PHP扩展

[root@zabbix ~]# yum install -y php-mysql php-snmp php-xml php-ldap php-gd php-mbstring php-posix

查看httpd.conf配置文件,确保包含以下内容:

[root@zabbix ~]# vim /etc/httpd/conf/httpd.conf
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

4 配置php.conf配置文件

末尾添加以下内容:

[root@zabbix ~]# vim /etc/httpd/conf.d/php.conf
···
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
LoadModule php5_module modules/libphp5.so
#
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler php5-script .php

5 编写 phpinfo() 脚本检查 SNMP

访问 apache 网站,查看是否有 snmp 模块

[root@zabbix ~]# vim /var/www/html/index.php

部署 Zabbix 集中监控系统_第1张图片

源码安装 Zabbix

1 安装 Zabbix 环境所需依赖包

[root@zabbix ~]# yum -y install gcc gcc-c++ autoconf httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel  java-devel openldap openldap-devel php-pdo ncurses-devel OpenIPMI-devel OpenIPMI OpenIPMI-libs  libxml*  libevent* 

2 创建用户账户

对于所有 Zabbix 守护进程,需要一个非特权用户。 如果从非特权用户帐户启动 Zabbix 守护程序,它将以该用户身份运行。

然而,如果一个守护进程以“root”启动,它会切换到“zabbix”用户,且这个用户必须存在。在 Linux 系统中,可以使用下面命令建立一个用户(该用户属于自己的用户组,“zabbix”):

[root@zabbix ~]# useradd -s /sbin/nologin zabbix
[root@zabbix ~]# mkdir /var/log/zabbix /etc/zabbix
[root@zabbix ~]# chown zabbix:zabbix /var/log/zabbix/

3 编译安装 Zabbix

[root@zabbix ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.20.tar.gz
zabbix-4.0.20.tar.gz    // 软件包
[root@zabbix ~]# tar xf zabbix-4.0.20.tar.gz
[root@zabbix ~]# cd zabbix-4.0.20/
[root@zabbix zabbix-4.0.20]# ./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --enable-server --enable-proxy --enable-agent --enable-ipv6 --with-mysql=/usr/bin/mysql_config  --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-ldap --enable-java
[root@zabbix zabbix-4.0.20]# make && make install

这里可能会提示错误:Unable to use libevent (libevent check failed)

解决办法:需要安装依赖包

[root@zabbix zabbix-4.0.20]# yum install libevent-devel  -y

4 设置环境变量

[root@zabbix ~]# vim /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
[root@zabbix ~]# source /etc/profile

5 建立监控数据库,并导入zabbix数据库

[root@zabbix ~]# mysql -uroot -p

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.01 sec)

对于授权用户有不同的方式,需要根据数据库是否在本地的环境来确定

mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
或
mysql> grant all on zabbix.* to [email protected].% identified by 'zabbix';
或
mysql> grant all on zabbix.* to [email protected]  identified by 'zabbix';

进行 zabbix 文件导入到数据中

MariaDB [(none)]> use zabbix;

MariaDB [zabbix]> source /root/zabbix-4.0.20/database/mysql/schema.sql;

MariaDB [zabbix]> source /root/zabbix-4.0.20/database/mysql/data.sql;

MariaDB [zabbix]> source /root/zabbix-4.0.20/database/mysql/images.sql;

6 修改配置文件

[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306

7 拷贝网页文件到httpd网站目录下

Zabbix 的源码包中有相应的网站目录,复制到 apache 中

[root@zabbix ~]# cp -rf /root/zabbix-4.0.20/frontends/php/ /var/www/html/zabbix
[root@zabbix ~]# chown -R apache:apache /var/www/html/zabbix/

8 通过 Web 页面配置 Zabbix

访问你的 apache 网页

部署 Zabbix 集中监控系统_第2张图片

根据提示修改 PHP 的配置文件/etc/php.ini ,再重启 Apache ,右边全部为 OK 就可以进入下一步

部署 Zabbix 集中监控系统_第3张图片

部署 Zabbix 集中监控系统_第4张图片

接收默认值,下一步

部署 Zabbix 集中监控系统_第5张图片

部署 Zabbix 集中监控系统_第6张图片

部署 Zabbix 集中监控系统_第7张图片

部署 Zabbix 集中监控系统_第8张图片

可以看到登录界面,说明 Zabbix 安装成功。

输入用户名 Admin 以及密码 zabbix 以作为 Zabbix 超级用户登录。

部署 Zabbix 集中监控系统_第9张图片

页面右上角找到用户头像标志,可以把语言设置为中文。

部署 Zabbix 集中监控系统_第10张图片

设置完成后会返回登录界面,提示 Zabbix Server 没有启动

部署 Zabbix 集中监控系统_第11张图片

9 启动 Zabbix_server 服务

Zabbix 的源码包中自带服务启动脚本,复制到/etc/init.d/目录下,并添加到系统服务。

[root@zabbix zabbix-4.0.20]# cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
[root@zabbix zabbix-4.0.20]# ln -s /usr/local/zabbix/sbin/zabbix_server /usr/local/sbin/
[root@zabbix zabbix-4.0.20]# cd /etc/init.d
[root@zabbix init.d]# ls
functions  netconsole  network  README  redis_6379  zabbix_server
[root@zabbix init.d]# chkconfig --add zabbix_server
[root@zabbix init.d]# systemctl start zabbix_server

部署 Zabbix 集中监控系统_第12张图片

10 锁定安装页面

安全起见对 Zabbix 安装界面进行锁定

[root@zabbix ~]# mv /var/www/html/zabbix/setup.php /var/www/html/zabbix/setup.php.bak
[root@zabbix ~]# chmod 600 /var/www/html/zabbix/setup.php.bak

安装被监控端口

在 Zabbix_server 上创建 zabbix_agentd 服务,使它自己监听自己

[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1,192.168.153.132
ServerActive=127.0.0.1:10051

启动agent服务

[root@zabbix zabbix-4.0.20]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@zabbix zabbix-4.0.20]# ln -s /usr/local/zabbix/sbin/zabbix_agentd /usr/local/sbin/
[root@zabbix zabbix-4.0.20]# cd /etc/init.d/
[root@zabbix init.d]# ls
functions  netconsole  network  README  redis_6379  zabbix_agentd  zabbix_server
[root@zabbix init.d]# chkconfig --add zabbix_agentd
[root@zabbix init.d]# systemctl start zabbix_agentd

完成后返回网页查看

部署 Zabbix 集中监控系统_第13张图片

监控其他机器:配置 Zabbix 客户端

现在使用 Zabbix_server 去监听另一台 Linux 服务器。

以下信息是默认存在的:

[root@node1 ~]# vim /etc/services
zabbix-agent    10050/tcp               # Zabbix Agent
zabbix-agent    10050/udp               # Zabbix Agent
zabbix-trapper  10051/tcp               # Zabbix Trapper
zabbix-trapper  10051/udp               # Zabbix Trapper

安装 zabbix_agentd 代理程序

# wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.20.tar.gz

在需要监控的 Linux 客户机上安装的软件包和在 Zabbix_server 端安装的是同一个,区别在于配置时选取的参数不同。

[root@node1 ~]# useradd -s /sbin/nologin -M zabbix
[root@node1 ~]# mkdir /var/log/zabbix /etc/zabbix
[root@node1 ~]# chown zabbix:zabbix /var/log/zabbix/
[root@node1 ~]# tar xf zabbix-4.0.20.tar.gz
[root@node1 ~]# cd zabbix-4.0.20/
[root@node1 zabbix-4.0.20]# ./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix/ --enable-agent
[root@node1 zabbix-4.0.20]# make && make install

此处添加服务端的 ip,如服务器不为本机,则需要填写远端 zabbix_server 的 ip 地址

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=127.0.0.1,192.168.153.132
ServerActive=192.168.153.132:10051

启动 agent 服务

[root@node1 ~]# cd zabbix-4.0.20/
[root@node1 zabbix-4.0.20]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@node1 zabbix-4.0.20]# ln -s /usr/local/zabbix/sbin/zabbix_agentd /usr/local/sbin/
[root@node1 zabbix-4.0.20]# cd /etc/init.d/
[root@node1 init.d]# chkconfig --add zabbix_agentd
[root@node1 init.d]# systemctl start zabbix_agentd

使用 Zabbix 管理平台

将被监控主机添加到系统中

配置–主机–创建主机;根据之前的配置填入信息

部署 Zabbix 集中监控系统_第14张图片

Zabbix 在实际使用中,一般采用模板进行监控配置

部署 Zabbix 集中监控系统_第15张图片

录入信息一分钟左右就可以看到CPU、内存等使用情况,因为选择了模板,应用集、监控项等会有所不同

部署 Zabbix 集中监控系统_第16张图片

监控Windows

在 windows server 2008 上安装 zabbix_agent

1 下载安装包

访问 https://www.zabbix.com/download_agents,下载的安装包直接解压到指定目录就可以

部署 Zabbix 集中监控系统_第17张图片

新建C:\Program Files\zabbix_agent文件夹,解压下载的文件到这个文件夹中

部署 Zabbix 集中监控系统_第18张图片

2 修改 agent 的配置文件

修改C:\Program Files\zabbix_agent\conf\zabbix_agentd.win.conf这个文件

LogFile=c:\zabbix_agentd.log
Server=192.168.153.132
ServerActive=192.168.153.132
UnsafeUserParameters=1    // 是否开启自定义脚本,默认值为0表示不开启;
UserParameter=iis.site.discovery,C:\LLD_Web_Service.bat

3 创建脚本

在 C 盘下创建一个LLD_Web_Service.bat脚本

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION 
echo {
echo     "data":[
for /F "tokens=* delims= " %%i IN ('typeperf -qx^|find "Web Service"^|find "Current Connections"') DO (
    set j=%%i
    for /F "tokens=1 delims=\" %%k in ("%%i") DO (
    echo         {
    echo             "{#WEB_SERVICE}": "%%k"
    echo         },
    )
)
echo         {
echo             "{#WEB_SERVICE}": "none"
echo         }
echo     ]
echo }

4 安装和启动 zabbix_agent

WIN + R 进入命令行

cd C:\Program Files\zabbix_agent\bin
zabbix_agentd.exe -c ..\conf\zabbix_agentd.win.conf -i    // 安装
zabbix_agentd.exe -c ..\conf\zabbix_agentd.win.conf -s    // 启动服务

部署 Zabbix 集中监控系统_第19张图片

任务管理器能看到进程说明启动成功

部署 Zabbix 集中监控系统_第20张图片

现在 zabbix_agent 端的操作已经完成

在服务器端添加 agent

部署 Zabbix 集中监控系统_第21张图片

部署 Zabbix 集中监控系统_第22张图片

连接成功,配置完成

部署 Zabbix 集中监控系统_第23张图片

使用 Media 邮件报警

使用第三方邮箱实现报警

这里测试环境使用的 QQ 邮箱;原理是通过脚本实现 Linux 借用第三方邮箱发送邮件,但是使用脚本发送邮箱还需要邮箱账号的授权码,以及对应的 SMTP 服务器地址。

POP3 (Post Office Protocol - Version 3)协议用于支持使用电子邮件客户端获取并删除在服务器上的电子邮件。

SMTP (Simple Mail Transfer Protocol)协议用于支持使用电子邮件客户端发送电子邮件。

1 邮箱信息获取

在 QQ 邮箱的 “设置” – “ 账户” 中可以找到,点击开启服务。

部署 Zabbix 集中监控系统_第24张图片

之后会让你发送一条短信,获取授权码;
关于授权码,如果别人知道你的授权码和邮箱账号,就可以使用你的邮箱发送邮件。

部署 Zabbix 集中监控系统_第25张图片

至此,授权码已经获得,我们需要的信息都已经获得

POP3/SMTP 设置方法

用户名/帐户: 你的QQ邮箱完整的地址
密码: 生成的授权码
电子邮件地址: 你的QQ邮箱的完整邮件地址
接收邮件服务器: pop.qq.com,使用SSL,端口号995
发送邮件服务器: smtp.qq.com,使用SSL,端口号465或587

2 Zabbix_server 上配置脚本

修改配置文件,打开自定义脚本选项

[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/opt/zabbix/alertscripts

创建目录并授权

[root@zabbix ~]# mkdir -p /opt/zabbix/alertscripts
[root@zabbix ~]# chown -R zabbix:zabbix  /opt/zabbix/alertscripts

编写 python 脚本

#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys
smtpaddr = 'smtp.qq.com'    // SMTP 地址
myemail='[email protected]'    // QQ 邮箱地址
password='xxxxxxxxxxxxxxxx'    // 授权码

recvmail=sys.argv[1]    // 收件人
subject=sys.argv[2]    // 主题
content=sys.argv[3]    // 内容

msg = MIMEText("""%s"""%(content), "plain", "utf-8")
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = myemail
msg['To'] =  recvmail

try:
  smtp = SMTP_SSL( smtpaddr )
  smtp.login(myemail, password)
  smtp.sendmail(myemail, recvmail.split(','), msg.as_string())
  smtp.quit()
  print("success")
except Exception as e:
  print("fail: "+str(e))

给脚本授权

[root@zabbix ~]# chmod +x /opt/zabbix/alertscripts/zabbix_sendmail.py

测试,执行脚本,向邮箱发送邮件,成功进入下一步。

[root@zabbix ~]# /opt/zabbix/alertscripts/zabbix_sendmail.py [email protected] 'zabbix test' 'test123123456456'
success

3 在 zabbix 网页上配置报警

管理–报警媒介类型–创建

添加三个脚本参数

{ALERT.SENDTO}    // 收件人
{ALERT.SUBJECT}    // 邮件标题
{ALERT.MESSAGE}    // 邮件内容

部署 Zabbix 集中监控系统_第26张图片

选择使用哪个用户发送消息

管理–用户–点击“Admin" ,当然你也可以选择其他用户

部署 Zabbix 集中监控系统_第27张图片

配置–动作–创建触发器,进入到下面界面;选择触发条件,满足即触发后面的动作

部署 Zabbix 集中监控系统_第28张图片

选择由哪个用户发送,发送内容

部署 Zabbix 集中监控系统_第29张图片

部署 Zabbix 集中监控系统_第30张图片

恢复操作同样的道理

部署 Zabbix 集中监控系统_第31张图片

故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

4 模拟故障,检测报警

最简单的,使用模拟磁盘文件,占用所以磁盘空间

[root@zabbix ~]# dd if=/dev/zero of=/root/a.txt bs=512M count=500
dd: 写入"/root/a.txt" 出错: 设备上没有空间
记录了28+0 的读入
记录了27+0 的写出
14586609664字节(15 GB)已复制,30.1032 秒,485 MB/秒

部署 Zabbix 集中监控系统_第32张图片

在 zabbix-server 上配置 mail 服务

1 安装软件 mailx

yum -y install mailx

2 编辑配置文件

[root@zabbix ~]# vim /etc/mail.rc
set bsdcompat
set [email protected]
set smtp=smtp.qq.com
set [email protected]
set smtp-auth-password=xxxxxxxxxx     // 授权码
set smtp-auth=login

测试能否发送邮件

echo "test" | mail -s 'test zabbix for linux' [email protected]

3 编写发送邮件的脚本

[root@zabbix ~]# vim /opt/zabbix/alertscripts/mailx.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/var/log/zabbix/mailx.log 2>&1

给脚本授权

[root@zabbix ~]# touch /var/log/zabbix/mailx.log
[root@zabbix ~]# chown zabbix:zabbix /var/log/zabbix/mailx.log
[root@zabbix ~]# chmod +x /opt/zabbix/alertscripts/mailx.sh

测试脚本

[root@zabbix ~]# /opt/zabbix/alertscripts/mailx.sh [email protected] "test for zabbix" "test page text"

4 配置 zabbix-web 端

配置和之前基本相同,不同的是参数配置

部署 Zabbix 集中监控系统_第33张图片

部署 Zabbix 集中监控系统_第34张图片

部署 Zabbix 集中监控系统_第35张图片

部署 Zabbix 集中监控系统_第36张图片

部署 Zabbix 集中监控系统_第37张图片

5 测试

方法和之前一样,附上一张恢复的邮件

部署 Zabbix 集中监控系统_第38张图片

添加 MySQL 监控

Zabbix Server 端配置

创建数据库连接信息文件/etc/zabbix/.my.cnf

[root@zabbix ~]# vim /etc/zabbix/.my.cnf
[root@zabbix ~]# cat /etc/zabbix/.my.cnf
[mysql]
host=localhost
password=zabbix
socket=/var/lib/mysql/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
socket=/var/lib/mysql/mysql.sock

在 Zabbix 的源码包中可以找到 MySQL 模板 userparameter_mysql.conf ,复制模板并修改

[root@zabbix ~]# cp zabbix-4.0.20/conf/zabbix_agentd/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.conf.d
[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf
:%s@HOME=/var/lib/zabbix@HOME=/etc/zabbix        // 做替换操作

重启 server 和 agent

[root@zabbix ~]# systemctl restart zabbix_server
[root@zabbix ~]# systemctl restart zabbix_agentd

在 Zabbix Web 中添加 Template DB MySQL 模板加入监控

需要新添加一个主机,我的 MySQL 在本地

部署 Zabbix 集中监控系统_第39张图片

选择模板

部署 Zabbix 集中监控系统_第40张图片

查看主机列表, MySQL 监控成功

部署 Zabbix 集中监控系统_第41张图片

监控成功后会生成两个新图形

部署 Zabbix 集中监控系统_第42张图片

拓:关于 Zabbix Web 乱码问题的解决

在 Windows 的 C:\Windows\Fonts 目录下,随意找一个字体文件上传到 Linux 的 /var/www/html/zabbix/assets/fonts 目录中

将原来的字体文件备份,将新的字体文件重命名

[root@zabbix ~]# cd /var/www/html/zabbix/assets/fonts
[root@zabbix fonts]# ls
DejaVuSans.ttf  STXINGKA.TTF
[root@zabbix fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix fonts]# mv STXINGKA.TTF DejaVuSans.ttf
[root@zabbix fonts]# ls
DejaVuSans.ttf  DejaVuSans.ttf.bak

再去 web 上刷新,乱码就解决了

部署 Zabbix 集中监控系统_第43张图片

你可能感兴趣的:(云计算技术架构,zabbix)