Zabbix監控的搭建理論:
持多種方式數據採集:簡單監控、Agent監控、snmp接口監控、JMX接口監控
告警配置web化:郵件、微信、釘釘、短信
Zabbix和Grafana的結合方便監控數據的可視化
Zabbix Server會去採集監控數據,採集的監控數據會寫入到SQL數據庫
Zabbix的WEB後端採用php語言開發,全部配置信息、用戶認證信息等會寫入SQL數據庫
企業級Zabbix的搭建依賴的環境:主流採用LNMP環境(Centos7+Nginx+Mysql+Php)\
支持分佈式監控(當面多成百上千的服務器的時候就須要分佈式監控,相似樹型結構 一臺server 服務器 ,下面是proxy代理,proxy代理下面鏈接成敗上千臺服務器)php
服務器名 | IP地址 | 角色 |
---|---|---|
master1 | 192.168.0.100 | 接受server |
agent1 | 192.168.0.101 | 監控agent |
agent2 | 192.168.0.102 | 監控agent |
master 跟其餘兩臺互信(只是爲方便操做),並關閉防禦牆和selinuxhtml
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平臺搭建mysql
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.targetlinux
PHP編譯安裝:nginx
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.targetc++
修改nginx 配置git
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編譯安裝github
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);
?>web
Zabbix4.0tls 編譯安裝sql
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個