zabbix监控系统
参考链接: https://blog.csdn.net/weixin_42257277/article/details/107582322
简介
Zabbix是一个基于WEB界面的提供分布式系统监控的企业级的开源解决方案,Zabbix能监视各种网络参数,保证服务器系统的安全稳定的运行,并提供灵活的通知机制以让SA快速定位并解决存在的各种问题。Zabbix分布式监控系统的优点如下:
-
支持自动发现服务器和网络设备;
-
支持底层自动发现;
-
分布式的监控体系和集中式的WEB管理;
-
支持主动监控和被动监控模式;
-
服务器端支持多种操作系统:Linux、Solaris、HP-UX、AIX、FreeBSD、OpenBSD、MAC等;
-
Agent客户端支持多种操作系统:Linux、Solaris、HP-UX、 AIX、FreeBSD、Windows等;
-
基于SNMP、IPMI接口方式、Agent方式;
-
安全的用户认证及权限配置;
-
基于WEB的管理方法,支持自由的自定义事件和邮件、短信发送;
-
高水平的业务视图监控资源,支持日志审计,资产管理等功能;
-
支持高水平API二次开发、脚本监控、自Key定义、自动化运维整合调用。
目前主流的开源监控软件平台
-
MRTG;
-
Cacti;
-
Nagios;
-
Ganglia;
-
Zabbix;
-
Prometheus;
Zabbix主要监控的层面
Zabbix监控是一款开源的、免费的、分布式(支持多个Proxy节点)的监控平台,主要是用于监控IT设备、网站、数据库、业务系统等,主要监控的层面有四个:
-
硬件层面
Zabbix可以监控硬件设备,例如监控硬件服务器:CPU温度、风扇转速、硬盘异常、电源异常、机箱是否被黑客入侵等; -
软件层面
Zabbix可以监控应用程序、软件服务,例如监控Apache、Nginx、Tomcat、MQ、ZK、LVS、Keepalived、PHP、MYSQL等服务进程、状态、监听端口; -
系统层面
Zabbix可以监控Windows/Linux操作系统,例如监控操作系统:CPU、MEM、DISK、NET、I/O、Process、User login、Open files、Load、TCP等状态; -
网络层面
Zabbix可以监控网络设备,例如监控防火墙、路由器、交换机:入口、出口带宽,监控设备之间连通性、丢包率、流量等;
Zabbix监控平台必备的5大组件
要能够熟练构建Zabbix平台&掌握Zabbix监控平台,必须要了解Zabbix监控平台必备的5大组件:
-
Zabbix-WEB
Zabbix WEB是Zabbix监控平台前端访问入口(WEB界面),是基于PHP语言编写的UI界面,主要是用于方便管理人员对监控平台配置、管理、查看等; -
Zabbix-Database
Zabbix Database是整个监控平台后端数据库存储,使用关系型数据库:MYSQL、Mariadb、Oracle、DB2等,主要用于存储后端的监控数据、用户、密码权限信息等; -
Zabbix-Server
Zabbix Server是整个监控平台核心组件,主要是用于收集、汇总客户端的监控数据,并且将监控数据持久化保存至数据库中,可以支持批量监控、自动发现等功能; -
Zabbix-Proxy
Zabbix Proxy是监控平台-分布式节点,主要为了分担Zabbix Server压力,可以代替Server去监控、收集客户端的数据,最终会将数据统一发送给Server。 -
Zabbix-Agent
Zabbix Agent是整个监控平台被监控的对象,也被称为客户端,客户端服务器安装插件,通过客户端插件可以监控自身服务器的监控数据(CPU、MEM、DISK等),最终可以将本地的数据主动(主动模式、被动模式)上报给Server、Proxy;
系统环境
Server:192.168.248.128
mysql:192.168.248.129
关闭防火墙
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
source /etc/selinux/config
systemctl stop firewalld && systemctl disabled firewalld
#停止firewall,将其中的SELINUX=设置为disabled禁止firewall开机启动,source重读配置文件生效。
配置本地yum源
mount /dev/cdrom /media
#挂载本地光盘镜像到/media
cd /etc/yum.repos.d/
mkdir bak && mv CentOS* bak
cp bak/CentOS-Base.repo . && vi CentOS-Base.repo
zabbix+mysql 源码部署
源码安装mysql
参考链接:https://blog.csdn.net/jwx90312/article/details/
下载地址
Mysql5.7版本更新后,部署必须要有BOOST库。
下载官方带boost库源码包
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.32.tar.gz
安装依赖的环境:
安装依赖包
#检查有没有安装过mysql或mariadb
rpm -qa |grep mysql
rpm -qa |grep mariadb
#卸载旧版本
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
#安装必备依赖:CMake、make、ANSI C ++编译器、SSL库、Boost C ++库、ncurses相关、bison相关
yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bison bison-devel
解压源码包
tar -vxzf mysql-boost-5.7.32.tar.gz
cd mysql-5.7.32
编译安装
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/mysql-5.7.32/boost/boost_1_59_0 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all
make && make install
注解:
-DCMAKE_INSTALL_PREFIX:mysql安装目录
-DMYSQL_DATADIR:数据存放目录
-DWITH_BOOST:boost源码路径
-DSYSCONFDIR:my.cnf配置文件目录
-DEFAULT_CHARSET:数据库默认字符编码
-DDEFAULT_COLLATION:默认排序规则
-DENABLED_LOCAL_INFILE:允许从本文件导入数据
-DEXTRA_CHARSETS:安装所有字符集
初始化数据目录
#创建mysql数据库管理用户和组
groupadd mysql && useradd -r -g mysql mysql
#创建相关目录
mkdir -p /usr/local/mysql/{data,etc,tmp,logs}
mkdir -p /var/log/mariadb
cd /var/log/mariadb && touch mariadb.log
#修改/usr/local/mysql | /var/log/mariadb/权限
chown -R mysql:mysql /var/log/mariadb/
chown -R mysql:mysql /usr/local/mysql
#创建my.cnf配置文件
vim /usr/local/mysql/etc/my.cnf
[client] #客户端设置
port=3306 #服务器监听端口,默认为3306
socket=/usr/local/mysql/tmp/mysql.sock #Unix套接字文件路径,默认/tmp/mysql.sock
[mysqld] #服务端设置
## 一般配置选项
port=3306 #服务器监听端口,默认为3306
basedir=/usr/local/mysql #MySQL安装根目录
datadir=/usr/local/mysql/data #MySQL数据文件目录
socket=/usr/local/mysql/tmp/mysql.sock #Unix套接字文件路径,默认/tmp/mysql.sock
pid-file=/usr/local/mysql/tmp/mysql.pid #服务进程pid文件路径
character_set_server=utf8 #默认字符集
default_storage_engine=InnoDB #默认InnoDB存储引擎
user=mysql
## 连接配置选项
max_connections=200 #最大并发连接数
table_open_cache=400 #表打开缓存大小,默认2000
open_files_limit=1000 #打开文件数限制,默认5000
max_connect_errors=200 #最大连接失败数,默认100
back_log=100 #请求连接队列数
connect_timeout=20 #连接超时时间,默认10秒
interactive_timeout=1200 #交互式超时时间,默认28800秒
wait_timeout=600 #非交互超时时间,默认28800秒
net_read_timeout=30 #读取超时时间,默认30秒
net_write_timeout=60 #写入超时时间,默认60秒
max_allowed_packet=8M #最大传输数据字节,默认4M
thread_cache_size=10 #线程缓冲区(池)大小
thread_stack=256K #线程栈大小,32位平台196608、64位平台262144
## 临时内存配置选项
tmpdir=/tmp #临时目录路径
tmp_table_size=64M #临时表大小,默认16M
max_heap_table_size=64M #最大内存表大小,默认16M
sort_buffer_size=1M #排序缓冲区大小,默认256K
join_buffer_size=1M #join缓冲区大小,默认256K
## Innodb配置选项
#innodb_thread_concurrency=0 #InnoDB线程并发数
innodb_io_capacity=200 #IO容量,可用于InnoDB后台任务的每秒I/O操作数(IOPS),
innodb_io_capacity_max=400 #IO最大容量,InnoDB在这种情况下由后台任务执行的最大IOPS数
innodb_lock_wait_timeout=50 #InnoDB引擎锁等待超时时间,默认50(单位:秒)
innodb_buffer_pool_size=512M #InnoDB缓冲池大小,默认128M
innodb_buffer_pool_instances=4 #InnoDB缓冲池划分区域数
innodb_max_dirty_pages_pct=75 #缓冲池最大允许脏页比例,默认为75
innodb_flush_method=O_DIRECT #日志刷新方法,默认为fdatasync
innodb_flush_log_at_trx_commit=2 #事务日志刷新方式,默认为0
transaction_isolation=REPEATABLE-READ #事务隔离级别,默认REPEATABLE-READ
innodb_data_home_dir=/usr/local/mysql/data #表空间文件路径,默认保存在MySQL的datadir中
innodb_data_file_path=ibdata1:128M:autoextend #表空间文件大小
innodb_file_per_table=ON #每表独立表空间
innodb_log_group_home_dir=/usr/local/mysql/data #redoLog文件目录,默认保存在MySQL的datadir中
innodb_log_files_in_group=2 #日志组中的日志文件数,默认为2
innodb_log_file_size=128M #日志文件大小,默认为48MB
innodb_log_buffer_size=32M #日志缓冲区大小,默认为16MB
## MyISAM配置选项
key_buffer_size=32M #索引缓冲区大小,默认8M
read_buffer_size=4M #顺序读缓区冲大小,默认128K
read_rnd_buffer_size=4M #随机读缓冲区大小,默认256K
bulk_insert_buffer_size=8M #块插入缓冲区大小,默认8M
myisam_sort_buffer_size=8M #MyISAM排序缓冲大小,默认8M
#myisam_max_sort_file_size=1G #MyISAM排序最大临时大小
myisam_repair_threads=1 #MyISAM修复线程
skip-external-locking #跳过外部锁定,启用文件锁会影响性能
## 日志配置选项
log_output=FILE #日志输出目标,TABLE(输出到表)、FILE(输出到文件)、NONE(不输出),可选择一个或多个以逗>号分隔
log_error=/usr/local/mysql/logs/error.log #错误日志存放路径
log_error_verbosity=1 #错误日志过滤,允许的值为1(仅错误),2(错误和警告),3(错误、警告和注释),默认值为3。
log_timestamps=SYSTEM #错误日志消息格式,日志中显示时间戳的时区,UTC(默认值)和 SYSTEM(本地系统时区)
general_log=ON #开启查询日志,一般选择不开启,因为查询日志记录很详细,会增大磁盘IO开销,影响性能
general_log_file=/usr/local/mysql/logs/general.log #通用查询日志存放路径
## 慢查询日志配置选项
slow_query_log=ON #开启慢查询日志
slow_query_log_file=/usr/local/mysql/logs/slowq.log #慢查询日志存放路径
long_query_time=2 #慢查询时间,默认10(单位:秒)
min_examined_row_limit=100 #最小检查行限制,检索的行数必须达到此值才可被记为慢查询
log_slow_admin_statements=ON #记录慢查询管理语句
log_queries_not_using_indexes=ON #记录查询未使用索引语句
log_throttle_queries_not_using_indexes=5 #记录未使用索引速率限制,默认为0不限制
log_slow_slave_statements=ON #记录从库复制的慢查询,作为从库时生效,从库复制中如果有慢查询也将被记录
## 复制配置选项
server-id=1 #MySQL服务唯一标识
log-bin=mysql-bin #开启二进制日志,默认位置是datadir数据目录
log-bin-index=mysql-bin.index #binlog索引文件
binlog_format=MIXED #binlog日志格式,分三种:STATEMENT、ROW或MIXED,MySQL 5.7.7之前默认为STATEMENT,之后默认为ROW
binlog_cache_size=1M #binlog缓存大小,默认32KB
max_binlog_cache_size=1G #binlog最大缓存大小,推荐最大值为4GB
max_binlog_size=256M #binlog最大文件大小,最小值为4096字节,最大值和默认值为1GB
expire_logs_days=7 #binlog过期天数,默认为0不自动删除
log_slave_updates=ON #binlog级联复制
sync_binlog=1 #binlog同步频率,0为禁用同步(最佳性能,但可能丢失事务),为1开启同步(影响性能,但最安全不会丢失任何事务),为N操作N次事务后同步1次
relay_log=relay-bin #relaylog文件路径,默认位置是datadir数据目录
relay_log_index=relay-log.index #relaylog索引文件
max_relay_log_size=256M #relaylog最大文件大小
relay_log_purge=ON #中继日志自动清除,默认值为1(ON)
relay_log_recovery=ON #中继日志自动恢复
auto_increment_offset=1 #自增值偏移量
auto_increment_increment=1 #自增值自增量
slave_net_timeout=60 #从机连接超时时间
replicate-wild-ignore-table=mysql.% #复制时忽略的数据库表,告诉从线程不要复制到与给定通配符模式匹配的表
skip-slave-start #跳过Slave启动,Slave复制进程不随MySQL启动而启动
## 其他配置选项
#memlock=ON #开启内存锁,此选项生效需系统支持mlockall()调用,将mysqld进程锁定在内存中,防止遇到操作系统导致mysqld交换到磁盘的问题
[mysqldump] #mysqldump数据库备份工具
quick #强制mysqldump从服务器查询取得记录直接输出,而不是取得所有记录后将它们缓存到内存中
max_allowed_packet=16M #最大传输数据字节,使用mysqldump工具备份数据库时,某表过大会导致备份失败,需要增大该值(大>于表大小即可)
[myisamchk] #使用myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查、修复、优化他们
key_buffer_size=32M #索引缓冲区大小
myisam_sort_buffer_size=8M #排序缓冲区大小
read_buffer_size=4M #读取缓区冲大小
write_buffer_size=4M #写入缓冲区大小
#使用my.cnf配置文件和mysql用户初始化数据目录
cd /usr/local/mysql
bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize --user=mysql
配置环境变量
echo "
> export MYSQL_HOME=/usr/local/mysql
> export PATH=\$MYSQL_HOME/bin:\$PATH
> " >> /etc/profile
#使环境变量即时生效
source /etc/profile
配置MySQL启动
#复制配置文件到系统服务配置
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
#启动mysql服务
/etc/init.d/mysql start
初始化数据库
#获取临时密码
grep "password" /usr/local/mysql/logs/error.log
mysql -uroot -p
Enter password:
mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';
mysql>quit
配置远程连接
#用新密码登
mysql -uroot -p
Enter password:
#授权 所有权限(all),所有数据库(*.*) 给 用户名(root),任何主机(%),密码(mysql)
mysql>grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
#刷新权限使其立即生效
mysql>flush privileges;
#退出MySQL
mysql>quit
安装PHP
安装PHP7.2
下载地址
http://cn2.php.net/distributions/php-7.2.34.tar.bz2
解压PHP7
yum -y install bzip2
tar -jxvf php-7.2.34.tar.bz2
进入目录
cd php-7.2.15/
安装PHP依赖组件
yum -y install pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
卸载旧版本php
rpm -qa | grep php
rpm -e
编译安装
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-config-file-path=/usr/local/php/etc \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-pdo \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir= \
--enable-xml \
--enable-session \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-gd \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--enable-maintainer-zts \
--with-xsl \
--enable-tokenizer
make && make install
创建用户
#创建www用户组
groupadd www
#创建www用户,并设置不允许登录
useradd -g www -s /sbin/nologin www
创建配置文件
#在安装包目录里执行
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
修改配置文件
vim /usr/local/php/etc/php.ini
#修改session文件存放目录
session.save_path = "/usr/local/php/tmp"
#隐藏PHP版本信息(X-Powered-By)
expose_php = Off
#php验证可能报错选项
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai ##默认UTC时区改成中国时区
创建session文件存放目录
mkdir /usr/local/php/tmp && chown www:www /usr/local/php/tmp
启动 php-fpm 服务
#更改 php-fpm 用户和用户组:
vim /usr/local/php/etc/php-fpm.d/www.conf
user = www
group = www
#启动 php-fpm 服务:
(如进程存在 pkill php-fpm)
/usr/local/php/sbin/php-fpm
#查看进程:
ps aux | grep php-fpm
配置环境变量
#新建 php 环境变量文件
touch /etc/profile.d/php.sh
#写入文件
vim /etc/profile.d/php.sh
echo "
PATH=\$PATH:/usr/local/php/bin
export PATH
" >> /etc/profile.d/php.sh
#使配置文件生效
source /etc/profile
源码部署Zabbix Server:
关闭防火墙
下载地址
https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.0.tar.gz
安装依赖
yum -y install epel-release net-snmp net-snmp-devel perl-DBI libevent-devel
安装httpd、mysql客户端
yum install httpd httpd-devel httpd-tools mysql mysql-devel -y
配置php解析
cd /etc/httpd/conf.d
vim php-fpm.conf
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
创建zabbix用户
groupadd zabbix
useradd -g zabbix zabbix
usermod -s /sbin/nologin zabbix
解压zabbix软件包并将Zabbix基础SQL文件导入数据至Zabbix数据库
解压zabbix软件包:
tar -xzvf zabbix-5.0.0.tar.gz
cd zabbix-5.0.0
创建数据库并导入初始化:
mysql -h192.168.248.130 -uroot -pmysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'%' identified by '123456';
flush privileges;
将Zabbix基础SQL文件导入数据至Zabbix数据库:
cd /usr/local/zabbix-5.0.0
mysql -h192.168.248.130 -uzabbix -p123456 zabbix<database/mysql/schema.sql
mysql -h192.168.248.130 -uzabbix -p123456 zabbix<database/mysql/images.sql
mysql -h192.168.248.130 -uzabbix -p123456 zabbix<database/mysql/data.sql
编译安装
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make install
修改配置Zabbix server配置文件
cd ../zabbix/etc
vim zabbix_server.conf
DBHost=192.168.248.130
DBName=zabbix
DBUser=zabbix
DBPassword=123456
chown zabbix:zabbix /usr/local/zabbix/ -R
创建软连接,使系统能发现zabbix*命令
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
配置zabbix_server\zabbix_agentd启动脚本
cp misc/init.d/tru64/{zabbix_agentd,zabbix_server} /etc/init.d/;chmod o+x /etc/init.d/zabbix_*
配置整合apache和php
cp -a ui/* /var/www/html/
chown -R apache:apache /var/www/html/
修改httpd.conf 支持index.php
vim /etc/httpd/conf/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
重新启动Zabbix Server、HTTP、php服务
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start
systemctl restart httpd
连接zabbix
- http://192.168.248.128
- php验证,如果php验证报错,修改php配置、重启php:/usr/local/php/etc/php.ini
- 更改语言支持
源码部署Zabbix Agent:
安装依赖包
yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI
创建用户
groupadd zabbix;
useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix
编译安装
tar -xzf zabbix-5.0.0.tar.gz
cd zabbix-5.0.0
./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make install
创建软连接
ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
配置启动脚本
cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd
chmod o+x /etc/init.d/zabbix_agentd
修改配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.248.128 #server端ip
ServerActive=192.168.248.128 #server端ip
Hostname = 192.168.2.215 #agent端ip或者是主机名都可以
启动agent
/etc/init.d/zabbix_agentd start
zabbix配置监控agent