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
#挂載本地CD光牒鏡像到/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
進入目錄
安裝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*指令
配置zabbix_server\zabbix_agentd啟動腳本
配置整合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:
安裝依賴包
建立使用者
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
建立軟連接配接
配置啟動腳本
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