學習zabbix(六)

 

實驗環境php


 

實驗用2到2臺機器,實驗所用機器系統環境以下,能夠看到2臺機器的主機名和IP地址html

?
1
2
3
4
5
6
7
8
9
10
[root@linux-node1 ~] # cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@linux-node1 ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.58.11 linux-node1 linux-node1.nmap.com
192.168.58.12 linux-node2 linux-node2.nmap.com
[root@linux-node1 ~] # hostname
linux-node1.nmap.com
[root@linux-node1 ~] #

  

 

nginx自帶的監控介紹java


 

先學習下nginx自帶的的狀態監控node

如下軟件包是編譯安裝nginx須要的包mysql

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@linux-node1 ~] # yum install -y glibc gcc-c++ pcre-devel gcc openssl-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  * base: mirrors.zju.edu.cn
  * epel: mirrors.tuna.tsinghua.edu.cn
  * extras: mirrors.aliyun.com
  * updates: mirrors.aliyun.com
Package glibc-2.17-157.el7_3.1.x86_64 already installed and latest version
Package gcc -c++-4.8.5-11.el7.x86_64 already installed and latest version
Package pcre-devel-8.32-15.el7_2.1.x86_64 already installed and latest version
Package gcc -4.8.5-11.el7.x86_64 already installed and latest version
Package 1:openssl-devel-1.0.1e-60.el7_3.1.x86_64 already installed and latest version
Nothing to do
[root@linux-node1 ~] #

  

下載nginx穩定版並解壓linux

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@linux-node1 ~] # cd /usr/local/src/
[root@linux-node1 src] # ls
[root@linux-node1 src] # wget http://nginx.org/download/nginx-1.10.3.tar.gz
--2017-03-19 18:04:23--  http: //nginx .org /download/nginx-1 .10.3. tar .gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 206.251.255.63
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 911509 (890K) [application /octet-stream ]
Saving to: ‘nginx-1.10.3. tar .gz’
 
100%[==================================================>] 911,509      303KB /s   in 2.9s  
 
2017-03-19 18:04:27 (303 KB /s ) - ‘nginx-1.10.3. tar .gz’ saved [911509 /911509 ]
 
[root@linux-node1 src] # tar xfz nginx-1.10.3.tar.gz
[root@linux-node1 src] # cd nginx-1.10.3
[root@linux-node1 nginx-1.10.3] #

  

新建一個用戶www,用於以普通用戶運行nginx   ;配置,生成Makefile文件android

?
1
2
3
4
5
[root@linux-node1 nginx-1.10.3] # useradd -s /sbin/nologin -M www
[root@linux-node1 nginx-1.10.3] # ./configure --prefix=/usr/local/nginx-1.10.3 \
> --user=www --group=www \
> --with-http_ssl_module \
> --with-http_stub_status_module

 配置完畢,pcre是它默認加的,不少人編譯使用--with-pcre 其實使用系統的就夠了ios

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... found
checking for OpenSSL library ... found
checking for zlib library ... found
creating objs /Makefile
 
Configuration summary
   + using system PCRE library
   + using system OpenSSL library
   + md5: using OpenSSL library
   + sha1: using OpenSSL library
   + using system zlib library
 
   nginx path prefix: "/usr/local/nginx-1.10.3"
   nginx binary file : "/usr/local/nginx-1.10.3/sbin/nginx"
   nginx modules path: "/usr/local/nginx-1.10.3/modules"
   nginx configuration prefix: "/usr/local/nginx-1.10.3/conf"
   nginx configuration file : "/usr/local/nginx-1.10.3/conf/nginx.conf"
   nginx pid file : "/usr/local/nginx-1.10.3/logs/nginx.pid"
   nginx error log file : "/usr/local/nginx-1.10.3/logs/error.log"
   nginx http access log file : "/usr/local/nginx-1.10.3/logs/access.log"
   nginx http client request body temporary files: "client_body_temp"
   nginx http proxy temporary files: "proxy_temp"
   nginx http fastcgi temporary files: "fastcgi_temp"
   nginx http uwsgi temporary files: "uwsgi_temp"
   nginx http scgi temporary files: "scgi_temp"
 
[root@linux-node1 nginx-1.10.3] #

  

編譯和安裝nginx

?
1
[root@linux-node1 nginx-1.10.3] # make && make install
 
make install 以後,其實這個目錄能夠拷貝到別的機器運行,可是你得保證這兩臺機器環境一致,必須安裝的依賴包都一致

 

以上安裝完畢,安裝結尾部分以下c++

?
1
2
3
4
5
6
7
8
9
10
11
12
13
cp conf /nginx .conf '/usr/local/nginx-1.10.3/conf/nginx.conf.default'
test -d '/usr/local/nginx-1.10.3/logs' \
     || mkdir -p '/usr/local/nginx-1.10.3/logs'
test -d '/usr/local/nginx-1.10.3/logs' \
     || mkdir -p '/usr/local/nginx-1.10.3/logs'
test -d '/usr/local/nginx-1.10.3/html' \
     || cp -R html '/usr/local/nginx-1.10.3'
test -d '/usr/local/nginx-1.10.3/logs' \
     || mkdir -p '/usr/local/nginx-1.10.3/logs'
