zabbix安裝及及基礎(chǔ)教程
????????????? 對服務(wù)的管理,不能僅限于可用性。
????????????? 還需要服務(wù)可以安全、穩(wěn)定、高效地運(yùn)行。
????????????? 監(jiān)控的目的:早發(fā)現(xiàn)、早治療。
????????????? 被監(jiān)控的資源類型:
–??????????? 公開數(shù)據(jù):對外開放的,不需要認(rèn)證即可獲取的數(shù)據(jù)
–??????????? 私有數(shù)據(jù):對外不開放,需要認(rèn)證、權(quán)限才能獲得的數(shù)據(jù)
監(jiān)控命令
# uptime可以查看系統(tǒng)已經(jīng)運(yùn)行了多久。最后的3個(gè)數(shù)字分別是CPU最近1分鐘、5分鐘、15分鐘的平均負(fù)載。平均負(fù)載的值,不應(yīng)該大于總核心數(shù)。
[root@zzgrhel8 ~]# uptime
?09:28:25 up 53 days, 27 min,? 0 users,? load average: 0.09, 0.08, 0.03
[root@zzgrhel8 ~]# free -m????? # 主要用于查看內(nèi)存
[root@zzgrhel8 ~]# swapon -s??? # 查看swap空間
[root@zzgrhel8 ~]# df -h??????? # 查看硬盤使用情況
[root@zzgrhel8 ~]# ping -c2 www.baidu.com?? # 發(fā)2個(gè)包,測試網(wǎng)絡(luò)
zabbix
????????????? 實(shí)施監(jiān)控的幾個(gè)方面:
–??????????? 數(shù)據(jù)采集:使用agent(可安裝軟件的系統(tǒng)上)、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議,用于網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)采集)
–??????????? 數(shù)據(jù)存儲:使用mysql數(shù)據(jù)庫
–??????????? 數(shù)據(jù)展示:通過web頁面
????????????? zabbix通過在遠(yuǎn)程主機(jī)上安裝agent進(jìn)行數(shù)據(jù)采集,存儲到mysql數(shù)據(jù)庫,通過web頁面進(jìn)行展示。
安裝zabbix
????????????? 中文手冊:https://www.zabbix.com/documentation/3.4/zh/manual
主機(jī)名
地址
zabbixserver
192.168.4.5/24
web1
192.168.4.100/24
web2
192.168.4.200/24
# 準(zhǔn)備3臺主機(jī)。按上表配置主機(jī)名和IP地址
[root@zzgrhel8 ~]# clone-vm7
????????????? 安裝zabbix
# 1. 關(guān)閉SELINUX和防火墻
# 2. 配置yum。千萬注意:只保留系統(tǒng)yum,刪除mysql和pxc。
[root@zabbixserver ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.4.254/centos-1804
enabled=1
gpgcheck=0
# 3. 配置nginx,用于展示zabbix的web頁面
# 3.1 安裝nginx的依賴包
[root@zabbixserver ~]# yum install -y gcc pcre-devel openssl-devel
# 3.2 安裝nginx
[root@zzgrhel8 ~]# scp /linux-soft/2/lnmp_soft.tar.gz 192.168.4.5:/root/
[root@zabbixserver ~]# tar xf lnmp_soft.tar.gz
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@zabbixserver lnmp_soft]# cd nginx-1.12.2/
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module??? # 配置nginx支持https
[root@zabbixserver nginx-1.12.2]# make && make install
# 4. 配置nginx支持php。配置php可以連接mysql
[root@zabbixserver ~]# yum install -y php php-fpm php-mysql mariadb-server mariadb-devel
# 5. 根據(jù)zabbix手冊,修改nginx參數(shù)
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
?34???? fastcgi_buffers 8 16k;???? #緩存php生成的頁面內(nèi)容,8個(gè)16k
?35???? fastcgi_buffer_size 32k;?? #緩存php生產(chǎn)的頭部信息,32k
?36???? fastcgi_connect_timeout 300;? #連接PHP的超時(shí)時(shí)間,300秒
?37??? ?fastcgi_send_timeout 300;???? #發(fā)送請求的超時(shí)時(shí)間,300秒
?38???? fastcgi_read_timeout 300;???? #讀取請求的超時(shí)時(shí)間,300秒
?70???????? location ~ \.php$ {
?71???????????? root?????????? html;
?72???????????? fastcgi_pass?? 127.0.0.1:9000;
?73???????????? fastcgi_index? index.php;
?74???????? #??? fastcgi_param? SCRIPT_FILENAME? /script??? s$fastcgi_script_name;
?75???????????? include??????? fastcgi.conf;? # 注意改成fastcgi.conf
?76???????? }
# 6. 啟動(dòng)相關(guān)服務(wù)
[root@zabbixserver ~]# systemctl enable mariadb --now
[root@zabbixserver ~]# systemctl enable php-fpm --now
[root@zabbixserver ~]# ss -tlnp |grep :9000
LISTEN???? 0????? 128??? 127.0.0.1:9000
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx
[root@zabbixserver ~]# ss -tlnp | grep :80
LISTEN???? 0????? 128????????? *:80
# 寫入到rc.local中的命令,開機(jī)時(shí)自動(dòng)執(zhí)行
[root@zabbixserver ~]# echo '/usr/local/nginx/sbin/nginx' >> /etc/rc.d/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.d/rc.local
# 7. 編譯安裝zabbix
# 7.1 安裝zabbix的依賴包
[root@zabbixserver lnmp_soft]# yum install -y net-snmp-devel curl-devel autoconf libevent-devel
# 7.2 編譯安裝
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# ls zabbix-3.4.4.tar.gz
zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# tar xf zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config? --with-net-snmp --with-libcurl
# --enable-server: 安裝服務(wù)器端
# --enable-agent: 安裝被控端
# --with-mysql: 指定mysql數(shù)據(jù)庫配置程序
# --with-net-snmp: 配置可以通過snmp收集數(shù)據(jù)
# --with-libcurl: 啟用curl庫,以便zabbix可以通過curl連接web服務(wù)
# --enable-proxy: 啟動(dòng)proxy代理,不必安裝
[root@zabbixserver zabbix-3.4.4]# make && make install
????????????? 初始化
# 1. 創(chuàng)建zabbix存儲數(shù)據(jù)的數(shù)據(jù)庫。創(chuàng)建名為zabbix的數(shù)據(jù)庫,使用的字符集是utf8
[root@zabbixserver ~]# mysql
MariaDB [(none)]> create database zabbix default charset utf8;
# 2. 創(chuàng)建名為zabbix的用戶,密碼也是zabbix,可以對zabbix數(shù)據(jù)庫擁有全部權(quán)限。zabbix@'%'格式是:zabbix@客戶端地址
# 在mysql中,%表示0到多個(gè)任意字符
MariaDB [(none)]> grant all on zabbix.* to zabbix@'%' identified by 'zabbix';
# 授權(quán)zabbix用戶可以在本機(jī)登陸
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
MariaDB [(none)]> exit
# 3. 導(dǎo)入zabbix表結(jié)構(gòu),3個(gè)sql文件按順序?qū)?br> [root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# ls
data.sql? images.sql? schema.sql
# -u指定用戶名,-p指定密碼,第3個(gè)zabbix是數(shù)據(jù)庫
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
# 4. 配置zabbix_server服務(wù)
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
?12 # ListenPort=10051??? # 不用改,了解端口號
?38 LogFile=/tmp/zabbix_server.log?? # 不用改,日志文件位置
?85 DBHost=localhost????? # 數(shù)據(jù)庫服務(wù)器地址
?95 DBName=zabbix???????? # 不用改,數(shù)據(jù)庫名
111 DBUser=zabbix???????? # 不用改,連接數(shù)據(jù)庫的用戶
119 DBPassword=zabbix???? # 連接數(shù)據(jù)庫的密碼
# 5. 創(chuàng)建用于運(yùn)行zabbix的用戶
# -s /sbin/nologin: 用戶不能登陸系統(tǒng)
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix
# 6. 創(chuàng)建用于管理zabbix的service文件
# service文件格式參考:https://www.cnblogs.com/gongxianjin/p/15673132.html
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
# 7. 啟動(dòng)服務(wù)
# 新建service文件,一般需要執(zhí)行systemctl daemon-reload,否則有可能識別不到
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl enable zabbix_server.service
[root@zabbixserver ~]# systemctl start zabbix_server.service
[root@zabbixserver ~]# ss -tlnp | grep :10051
LISTEN???? 0????? 128????????? *:10051
# 8. 配置agent,自己被監(jiān)控
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
?30 LogFile=/tmp/zabbix_agentd.log?? # 不用改,日志位置
?93 Server=127.0.0.1,192.168.4.5???? # 指定接受哪些服務(wù)器監(jiān)控
101 # ListenPort=10050?????????????? # 不用改,指定端口號
134 ServerActive=127.0.0.1,192.168.4.5? # 主動(dòng)匯報(bào)信息給哪些服務(wù)器
145 Hostname=zabbixserver?????????? # 本機(jī)的主機(jī)名
280 UnsafeUserParameters=1?????????? # 允許用戶自定義監(jiān)控項(xiàng)
# 9. 配置agent服務(wù)的service文件
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
# 10. 啟服務(wù)
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl start zabbix_agentd.service
[root@zabbixserver ~]# systemctl enable zabbix_agentd.service
[root@zabbixserver ~]# ss -tlnp | grep :10050
LISTEN???? 0????? 128????????? *:10050
?
附:刪庫重導(dǎo)入
# 查看有哪些數(shù)據(jù)庫
MariaDB [(none)]> show databases;
MariaDB [(none)]> drop database zabbix;
MariaDB [(none)]> create database zabbix default charset utf8;
MariaDB [(none)]> exit
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
????????????? zabbix的管理是通過web頁面進(jìn)行的。通過web初始化zabbix
# 拷貝zabbix的web頁面到nginx
[root@zabbixserver ~]# ls lnmp_soft/zabbix-3.4.4/frontends/
php
[root@zabbixserver ~]# cp -r lnmp_soft/zabbix-3.4.4/frontends/php/* /usr/local/nginx/html/
# nginx運(yùn)行期間,調(diào)用php-fpm服務(wù),php-fpm需要向web目錄中修改文件。php-fpm的運(yùn)行用戶是apache,所以apache用戶需要對該目錄有寫權(quán)限
[root@zabbixserver ~]# chown -R apache:apache /usr/local/nginx/html/
# 訪問192.168.4.5/index.php,首次訪問,將會自動(dòng)跳轉(zhuǎn)到安裝頁面:http://192.168.4.5/setup.php


