Zabbix+Grafana打造高逼格監控系統

第一章 zabbix監控的意義

1.1 爲何要監控

  1. 業務安全性的保障
  2. 系統的保障
  3. 產品持續性的運行

1.2 監控的內容

1.3 zabbix的選擇性

  • [x] 純命令監控太侷限性
  • [x] 監控三劍客(Nagios、zabbix、Cacti )
  • [x] 可及時發現故障,並在故障恢復的第一時間獲得通知
  • [x] 靈活運用,包括zabbix的閾值定義,自動發現,API接口,觸發動做等功能

1.4 zabbix的工做組件及告警流程

  1. 數據採集:Zabbix 經過 SNMP、Agent、ICMP、SSH、IPMI 等對系統進行數據採集。
  2. 數據存儲: Zabbix存儲在MySQL上,也能夠存儲在其餘數據庫服務。
  3. 數據分析:當咱們過後須要覆盤分析故障時,zabbix能給咱們提供圖形以及時間等相關信息,方面咱們肯定故障所在。
  4. 數據展現:web界面展現、(移動APP、java_php開發一個web界面也能夠)。
  5. 監控報警:電話報警、郵件報警、微信報警、短信報警、報警升級機制等(不管什麼報警均可以)。
  6. 報警處理:當接收到報警,咱們須要根據故障的級別進行處理,好比:重要緊急、重要不緊急,等。根據故障的級別,配合相關的人員進行快速處理。

第二章 zabbix的安裝部署及使用

注意:安裝zabbix要求仍是比較多的php

硬件方面:以監控主機臺數而定。html

軟件方面:源碼安裝,lamp/lnmp的版本要求,php的擴展包等。前端

https://www.zabbix.com zabbix的官方網站。java

2.1 源碼安裝zabbix服務端

部署nginxmysql

[root@localhost opt]# yum install gcc  openssl openssl-devel pcre pcre-devel  -y    #安裝依賴
[root@localhost opt]# rz -y                                 #rz上傳軟件包            
[root@localhost opt]# ls                
nginx-1.12.2.tar.gz
[root@localhost opt]# useradd -r -s /sbin/nologin nginx                 #建立nginx用戶
[root@localhost opt]# tar xf nginx-1.12.2.tar.gz  && cd nginx-1.12.2         #解壓,進入目錄
[root@localhost nginx-1.12.2]# ./configure  --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module  --with-http_ssl_module  #編譯
[root@localhost nginx-1.12.2]# make && make install             #安裝
[root@localhost nginx-1.12.2]# /usr/local/nginx/sbin/nginx       #直接啓動nginx
[root@localhost nginx-1.12.2]# ps -ef |grep nginx                   #可查看nginx是否啓動

部署phplinux

[root@localhost nginx-1.12.2]# yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
> libcurl-devel libjpeg-devel libpng-devel openssl-devel \
> libxslt-devel                                                     #安裝依賴
[root@localhost opt]# rz -y                                 #上傳軟件包,亦可直接wget
[root@localhost opt]# ls            
php-5.6.36.tar.gz
******************************************************************************************
[root@localhost opt]# wget http://docs.php.net/distributions/php-5.6.36.tar.gz
[root@localhost opt]# tar xf php-5.6.36.tar.gz                  #解壓
[root@localhost opt]# cd php-5.6.36/                                #進入安裝目錄
[root@localhost php-5.6.36]# ./configure --prefix=/usr/local/php \
> --with-config-file-path=/usr/local/php/etc \
> --enable-fpm --enable-opcache \
> --with-mysql --with-mysqli  \
> --enable-session --with-zlib --with-curl --with-gd \
> --with-jpeg-dir --with-png-dir --with-freetype-dir \
> --enable-mbstring --enable-xmlwriter --enable-xmlreader \
> --enable-xml --enable-sockets --enable-bcmath --with-gettext      #編譯
[root@localhost php-5.6.36]# make -j 8 && make install              #安裝
[root@localhost php-5.6.36]# cp php.ini-production /usr/local/php/etc/php.ini  #拷貝模塊文件
[root@localhost php-5.6.36]# cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf
[root@localhost php-5.6.36]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-5.6.36]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@localhost php-5.6.36]# chmod +x /etc/init.d/php-fpm               #啓動文件權限
[root@localhost php-5.6.36]# /etc/init.d/php-fpm start              #啓動php

部署mysqlios

