目錄
1 Zabbix 簡介
2 Zabbix 服務安裝部署及監控配置
3 配置監控進程主機
4 解決 zabbix 中文亂碼
5 文件系統可用空間小於 20G 自動告警
6 使用 Grafana 展示 zabbix 監控圖表
############################# 開始部署 ############################
1 zabbix 簡介
1.1 zbabix 簡介
官方網站:http://www.zabbix.com/
企業級監控解決方案
zabbix 是一個基於 WEB 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案 zabbix 能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位解決存在的各種問題。
Zabbix 主要特點
安裝不配置簡單,學習成本低 支持多詫言(包括中文) 免費開源 自勱發現服務器不網絡設備分布式監視以及 WEB 集中管理功能 可以無 agent 監視 用戶安全認證和柔軟的授權方式 通過 WEB 界面設置戒查看監視結果 email 等通知功能
Zabbix 主要功能
監控 CPU 負載、內存使用、磁盤使用、網絡狀態、端口監視、日志監視、插件開發自定義
1.2 Zabbix 運行機制
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通過 SNMP,Zabbix agent,Ping,端口監視等你方法提供對進程服務器/網絡狀態的 監視,數據收集功能,可以在運行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD, OX X,Windows 多 平台。
Zabbix Agent 安裝在需要被監控的目標服務器上,主要完成對硬件信息不操作系統有關的內存, CPU 等你 信息收集。
Zabbix Server 可以單獨監視進程服務器的服務狀態,同時也可以不 Zabbix Agent 結合。可以輪詢 Zabbix Agent 主勱接收監視數據(trapping 傳遞 方式),同時還可以被勱接收 Zabbix Agent 發送的數據。
Zabbix 運行過程圖
Zabbix 支持多種網絡方式下的監控,可以通過分布式的部署和安裝監控代理 Zabbix,通過 C/S 模式采集數據,通過 B/S 模式在 Web 端展示和配置!Agent 監控端口 10050
服務端安裝 Zabbix Server 和 Zabbix Agent 兩個服務,客戶端只安裝 Zabbix Agent 一個服務,監控原理 就是 Zabbix Agent 服務將從系統中獲取的相關數據傳送給 Zabbix Server,然后 Zabbix Server 服務將數據分析之后以 PHP 頁面展示出來!
2 Zabbix 服務安裝部署及監控配置
2.1 安裝LNMP 環境
2.2 方法一 Zabbix 官網安裝 :
https://www.zabbix.com/cn/download?zabbix=4.4&os_distribution=centos&os_version=7&db=mysql&ws=nginx
2.3 方法二 自己部署 LNMP 平台
安裝MySQL5.7 數據庫
MySQL 官網下載: https://downloads.mysql.com/archives/community/
選着版本,下載本地再上傳至服務器,我這下載的是
mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar.gz
~]# mkdir mysql
~]# cd mysql
mysql]# rz
mysql]# tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar.gz
mysql]# ll
mysql]# yum -y install mysql-community-*.rpm
mysql]# systemctl start mysqld
mysql]# systemctl enable mysqld
mysql]# netstat -ntulp | grep mysqld
tcp6 0 0 :::3306 :::* LISTEN 18427/mysqld
mysql]# grep password /var/log/mysqld.log ## 查找數據庫初始密碼
2020-05-07T08:07:03.706853Z 1 [Note] A temporary password is generated for root@localhost: ahU82+fwz:0Y
mysql]# mysql -u root -p
Enter password: ##輸入初始密碼登錄數據庫
mysql> alter user "root"@"localhost" identified by "poweroff"; ##設置新密碼
mysql> exit;
mysql]# mysql -u root -p
Enter password: ##輸入新密碼登錄數據庫
mysql> create database zabbix character set utf8 collate utf8_bin; ##創建zabbix庫
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; ## 添加 zabbix 庫授權用戶
mysql> quit;
安裝Nginx
mysql]# cat /etc/yum.repos.d/nginx.repo ##配置nginx yum源
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
mysql]# yum makecache ##刷新緩存
mysql]# yum -y install nginx ##安裝nginx
mysql]# nginx -t
mysql]# systemctl start nginx
mysql]# netstat -ntulp | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 90777/nginx: master
注:
1、 Nginx 官網: http://nginx.org/en/download.html
2、nginx源的nginx官網源,yum 安裝時默認使用最新版本,不想使用最新版本也可以去nginx 官網下載源碼包安裝, 以下是nginx 源碼安裝模塊
--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
安裝PHP
PHP 官網下載:https://www.php.net/downloads
選着版本,下載本地再上傳至服務器,我這下載的是 php-7.2.30.tar.gz
~]# mkdir php
~]# cd php
php]# rz
php]# tar -xf php-7.2.30.tar.gz
php]# ls
php]# cd php-7.2.30
php-7.2.30]# yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel MySQL pcre-devel curl-devel libxslt-devel ##安裝php 依賴包
php-7.2.30]# ./configure --prefix=/usr/local/php7.2 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-calendar --with-bz2 --with-jpeg-dir --with-freetype-dir
php-7.2.30]# make
php-7.2.30]# make install
php-7.2.30]# cp php.ini-production /usr/local/php7.2/etc/php.ini
etc]# cd /usr/local/php7.2/etc/
etc]# cp php-fpm.conf.default php-fpm.conf
php-fpm.d]# cd php-fpm.d/
php-fpm.d]# cp www.conf.default www.conf
注: 這里都是相對路徑
創建PHP 啟動腳本
php-fpm.d]# cp /opt/php-7.2.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
php-fpm.d]# chmod 755 /etc/init.d/php-fpm
啟動PHP
php-fpm.d]# /etc/init.d/php-fpm start
檢驗
php-fpm.d]# netstat -ntulp | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 15391/php-fpm: mast
2.4、安裝zabbix4.4 版本
~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm ## 安裝zabbix 官網 yum 源
~]# yum -y install epel-release
~]# yum makecache
~]# yum -y install zabbix-server-mysql
~]# yum -y install zabbix-agent
~]# yum -y install zabbix-web-mysq
注:這里有時會安裝失敗,與網絡有關,多安裝幾次
導入初始架構和數據,系統將提示輸入新創建的密碼。
~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Zabbix server配置數據庫
~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=password ##數據庫鏈接密碼
Zabbix前端配置PHP
~]# mv /etc/nginx/conf.d/default.conf{,.bak}
~]# cat /etc/nginx/conf.d/zabbix.conf
server {
listen 80;
server_name www.zabbix.od.com.od; ##這里域名是我虛擬機內網的域名,需要修改windows 的hosts 文件,解析域名
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
~]# cat /usr/local/php7.2/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /run/php-fpm/zabbix.sock
listen.owner = nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai ## 設置時區
重啟PHP 、Nginx
~]# /etc/init.d/php-fpm7.2 restart
~]# nginx -t
~]# systemctl restart nginx
啟動zabbix
~]# systemctl start zabbix-server zabbix-agent
~]# systemctl enable zabbix-server zabbix-agent
2.5、配置 zabbix-web 前端頁面
瀏覽器訪問: http://www.zabbix.od.com.od/index.php,下一步 Next
開始檢查環境,確認所有選項都為 ok , 下一步Next
#輸入用於連接數據庫的詳細信息。Zabbix 數據庫必須已經創建。下一步Next
這里不用改,直接下一步Next
確認信息,下一步Next
創建完成
默認用戶名為 Admin,密碼為 zabbix
注: 剛安裝完下面有一條報警信息,說 zabbix restarted 運行時間小於 10 分鍾,這個沒有影響,這樣的告警信息用於表示某些服務重啟。剛剛運行時間肯定小於 10 分鍾,所以忽略即可。
修改中文語言 ,如果看習慣英文,可以不用修改
注意:這里可用2 ,是我已經添加1台被監控的主機,剛創建成功時1台或者0台
3 配置監控進程主機
3.1 添加被監控主機
注意:這里新1台服務器做被監控主機
~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm ## 安裝zabbix 官網 yum 源
~]# yum -y install zabbix-agent
~]#cat /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.17.133 #zabbix server 地址
ServerActive=192.168.17.133 #主動檢查本主機的數據發送給 Zabbix Server
Hostname=192.168.17.132
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
~]# systemctl start zabbix-agent && systemctl enable zabbix-agent
~]# netstat -ntulp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 24411/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 24411/zabbix_agentd
3.2 zabbix 添加 Host 主機
添加后狀態為已啟動,等待可用性也變為綠色就可以正常獲取數據了。
查看監控到的數據,可以通過監測下圖形查看,這里先查看磁盤使用情況:
注:現在已經成功監控到一台服務器。但顯示網頁中的一些漢字是亂碼。
4 解決 zabbix 中文亂碼
在windows找到 simkai.ttf 簡體字,上傳到 zabbix 服務器。
~]# cd /usr/share/zabbix/assets/fonts/ ##fonts 目錄沒有就創建
Fonts~]# rz
fonts]# rm -rf /etc/alternatives/zabbix-web-font
fonts]# ln -s /usr/share/zabbix/fonts/msyh.ttf /etc/alternatives/zabbix-web-font
fonts]# vim /usr/share/zabbix/include/locales.inc.php
將 'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false],
修改為 'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true],
fonts]# systemctl restart zabbix-server
退出並重新登錄WEB,查看圖形,顯示正常。
5 文件系統可用空間小於 20G 自動告警
5.1 創建監控項
創建自定義的監控項以及觸發器,在 linux 主機模板中創建即可,以便於使用該模板的所有主機生效。
找到模板中的監控項進行創建
監控磁盤剩余空間,鍵值:vfs.fs.size[/,free]
注:
1、vfs 該鍵值用於檢測磁盤剩余空間,zabbix 內置了非常多的鍵值可以選着使用
2、單位B不需要修改,后期圖表中單位和G拼接起來就是GB
3、更新時間 10S ,在生產環境中不需要這么頻繁,建議1小時檢測一次,特殊業務除外
5.2 創建圖形
創建圖形,便於查看數據。
5.3 創建觸發器
模板中創建觸發器
添加表達式 ,
注: 結果大於20G 是根據服務器存儲空間情況而定
查看告警信息
6 使用 Grafana 展示 zabbix 監控圖表
安裝 Grafana
Grafana 是一個將數據可視化的工具,是網絡架構和應用分析中最流行的數據展示工具,相比於 zabbix 的圖形界面而言 Grafana 擁有更美觀的界面以及功能更強大的插件。
官網下載地址:https://grafana.com/grafana/download/6.6.2?platform=linux
選着合適的版本下載
~]# wget https://dl.grafana.com/oss/release/grafana-6.6.2-1.x86_64.rpm
~]# yum install grafana-6.6.2-1.x86_64.rpm -y
瀏覽器訪問: http://www.zabbix.od.com.od:3000
注:
1、用戶名:admin 密碼:admin
2、第一次登陸會提示讓你設置一個新的密碼,因為默認密碼是弱口令密碼,存在風險
添加數據源拓展插件
注:
1、Grafana 默認並沒有 zabbix 數據源的支持,
2、離線安裝插件
下載地址:
https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.10.5/download
上傳所需要安裝包
~]# rz
~]# unzip alexanderzobnin-grafana-zabbix-v3.10.5-1-g2219691.zip -d /var/lib/grafana/plugins/ ## 解壓至grafana 插件目錄
~]# systemctl restart grafana-server
啟用插件
下拉至最后找到 zabbix
點擊啟動
現在添加數據源就有 zabbix 的選項
下拉到最后選擇 zabbix
zabbix API 地址:http://www.zabbix.od.com.od/api_jsonrpc.php
注:
zabbix4.4.8的接口換了,地址中不要zabbix即可,
填http://IP或 域名/api_jsonrpc.php 就能正常連接Grafana6.6
和設置 zabbix 信息同一界面,導入模板
查看效果
到此部署完成 Zabbix 4.4.8 + grafana 6.6.2 !!