????????????? 根據(jù)上面紅色報(bào)錯(cuò),解決zabbix web依賴的內(nèi)容
# 安裝依賴的軟件包
[root@zabbixserver ~]# yum install -y php-gd php-xml php-bcmath php-mbstring
# 修改php.ini文件
[root@zabbixserver ~]# vim /etc/php.ini
?672 post_max_size = 16M
?384 max_execution_time = 300
?394 max_input_time = 300
?878 date.timezone = Asia/Shanghai
[root@zabbixserver ~]# systemctl restart php-fpm
# 刷新web頁


連接數(shù)據(jù)庫的密碼,也是zabbix。




默認(rèn)的登陸用戶是admin,密碼是zabbix。
配置zabbix
????????????? 修改語言



????????????? 啟用監(jiān)控自身


配置zabbix監(jiān)控web1服務(wù)器
# 監(jiān)控端(zabbix server)和被控端使用的軟件是同一個(gè),只是啟用不同的功能
[root@zabbixserver ~]# scp lnmp_soft/zabbix-3.4.4.tar.gz 192.168.4.100:/root
# 安裝編譯agent需要的依賴環(huán)境
[root@web1 ~]# yum install -y gcc pcre-devel autoconf
# 編譯agent
[root@web1 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make && make install
# 修改配置文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
?30 LogFile=/tmp/zabbix_agentd.log?? # 日志位置,不用改
?69 EnableRemoteCommands=1??? # 允許監(jiān)控端遠(yuǎn)程執(zhí)行命令
?93 Server=127.0.0.1,192.168.4.5?? # 允許自己和監(jiān)控端進(jìn)行數(shù)據(jù)采集
134 ServerActive=127.0.0.1,192.168.4.5? # 允許自己和監(jiān)控端主動(dòng)監(jiān)控
145 Hostname=web1???????????? # 自己的主機(jī)名
280 UnsafeUserParameters=1??? # 允許用戶自定義監(jiān)控項(xiàng)
# 配置服務(wù)
[root@zabbixserver ~]# scp /usr/lib/systemd/system/zabbix_agentd.service 192.168.4.100:/usr/lib/systemd/system/
[root@web1 ~]# useradd -s /sbin/nologin zabbix
[root@web1 ~]# systemctl daemon-reload
[root@web1 ~]# systemctl start zabbix_agentd.service
[root@web1 ~]# systemctl enable zabbix_agentd.service
[root@web1 ~]# ss -tlnp | grep :10050
LISTEN???? 0????? 128????????? *:10050
在zabbix web管理平臺中配置監(jiān)控
????????????? 主機(jī):安裝了agent,被監(jiān)控的主機(jī)
????????????? 主機(jī)組:根據(jù)需求,將多臺主機(jī)加入到一個(gè)主機(jī)組中,方便管理。系統(tǒng)默認(rèn)已經(jīng)創(chuàng)建了一些主機(jī)組。
????????????? 模板:是監(jiān)控項(xiàng)的集合。將模板應(yīng)用到主機(jī),主機(jī)就可以直接擁有模板中的所有監(jiān)控項(xiàng)。系統(tǒng)中默認(rèn)已經(jīng)創(chuàng)建了一些模板。
添加被監(jiān)控的主機(jī)
????????????? 登陸zabbix:http://192.168.4.5/index.php



????????????? 查看監(jiān)控?cái)?shù)據(jù)

