2018-07-25筆記(zabbix安裝和配置)
監控存在的原因
●站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大
●常見開源監控軟件
○cacti、nagios、zabbix、smokeping、open-falcon等等 //主流 nagios、zabbix
○ cacti、smokeping偏向於基礎監控,成圖非常漂亮 //比較適合監控網絡設備
●cacti、nagios、zabbix服務端監控中心,需要php環境支持,其中zabbix和cacti都需要mysql作為數據存儲,nagios不用存儲歷史數據,註重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而可以成圖
●因為zabbix配置簡單,優勢明顯,早起使用nagios的企業,慢慢的轉向使用zabbix
●nagios,需要更改配置文件,並不支持web界面一鍵執行,nagios和zabbix相比,nagios 更註重的是某一個監控的狀態,不關註歷史;zabbix,則是把每一次監控的數值反饋出來,方便後期數據圖去分析監控整個狀態;nagios不支持mysql,需要安裝插件以後才支持web界面;zabbix 支持mysql,可以成圖,可以記錄歷史數據
●zabbix 在web界面下管理得非常徹底,可以增加監控節點,報警預知等等
●open-falcon為小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,監控的思想和結構值得研究
19.2 zabbix監控介紹
●C/S架構,基於C++開發,監控中心支持web界面配置和管理
●單server節點可以支持上萬臺客戶端
●最新版本3.4 ,官網文檔https://www.zabbix.com/manuals
●5個組件
○zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操作數據
○數據存儲 存放數據,比如mysql
○web界面 也叫web UI ,在web界面下操作配置是zabbix簡單易用的主要原因
○zabbix-proxy 可選組件,它可以代替zabbix-server的功能,減輕server的壓力
○zabbix-agent 客戶端軟件,負責采集各個監控服務或項目的數據,並上報
19.3/19.4/19.6 安裝zabbix
官網下載地址:https://www.zabbix.com/download, 最新版為3.4
準備兩臺機器做演示:一臺服務端192.168.66.131 一臺客戶端192.168.66.132
默認yum安裝的zabbix版本是2.2的太舊,所以選擇安裝官方提供的repo源,服務端和客戶端都需要安裝一下,進入官網後選擇對應版本,官網有安裝教程可以參考,這裏我選擇的是centos7,zabbix3.4,數據庫為mysql的版本,安裝對應版本的yum源
rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
安裝完成後在/etc/yumrepo.d/目錄可以看到zabbix.repo的yum源
服務端192.168.66.131
[root@server yum.repos.d]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ll
總用量 44
-rw-r--r-- 1 root root 1664 5月 13 18:18 CentOS-Base.repo
-rw-r--r-- 1 root root 1664 5月 11 14:46 CentOS-Base.repo.bak
-rw-r--r-- 1 root root 410 8月 28 2017 zabbix.repo
客戶端192.168.66.132
[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ll
總用量 40
-rw-r--r--. 1 root root 1664 8月 30 2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 30 2017 CentOS-CR.repo
-rw-r--r-- 1 root root 410 8月 28 2017 zabbix.repo
一、服務端安裝zabbix
1、安裝完yum源,在服務端192.168.66.131上使用yum安裝zabbix,需要安裝如下的包
[root@server ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
●註:該過程會連帶安裝PHP和httpd
○zabbix-agent:客戶端程序
○zabbix-get:服務端上命令行獲取客戶端檢測項目的工具
○zabbix-server-mysql:zabbix-server MySQL版
○zabbix-web:web界面
○zabbix-web-mysql:web界面MySQL相關
因為zabbix需要保存數據,所以要用到mysql
如果mysql之前沒有安裝的話,需要根據lamp那一章的mysql安裝方法安裝mysql,也可以直接yum安裝mysql
因為我們之前已經安裝過mysql,這裏就省略了
先看下mysql有沒有啟動起來
[root@server ~]# ps aux |grep mysqld
root 1248 0.0 0.1 113304 1620 pts/0 S 16:01 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/ --pid-file=/data/mysql//localhost.localdomain.pid
mysql 1461 0.0 45.6 1296372 456352 pts/0 Sl 16:01 0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/data/mysql//localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root 1876 0.0 0.0 112720 968 pts/0 R+ 16:33 0:00 grep --color=auto mysqld
2、接下來還需要編輯下mysql的配置文件,設定一個默認的字符集
vim /etc/my.cnf //需要增加一行配置
character_set_server = utf8
如果不設置中文的話,到時候web界面中文顯示就會有問題
[root@server ~]# cat /etc/my.cnf
[mysqld]
port = 3306
basedir=/usr/local/mysql
datadir=/data/mysql/
socket=/tmp/mysql.sock
user=mysql
default-time-zone=system
default-storage-engine=InnoDB
log-error=/var/log/mysqld.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server = utf8 #增加這一行,#設置默認字符集--目的是輔助web界面中文顯示
3、重啟mysql服務,讓剛才的配置生效
[root@server mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
4、登陸mysql,創建zabbix數據庫,創建用戶並授權
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to ‘zabbix‘@‘127.0.0.1‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.02 sec)
5、向創建的zabbix數據庫中導入原始數據:
默認數據放在/usr/share/doc/zabbix-server-mysql-3.4.11/create.sql.gz這個壓縮包,註意,版本不同可能目錄有所不同
[root@server mysql]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/
[root@server zabbix-server-mysql-3.4.11]# ll
總用量 2104
-rw-r--r-- 1 root root 98 6月 25 16:57 AUTHORS
-rw-r--r-- 1 root root 848475 6月 25 16:57 ChangeLog
-rw-r--r-- 1 root root 17990 6月 25 16:57 COPYING
-rw-r--r-- 1 root root 1267039 6月 25 17:01 create.sql.gz
-rw-r--r-- 1 root root 52 6月 25 16:57 NEWS
-rw-r--r-- 1 root root 188 6月 25 16:57 README
[root@server zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz #解壓這個包
[root@server zabbix-server-mysql-3.4.11]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
#導入數據
[root@server zabbix-server-mysql-3.4.11]# mysql -uroot -p123456 zabbix < /usr/share/doc/zabbix-server-mysql-3.4.11/create.sql
Warning: Using a password on the command line interface can be insecure.
#可能數據量比較大,需要等待
6、啟動zabbix-server服務:
[root@server zabbix-server-mysql-3.4.11]# systemctl start zabbix-server
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix
zabbix 4103 0.0 0.3 259448 3372 ? S 17:00 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root 4106 0.0 0.0 112720 968 pts/0 R+ 17:00 0:00 grep --color=auto zabbix
查看監聽的端口,默認服務端監聽的端口為10051,客戶端為10050
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix
發現服務啟動了,並沒有監聽端口,說明不正常,查看zabbix日誌,默認在/var/log/zabbix/zabbix_server.log
[root@server zabbix-server-mysql-3.4.11]# tail /var/log/zabbix/zabbix_server.log
4103:20180726:171112.474 [Z3001] connection to database ‘zabbix‘ failed: [2002] Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
發現錯誤提示,連不上mysql,是因為我們並沒有在zabbix指定mysql的一些參數,修改zabbix的服務端配置文件<br/>
7、指定數據庫的位置(搜索關鍵字DBHost並修改)剛才在mysql中創建的zabbix數據庫(搜索關鍵字DBName並修改),授權的用戶(搜索關鍵字DBUser並修改)和密碼(搜索關鍵字DBPassword並修改)
[root@server zabbix-server-mysql-3.4.11]# vi /etc/zabbix/zabbix_server.conf
#根據在mysql授權的信息修改以下關鍵字的內容
DBHost=127.0.0.1
DBUser=zabbix
DBPassword=123456
註意:因為mysql和zabbix裝在同一臺機器上,這裏可以寫localhost或者127.0.0.1;如果是在生產環境上,有時候為了提升zabbix的性能,可能會把MySQL裝在其他機器上,這是的DBHost,就需要寫上mysql的ip<br/>
8、再查看進程和監聽的端口
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix
zabbix 4222 0.1 0.4 259552 4216 ? S 17:26 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix 4225 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes]
zabbix 4226 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #1 started
zabbix 4227 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #2 started
zabbix 4228 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: alerter #3 started
zabbix 4229 0.0 0.2 259552 2532 ? S 17:26 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix 4230 0.0 0.2 259552 2744 ? S 17:26 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000000 sec, 0 maintenances in 0.000000 sec, idle 19 sec]
zabbix 4231 0.0 0.2 259552 2936 ? S 17:26 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000410 sec, idle 5 sec]
zabbix 4232 0.0 0.5 363908 5136 ? S 17:26 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000385 sec, idle 60 sec]
zabbix 4233 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 4234 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 4235 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 4236 0.0 0.2 259552 2916 ? S 17:26 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 4237 0.0 0.3 259552 3880 ? S 17:26 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000560 sec, idle 3 sec]
zabbix 4238 0.0 0.3 259552 3868 ? S 17:26 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000001 sec, idle 5 sec]
zabbix 4239 0.0 0.2 259552 2684 ? S 17:26 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000004 sec, idle 1 sec]
zabbix 4240 0.0 0.2 259552 2920 ? S 17:26 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000391 sec, idle 5 sec]
zabbix 4241 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix 4242 0.1 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix 4243 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix 4244 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix 4245 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix 4246 0.0 0.5 366528 5312 ? S 17:26 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix 4247 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix 4248 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix 4249 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix 4250 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix 4251 0.0 0.3 259552 3632 ? S 17:26 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix 4252 0.0 0.2 262160 2716 ? S 17:26 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix 4253 0.0 0.3 259552 3284 ? S 17:26 0:00 /usr/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.009257 sec during 5.009258 sec]
zabbix 4254 0.0 0.3 259552 3036 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing manager #1 [queued 0, processed 0 values, idle 5.002193 sec during 5.002195 sec]
zabbix 4255 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #1 started
zabbix 4256 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #2 started
zabbix 4257 0.0 0.2 259552 2592 ? S 17:26 0:00 /usr/sbin/zabbix_server: preprocessing worker #3 started
root 4280 0.0 0.0 112720 972 pts/0 R+ 17:26 0:00 grep --color=auto zabbix
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 4222/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 4222/zabbix_server
unix 2 [ ACC ] STREAM LISTENING 35160 4254/zabbix_server: /var/run/zabbix/zabbix_server_preprocessing.sock
unix 2 [ ACC ] STREAM LISTENING 35176 4253/zabbix_server: /var/run/zabbix/zabbix_server_alerter.sock
說明服務已經正常<br/>
9、啟動httpd服務,安裝zabbix會順帶把httpd服務安裝上,因為一會要在web界面下去安裝和配置zabbix,如果之前有啟動過web服務,如:nginx需要關掉,否則80會被占用
[root@server zabbix-server-mysql-3.4.11]# systemctl start httpd
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep httpd
root 4125 1.6 1.5 398912 15568 ? Ss 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 4127 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 4128 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 4129 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 4130 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
apache 4131 0.0 0.7 398912 7744 ? S 17:03 0:00 /usr/sbin/httpd -DFOREGROUND
root 4133 0.0 0.0 112720 972 pts/0 R+ 17:03 0:00 grep --color=auto httpd
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep httpd
tcp6 0 0 :::80 :::* LISTEN 4125/httpd
10、可以把httpd和zabbix-server服務設置為開機啟動
[root@server zabbix-server-mysql-3.4.11]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@server zabbix-server-mysql-3.4.11]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
11、在web界面配置zabbix
打開瀏覽器,輸入服務端的ip加目錄打開zabbix的web界面,如果不能打開,檢查防火墻配置和selinux
我的地址為192.168.66.131/zabbix,進入到zabbix安裝歡迎頁面
點擊next step
這裏有個fail提示,是因為沒有在php的配置文件裏定義時區,修改php配置文件php.ini,並重啟httpd服務
[root@server ~]# vi /etc/php.ini
date.timezone = Asia/Shanghai #設置這一行
[root@server ~]# systemctl restart httpd
刷新剛才的頁面,可以看到已經顯示ok
點擊next step,填寫數據庫相關的信息,(剛才在mysql中授權的)
點擊next step,填寫詳細信息
點擊next step,讓你確認信息
點擊next step,會提示配置完成
點擊finish到 登錄界面,默認的用戶名 admin 密碼 zabbix,登陸完成後到zabbix的控制臺頁面
更改admin的登陸密碼,並把語言設置成中文
點擊Administration-user-選擇需要更改的用戶admin
點擊admin-change password-輸入修改的密碼-Language選擇chinese
點擊upadte-並刷新頁面讓其顯示中文
這時候可以退出用修改的密碼重新登陸下,至此服務端安裝完成<br/>
二、客戶端安裝
安裝端只需要安裝zabbix-agent,用來采集和上報數據給服務端,因為之前已經安裝過zabbix的yum源
1、直接yum 安裝zabbix-agent
[root@client ~]# yum install -y zabbix-agent
2、安裝完成後修改zabbix-agent配置文件
[root@client ~]# vim /etc/zabbix/zabbix_agentd.conf
//修改如下字段
Server=192.168.66.131
#指定服務端主機IP(設置客戶端的監控主機白名單)
ServerActive=192.168.66.131
#該參數決定監控的主動/被動模式
#如果只改參數Server,則只能采用被動模式(只能等待服務端來采集信息)
#主動模式:客戶端主動向服務端發送信息
Hostname=testclient
#該參數用於設定客戶端主機的名字,用於服務端添加監控服務
#如果服務端所監控的機器和其Hostname不一致,服務端將無法識別該機器
#因為zabbix是通過IP進行監控的,該參數不會對監控造成太大影響
#加上該參數有利於更好的辨別服務端監控是哪臺主機的狀態
3、啟動zabbix-agent服務並查看進程和端口(默認10050)
[root@client ~]# systemctl start zabbix-agent
[root@client ~]# ps aux |grep zabbix
zabbix 1446 0.0 0.1 82780 1276 ? S 18:20 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 1447 0.0 0.1 82780 1320 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 1448 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 1449 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 1450 0.0 0.1 82780 1844 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 1451 0.0 0.2 82908 2224 ? S 18:20 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 1453 0.0 0.0 112720 968 pts/0 R+ 18:20 0:00 grep --color=auto zabbix
[root@client ~]# netstat -lnp |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1446/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 1446/zabbix_agentd
至此,客戶端安裝完成
19.5 忘記Admin密碼如何做
有時候我們會忘記zabbix頁面的admin密碼,因為zabbix數據都是保存在數據庫中,所以可以在數據庫中會修改
步驟:
○登陸mysql
○進入zabbix數據庫 use zabbix;
○修改users表中Admin用戶的密碼,格式如下,括號裏面是密碼
update users set passwd=md5(‘123456‘) where alias=‘Admin‘;
mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update users set passwd=md5(‘123456‘) where alias=‘Admin‘;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
更改完成後,用更改的新密碼登陸server端的web頁面
19.7 主動模式和被動模式
?主動或者被動是相對客戶端來講的
? 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端
? 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。
? 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。
? 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
主動模式和被動模式所針對的對象是客戶端,意思是客戶端主動向服務端上報數據和由服務端到客戶端采集數據。數據的提交時間在監控中心設置。
配置建議
采用主動模式可以減輕服務器的壓力。
當服務端有公網IP,客戶端只有內網IP但是可以連接外網(使用iptables的nat表規則實現),這種場景適合使用主動模式
19.8 添加監控主機
該配置在服務端的web界面監控中心進行。先添加主機群組,再添加主機
點擊配置-主機群組-創建主機群組
填寫組名-並點擊添加
這樣就可以在主機群組裏面看到剛創建的主機群組luo
點擊配置-主機-創建主機
填寫主機名稱-可見的名稱-ip地址
客戶端主機名稱(在客戶端zabbix配置文件:/etc/zabbix/zabbix_agentd.conf中的Hostname參數),該名稱要和客戶端配置文件中的名稱一致;指定主機群組;指定客戶端IP,如果該IP有對應的域名,則需要添加到“DNS名稱”中,如果沒有可以不填。有需要的話還可以進行模板、IPMI、宏等配置,配置完成後點擊“添加”,跳轉到主機列表:
●參數解析:
○應用集:監控項目的組集合
○監控項:所有的監控項目
○觸發器:監控規則(不填規則顏色不同,會體現在首頁主機狀態中)
○圖形:根據監控歷史數據繪制的圖標
○自動發現規則:zabbix自動監控的文件系統的信息、網卡信息(該部分自定義比較繁瑣,所以使用自己動發現規則)
○Web場景:在此可設置對主機上的某個站點進行監控
這裏因為新添加的主機還沒設置,所以都是空的
19.9 添加自定義模板
zabbix自帶了很多監控模板,我們可以點擊某個模板然後克隆給別的模板,也可以點擊詳細的監控項復制給某個模板
在“模板”中創建一個新模板,自定義監控規則,然後應用到監控主機中,方便個性化管理。後續有監控主機加進來,可以直接應用模板
添加模板的思路:創建模板——指定其所屬模板組(也可以鏈接到其他模板)
點擊配置-模板-創建模板
填寫模板的名字,可見名稱,這裏我們選擇Templates群組
添加完成後,點擊剛才創建的模板aaa-鏈接的模板
鏈接指示器點擊選擇-選中Template OS Linux(對應系統的版本)
點擊添加把剛才選擇的加入到鏈接的模板中-點擊更新
更新完後,要模板aaa裏面可以看到多了很多項目
點擊新創建的aaa模板-鏈接的模板-取消鏈接-更新,方便後續自定義規則
更新後可以看到aaa後面鏈接的模板已經沒有了,但是應用集那些還保留著
可以刪除模板中一些不必要監控項-點擊aaa模板的監控項-勾選不需要的監控項-點擊刪除
應用集裏面包含的是監控項目的集合,刪除後監控項有些應用集已經空了,也可以刪除掉
點擊應用集-勾選監控項後面沒有數據的-點擊刪除
到此這個模板已經弄好了,而且這個模板沒有連接任何的模板
接下來的操作就是去把剛剛建的主機和這個模板鏈接起來,做進一步的細化,比如監控項,觸發器在做些挑戰
19.10 處理圖形中的亂碼
將自定義模板應用到監控主機testclient中:
點擊配置——主機——選擇要添加的主機——模板——選擇——添加—更新
設置完成後查看監控主機-圖形——預覽,發現圖形界面下有亂碼:
這種有規律的顯示框框其實不算亂碼,只是缺少字庫文件引起的,解決辦法是上傳一個支持中文的字庫文件到服務端,更改zabbix的默認鏈接字庫,讓其鏈接到新的字庫文件,
#zabbix的默認字庫文件是在/usr/share/zabbix/fonts/下,
#這個路徑是在zabbix的/usr/share/zabbix/include/defines.inc.php配置文件中定義的
[root@server ~]# ls /usr/share/zabbix/fonts/
graphfont.ttf
我們用xsftp上傳一個windowns中的支持中文字庫文件到服務端,路徑在C:\Windows\Fonts下,把字庫文件復制到桌面然後上傳到服務端的zabbix字體文件目錄/usr/share/zabbix/fonts/,上傳過程省略
[root@server ~]# cd /usr/share/zabbix/fonts/
[root@server fonts]# ls
graphfont.ttf simhei.ttf
[root@server fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@server fonts]# ln -s STXINGKA.TTF graphfont.ttf
[root@server fonts]# ll
總用量 9528
lrwxrwxrwx 1 root root 10 7月 26 20:30 graphfont.ttf -> simhei.ttf
lrwxrwxrwx 1 root root 33 7月 26 15:52 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 9753388 7月 26 20:30 simhei.ttf
這樣新的字庫文件已經鏈接到默認的字庫文件上了
刷新頁面,看是否正常顯示
可以看到已經正常顯示中文,有綠色的線,說明已經有數據產生
19.11 自動發現
更改網卡的自動發現規則監控時間間隔:
點擊更新
為了讓它盡快生效,重啟服務端和客戶端的zabbix服務
●z服務端
[root@server ~]# systemctl restart zabbix-server
●客戶端
[root@server ~]# systemctl restart zabbix-server
查看監控效果
在實際應用中時間間隔不要設置太短,一面增加服務器壓力。
更改圖形界面顏色
在模板——自發現規則——圖形原型中更改
zabbix可以利用discovery模塊,實現自動發現主機、自動將主機添加到主機組、自動加載模版、自動創建項目、自動創建監控圖像。具體操作如下:
(1)依次選擇:配置-->自動發現-->創建發現規則。創建客戶端發現規則。如下圖所示:
19.12 添加自定義監控項目
需求:監控某臺web的80端口連接數,並出圖
1、首先被監控主機上要安裝zabbix-agent,
yum install -y zabbix-agent
2、在被監控的主機上編寫腳本,名稱假設為:estab.sh
比如,被監控的主機是:192.168.66.132(testclient)已開啟80端口,腳本內容如下:
[root@client ~]# mkdir /myscript
[root@client ~]# chmod -R 777 /myscript
[root@client ~]# cd /myscript/
[root@client myscript]# vim estab.sh #添加如下內容
#!/bin/bash
#
#獲取80端口的並發連接數
netstat -ant | grep ‘:80‘ | grep -ci established
:wq保存退出
[root@client myscript]# chmod +x !$
chmod +x estab.sh
[root@lnmp-server myscript]# ll
總用量 4
-rwxr-xr-x 1 root root 97 7月 26 21:51 estab.sh
編輯zabbix agent配置文件,添加以下內容:
UnsafeUserParameters=1 :1表示自定義腳本,0為不使用自定義腳本
UserParameter=my.estab.count[*],/myscript/estab.sh :自定義監控項的key為:my.estab.count,後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本:/myscript/estab.sh,用絕對路徑。
在agent配置文件中添加上面兩行內容:
[root@client myscript]# vim /etc/zabbix/zabbix_agentd.conf #在最後面添加下面兩行,使用上面自定義的腳本
...
UnsafeUserParameters=1
UserParameter=my.estab.count[*],/myscript/estab.sh
...
重啟zabbix_agentd服務:
[root@client myscript]# systemctl restart zabbix-agent
到服務端用命令行方式驗證一下自定義的key和腳本是否可用:
[root@localhost ~]# zabbix_get -s 192.168.66.132 -p 10050 -k ‘my.estab.count‘
0
結果是0,因為沒有機器訪問80端口
參數解釋:
-s:被監控的ip
-p:端口,agentd服務的默認端口是10050
-k:自定義的key
3、針對該項目以圖形展現
zabbix服務端添加該監控項目,因為是監控的主機為testclient,所以點擊testclient的監控項:
點擊創建監控項
進入監控項設置:
添加名稱和鍵值,其他保持默認即可。點擊添加,選擇自定義監控的項目
4、創建自定義監控項圖形:
點擊testclient主機-圖形-創建圖形
名稱:自定義
監控項:點擊”添加“,選擇監控項“監控80端口並發連接數”,點擊“選擇”
點擊添加後,預覽一下:
沒有訪問80端口,所以圖形沒數據
5、創建觸發器
點擊主機-觸發器-創建觸發器
名稱:自定義,選擇警告,點擊添加:
監控項選擇自定義 的監控項,配置告警的閥值和間隔,點擊插入,表達式會自動加上
最後點擊添加即可
19.13/19.14 配置郵件告警
1、使用163或QQ郵箱發告警郵件。這裏使用163郵箱。登陸163郵箱,開啟POP3、IMAP、SMTP服務,開啟並設置授權碼。
2、到zabbix監控中心(web界面)設置報警媒介
管理-報警媒介類型
默認有3個報警媒介。我們這裏新建一個,點擊創建“媒介類型”:
名稱:自定義
類型:選擇”腳本“
腳本名稱:mail.py,自定義
參數:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}
點擊:添加”即可
3、在服務端定義腳本
腳本的路徑是在zabbix的服務端配置文件中定義的
[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf #搜索關鍵字AlertScriptsPath
我們在這個目錄創建mail.py的腳本
[root@localhost ~]# cd /usr/lib/zabbix/alertscripts
[root@localhost alertscripts]# vi mail.py
[root@localhost alertscripts]# chmod 755 !$
chmod 755 mail.py
mail.py腳本內容如下, 根據你自己郵箱修改
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding(‘utf8‘)
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = ‘smtp.qq.com‘
gport = 25
try:
msg = MIMEText(unicode(content).encode(‘utf-8‘))
msg[‘from‘] = mailfrom
msg[‘to‘] = mailto
msg[‘Reply-To‘] = mailfrom
msg[‘Subject‘] = subject
smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
sendqqmail(‘[email protected]‘,‘aaaaaaaaaa‘,‘[email protected]‘,to,subject,content)
if __name__ == "__main__":
main()
19.15 測試告警
19.16 不發郵件的問題處理
擴展:
Prometheus入門 https://www.hi-linux.com/posts/25047.html
2018-07-25筆記(zabbix安裝和配置)