Zabbix监控的搭建理论: 持多种方式数据采集:简单监控、Agent监控、snmp接口监控、JMX接口监控 告警配置web化:邮件、微信、钉钉、短信 Zabbix和Grafana的结合方便监控数据的可视化 Zabbix Server会去采集监控数据,采集的监控数据会写入到SQL数据库 Zabbix的WEB后端采用php语言开发,所有配置信息、用户认证信息等会写入SQL数据库 企业级Zabbix的搭建依赖的环境:主流采用LNMP环境(Centos7+Nginx+Mysql+Php)
支持分布式监控(当面多成百上千的服务器的时候就需要分布式监控,类似树型结构 一台server 服务器 ,下面是proxy代理,proxy代理下面连接成败上千台服务器)

服务器名 IP地址 角色
master1 192.168.0.100 接受server
agent1 192.168.0.101 监控agent
agent2 192.168.0.102 监控agent

master 跟其他两台互信(只是为方便操作),并关闭防护墙和selinux

setenforce 0
systemctl disable firewalld
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.101
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.102

LNMP平台搭建

nginx: yum install -y wget gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel cd /usr/local/src yum install lrzsz -y wget 'http://nginx.org/download/nginx-1.14.2.tar.gz' tar -zxvf nginx-1.14.2.tar.gz cd nginx-1.14.2 ./configure --prefix=/usr/local/nginx make && make install 环境变量:export PATH=$PATH:/usr/local/nginx/sbin/ ##使用systemctl管理Nginx,/usr/lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx [Install] WantedBy=multi-user.target

PHP编译安装:

yum -y install epel-release yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel cd /usr/local/src/ wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz' tar -zxf php-5.6.40.tar.gz cd php-5.6.40 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm make && make install cp php.ini-production /usr/local/php/etc/php.ini 环境变量:export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/ 检查配置文件:php-fpm -t 使用默认配置文件:mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 启动:php-fpm 使用systemctl管理php-fpm,/usr/lib/systemd/system/php-fpm.service [Unit] Description=php-fpm After=network.target [Service] Type=forking ExecStart=/usr/local/php/sbin/php-fpm [Install] WantedBy=multi-user.target

修改nginx 配置

location / {
            root   html;
            index  index.html index.htm index.php;
        }
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  ## 注意这地方的配置 如果没修改正确 可能会报 file not found 
            include        fastcgi_params;
        }

mysql编译安装

yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel
useradd -s /sbin/nologin mysql
cd /usr/local/src
wget 'https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.46.tar.gz'
tar -zxvf mysql-5.6.46.tar.gz
cd mysql-5.6.46
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1
make && make install
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
export PATH=$PATH:/usr/local/mysql/bin/   ##mysql环境变量配置
##更新mysql配置/etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
datadir=/data/mysql
user=mysql   ##启动用户
skip-name-resolve  ##禁用解析 只能使用IP
long_query_time=2  ##执行查询超过2秒记录
slow_query_log_file=/data/mysql/mysql-slow.log  ## 慢查询日志的记录位置
expire_logs_days=2   ##bin-log日志记录时间超过2天会被删除
innodb-file-per-table=1  ## 每个表都是一个独立的文件
innodb_flush_log_at_trx_commit = 2 ##当设置为0,该模式速度最快,但不安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
#当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。。
#当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。
log_warnings = 1
max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120

[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid

##mysql数据库初始化
mkdir -pv /data/mysql
chown -R mysql:mysql  /usr/loca*/mysql /dat**/mysql  ## *l **a 显示问题作替换
yum install -y perl-Module-Install
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --user=mysql  --datadir=/data/mysql/
#使用systemctl管理mysqld,/usr/lib/systemd/system/mysqld.service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
[Install]
WantedBy=multi-user.target

systemctl start msyqld 
##启动后不需要密码
mysql -uroot -h 127.0.0.1 -A   ##-A  当我们打开数据库,即use dbname时,要预读数据库信息,当使用-A参数时,就不预读数据库信息。加快登陆速度
##增加密码,安全登陆
mysqladmin -h 127.0.0.1 -u root password 'zabbixpwd'
mysql -h 127.0.0.1 -uroot -pzabbixpwd -A

GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.0.%' IDENTIFIED BY 'zabbixpwd' WITH GRANT OPTION; flush privileges; 网络登陆测试:mysql -h 192.168.237.49 -uroot -pzabbixpwd -A LNMP 验证环境 vim /usr/local/nginx/html/test.php <?php $link = mysqli_connect('127.0.0.1', 'root', 'zabbixpwd'); if (!$link) { die('Could not connect: ' . mysqli_error()); } echo 'Connected successfully'; mysqli_close($link); ?>

Zabbix4.0tls 编译安装

yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
useradd -s /sbin/nologin zabbix
cd /usr/local/src/
wget 'https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz'
tar -zxvf zabbix-4.0.3.tar.gz
cd zabbix-4.0.3
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
make  && make install
##zabbix启动步骤:
#zabbix server的启动
#需要到mysql里做数据库初始化
#配置zabbix server,最主要是配置连接mysql的用户名和密码
#启动zabbix server
##环境变量修改
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
##zabbix mysql初始化

create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbixpwd'; flush privileges; set names utf8; use zabbix; source /usr/local/src/zabbix-4.0.3/database/mysql/schema.sql; source /usr/local/src/zabbix-4.0.3/database/mysql/data.sql; source /usr/local/src/zabbix-4.0.3/database/mysql/images.sql;

##修改zabbix server 配置
vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix    
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts   ##邮件告警 微信告警等脚本存放位置
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=3000            ##慢查询时间
####
chown zabbix:zabbix -R /usr/local/zabbix/ ##由于zabbix启动用户是zabbix 所有需要修改zabbix相关文件夹的用户权限
zabbix_server ##启动 默认监听10051端口
##Zabbix Web的安装
mkdir /usr/local/nginx/html/zabbix
cp -a /usr/local/src/zabbix-4.0.3/frontends/php/* /usr/local/nginx/html/zabbix/  ##放在NGINXweb目录
#访问
http://192.168.0.100/zabbix/
##修改php.ini相关配置通过安装检查
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
always_populate_raw_post_data = -1
##生成相关配置文件 下载并编辑
vim /usr/local/nginx/html/zabbix/conf/zabbix.conf.php
##点击FISH 注意这个时候 还是会报错 不用管 直接http://192.168.0.100/zabbix/ 登陆
systemctl restart php-fpm  ##修改完毕启动

##登陆修改相关设置 #1 关闭zabbix server 监控 #2 禁用guest用户 在zabbix 中控制用户相关权限只能去修改所属组的权限 #3 修改管理员密码,管理员默认密码 Admin zabbix

zabbix web界面汉化 #1 首先在admin用户管理界面 将语言设置为中文,由于字符的问题部分显示会出先乱码 #2 解决web界面乱码

#下载微软雅黑字体
https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf  ## 注意 已经要以ttf 格式结尾 win10自带的ttc文件用不了
###上传路径
/nginx/html/zabbix/assets/fonts or /web/zabbix/fonts 
##字符文件路径根据/usr/local/nginx/html/zabbix/include/defines.inc.php 文件里define('ZBX_FONTPATH',                          realpath('assets/fonts'))  文件显示去找
vim /usr/local/nginx/html/zabbix/include/defines.inc.php 
##查找 DejaVuSans 修改为msyh 总计替换2个