需要查看哪個(gè)項(xiàng)目,可以點(diǎn)擊右側(cè)的“圖形”

常用的監(jiān)控指標(biāo):
????????????? CPU idle time:CPU空閑時(shí)間。不宜過低。
????????????? Processor load(1 min average per core) / Processor load(5 min average per core) / Processor load(15 min average per core):每核心1分鐘、5分鐘、15分鐘的平均負(fù)載。這個(gè)值不應(yīng)長期大于1。
????????????? Free disk sapce on /:根分區(qū)剩余的空間
????????????? Free disk sapce on /(percentage):根分區(qū)剩余的空間百分比
????????????? Available memory:可用內(nèi)存
????????????? Incoming network traffic on eth0:eth0網(wǎng)卡進(jìn)入的流量
????????????? Outgoing network traffic on eth0:eth0網(wǎng)卡外出的流量
????????????? Maximum number of processes:系統(tǒng)最多運(yùn)行的進(jìn)程數(shù)
????????????? Number of logged in users:已登陸的用戶數(shù)
自定義監(jiān)控項(xiàng)
實(shí)現(xiàn)監(jiān)控web1用戶數(shù)量的監(jiān)控項(xiàng)
1.????????? 在被控端創(chuàng)建key。被控端被監(jiān)控的內(nèi)容叫作key,可以理解為它就是一個(gè)變量名,具體的名字自己決定。
2.????????? 在web頁面中創(chuàng)建監(jiān)控項(xiàng)。監(jiān)控項(xiàng)對應(yīng)key值。
3.????????? 監(jiān)控項(xiàng)存在應(yīng)用集中。應(yīng)用集就是相似監(jiān)控項(xiàng)的集合。
4.????????? 應(yīng)用集存在模板中。一個(gè)模板可以包含多個(gè)應(yīng)用集。