make [1]: Leaving directory ` /usr/local/src/nginx-1 .10.3'
[root@linux-node1 nginx-1.10.3] # echo $?
0
[root@linux-node1 nginx-1.10.3] #

  

 

作軟連接

?
1
2
3
[root@linux-node1 nginx-1.10.3] # cd
[root@linux-node1 ~] # ln -s /usr/local/nginx-1.10.3/ /usr/local/nginx
[root@linux-node1 ~] #

怎麼監控nginx,能夠搜索一些作監控的產品他們作的文檔,比較好,網站上不少人寫的博客其實有的有錯誤,監控寶這種即便出現錯誤也不會太大  

搜索監控寶的nginx相關的wiki

http://www.jiankongbao.com/search.php?q=nginx

 

 

 http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95#nginx_監控

 

 

須要注意的是,Nginx默認安裝不包含狀態模塊stub_status,因此,在編譯Nginx的時候,須要添加如下參數:

?
1
--with-http_stub_status_module

一旦包含stub_status模塊後,咱們就能夠在配置文件nginx.conf中開啓狀態頁面:  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http {
     server {
         listen       80;
         server_name  localhost;
 
         location / {
             root   html;
             index  index.html index.htm;
         }
 
         location /nginx-status {
             stub_status on;
             access_log  off;
         }
     }
}

以上配置文件中,咱們實際增長的部分是:

?
1
2
3
4
location /nginx-status {
           stub_status on;
           access_log  off;
       }

一樣,假如Nginx所在服務器的IP爲10.0.0.1,同時指向它的域名爲www.domain.com,這樣一來,Nginx的狀態頁面即是:

?
1
http: //10 .0.0.1 /nginx-status

或者

?
1
http: //www .domain.com /nginx-status

一樣,建議您將以上示例中的nginx-status修改成其它字符串。

另外,Nginx的stub_status也支持受權IP的配置,您能夠參考Nginx的手冊,監控寶提供的服務監控點IP地址爲:

 

 

開始操做修改nginx.conf

?
1
2
[root@linux-node1 ~] # cd /usr/local/nginx/conf/
[root@linux-node1 conf] # vim nginx.conf

編輯以下,順便加上訪問控制

 

 修改完畢,檢測語法,啓動,檢查

?
1
2
3
4
5
6
7
8
9
10
[root@linux-node1 conf] # vim nginx.conf
[root@linux-node1 conf] # /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1 .10.3 /conf/nginx .conf syntax is ok
nginx: configuration file /usr/local/nginx-1 .10.3 /conf/nginx .conf test is successful
[root@linux-node1 conf] # /usr/local/nginx/sbin/nginx
[root@linux-node1 conf] # lsof -i:80
COMMAND   PID USER   FD   TYPE DEVICE SIZE /OFF NODE NAME
nginx   10245 root    6u  IPv4 157419      0t0  TCP *:http (LISTEN)
nginx   10246  www    6u  IPv4 157419      0t0  TCP *:http (LISTEN)
[root@linux-node1 conf] #

網頁上查看

 

 

關於狀態頁面的解釋
Active connections: 4
server accepts handled requests
4 4 23
Reading: 0 Writing: 3 Waiting: 0

Active connections:對後端發起的活動鏈接數。
Server accepts handled requests:Nginx總共處理了4個鏈接,成功建立4次握手(證實中間沒有失敗的),總共處理了23個請求。
Reading:Nginx 讀取到客戶端的Header信息數。
Writing:Nginx 返回給客戶端的Header信息數。
Waiting:開啓keep-alive的狀況下,這個值等於 active – (reading + writing),意思就是Nginx已經處理完成,正在等候下一次請求指令的駐留鏈接。

 

監控要作的事,最基礎的部分以下:
採集,存儲,展現,告警

nagios和zabbix對於一些大量主機須要監控的場景時,nagios不如zabbix
nagios監控就有瓶頸了。由於server端主動訪問,1000臺就有瓶頸了
zabbix主動模式徹底解決,頂多就是server端的讀寫壓力

 

 

 

 

安裝zabbix3.0


 

 
1、配置yum並安裝zabbix3.0
 
zabbix3.0 編譯安裝各類坑,建議yum安裝

在安裝以前請確保防火牆以及selinux關閉,並作好時間同步

1.一、yum源配置

?
1
rpm -ivh http: //mirrors .aliyun.com /zabbix/zabbix/3 .0 /rhel/7/x86_64/zabbix-release-3 .0-1.el7.noarch.rpm

1.二、安裝相關軟件

zabbix把數據放到了庫裏,它支持mysql,centos7以後mysql默認是mariadb

?
1
yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb zabbix-agent  -y

zabbix運行的web容器是apache,它默認把apache做爲依賴安裝上了

安裝完畢,留意下版本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@linux-node1 ~] # yum install zabbix-server zabbix-web zabbix-server-mysql zabbix-web-mysql mariadb-server mariadb zabbix-agent  -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  * base: mirrors.zju.edu.cn
  * epel: mirrors.tuna.tsinghua.edu.cn
  * extras: mirrors.aliyun.com
  * updates: mirrors.aliyun.com
Package zabbix-server-mysql-3.0.8-2.el7.x86_64 already installed and latest version
Package zabbix-web-3.0.8-2.el7.noarch already installed and latest version
Package zabbix-server-mysql-3.0.8-2.el7.x86_64 already installed and latest version
Package zabbix-web-mysql-3.0.8-2.el7.noarch already installed and latest version
Package 1:mariadb-server-5.5.52-1.el7.x86_64 already installed and latest version
Package 1:mariadb-5.5.52-1.el7.x86_64 already installed and latest version
Package zabbix-agent-3.0.8-2.el7.x86_64 already installed and latest version
Nothing to do
[root@linux-node1 ~] #

1.三、修改PHP時區配置

 

 

 因爲註釋裏帶#,這裏's###g'  改爲's@@@g'  結構替換

?
1
sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf .d /zabbix .conf

  

 替換完畢。

 

 

2、數據庫配置

Centos7上MySQL已經變成了mariadb。

2.一、啓動數據庫

?
1
systemctl start mariadb

2.二、建立zabbix所用的數據庫及用戶 

?
1
2
3
4
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@ 'localhost' identified by 'zabbix' ;
exit

導入數據

zcat命令用於不真正解壓縮文件,就能顯示壓縮包中文件的內容的場合。

?
1
2
3
4
5
[root@linux-node1 ~] # cd /usr/share/doc/zabbix-server-mysql-3.0.8/
[root@linux-node1 zabbix-server-mysql-3.0.8] # ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@linux-node1 zabbix-server-mysql-3.0.8] # zcat create.sql.gz | mysql -uzabbix -pzabbix zabbix
[root@linux-node1 zabbix-server-mysql-3.0.8] #

2.三、修改zabbix配置

?
1
vim /etc/zabbix/zabbix_server .conf

取消下面註釋,並修改爲正確值

DBHost=localhost #數據庫所在主機
DBName=zabbix #數據庫名
DBUser=zabbix #數據庫用戶
DBPassword=zabbix #數據庫密碼

2.四、啓動zabbix及http

遇到問題,zabbix-server啓動失敗,httpd啓動成功

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@linux-node1 ~] # systemctl start zabbix-server
Job for zabbix-server.service failed because a fatal signal was delivered to the control process. See "systemctl status zabbix-server.service" and "journalctl -xe" for details.
[root@linux-node1 ~] # systemctl start httpd
[root@linux-node1 ~] # getenforce
Disabled
[root@linux-node1 ~] # journalctl -xe
-- Support: http: //lists .freedesktop.org /mailman/listinfo/systemd-devel
--
-- Unit zabbix-server.service has begun starting up.
Mar 19 19:12:59 linux-node1.nmap.com kernel: zabbix_server[11200]: segfault at 18 ip 00007fd7
Mar 19 19:12:59 linux-node1.nmap.com systemd[1]: zabbix-server.service: control process exite
Mar 19 19:13:01 linux-node1.nmap.com systemd[1]: Failed to start Zabbix Server.
-- Subject: Unit zabbix-server.service has failed
-- Defined-By: systemd
-- Support: http: //lists .freedesktop.org /mailman/listinfo/systemd-devel
--
-- Unit zabbix-server.service has failed.
--
-- The result is failed.
Mar 19 19:13:01 linux-node1.nmap.com systemd[1]: Unit zabbix-server.service entered failed st
Mar 19 19:13:01 linux-node1.nmap.com systemd[1]: zabbix-server.service failed.
[root@linux-node1 ~] #

  

升級  trousers以後,啓動zabbix-server成功(系統版本centos7-1503)

?
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node1 ~] # yum update trousers
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  * base: mirrors.zju.edu.cn
  * epel: mirror.premi.st
  * extras: mirrors.aliyun.com
  * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package trousers.x86_64 0:0.3.11.2-3.el7 will be updated
---> Package trousers.x86_64 0:0.3.13-1.el7 will be an update

 

3、經過瀏覽器配置zabbix-server

瀏覽器裏輸入下面內容,經過頁面安裝配置

http://192.168.58.11/zabbix

 

 

 一切OK

 

密碼也是zabbix

 

 

 name這裏能夠自定義,它出出如今登陸後的右上角

 

 

 

 其實以上步驟就是配置了下面文件

 

點擊Finish出現登陸界面,用戶名和密碼默認是Admin/zabbix

 

 

 

 

 啓動zabbix-agent,它默認監聽10050端口

zabbix-server默認監聽10051端口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@linux-node1 ~] # systemctl start zabbix-agent
[root@linux-node1 ~] # netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID /Program name   
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1 /systemd          
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1104 /dnsmasq       
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      922 /sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1044 /master        
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1793 /zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1316 /zabbix_server 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1584 /mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      1 /systemd          
tcp6       0      0 :::80                   :::*                    LISTEN      1708 /httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      922 /sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1044 /master        
tcp6       0      0 :::10050                :::*                    LISTEN      1793 /zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      1316 /zabbix_server 
[root@linux-node1 ~] #

  

 

 

zabbix頁面登陸和介紹 


 

登陸成功的界面

 

 啓用此監控

 

 

 

 

 它是php-gd繪製的

 

zabbix-web能夠單獨一臺機器,能夠和zabbix-server分開
share這裏能夠看到別人寫好的模板,能夠直接拿來用

 

 

 

 

 
zabbix自定義監控項
 
生產要先建立主機組

 

 

 

練習建立3個組:web,memcached,lb

 

 

 

 

主機組的名字建議是英文,不然二次開發的時候就知道難受了
主機名也建議寫原本的主機名,二次開發的時候能對應上,該是啥主機名就是啥,也可使用IP地址

 

 

 

 zabbix也支持snmp,這臺機器開啓了snmp,這裏咱們就用snmp來監控

 

 snmp這裏因爲是本機監控本機能夠寫127.0.0.1

其實推薦寫成真實IP

 

 

生產環境加描述,工做中建議約定好,好比時間信息等,方便本身也方便他人

 

 

 模板這裏添加snmp的模板

 

 

 

使用snmp的話,宏定義這裏必須寫,宏相似定義個變量

 

 宏就是下面這個值

?
1
2
3
[root@linux-node1 ~] # cat /etc/snmp/snmpd.conf
rocommunity nmap 192.168.58.11
[root@linux-node1 ~] #

 

輸入以下內容 

 

 

 添加完畢,看到有不少模板顯示,其實括號裏的都是模板的連接

 

若是snmp沒啓動,須要先啓動它

?
1
2
3
4
5
6
[root@linux-node1 ~] # systemctl enable snmpd
Created symlink from /etc/systemd/system/multi-user .target.wants /snmpd .service to /usr/lib/systemd/system/snmpd .service.
[root@linux-node1 ~] # systemctl start snmpd
[root@linux-node1 ~] # netstat -luntp | grep 161
udp        0      0 0.0.0.0:161             0.0.0.0:*                           2549 /snmpd         
[root@linux-node1 ~] #

 

頁面裏查看,snmp監控也成功了

 

screen是幾個圖形放一塊兒;2.4須要在configure下面建立;在3.0能夠在monitor下建立

 

 

 

自定義監控項
準備使用zabbix監控nginx鏈接數,把以前安裝的nginx配置改爲8080端口
?
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node1 ~] # cd /usr/local/nginx/conf/
[root@linux-node1 conf] # vim nginx.conf
[root@linux-node1 conf] # /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1 .10.3 /conf/nginx .conf syntax is ok
nginx: configuration file /usr/local/nginx-1 .10.3 /conf/nginx .conf test is successful
[root@linux-node1 conf] # /usr/local/nginx/sbin/nginx
[root@linux-node1 conf] # lsof -i:8080
COMMAND  PID USER   FD   TYPE DEVICE SIZE /OFF NODE NAME
nginx   2714 root    6u  IPv4  35149      0t0  TCP *:webcache (LISTEN)
nginx   2715  www    6u  IPv4  35149      0t0  TCP *:webcache (LISTEN)
[root@linux-node1 conf] #

  

先用命令方式獲取活動鏈接數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@linux-node1 conf] # curl http://192.168.58.11:8080/nginx-status
Active connections: 1
server accepts handled requests
  4 4 4
Reading: 0 Writing: 1 Waiting: 0
[root@linux-node1 conf] # curl http://192.168.58.11:8080/nginx-status | grep Active
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
100    97  100    97    0     0  54525      0 --:--:-- --:--:-- --:--:-- 97000
Active connections: 1
[root@linux-node1 conf] # curl -s http://192.168.58.11:8080/nginx-status | grep Active
Active connections: 1
[root@linux-node1 conf] # curl -s http://192.168.58.11:8080/nginx-status | grep Active |awk  '{print $3}'
1
[root@linux-node1 conf] # curl -s http://192.168.58.11:8080/nginx-status | grep Active |awk  '{print $NF}'
1
[root@linux-node1 conf] #

  

 vim /etc/zabbix/zabbix_agentd.conf

 默認zabbix-agent的配置文件會加載下面目錄,所以能夠單獨新建一個文件,用於存放自定義的key

 

 寫一個名叫nginx.conf的配置文件

?
1
2
3
4
5
[root@linux-node1 zabbix_agentd.d] # pwd
/etc/zabbix/zabbix_agentd .d
[root@linux-node1 zabbix_agentd.d] # cat nginx.conf
UserParameter=nginx.active,curl -s http: //192 .168.58.11:8080 /nginx-status | grep Active | awk  '{print $NF}'
[root@linux-node1 zabbix_agentd.d] #

  

 優化一下,腳本里的命令使用絕對路徑

?
1
2
3
4
5
6
[root@linux-node1 zabbix_agentd.d] # which curl
/usr/bin/curl
[root@linux-node1 zabbix_agentd.d] # vim nginx.conf
[root@linux-node1 zabbix_agentd.d] # cat nginx.conf
UserParameter=nginx.active, /usr/bin/curl -s http: //192 .168.58.11:8080 /nginx-status | grep Active | awk  '{print $NF}'
[root@linux-node1 zabbix_agentd.d] #

  

 重啓agent,安裝zabbix-get工具,它是個測試工具,只有它能獲取到了自定義的key的值,才能加入到zabbix-server裏。

?
1
2
[root@linux-node1 ~] # systemctl restart zabbix-agent
[root@linux-node1 ~] # yum install -y zabbix-get

  

 get一下,發現有問題

?
1
2
3
[root@linux-node1 ~] # zabbix_get -s 192.168.58.11 -p 10050 -k"nginx.active"
zabbix_get [3070]: Check access restrictions in Zabbix agent configuration
[root@linux-node1 ~] #

由於安裝zabbix-agent的時候,Server那裏寫的是127.0.0.1,agent和server在一臺
Server那裏要寫192.168.58.11
zabbix-get或者這裏寫127.0.0.1
下面改爲192.168.58.11,這裏是只容許哪一個server的IP訪問本身,server這裏也支持多Ip

改完重啓下agent

?
1
2
3
[root@linux-node1 ~] # vim /etc/zabbix/zabbix_agentd.conf
[root@linux-node1 ~] # systemctl restart zabbix-agent
[root@linux-node1 ~] #

再次獲取,成功

?
1
2
3
[root@linux-node1 ~] # zabbix_get -s 192.168.58.11 -p 10050 -k"nginx.active"
1
[root@linux-node1 ~] #

網頁上這裏儘可能也改掉

 改爲以下,不然會報鏈接故障

 

 

 

總結添加自定義監控項的步驟
一、命令行或腳本先獲取成功
二、配置文件裏添加用戶自定義參數
三、重啓zabbix-agent
四、server端使用zabbix_get測試獲取
五、web界面建立item

 

 這裏還缺最後一步,web頁面添加自定義監控項

 

 

 

application這裏寫個自定義的,它是一組item的集合

建立圖形

 

 

 

找到nginx.active

 

 

 

 查看圖形

 

 

 手動製造點鏈接數數據

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@linux-node1 ~] # ab -c 10 -n 100000 http://192.168.58.11:8080/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: //www .zeustech.net/
Licensed to The Apache Software Foundation, http: //www .apache.org/
 
Benchmarking 192.168.58.11 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
 
 
Server Software:        nginx /1 .10.3
Server Hostname:        192.168.58.11
Server Port:            8080
 
Document Path:          /
Document Length:        612 bytes
 
Concurrency Level:      10
Time taken for tests:   8.674 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      84500000 bytes
HTML transferred:       61200000 bytes
Requests per second:    11529.06 [ #/sec] (mean)
Time per request:       0.867 [ms] (mean)
Time per request:       0.087 [ms] (mean, across all concurrent requests)
Transfer rate:          9513.73 [Kbytes /sec ] received
 
Connection Times (ms)
               min  mean[+ /-sd ] median   max
Connect:        0    0   0.2      0       3
Processing:     0    1   0.2      1       8
Waiting:        0    1   0.2      1       8
Total:          0    1   0.2      1       8
 
Percentage of the requests served within a certain time (ms)
   50%      1
   66%      1
   75%      1
   80%      1
   90%      1
   95%      1
   98%      1
   99%      2
  100%      8 (longest request)
[root@linux-node1 ~] #

  

 查看圖形數據

以堆疊方式顯示

 

 堆疊方式就是這種

建立自定義的screen

 

 把nginx.active這個圖形加上去

 

 

 把相關聯的加到一個screen裏面

 

 

 其實能夠顯示不少,好比文本

 

 

 

還能顯示url

 

它就能把上面的url顯示出來

 

 

zabbix  還能夠自定義map

 

拓撲圖,目前比較雞肋,上百臺機器無法畫,太複雜

 

######################################################################################

 

zabbix頁面注意事項 


 

一、 工做中使用zabbix常遇到的問題:生產一臺機器告警了順手關閉了,而後忘記打開了

 

 

二、監控項這裏,也儘可能不由用,而是刪除。能刪除就刪除

 

 

 

三、使用觸發器的過程當中,有時候以爲郵件太多,比較煩,其實觸發器能夠設置不讓告警發郵件,儘可能別禁用

 

 

 四、生產中,必定好劃分好主機組,能夠按業務劃分

 

 

 五、這裏能夠找某臺機器的最新數據,這是3.0版本以後加的過濾

 

 一些最新數據

 

 

 

聚合圖形這裏,中文還沒顯示。等下改下

 

 

 

 

準備新加一臺機器node2


 

 

node2上執行以下操做

?
1
2
rpm -ivh http: //mirrors .aliyun.com /zabbix/zabbix/3 .0 /rhel/7/x86_64/zabbix-release-3 .0-1.el7.noarch.rpm
yum install  zabbix-agent  -y

配置zabbix-agent配置文件

 

 

 主機名這裏寫成正確主機名

 

 過濾查看下

?
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node2 ~] # vim /etc/zabbix/zabbix_agentd.conf
[root@linux-node2 ~] # grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
PidFile= /var/run/zabbix/zabbix_agentd .pid
LogFile= /var/log/zabbix/zabbix_agentd .log
LogFileSize=0
Server=192.168.58.11
ServerActive=127.0.0.1
Hostname=linux-node2.nmap.com
Include= /etc/zabbix/zabbix_agentd .d/
[root@linux-node2 ~] # systemctl start zabbix-agent
[root@linux-node2 ~] #

  

 

頁面上經過克隆加機器

 點進去,點擊下面的Full clone

 

輸入以下信息

 

 

 

 

 

 

模板這裏要改,去掉snmp的模板,改爲linux的模板

 

 

 添加以後以下

 

 

 

都改爲agent監控方式
刪除snmp的這臺

 

 

克隆添加node1

 

 

 

 

 

 

 
學習畫map
畫map圖學習

 

 

添加一臺HOST

 

 添加連接

 

 

 

連線,選中2個機器,按着ctrl鍵,點擊link add

 

上面的圖須要update才能保存

 

 

 

怎麼讓兩個機器之間的線顯示實時帶寬呢
選中2個機器,點擊右邊的編輯

 

 

能夠在標籤裏寫監控項的值

 

 

 

在主機的items,找寬帶相關的配置,點擊下面選中的

 

 

點擊上面選中的,看到了key

 

 

 

複製兩個key
?
1
2
net. if . in [{ #IFNAME}]
net. if .out[{ #IFNAME}]
 
稍微修改下,加上主機名,而後加上last(0)後綴。表示最後一次的值
?
1
{linux-node2.nmap.com:net. if .out[eth0].last(0)}

  

 

按ctrl選中2個主機,點擊edit

 

 

 

以下能夠顯示流量值
如今就有值了,顯示實時的帶寬

 

 

對於使用了負載均衡的網站或者其他相關的,能夠把負載均衡鏈接後端服務器的的流量畫出來

 

 

 

 

監控事件和告警


 

事件分觸發器的事件,自動發現的事件等。還有內部的事件,自動註冊的事件

 

一、怎麼通知Action
二、通知給誰

 

action不只僅是告警,默認的動做是報警,還能配置下自動執行一些腳本。其實報警這個動做確定是執行了腳本等實現的

默認狀況下通知的內容

 

什麼狀況下通知
怎麼通知

 

 

 

 

 

 

 

1-10 表示故障沒修復,發10次

 

 

0就表示60秒

 

 

當心update按鈕

 

 

隔60秒,執行2-4
這樣就能夠實現故障的升級機制

 

 

 

報警媒介相關

管理--用戶--報警媒介
下面2種不用看,很古老

 

 

 

 

這就是3.0 比較高端的功能,在3.0 以前用戶是不執行密碼驗證的
3.0 以前你只能本地起一個postfix發郵件

 

 

 

 

設置ssl鏈接方式發送和接收郵件

 

 

配置用戶使用email告警

 

 

 

 

 

 

新人入職
須要先建立用戶組

 

 

設置權限
運維嘛,添加所有,讀寫權限

 

 

 

 

 

 

 

 

添加用戶
記得選擇用戶組

 

 

url可讓它登陸後看到哪一個界面

 

 

 

 

 

 

 

 

 

一、建立用戶組。 添加權限 權限只能按用戶組分配
二、建立用戶 選擇用戶角色
三、報警媒介
四、Action 添加新主機後,要確認權限分配

 

 
 
監控交換機等網絡設備
 
對已一個項目進行監控,大致分爲下面步驟

一、項目規劃

主機分組:
交換機,Nginx,Tomcat,Mysql

監控對象識別:
一、使用snmp監控交換機
二、使用IPMI監控服務器硬件
三、使用Agent監控服務器
四、使用JMX監控java
五、監控MySQL
六、監控Web狀態
七、監控Nginx狀態

 

監控網絡設備,好比交換機的大致步驟

?
1
2
3
4
5
6
一、對於交換機,須要在交換機上開啓snmp
config t
snmp-server community public ro
end
 
二、zabbix上添加監控

  

下面這裏能使用中文,可是你作自動化的話,會很麻煩

 

 

 

防火牆,路由器,交換機均可以使用這個模板

 

 

設置宏,也就是設置團體名稱
爲何要設置呢,由於模板裏的item裏面用了宏

 

 

監控完畢,它會作端口的自動發現,好比下圖
端口狀態也會監控到。
你插一根網線,報警,拔出網線,也報警
vlan也會給你加上,下面是別人監控的網絡設備的圖

 

 

別人的網絡設備現網流量圖

 

 

 

IPMI監控在剛開始使用zabbix的時候使用,後來就不用了,由於IPMI臺容易超時了,常常獲取不到數,自己就那樣
後來改爲自定義腳本了。經過ipmi命令獲取,自定義key。如今這麼作的

 

 經過zabbix監控交換機大致步驟

?
1
2
3
4
5
6
7
8
9
10
11
一、對於交換機,須要在交換機上開啓snmp
config t
snmp-server community public ro
end
 
二、zabbix上添加監控
    設置snmp interfaces
三、關聯監控模板
 
IPMI:
   建議:使用自定義item,本地執行ipmitool命令獲取數據

  

 

 

 

監控JVM


 

監控jvm能夠經過java gateway來

官網連接以下

 

 

 

 

它比較獨立,能夠把它理解爲和zabbix server徹底不要緊。由於agent無法監控java應用。就單獨寫了個java gateway。相似代理的模式,因此java gateway也不存數據

 

運行它須要jdk環境由於它就是個java程序
?
1
2
3
4
5
6
7
8
9
10
[root@linux-node1 ~] # yum install -y zabbix-java-gateway  java-1.8.0
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  * base: mirrors.aliyun.com
  * epel: mirror01.idc.hinet.net
  * extras: mirrors.aliyun.com
  * updates: mirrors.aliyun.com
Package zabbix-java-gateway-3.0.8-2.el7.x86_64 already installed and latest version
Package 1:java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64 already installed and latest version
Nothing to do

 

編輯配置

[root@linux-node1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf
監聽的IP,默認就是4個0

 

監聽端口

 

開啓幾個探測的進程,默認是5,能夠設置和java應用數一致,或者是它的一半值

超時時間,1-30 網絡環境差的話,超時時間最好改長一點

 

上面配置通常不須要修改,局域網環境嘛

 啓動服務並設置開機啓動

?
1
2
3
4
[root@linux-node1 ~] # systemctl start zabbix-java-gateway.service
[root@linux-node1 ~] # systemctl enable zabbix-java-gateway.service
Created symlink from /etc/systemd/system/multi-user .target.wants /zabbix-java-gateway .service to /usr/lib/systemd/system/zabbix-java-gateway .service.
[root@linux-node1 ~] #

  

 檢查監聽狀況

?
1
2
3
4
5
6
7
[root@linux-node1 ~] # netstat -lntp | grep 100
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      2373 /zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1500 /zabbix_server 
tcp6       0      0 :::10050                :::*                    LISTEN      2373 /zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      1500 /zabbix_server 
tcp6       0      0 :::10052                :::*                    LISTEN      18836 /java         
[root@linux-node1 ~] #

  

 檢查java gateway進程和java版本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@linux-node1 ~] # ps aux | grep java
zabbix    18836  1.2  0.9 3455096 37672 ?       Sl   13:42   0:00 java -server -Dlogback.configurationFile= /etc/zabbix/zabbix_java_gateway_logback .xml -classpath
lib:lib /android-json-4 .3_r3.1.jar:lib /logback-classic-0 .9.27.jar:lib /logback-core-0 .9.27.jar:
lib /slf4j-api-1 .6.1.jar:bin /zabbix-java-gateway-3 .0.8.jar -Dzabbix.pidFile= /var/run/zabbix/zabbix_java .pid -Dzabbix.timeout=3
-Dsun.rmi.transport.tcp.responseTimeout=3000 com.zabbix.gateway.JavaGateway
root      18913  0.0  0.0 112644   964 pts /0    S+   13:43   0:00 grep --colour=auto java
[root@linux-node1 ~] #
 
[root@linux-node1 ~] # java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
[root@linux-node1 ~] #

  

 

配置zabbix server,關聯java gateway
vim /etc/zabbix/zabbix_server.conf

 

因此說java gateway能夠安裝在任何計算機上

 

 

預啓動5個進程輪詢它

 

 

 

重啓zabbix-server服務
?
1
2
3
[root@linux-node1 ~] # vim /etc/zabbix/zabbix_server.conf
[root@linux-node1 ~] # systemctl restart zabbix-server.service
[root@linux-node1 ~] #

  

node2上下載安裝tomcat和jdk。模擬被監控端
?
1
2
3
4
5
6
7
8
9
10
11
yum install -y   java-1.8.0
cd /usr/local/src/
wget  http: //archive .apache.org /dist/tomcat/tomcat-8/v8 .0.36 /bin/apache-tomcat-8 .0.36. tar .gz
tar xfz apache-tomcat-8.0.36. tar .gz
mv apache-tomcat-8.0.36 /usr/local/
ln -s /usr/local/apache-tomcat-8 .0.36/ /usr/local/tomcat
 
 
[root@linux-node2 src] # netstat -lntp | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      8137 /java          
[root@linux-node2 src] #

  

 

 以上步驟能夠總結爲

JMX:(使用zabbix java Gateway代理)
一、安裝 yum install -y zabbix-java-gateway java-1.8.0
二、配置vim /etc/zabbix/zabbix_java_gateway.conf
三、啓動systemctl start zabbix-java-gateway
四、檢查端口和進程
五、配置zabbix server關聯java gateway
六、重啓zabbix server

 

 

 

 

搜索jmx

 

 

 

 

 

 

 

####################################################################################

 
使用JMX監控jvm
 
vim /usr/local/tomcat/bin/catalina.sh
添加以下內容
?
1
2
3
4
5
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
   -Dcom.sun.management.jmxremote.port=8888
   -Dcom.sun.management.jmxremote.ssl= false
   -Dcom.sun.management.jmxremote.authenticate= false
   -Djava.rmi.server. hostname =192.168.58.12"

 

重啓tomcat,查看監聽狀況
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@linux-node2 src] # killall java
[root@linux-node2 src] # killall java
java: no process found
[root@linux-node2 src] # /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Tomcat started.
 
看到8888端口已經起來了
[root@linux-node2 src] # netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID /Program name   
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      6938 /zabbix_agentd 
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1 /systemd          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1160 /sshd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1251 /master        
tcp6       0      0 :::10050                :::*                    LISTEN      6938 /zabbix_agentd 
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      8522 /java          
tcp6       0      0 :::56614                :::*                    LISTEN      8522 /java          
tcp6       0      0 :::8009                 :::*                    LISTEN      8522 /java          
tcp6       0      0 :::111                  :::*                    LISTEN      1 /systemd          
tcp6       0      0 :::8080                 :::*                    LISTEN      8522 /java          
tcp6       0      0 :::22                   :::*                    LISTEN      1160 /sshd          
tcp6       0      0 :::8888                 :::*                    LISTEN      8522 /java          
tcp6       0      0 :::57945                :::*                    LISTEN      8522 /java          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1251 /master        
[root@linux-node2 src] #

  

 
在電腦的jdk的bin目錄下,找到jconsole

 

 

 

 

 

 

 

 
 

 

 
 

 

 
 

 

 
點擊update
 
JMX的key能夠在server上使用zabbix-get獲取下
 

 

 
?
1
2
3
[root@linux-node1 ~] # zabbix_get -s 192.168.58.12 -k  jmx["java.lang:type=GarbageCollector,name=Copy",CollectionCount]
ZBX_NOTSUPPORTED: Unsupported item key.
[root@linux-node1 ~] #

  

 
不知道爲何,開啓debug看看
debug是4
[root@linux-node2 src]# vim /etc/zabbix/zabbix_agentd.conf
這裏須要改爲4

 

 
重啓agent
systemctl restart zabbix-agent.service
 
看agent日誌
tail -f /var/log/zabbix/zabbix_agentd.log
顯示的並沒太多有用信息

 

 先放這裏
 
 
 
 
 
zabbix監控Nginx
監控過程以下

一、開啓Nginx監控
二、編寫腳原本進行數據採集
三、設置用戶自定義參數
四、重啓zabbix-agent
五、添加item
六、建立圖形
七、建立觸發器
八、建立模板

 
 
下載這個腳本
它不只能夠監控nginx,還能夠監控memcached,redis,http狀態

 

 
tcp連接比較多的狀況下,ss命令比netstat快
 腳本里面的命令
?
1
2
3
4
5
[root@linux-node2 src] # ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
LISTEN 14
ESTAB 4
TIME-WAIT 30
[root@linux-node2 src] #

由於上面只顯示當前的有數據的,因此下面多了個判斷,沒數據的項都顯示0
把這個函數的第一個參數複製給tcp_stat
這個函數的第一個參數根據下面main裏看到,是這個腳本的第二個參數
 
考慮到一個機器可能起多個nginx,因此加個端口參數區分
memcached的腳本這裏的$1 和$2 分別是腳本的$2 和 $3
nc實際上是net cat

 

 
 
修改zabbix-agent配置文件,讓其包含.conf文件
?
1
[root@linux-node1 ~] # vim /etc/zabbix/zabbix_agentd.conf
本來下面文件包含這個目錄下的全部文件,改一下,改爲*.conf

 

 

 
 
這樣的話,sh腳本也能夠放這個目錄下了,而後不會被誤認爲配置文件而加載
?
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node1 ~] # cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 zabbix_agentd.d] # ls
nginx.conf  userparameter_mysql.conf
[root@linux-node1 zabbix_agentd.d] # rz -E
rz waiting to receive.
[root@linux-node1 zabbix_agentd.d] # ls
nginx.conf  userparameter_mysql.conf  zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d] # chmod +x zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d] # ls
nginx.conf  userparameter_mysql.conf  zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d] #
改爲下劃線,對應監控腳本內容

 

 

?
1
2
3
[root@linux-node1 ~] # vim /usr/local/nginx/conf/nginx.conf
[root@linux-node1 ~] # /usr/local/nginx/sbin/nginx -s reload
[root@linux-node1 ~] #
由於腳本里寫的就是下劃線,要對應上

 

這裏也能夠更改,由於agent和nginx在一臺機器上

 

?
1
2
[root@linux-node1 ~] # /usr/local/nginx/sbin/nginx -s reload
[root@linux-node1 ~] #
經過命令簡單獲取成功
?
1
2
3
[root@linux-node1 zabbix_agentd.d] # ./zabbix_linux_plugin.sh nginx_status 8080 active
1
[root@linux-node1 zabbix_agentd.d] #
新建自定義key文件,調用這個腳本
?
1
2
3
4
5
[root@linux-node1 zabbix_agentd.d] # cp nginx.conf linux.conf
[root@linux-node1 zabbix_agentd.d] # vim linux.conf
[root@linux-node1 zabbix_agentd.d] # cat linux.conf
UserParameter=linux_status[*], /etc/zabbix/zabbix_agentd .d /zabbix_linux_plugin .sh "$1" "$2" "$3"
[root@linux-node1 zabbix_agentd.d] #
重啓agent
?
1
2
[root@linux-node1 zabbix_agentd.d] # systemctl restart zabbix-agent.service
[root@linux-node1 zabbix_agentd.d] #
這個腳本支持傳參
?
1
2
3
[root@linux-node1 ~] # zabbix_get -s 192.168.58.11 -k linux_status[nginx_status,8080,active]
1
[root@linux-node1 ~] #
zabbix_get成功,這樣能夠添加到web上了
配置---模板---建立模板

 

add以後,在模板裏找到它,而後點進去,看到items等
建立item

 

 
更新間隔,30秒太頻繁了,能夠改爲60秒一次,順便建立一個叫Nginx Status的application

 

 
點擊add,添加成功

 

 
點進去,克隆它

 

 
把這幾個都加上去

 

 
 
依次,克隆加進去

 

 
心得。我以爲能夠把一些重要的模板克隆了,防止誤操做,在模板上改東西

 

 
加圖形

 

 
 
items選這4個就好了

 

 

 

 

 

 
給linux-node1加這個模板

 

能夠導出這個模板給別人

 

 
導出的模板須要本身更名,導出來默認都是同一個名字
 
 
 
graph有數據了

 

 

 

 
 監控tcp的11種狀態
 
 
tcp 11種狀態的模板
 

 

 

 

 
node1加這個模板

 

 
node2也加此模板

 

 
它用的仍是上面nginx那個腳本
zabbix用戶要能執行它,真正執行它的時候是zabbix執行
?
1
2
3
4
5
6
7
8
9
[root@linux-node1 zabbix_agentd.d] # pwd
/etc/zabbix/zabbix_agentd .d
[root@linux-node1 zabbix_agentd.d] # ll
total 16
-rw-r--r-- 1 root root   96 Mar 26 15:22 linux.conf
-rw-r--r-- 1 root root  117 Mar 19 20:37 nginx.conf
-rw-r--r-- 1 root root 1531 Mar  2 23:49 userparameter_mysql.conf
-rwxr-xr-x 1 root root 2776 Jun 18  2016 zabbix_linux_plugin.sh
[root@linux-node1 zabbix_agentd.d] #

  

 

 

 

 
練習怎麼加觸發器
先給nginx監控加觸發器

 

 
這裏大於1,出於測試目的

 

找到剛纔建立的Nginx status

 

 

 

打開頁面,模擬問題。讓鏈接數大於1
自動發送了郵件告警

 

 

郵件配置對的話,確定能收到告警
這裏還看到了一個告警,Too many processes on linux-node2
系統自帶的觸發器,閾值過低,修改下模板裏的items裏的閥值

 

 

 

默認5分鐘的平均值大於300就告警,改爲600

 

 
改爲600

 

 
 
 
 
Zabbix告警通知

自定義告警腳本:
一、放在 /usr/lib/zabbix/alertscripts
二、須要支持3個參數,1 收件人,2 主題, 3內容
三、執行權限
四、web界面添加
五、修改actions

 

 
短信通道,阿里大魚,一條0.045左右

 

 
它有http的api。很方便
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl -X POST 'http://gw.api.taobao.com/router/rest' \
-H 'Content-Type:application/x-www-form-urlencoded;charset=utf-8' \
-d 'app_key=12129701' \
-d 'format=json' \
-d 'method=alibaba.aliqin.fc.sms.num.send' \
-d 'partner_id=apidoc' \
-d 'sign=DB9F439ACCF950E94514CDF0BF24DFB8' \
-d 'sign_method=hmac' \
-d 'timestamp=2017-03-26+16%3A25%3A33' \
-d 'v=2.0' \
-d 'extend=123456' \
-d 'rec_num=13000000000' \
-d 'sms_free_sign_name=%E9%98%BF%E9%87%8C%E5%A4%A7%E4%BA%8E' \
-d 'sms_param=%7B%5C%22code%5C%22%3A%5C%221234%5C%22%2C%5C%22product%5C%22%3A%5C%22alidayu%5C%22%7D' \
-d 'sms_template_code=SMS_585014' \
-d 'sms_type=normal'

  

 
億美軟通短信平臺比較古老了。如今不多用
模擬下本身寫的腳本發告警流程
腳本放在下面目錄下/usr/lib/zabbix/alertscripts

 

 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@linux-node1 ~] # cd /usr/lib/zabbix/alertscripts
[root@linux-node1 alertscripts] # ls
[root@linux-node1 alertscripts] # vim sms.sh
[root@linux-node1 alertscripts] # chmod +x sms.sh
[root@linux-node1 alertscripts] # cat sms.sh
#!/bin/bash
ALERT_TO=$1
ALERT_TITLE=$2
ALERT_BODY=$3
 
echo $ALERT_TO >> /tmp/sms .log
echo $ALERT_TITLE >> /tmp/sms .log
echo $ALERT_BODY >> /tmp/sms .log
[root@linux-node1 alertscripts] #

  

 
建立新的告警介質
腳本須要加參數,從腳本里取,用大括號括起來,這3個參數分別是$1,$2,$3
 

 

 

 

 

 

 
改action

 

 
 
用戶這裏

 

 

 

 
觸發報警

 

 
 
 

 

 
模擬發送成功,實際本身寫的腳本就該這麼個架構
?
1
2
3
4
5
[root@linux-node1 tmp] # tail -5 /tmp/sms.log
xxxx38@qq.com
PROBLEM: Nginx Active > 1
  Original ev* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*tus[nginx_status,8080,active]): 3
[root@linux-node1 tmp] #

  

 
 
 
Zabbix監控MySQL
zabbix自帶監控mysql的腳本,真正生產喜歡用的是percona的腳本
percona也有本身的mysql,在某些方面它比官方的性能更好
下面連接
 

 

 
 

 

最先是由cacti改的,因爲zabbix太火了。沒支持zabbix的不行了,就要被淘汰。
它使用php腳本鏈接mysql
要監控mysql的話,agent端必須安裝php和phpmysql

 

 

 

 
 

 

 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
yum install http: //www .percona.com /downloads/percona-release/redhat/0 .1-4 /percona-release-0 .1-4.noarch.rpm  -y
 
[root@linux-node1 ~] # yum install percona-zabbix-templates php php-mysql -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
  * base: mirrors.aliyun.com
  * epel: mirror01.idc.hinet.net
  * extras: mirrors.aliyun.com
  * updates: mirrors.aliyun.com
Package percona-zabbix-templates-1.1.7-2.noarch already installed and latest version
Package php-5.4.16-42.el7.x86_64 already installed and latest version
Package php-mysql-5.4.16-42.el7.x86_64 already installed and latest version
Nothing to do
[root@linux-node1 ~] #

  

 

相關知識點
一、php腳本用來採集數據
二、shell調用這個php
三、zabbix配置文件
四、zabbix模板文件

 
拷貝模板配置文件到zabbix配置文件目錄下
?
1
2
3
4
5
6
7
8
9
10
[root@linux-node1 ~] # rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats .php
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql .conf
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2 .0.9-sver1.1.7.xml
[root@linux-node1 ~] # cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 ~] #

  

 
查看
?
1
2
3
4
5
[root@linux-node1 ~] # cd /etc/zabbix/zabbix_agentd.d/
[root@linux-node1 zabbix_agentd.d] # ls
linux.conf  userparameter_mysql.conf          zabbix_linux_plugin.sh
nginx.conf  userparameter_percona_mysql.conf
[root@linux-node1 zabbix_agentd.d] #

  

重啓zabbix-agent
?
1
2
[root@linux-node1 scripts] # systemctl restart zabbix-agent.service
[root@linux-node1 scripts] #

  

 
這個shell腳本是調用php腳本
這個配置文件須要拷貝到agent下面
這個模板文件用於導出zabbix server
 
percona自帶的模板不能用。
 

 

 
查看此配置文件,都是一些自定義的key,key的值經過腳本獲取
?
1
2
3
4
5
6
7
8
9
10
11
12
[root@linux-node1 zabbix_agentd.d] # tail -10 userparameter_percona_mysql.conf
UserParameter=MySQL.log-writes, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh hg
UserParameter=MySQL.Query- time -count-04, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh op
UserParameter=MySQL.Query- time -count-05, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh oq
UserParameter=MySQL.Query- time -count-06, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh or
UserParameter=MySQL.Query- time -count-07, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh os
UserParameter=MySQL.Query- time -count-08, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh ot
UserParameter=MySQL.Query- time -count-09, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh ou
UserParameter=MySQL.Open-files, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh ij
UserParameter=MySQL.State-closing-tables, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh lq
UserParameter=MySQL.running-slave, /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper .sh running-slave
[root@linux-node1 zabbix_agentd.d] #

  

 
經過下面腳本獲取key的value
 
?
1
2
3
4
[root@linux-node1 zabbix_agentd.d] # cd /var/lib/zabbix/percona/scripts
[root@linux-node1 scripts] # ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
[root@linux-node1 scripts] #

  

建立鏈接mysql的配置文件,因爲root密碼是空。因此這裏也寫的空
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@linux-node1 scripts] # cat ss_get_mysql_stats.php.cnf
<?php
$mysql_user = 'root' ;
$mysql_pass = '' ;
[root@linux-node1 scripts] #
[root@linux-node1 scripts] # mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9629
Server version: 5.5.52-MariaDB MariaDB Server
 
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> exit
Bye
[root@linux-node1 scripts] #

  

 
測試下此目錄下腳本執行是否正常
?
1
2
3
[root@linux-node1 scripts] # /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0
[root@linux-node1 scripts] #

  

注意此腳本默認配置。若是不符合須要更改。這裏因爲mysql是yum安裝的,環境變量沒問題,另外受權登陸也是localhost
?
1
2
3
[root@linux-node1 scripts] # ll get_mysql_stats_wrapper.sh
-rwxr-xr-x 1 root root 1251 Dec 10 02:22 get_mysql_stats_wrapper.sh
[root@linux-node1 scripts] #

  

這是監控腳本默認的地方,一些東西須要改,好比mysql全路徑
默認是localhost權限

 

 
給node1添加模板

 

 
腳本沒問題,加入監控監控沒問題
腳本調用了php
?
1
2
3
[root@linux-node1 scripts] # ./get_mysql_stats_wrapper.sh gm
1
[root@linux-node1 scripts] #

  

 
 
 
Zabbix-Web監控
 
如今zabbix-get報錯,由於原先是root權限執行的腳本,它會在tmp目錄下生成下面文件。
?
1
2
3
4
[root@linux-node1 scripts] # zabbix_get -s 192.168.58.11 -k MySQL.max-connections
rm : cannot remove ‘ /tmp/localhost-mysql_cacti_stats .txt’: Operation not permitted
151
[root@linux-node1 scripts] #

  

從新受權下
?
1
2
3
4
5
6
7
8
[root@linux-node1 scripts] # ll /tmp/localhost-mysql_cacti_stats.txt
-rw-r--r-- 1 root root 1406 Mar 26 22:15 /tmp/localhost-mysql_cacti_stats .txt
[root@linux-node1 scripts] # chown zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt
[root@linux-node1 scripts] # ll /tmp/localhost-mysql_cacti_stats.txt
-rw-r--r-- 1 zabbix zabbix 1406 Mar 26 22:15 /tmp/localhost-mysql_cacti_stats .txt
[root@linux-node1 scripts] # zabbix_get -s 192.168.58.11 -k MySQL.max-connections
151
[root@linux-node1 scripts] #

  

 
 

 

 
?
1
2
3
4
5
6
7
8
[root@linux-node1 ~] # curl --head http://192.168.58.12:8080/
HTTP /1 .1 200 OK
Server: Apache-Coyote /1 .1
Content-Type: text /html ;charset=UTF-8
Transfer-Encoding: chunked
Date: Sun, 26 Mar 2017 15:14:17 GMT
 
[root@linux-node1 ~] #

  

 
 

 

 
 
它不依賴於agent,是server本身的
建立一個web場景

 

 
 
 
agent這裏你能夠選擇一個瀏覽器
之前也有瀏覽器,可是沒3.0這麼全

 

默認使用agent了

 

 
步驟這裏

 

 
 
add

 

add以後

 

 
 
 
認證相關

 

 
認證不配置,點擊add便可

 

 
 
 
add以後
系統默認沒加觸發器
 

 

 
 
monitor---web看到以下

 

 

 

 
這個step的裏面下面的做用是,從它會默認從監控的頁面裏找匹配的字符串,匹配到了它返回OK
假如你不想僅僅看狀態的話,
假如你還想看頁面關鍵字
 

 

 
開始手動加觸發器,因此最好寫個模板

 

 
 
添加表達式

 

 
 

 

 
 

 

 
 

 

 
 
中止tomcat主動觸發告警,測試
 
?
1
2
3
4
5
6
7
8
[root@linux-node2 ~] # /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
[root@linux-node2 ~] # lsof -i:8080
[root@linux-node2 ~] #

  


服務器時間不對,致使報警沒顯示
 

 

 

 
 
?
1
2
3
4
5
6
7
8
9
10
11
12
[root@linux-node1 ~] # date
Mon Mar 27 08:45:34 CST 2017
[root@linux-node1 ~] # systemctl restart ntpd
[root@linux-node1 ~] # date
Mon Mar 27 08:45:46 CST 2017
[root@linux-node1 ~] # date
Mon Mar 27 08:45:47 CST 2017
[root@linux-node1 ~] # date
Mon Mar 27 08:45:48 CST 2017
[root@linux-node1 ~] # date
Wed Mar 29 23:10:17 CST 2017
[root@linux-node1 ~] #

  

 
 
時間對了以後,再次刷新就顯示了

 

 
發送告警也OK

 

 
 
這是現網用的action告警信息。刪了不少
保證70個字符之內
 
 
狀態:{TRIGGER.STATUS}
主機: ({HOST.NAME1}
監控項:{ITEM.KEY1}):{ITEM.VALUE1}
 
 

 

 
 
模擬故障測試方法2,模擬404故障
?
1
2
3
4
5
[root@linux-node2 webapps] # mv ROOT ROOT2
[root@linux-node2 webapps] # ls
docs  examples  host-manager  manager  ROOT2
[root@linux-node2 webapps] # mv ROOT2 ROOT
[root@linux-node2 webapps] #

  

 
告警很快下面這裏告警比上面關閉tomcat致使端口不可達的告警快不少。模擬404這種發現問題立馬告警

 

 
 
?
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node1 ~] # tail -f /tmp/sms.log
  Original ev* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*e=Runtime",Uptime]): 00:00:09
525031638@qq.com
PROBLEM: linux-node2 is not reachable
  Original ev* (*UNKNOWN*:*UNKNOWN*): *UNKNOWN*e=Runtime",Uptime]): 00:00:25
525031638@qq.com
狀態:OK
  監控項:jmx[ "java.lang:type=Runtime" ,Uptime]):00:00:5
525031638@qq.com
狀態:PROBLEM
  監控項:web. test .rspcode[tomcat web monitor,tomcat index]):40

  

 
 
關於web監控的密碼驗證,能夠post過去用戶名和密碼

 

 
 
 

 

 
 
打印機沒紙均可以監控,經過snmp
 
 
 
 
Zabbix監控模式
 
怎麼看zabbix server能不能抗住,看隊列就好了,看看item更新超時時間

 

 
 
 

爲何使用主動模式
一、監控主機多,性能跟不上,延遲大
二、多機房,防火牆

Zabbix輕鬆解決。Nagios不太好解決
針對Agent來講
一、被動模式
二、主動模式,active

當監控主機超過300+,建議使用主動模式

 
 
改爲主動模式,這裏改爲須要0

 

 

 

 
若是你不設置主機名,它會根據item獲取

 

日誌模式設置的地方。

 

 

?
1
2
[root@linux-node2 webapps] # systemctl restart zabbix-agent.service
[root@linux-node2 webapps] #

  

網頁製做主動監控模式模板

 

 

 

 

 
 
 

 

 
 

 

 link的模板去掉。link主動監控的模板
 

 

 
 
 

 

 
 
 

 

add以後

 

 

 
 
 

 

 
 

 

這裏都變成active的了

 

 

 
 
 

 

 更改items爲主動模式
 
 

 

 
 
 

 

 
 
 

 

 
 key的類型都變成active的了
 
 

 

 修改node2的模板爲主動模式模板
 
 

 

 

 

 

 
 它的狀態
 
 

 

 
 數據獲取成功
 
相關文章
相關標籤/搜索