[root@localhost php-5.6.36]# yum install cmake make gcc-c++ cmake bison-devel ncurses-devel perl-Module-Install.noarch -y                                       #安裝依賴
[root@localhost opt]# wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.27.tar.gz                                                                   #下載mysql軟件包
[root@localhost opt]# groupadd mysql                                   #建立mysql組
[root@localhost opt]# useradd  mysql  -s /sbin/nologin -M -g mysql   #建立mysql用戶
[root@localhost opt]# mkdir -p /data/mysql && mkdir -p /usr/local/mysql #建立存儲數據目錄
[root@localhost opt]# tar xf mysql-5.6.27.tar.gz                        #解壓mysql軟件包
[root@localhost opt]# cd mysql-5.6.27/                             #進入mysql目錄
[root@localhost mysql-5.6.27]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci                                    #編譯
[root@localhost mysql-5.6.27]# make -j 8 && make install                #安裝
[root@localhost mysql-5.6.27]# cp support-files/my-default.cnf /etc/my.cnf  #配置文件
[root@localhost mysql-5.6.27]# vim /etc/my.cnf                      ##修改配置文件
##在[mysqld]中增長一行
datadir=/data/mysql
log_bin=mysql-bin
[root@localhost mysql-5.6.27]# cp -rf  support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql-5.6.27]# chown -R mysql.mysql /data/mysql
[root@localhost mysql-5.6.27]# chown -R mysql.mysql /usr/local/mysql
[root@localhost mysql-5.6.27]# chmod +x /etc/init.d/mysql
[root@localhost mysql-5.6.27]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql --user=mysql         #初始化
[root@localhost mysql-5.6.27]# ln -s /usr/local/mysql/bin/mysql  /usr/bin   #mysql命令連接
[root@localhost mysql-5.6.27]# /etc/init.d/mysql start                  #啓動mysql
[root@localhost mysql-5.6.27]# mysql -uroot -p                      #登錄mysql
mysql> use mysql;           
mysql>  UPDATE user SET Password=PASSWORD('123456.') where USER='root'; #修改密碼
mysql> FLUSH PRIVILEGES;
[root@localhost mysql-5.6.27]# mysql -uroot -pMa123456.                 #用新密碼登錄
mysql> create database zabbix;                                      #建立zabbix數據庫
mysql> grant all on zabbix.* to 'zabbix'@'localhost' identified by '123456.';   #受權用戶
mysql> quit                                                         #退出
########################################################################################
如下爲導入zabbix數據,schema.sql,images.sql,data.sql文件在zabbix-4.0.0/database/mysql目錄
########################################################################################
[root@localhost mysql]# mysql  -uzabbix -p123456. zabbix < schema.sql
[root@localhost mysql]# mysql  -uzabbix -p123456. zabbix < images.sql
[root@localhost mysql]# mysql  -uzabbix -p123456. zabbix < data.sql

部署zabbix_servernginx

[root@localhost opt]# yum install libxml2-devel libcurl-devel libevent-devel net-snmp-devel mysql-community-devel -y
[root@localhost opt]# tar xf zabbix-4.0.0.tar.gz && cd zabbix-4.0.0/       #解壓並進入
[root@localhost zabbix-4.0.0]# groupadd zabbix
[root@localhost zabbix-4.0.0]# useradd -g zabbix zabbix -s /sbin/nologin
./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 [root@localhost zabbix-4.0.0]# make && make install
[root@localhost zabbix-4.0.0]# ls /usr/local/zabbix/                        #zabbix目錄路徑
bin  etc  lib  sbin  share
[root@localhost zabbix-4.0.0]# vim /usr/local/zabbix/etc/zabbix_server.conf  #配置文件
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Ma123456.
[root@localhost bin]# vi /usr/lib/systemd/system/zabbix_server.service  #配置systemd文件
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target
[root@localhost bin]# systemctl  start zabbix_server.service                #直接啓動zabbix
[root@localhost bin]# ps -ef |grep zabbix                                  #查看zabbix進程
[root@localhost bin]# /usr/local/zabbix/sbin/zabbix_agentd             #啓動zabbix_agent
[root@localhost bin]# ps -ef |grep zabbix_agent                       #查看agent進程

部署web界面安裝c++

[root@localhost zabbix-4.0.0]# cp -rf /opt/zabbix-4.0.0/frontends/php/* /usr/local/nginx/html/                          #把zabxix的前端頁面拷貝到nginx的發佈目錄
[root@localhost zabbix-4.0.0]# vim /usr/local/php/etc/php.ini         #修改php配置文件
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai
mysqli.default_socket = /var/lib/mysql/mysql.sock

[root@localhost zabbix-4.0.0]# /etc/init.d/php-fpm restart        #重啓php-fpm