?
在被控端創(chuàng)建key
????????????? 創(chuàng)建key的語法
UserParameter=自定義key值,命令
# 命令的執(zhí)行結(jié)果,是key的value
????????????? 在web1上聲明自定義監(jiān)控項(xiàng)所包含的配置文件。系統(tǒng)將會到/usr/local/etc/zabbix_agentd.conf.d/查找自定義監(jiān)控項(xiàng)
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
264 Include=/usr/local/etc/zabbix_agentd.conf.d/
????????????? 創(chuàng)建自定義配置文件。文件名自定義
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/count.line.passwd
UserParameter=count.line.passwd,sed -n '$=' /etc/passwd
????????????? 驗(yàn)證
[root@web1 ~]# systemctl restart zabbix_agentd.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
[root@zabbixserver ~]# zabbix_get -s 192.168.4.100 -k count.line.passwd
# -s指定獲取哪臺主機(jī)的值
# -k指定key
創(chuàng)建模板
創(chuàng)建名為count.line.passwd的模板。該模板屬于名為count-passwd的組,該組不存在則自動(dòng)創(chuàng)建。

創(chuàng)建應(yīng)用集
????????????? 創(chuàng)建名為count_line_passwd的應(yīng)用集



在應(yīng)用集中創(chuàng)建監(jiān)控項(xiàng)
????????????? 創(chuàng)建名為count_line_passwd_item的監(jiān)控項(xiàng)



