简介
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络和系统参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题。
监控数据采集通道:
SNMP:Simple Network Management Protocol
ssh/telnet
IPMI:智能型平台管理接口
agent:
master/agent
JMX:Java Management Extensions
自定义采样机制:UserPrameter,基于agent端实现
存储系统:
关系型数据库:MySQL、PostgreSQL、Oracle...
NoSql:Mangodb...
特性
告警:
notification
支持告警升级
支持script
展示:
实时绘图:graph, screen, slide show, map
支持模板
网络自动发现
分布式监控
Server <--> Proxy <--> agent/ssh/ipmi
API:支持二次开发
安装Zabix
主机环境
系统: CentOS 7.3
数据库: MariaDB
Zabbix版本: 3.4.1
官网地址:https://www.zabbix.com/
官网提供打包好的rpm包和repo仓库安装包。
Server端安装:
[root@centos7.3 ~]#yum -y install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-get zabbix-agent zabbix-sender
zabbix-server-mysql #服务端守护进程以及连接所需mysql的组件;
zabbix-get #命令行工具,手动测试向agent发起数据采集请求;
zabbix-web #web界面,会自动安装和配置httpd和php。
zabbix-web-mysql #web程序连接mysql数据组件
zabbix-agent #agent守护进程,用于Zabbix监控本身状态。
zabbix-sender #命令行工具,手动向server端发送数据;
zabbix-prxoy-mysql #代理服务器,可选组件
zabbix_java_gateway #java网关
anget端安装所需软件包:
zabbix-agent #agent守护进程
zabbix-sender #命令行工具,运行于agent端,手动向server端发送数据
配置 zabbix server
配置数据库
本文是实验环境所以把数据库和Zabbix Server部署在一台主机上面,建议在真实的生产环境中把数据库和Zabbix Server放在不同的主机上面。
[root@centos7.3 ~]#yum -y install mariadb-server
[root@centos7.3 ~]#systemctl start mariadb
[root@centos7.3 ~]#mysql_secure_installation #运行安全脚本
[root@centos7.3 ~]#systemctl restart mariadb
[root@centos7.3 ~]#mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8'; #为zabbix创建一个数据库。
MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zabbix'@'127.0.0.1' IDENTIFIED BY 'admin123';
#为zabbix创建一个用户并授权拥有zabbix库的所有权限。
还需要在zabbix库中创建一些表,在zabbix-zabbix-server-mysql包中提供了一个sql脚本用于创建表。
[root@centos7.3 ~]#cd /usr/share/doc/zabbix-server-mysql-3.4.1/
[root@centos7.3 zabbix-server-mysql-3.4.1]#ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@centos7.3 zabbix-server-mysql-3.4.1]#gzip -d create.sql.gz
[root@centos7.3 zabbix-server-mysql-3.4.1]#mysql -u zabbix -h 127.0.0.1 -padmin123 zabbix < create.sql
配置服务
server端默认端口:10051
agetn端默认端口 :10050
Server配置文件:/etc/zabbix/zabbix_server.conf
Agent配置文件 :/etc/zabbix/zabbix_agentd.conf
Server 配置:
[root@centos7.3 ~]#cd /etc/zabbix/
[root@centos7.3 zabbix]#grep "^####" zabbix_server.conf
############ GENERAL PARAMETERS ################# #通用配置
############ ADVANCED PARAMETERS ################ #高级配置段
####### LOADABLE MODULES ####### #模块配置段
####### TLS-RELATED PARAMETERS ####### #tls/ssl配置段
通用配置段参数:
ListenPort=10050 #监听端口
SourceIP=192.168.166.131 #监听IP地址
LogType=file #日志存储方式,可选:system(rsyslog)、file、console(标准输出)默认file。
LogFile=/var/log/zabbix/zabbix_server.log #日志文件路径
LogFileSize=0 #日志文件大小,达到设置的值自动滚动文件
DebugLevel=3 #日志记录等级(0-5)
PidFile=/var/run/zabbix/zabbix_server.pid #zabbix的pid文件路径
SocketDir=/var/run/zabbix #存储Zabbix内部服务使用的IPC套接字的目录
DBHost=localhost #数据库地址
DBName=zabbix #数据库名
DBUser=zabbix #zabbix登陆数据库用户
DBPassword=admin123 #密码
DBSocket=/var/lib/mysql/mysql.sock #本地连接的sock文件路径,用于本地连接数据库
#这里我已经改为使用rpm包安装的mariadb的sock文件默认路径/var/lib/mysql/mysql.sock
DBPort=3306 #数据库端口
下面配置基本不需要修改
高级配置段
StartPollers=5 #接收监控信息的进程数,范围:0-1000。
StartIPMIPollers=0 #接收IPMI信息的进程数
StartPreprocessors=3
StartPollersUnreachable=1 #无法访问的主机的轮询器的进程数。如果启动了常规的IPMI或Java轮询器,则至少需要运行一个无法访问的主机的轮询器。
StartTrappers=5 #Trappers的进程数量.Trappers接受来自Zabbix agent,活动代理和活动代理的传入连接。至少必须运行一个陷阱进程才能在前端显示服务器可用性和查看队列。
StartPingers=1 #ICMP的获取icmp监控信息的进程数。
StartDiscoverers=1
StartHTTPPollers=1 #HTTP轮询器的进程数。
StartTimers=1
StartEscalators=1
StartAlerters=3 #警报器进程的数量.Alerter发送由操作操作创建的通知。
JavaGateway= #Java网关的IP地址或主机名
JavaGatewayPort=10052 #Java网关侦听的端口。
StartJavaPollers=0 #Java轮询器的预分支实例数。
StartVMwareCollectors=0 #vmware收集器进程数量。
VMwareFrequency=60
VMwarePerfFrequency=60
VMwareCacheSize=8M #用于存储VMware数据的共享内存大小。128KB-2G
VMwareTimeout=10 #指定vmware收集器等待VMware服务响应的秒数。
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log#用于将数据从SNMP陷阱守护程序传递到服务器的临时文件。与zabbix_trap_receiver.pl或SNMPTT配置文件中的相同。
StartSNMPTrapper=0 #如果1,启动SNMP陷阱进程
ListenIP=127.0.0.1 #trapper应该监听的逗号分隔的IP地址列表。
HousekeepingFrequency=1
MaxHousekeeperDelete=5000
CacheSize=8M #用于存储主机,项目和触发器数据的共享内存大小
CacheUpdateFrequency=60 #Zabbix将在几秒钟内执行配置缓存的更新频率。1-3600
StartDBSyncers=4
HistoryCacheSize=16M #历史缓存的大小,以字节为单位。用于存储历史数据的共享内存大小。128K-2G
HistoryIndexCacheSize=4M #历史索引缓存的大小,以字节为单位。用于索引历史缓存的共享内存大小。128K-2G
TrendCacheSize=4M #用于存储趋势数据的共享内存大小。128K-2G以字节为单位。
ValueCacheSize=8M #用于缓存项历史数据请求的共享内存大小。设置为0将禁用值缓存。0,128K-64G以字节为单位。
Timeout=4 #指定等待代理,SNMP设备或外部检查的时间(以秒为单位)。
TrapperTimeout=300
UnreachablePeriod=45 #被监控主机的超时时间
UnavailableDelay=60 #在不可用期间内,主机检查可用性的频率(秒)。范围:1-3600
UnreachableDelay=15 #在不可达性期间检查主机的可用性,以秒为单位。范围:1-3600
AlertScriptsPath=/usr/lib/zabbix/alertscripts #报警脚本的路径。
ExternalScripts=/usr/lib/zabbix/externalscripts #外部脚本的路径。
FpingLocation=/usr/sbin/fping
Fping6Location=/usr/sbin/fping6
SSHKeyLocation= #用于SSH检查和操作的公钥和私钥位置。
LogSlowQueries=3000 #在记录之前数据库查询可能需要多长时间(以毫秒为单位)。如果DebugLevel设置为3,4或5.0 - 不记录缓慢的查询,那么该方法是有效的。范围:1-3600000
TmpDir=/tmp #数据临时目录
StartProxyPollers=1
ProxyConfigFrequency=3600 #Server向 Proxy发送配置的间隔时间。仅用于被动模式下,范围:1-3600 * 24 * 7
ProxyDataFrequency=1 #Server向向Proxy请求数据的时间间隔。仅用于被动模式。值:1-3600 秒
AllowRoot=0 #是否运行以root运行程序
User=zabbix #运行zabbix的用户
# Include=/usr/local/etc/zabbix_server.general.conf
# Include=/usr/local/etc/zabbix_server.conf.d/
# Include=/usr/local/etc/zabbix_server.conf.d/*.conf
SSLCertLocation=${datadir}/zabbix/ssl/certs #SSL客户端证书的位置。此参数仅用于Web监控。
SSLCALocation= #SSL客户端证书的私钥位置。此参数仅用于Web监控。
# SSLCALocation= #SSL服务器证书验证的CA文件的位置。仅用于Web监控和SMTP身份验证。
模块配置段
# LoadModulePath=${libdir}/modules #服务器模块位置的完整路径。缺省取决于编译选项。
# LoadModule= #在服务器启动时加载模块。 模块用于扩展服务器的功能。格式:LoadModule = <module.so>模块必须位于LoadModulePath指定的目录中。允许包含多个LoadModule参数。
TLS配置段
# TLSCAFile= #包含顶级CA证书的文件的完整路径名。
# TLSCRLFile= #包含撤销证书的文件的完整路径名。
# TLSCertFile= #证书路径
# TLSKeyFile= #zabbix server私钥路径
配置zabbix-web:
zabbix-web在安装时会自动解决依赖关系和配置。
zabbix严重依赖时区,时区设置有问题会导致无法访问web页面,配置php的时区设定:下面两个文件改其中一个就行
(1) /etc/php.ini
(2) /etc/httpd/conf.d/zabbix.conf
[root@centos7.3 zabbix]#vim /etc/httpd/conf.d/zabbix.conf
# php_value date.timezone Europe/Riga #找到这一项去掉注释修改时区
php_value date.timezone Asia/Shanghai
修改完成后启动httpd服务
访问URL:http://HOST/zabbix
检查各项配置是否正确
填写数据库的信息
填写zabbix server 的信息
配置好后会生成一个配置文件:/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file. #这里都是在web页面初始配置时设置的配置信息
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '127.0.0.1';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'admin123';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix Sserver1';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
默认登陆用户名密码:admin/zabbix
修改密码
设置好密码后点击update
Web页面共有5个一级菜单
Monitoring #监控数据
Inventory #资产清单
Reports #生成的报告
Configuration #配置
Administration #管理zabbix
Zabbix 配置菜单:
主机组
主机
模板(template):快速定义被监控主机的各监控项的预设项目集合;
应用(application):同一类监控项的集合;
监控项(item)
key:实现获取监控的目标上的数据的命令或脚本的名称;
触发器(trigger):表达式;PROBLEM, OK;
图形(graph):用于展示历史数据或趋势数据的图像;
聚合图形(screen):由多个graph组成;
关联事件(event):
动作(action):由条件(condition)和操作(operation)组件;
媒介(media):发送通知的通道;
通知(notification):
远程命令(remote command):
报警升级():
配置zabbix server 自监控
修改Server端的zabbix_agentd.conf文件
[root@centos7.3 ~]#systemctl start zabbix-server #启动zabbix-sever
[root@centos7.3 ~]#vim /etc/zabbix/zabbix_agentd.conf #需改agent配置文件
##### Passive checks related #修改被动监控配置段
Server=127.0.0.1,192.168.166.132 #允许哪些主机监控agent
##### Active checks related #主动监控配置段
ServerActive=127.0.0.1 #将监控数据发给那台主机
启动zabbix-agent
[root@centos7.3 ~]#systemctl start zabbix-agent #启动agent
[root@centos7.3 ~]#ss -ntl #查看监听的端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 :::10050 :::*
LISTEN 0 128 :::10051 :::*
在web页面上面启用zabbix server 监控项
等待一会儿监控就有监控数据了,查看监控数据
监控agent端的配置:
安装zabbix_agentd
yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm
配置文件:/etc/zabbix/zabbix_agentd.conf
############ GENERAL PARAMETERS #################
##### Passive checks related #被动监控相关配置
##### Active checks related #主动监控相关配置,agent端主动向server周期性发送数据;
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS ####### #用户自定义参数
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
修改配置agent配置文件
全局配置段
############ GENERAL PARAMETERS #################
EnableRemoteCommands=0 #是否允许Server端执行远程命令
被动监控配置段
##### Passive checks related
Server=IP1, IP2, ... #运行采集数据的服务器
ListenPort=10050 #agent监听的端口
ListenIP=0.0.0.0 #监听的地址
StartAgents=3 #启动agent进程数
主动监控配置端
##### Active checks related
ServerActive=IP1[:port], IP2[:port] #zabbix server 的地址
Hostname=Unique_HOSTNAME #Agent端在Server端的名称;
启动服务:
systemctl start zabbix-agent.service