[root@localhost zabbix-4.0.0]# vim /usr/local/nginx/conf/nginx.conf   #nginx整合php
    server {
        listen       80;
        server_name  localhost;

        access_log  logs/zabbix.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;
        }

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
[root@localhost zabbix-4.0.0]# /usr/local/nginx/sbin/nginx  -t      #檢查nginx配置文件
[root@localhost zabbix-4.0.0]# /usr/local/nginx/sbin/nginx  -s reload  #從新加載nginx配置文件

####################################################################################
至此,zabbix已經安裝完成,直接IP便可訪問。
安裝步驟:
1.配置DB,
2.配置zabbix用戶
3.下載文件,直接寫入/usr/local/nginx/html/conf/zabbix.conf.php文件
<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = 'localhost';
$DB['PORT']     = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'Ma123456.';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
4.直接登錄,(默認用戶Admin,密碼zabbix)
5.修改頁面爲中文
點擊右上角用戶--Language--chinese(zh_CN)--update便可

2.2 yum安裝zabbix服務端

====yum安裝mysql====
[root@localhost ~]# yum -y install yum-utils                            #安裝插件
[root@localhost ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm                                                       #安裝mysql源
[root@localhost ~]# yum-config-manager --disable mysql80-community      #安裝mysql180
[root@localhost ~]# yum-config-manager --enable mysql57-community         #安裝mysql157
[root@localhost ~]# yum install mysql-community-server               #下載mysql
[root@localhost ~]# yum install mysql-community-server -y                #安裝mysql-server
[root@localhost ~]# systemctl start mysqld                          #啓動mysql
[root@localhost ~]# systemctl status mysqld                         #查看mysql狀態
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log         #查看mysql隨機密碼
[root@localhost ~]# mysql -uroot -pXp.8nzZVFzri                     #登錄mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ma123456.';       #從新設置mysql密碼
[root@localhost etc]# cp my.cnf my.cnf.bak                      #備份一下mysql配置文件
[root@localhost etc]# vim /etc/my.cnf                               #從新設置mysql配置文件
[mysql]
socket = /tmp/mysql.sock                                    #socker路徑
[mysqld]        
user = mysql                                               #用戶
port = 3306                                                #端口
datadir = /var/lib/mysql                                    #數據目錄
socket = /tmp/mysql.sock                                    #socker路徑
bind-address = 0.0.0.0                                      #監聽地址
pid-file = /var/run/mysqld/mysqld.pid                        #pid文件路徑
character-set-server = utf8                                 #字符集UTF8
collation-server = utf8_general_ci                              
log-error = /var/log/mysqld.log                             #error日誌
#####mysql基本調優####
max_connections = 10240                                     #最大用戶鏈接數
open_files_limit = 65535                                    #打開文件數
innodb_buffer_pool_size = 3G                                #緩存池大小
innodb_flush_log_at_trx_commit = 2                           #每一次事務提交是否寫入硬盤
innodb_log_file_size = 256M                                 #mysql事務日誌文件大小

[root@localhost etc]# systemctl restart  mysqld                 #重啓mysql

====yum安裝zabbix====
[root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm                                #安裝zabbix源
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql -y #安裝zabbix
[root@localhost ~]# mysql -uroot -pMa123456.                    ##進入mysql
mysql> create database zabbix;                              ##建立zabbix數據庫
mysql> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'Ma123456.';
                                                        ##受權zabbix用戶訪問
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.7/   ##進入到mysql文檔目錄
[root@localhost zabbix-server-mysql-4.0.7]#  zcat create.sql.gz | mysql -uroot -pMa123456.  zabbix                                              ###導入到zabbix庫裏面

[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf          #修改zabbix配置
DBPassword=Ma123456.                                         #配置mysql密碼地址用戶
[root@localhost ~]# systemctl start zabbix-server                   #啓動zabbix

====修改apache====
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf               #修改apache配置文件
php_value date.timezone Asia/Shanghai                          #修改時區爲上海
[root@localhost ~]# systemctl start httpd                          #啓動apache


-----------------------------------------------------------------------------------------
###直接訪問ip/zabbix便可
例如:192.168.1.100/zabbix(圖形安裝這裏不作教程)
初次登錄能夠修改界面爲中文,很簡單,直接點擊右上角用戶--Language--chinese(zh_CN)--update便可

2.3 Docker最小化安裝zabbix服務端

使用內置 MySQL 數據庫、Zabbix server、基於 Nginx Web 服務器的 Zabbix Web 界面和 Zabbix Java gateway 來運行 Zabbix 應用。web

[root@localhost ~]# docker run --name zabbix-appliance -t \
                        -p 10051:10051 \
                        -p 80:80 \
                        -d zabbix/zabbix-appliance:latest

直接經過IP訪問,(默認用戶Admin,密碼zabbix)
修改頁面爲中文
點擊右上角用戶--Language--chinese(zh_CN)--update便可

2.3 zabbix的專業術語介紹

zabbix術語 註解
主機(host) 被監控主機
主機組 (host group) 被監控主機羣組
監控項 (item) agent端的某個被監控值
觸發器 (trigger) 與被監控對比及判斷的值
動做 (action) 對觸發器響應須要作相應的措施
媒介 (media) 動做的方式

2.4 zabbix的專業術語之間的關係

第三章 zabbix_agent部署及監控

3.1 zabbix_agent的部署

rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 
 個別主機須要添加zabbix的yum網絡源,雲主機不須要。
 [root@localhost ~]# yum  install zabbix-agent -y                           #直接yum安裝agent
 [root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf                 #agent配置文件
 PidFile=/var/run/zabbix/zabbix_agentd.pid  #pid文件地址
 LogFile=/var/log/zabbix/zabbix_agentd.log  #log文件的地址
 Server=192.168.8.19                      #zabbix_server的IP地址
 ListenIP=192.168.8.22                    #zabbix_agent的監聽地址
 ServerActive=192.168.8.19                #agent主動彙報的一個地址(通常改成server的IP地址)
 Hostname=192.168.8.22                    #agent的用戶名(通常可修改成IP)
 Include=/etc/zabbix/zabbix_agentd.d/*.conf #引入有效配置文件
# UnsafeUserParameters=0                  #自定義key
[root@localhost ~]# systemctl  start zabbix-agent                           #啓動zabbix_agent
[root@localhost ~]# ps -ef |grep zabbix_agent                               #查看zabbix_agent

#############################################################################################
可直接在zabbix-server端測試是否能鏈接zabbix-agent,以下:
[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get  --help                #查看zabbix_get命令
/usr/local/zabbix/bin/zabbix_get -s 192.168.8.22  -p 10050 -k "system.cpu.load[all,avg1]"
/usr/local/zabbix/bin/zabbix_get -s 192.168.8.22  -p 10050 -k "system.hostname"

若有回值,則表明正在監聽中

防火牆及selinux是須要關閉的。

3.2 zabbix-web建立主機及基本監控

建立主機羣組

建立主機

添加主機

添加監控項

添加圖形

查看圖形

=======觸發器這裏不作圖解

3.3 自定義監控--UserParameters

https://www.zabbix.com/documentation/4.0/zh/manual/config/items/userparameters

官方文檔解析

  • UserParameters的語法:
  • UserParameter= ,

key:一個用戶參數包含一個key,在添加監控項引用,且它是惟一的。

command:你須要執行的用戶參數(此參數是有agent代理執行的命令,最多能夠返回512KB數據

3.4 UserParameters自定義監控實例

在zabbix_agent端操做:
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=user-num,cat /etc/passwd |wc -l
[root@localhost ~]# systemctl  restart zabbix-agent


在zabbix_server端測試:
[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.8.22  -p 10050 -k "user-num"
29

有回值,則表明key是有效的。則可直接去zabbix-web上配置。

配置zabbix-web

1.添加監控項

2.添加圖形

3.添加觸發器

4.最終圖形

測試:

可經過建立用戶超過觸發器可告警

[root@localhost ~]# useradd ma                              #建立用戶,使總用戶達到觸發器值30
[root@localhost ~]# wc -l /etc/passwd |awk '{print $1}'
30

5.觸發圖形

第四章 Grafana展現zabbix監控數據

4.1 下載安裝Grafana

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm 
[root@localhost ~]#yum localinstall grafana-5.2.4-1.x86_64.rpm 
[root@localhost ~]# systemctl start grafana-server
[root@localhost ~]# ps -ef |grep grafana
[root@localhost ~]# netstat -plnt |grep 3000
直接訪問IP:3000便可訪問
默認帳號密碼都是admin直接登錄

4.2 Grafana添加數據源

grafana-cli plugins install alexanderzobnin-zabbix-app           #安裝zabbix插件
[root@localhost ~]# systemctl restart grafana-server                #重啓Grafana

啓用zabbix

選擇zabbix數據源

配置zabbix數據源

配置數據源選項,要注意Url部分,若是你的Zabbix訪問路徑爲http://192.168.1.1,那麼Url就填寫http://192.168.1.1/api_jsonrpc.phpZabbbix API details部分就填寫Zabbix的帳號密碼。

添加zabbix數據源基礎儀表步驟:

Configuration --Data Sources --zabbix --Dashboards --Import

4.3 Grafana自定義出圖

相關文章
相關標籤/搜索