應(yīng)用模板到主機(jī)


查看結(jié)果
????????????? 注意,剛應(yīng)用的模板,不會立即取得數(shù)據(jù),需要等一會

配置告警
????????????? 默認(rèn)情況下,監(jiān)控項(xiàng)不會自動(dòng)發(fā)送告警消息
????????????? 需要配置觸發(fā)器與告警,并且通過通知方式發(fā)送信息給聯(lián)系人
????????????? 觸發(fā)器:設(shè)置條件,當(dāng)條件達(dá)到時(shí),將會執(zhí)行某個(gè)動(dòng)作
????????????? 動(dòng)作:觸發(fā)器條件達(dá)到之后要采取的行為,比如發(fā)郵件或執(zhí)行命令
用戶數(shù)超35時(shí),發(fā)送告警郵件
????????????? 當(dāng)web1的用戶數(shù)超過35時(shí),認(rèn)為這是一個(gè)問題(Problem)
????????????? 當(dāng)出現(xiàn)問題時(shí),將會執(zhí)行動(dòng)作。
????????????? 執(zhí)行的動(dòng)作是給管理員發(fā)郵件。
????????????? 給管理員發(fā)郵件,還要配置郵件服務(wù)器的地址,以及管理員的email地址
實(shí)施
創(chuàng)建觸發(fā)器規(guī)則


創(chuàng)建名為password_line_gt_35的觸發(fā)器

點(diǎn)擊添加后,出現(xiàn)下圖:

?
添加表達(dá)式之后的結(jié)果如下:

表達(dá)式語法:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{<主機(jī)>:<key>.<函數(shù)>(<參數(shù)>)}<操作符><常量>
例:
{count.line.passwd:count.line.passwd.last()}>35
# count.line.passwd是模板
# count.line.passwd是在被控端上定義的key
# last是函數(shù),表示最近的一次取值
# > 是操作符
# 35 是常量
# 以上表達(dá)式的含義是:應(yīng)用count.line.passwd模板的主機(jī),它的count.line.passwd最近一次取值大于35,則狀態(tài)為“問題”,即Problem
創(chuàng)建郵件類型的報(bào)警媒介


為用戶關(guān)聯(lián)郵箱



?
創(chuàng)建動(dòng)作:當(dāng)出現(xiàn)Problem狀態(tài)時(shí),給admin發(fā)郵件



點(diǎn)擊“新的”之后,如下圖:

驗(yàn)證
# 配置zabbix服務(wù)器成為郵件服務(wù)器
[root@zabbixserver ~]# yum install -y postfix mailx
[root@zabbixserver ~]# systemctl enable postfix --now
[root@zabbixserver ~]# ss -tlnp | grep :25
LISTEN???? 0????? 100??? 127.0.0.1:25
# 在web1上創(chuàng)建用戶
[root@web1 ~]# for user in user{1..20}
> do
> useradd $user
> done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
43