監控、監控客戶機-添加主機、管理模板、管理圖形和窗口、配置觸發器,zabbix郵件告警、zabbix監控Nginx、Tomcat、MySQL

  1. 監控Linux系統狀態
  2. 監控介紹
  3. 安裝zabbix4.0 
  4. 監控客戶機-添加主機
  5. 監控客戶機-管理模板
  6. 監控客戶機-管理圖形和窗口
  7. 監控客戶機-配置觸發器
  8. 解決中文名稱不能寫數據庫的問題
  9. 解決圖形中文亂碼
  10. zabbix郵件告警
  11. zabbix監控Nginx
  12. zabbix監控Tomcat
  13. zabbix監控MySQL

 

具體監控命令見此連接:https://my.oschina.net/u/4093217/blog/3036056php

監控cpu

w和uptime查看系統負載
top 動態查看進程使用資源狀況,shell腳本中會使用 
佔用CPU的進程能夠是Running,也能夠是Waiting 
某一時刻1顆CPU只能有一個進程在使用其資源
top 3秒顯示一次,動態的,默認按cpu百分比排序,按大寫的m(M)鍵,按照內存的使用率大小排序 
top -bn1 靜態的顯示,一次性把全部的信息所有輸出出來,也是按cpu百分比排序,適合在寫腳本時使用
cat /proc/cpuinfo 查看CPU信息
lscpu 也能夠查看cpu信息
free命令 ,用來查看內存和swap使用狀況,關注最後一列的available,這個數字是真正剩餘的物理內存大小

手動增長swap

模擬一個G的磁盤空間:java

dd if=/dev/zero of=/bigfile bs=1M count=1000 
dd(對磁盤進行操做的工具),if(從哪裏來),of(目標的文件或磁盤,此處寫入到跟目錄下,叫bigfile),bs(決定文件大小)=1M(即每一個塊爲1M),count=1000(共有1000個塊),也能夠寫成bs=100M,count=10

mkswap /bigfile 格式化成swap格式
chmod 600 /bigfile 更改權限

swapon /bigfile 掛載

以前的swap大小python

掛載後的大小mysql

監控磁盤

yum install -y sysstat 安裝iostat、sar

iotop 當磁盤io很忙,可使用iotop查看,得到讀寫的進程是哪一個,按IO使用率大小排序

綜合工具,判定瓶頸點 vmstat 1,關注r、b、si、so、bi、bo、id、wa

監控網卡流量

sar -n DEV 1 10 查看網卡流量 1是每一秒鐘顯示一次,10是顯示10次
bit 比特(帶寬單位)
Byte 字節(速度傳輸單位)
8bit =1Byte 2MB/s 2*8=16Mbit 100Mbit 12.8MB/s
nload命令 動態的顯示網卡實時速度的一個頁
ethtool ens33    查看網卡是否鏈接
mii-tool ens33    查看網卡是否鏈接

查看進程:

ps aux 、ps -elf 、ps -eLf(查看線程)

查看網絡鏈接情況:

netstat netstat -lnp 查看監聽端口 須要關注上面的端口部分
netstat -an 查看tcp/ip 全部的鏈接狀態
netstat -ltnp 只查看tcp的監聽端口
netstat -ltunp 查看tcp和udp的監聽端口
ss -an和netstat殊途同歸,顯示tcpip狀態

抓包:

tcpdump -nn -r 1.cap -r讀取一個包
tcpdump -nn -i ens33
tcpdump -nn -i ens33 port 22 只要端口是22的包
tcpdump -nn -i ens33 not port 80 不要80端口的包
tcpdump -nn -i ens33 not port 80 and host 192.168.247.3 不要80端口而且host是192.168.247.3 的包
tcpdump -nn -i ens33 -c 100 只抓取100個包
tshark: 
tshark -i ens33 -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

監控介紹

作監控的目的:能夠提早發現潛在故障隱患,第一時間解決掉,把影響下降。、linux

常見的監控軟件:ios

cacti、nagios、zabbix、open-falcon、prometheus、grafana等等nginx

zabbix 4.0安裝

zabbix官網  www.zabbix.com ,進入官網下載(從二進制包安裝比較方便快捷)git

yum源安裝zabbix  :github

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

yum list |grep zabbix              須要安裝服務端、客戶端的程序
zabbix-get 命令行工具
zabbix-proxy 代理軟件
zabbix-web webUI ,web界面,監控web的鏈接時間、加載時間,確認網站沒有掛掉
zabbix-agent 客戶端的程序,須要啓動
zabbix-server-mysql 服務端的程序,須要啓動  
zabbix-web-mysql web和mysql相關組件

須要安裝的包:web

 yum install -y  zabbix-agent.x86_64 zabbix-get.x86_64 zabbix-server-mysql.x86_64 zabbix-web.noarch zabbix-web-mysql.noarch

建立zabbix庫和用戶

create database zabbix;
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'tobe';

編輯zabbix配置文件    /etc/zabbix/zabbix_server.conf

根據剛纔建立的數據庫名稱,建立的用戶名密碼修改

DBHost=127.0.0.1 #zabbix須要鏈接的數據庫地址
DBName=zabbix 庫名
DBUser=zabbix #用戶名
DBPassword=tobe #密碼

把zabbix-server-mysql中的sql導入到zabbix庫中,所在位置 ls /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz

 解壓

gzip -d /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql.gz

導入到zabbix庫中

mysql -uroot -ptobe zabbix < /usr/share/doc/zabbix-server-mysql-4.0.9/create.sql 

啓動zabbix服務        systemctl start zabbix-server.service
設置開啓啓動          systemctl enable zabbix-server

注意關閉防火牆或iptables:

setenforce 0
systemctl stop firewalld

啓動成功:

若是啓動失敗,注意查看日誌報錯:       

zabbix_server日誌存放路徑 :  /var/log/zabbix/zabbix_server.log

netstat -lntp   會監聽10051端口

zabbix_agentd配置文件 :    vim /etc/zabbix/zabbix_agentd.conf

配置文件中須要修改下面兩處內容

zabbix監控有兩種模式:主動模式和被動模式

Server=127.0.0.1
ServerActive=127.0.0.1 客戶端主動上報
啓動agent服務 systemctl start zabbix-agent.service
設置開機啓動   systemctl enable zabbix-agent

zabbix_agentd日誌存放路徑  :   /var/log/zabbix/zabbix_agentd.log

ps aux |grep zabbix_agentd

安裝webUI,在瀏覽器上安裝,須要啓動httpd服務

netstat -lntp  此時80端口監聽的是nginx,須要停掉,監聽httpd

systemctl stop nginx   停掉Nginx

systemctl start httpd  啓動httpd

或者使用kill -9 PID結束進程

瀏覽器中訪問zabbix: url直接輸入:192.168.183.133/zabbix ,出現安裝頁面

安裝頁面點擊下一步,PHP option "date.timezone"出現報錯

須要修改httpd配置文件  vim /etc/php.ini

lamp的配置文件路徑 ls /etc/php.ini
lnmp的配置文件路徑 ls /usr/local/php-fpm/etc/php.ini

找到date.timezone,加上時區

systemctl restart httpd.service  重啓httpd服務,而後到頁面刷新便可,點擊下一步

date.timezone = Asia/Shanghai

輸入數據庫的配置信息

下一步,更改host,name本身定義,點擊下一步:安裝完成

進入登陸界面,用戶名admin,密碼zabbix

監控客戶機-添加主機

在第二臺機器上:

rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum install -y  zabbix-agent.x86_64   客戶端上只須要安裝此包

編輯配置文件:vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.183.3 
ServerActive=192.168.183.3 修改爲zabbix-server的ip
啓動agent服務 systemctl start zabbix-agent.service
設置開機啓動    systemctl enable zabbix-agent

ps aux |grep zabbix_agentd

netstat -lntp            zabbix_agentd監聽10050端口,會和10051通訊,若是有防火牆的話,須要放行10050端口,或加白名單

加白名單 實現通訊 :   iptables -I INPUT -s 192.168.183.3 -j ACCEPT

到weiUI界面設置

先添加主機組,在到hosts中,右邊找到(建立主機)create hosts添加,一臺機器能夠屬於多個組

此處IP地址爲客戶端10050端口的地址

添加監控項目:

一、到模板中->建立模板

二、把經常使用的監控項目添加到test模板中

模板裏的Template OS Linux中的應用集->CPU的監控項->拷貝(CPU idle time和Processor load (1 min average per core))到test模板

拷貝出這兩個文件到templates模板中

複製完成後,test模板的監控項中,出現這兩項

繼續點擊模板裏的Template OS Linux->監控項->複製Total memory,複製到test中

把Template OS AIX中監控項:Free real memory複製到test,方法同上

監控客戶機-管理模板

點擊Template OS Linux->全克隆

全克隆以後修改模板名稱和羣組,最下面點擊添加

進入剛剛克隆的模板中把連接取消並清理,點擊更新

剛剛克隆的模板中把用不到的都刪除,保留所須要的,把選擇的兩項刪除

刪除是爲了把在刪監控項時減小報錯,由於觸發器中有和監控項關聯的

觸發器中也保留所須要的

監控項也保留所須要的

應用集也同樣

自動發現規則最好不動

完成後,到主機選擇新添加的主機tobejiang->模板->選擇剛剛克隆的模板tobe->添加->更新

在第一臺機器上

使用 zabbix_get -s 192.168.183.33 -p 10050 -k "system.cpu.load[all,avg1]"   測試是否通訊

iptables -I INPUT -s 192.168.183.33 -j ACCEPT    在第一臺server上也要加白名單

出現報錯

兩臺機器都須要重啓:
服務端重啓  systemctl restart zabbix-server.service
客戶端重啓  systemctl restart zabbix-agent.service

重啓服務後,成功

主機也啓動成功

此時在最新數據中,選中此模板->應用,也出現了數據

監測->圖形中,選擇對應主機選項,下方出現圖形界面

監控客戶機-管理圖形和窗口

監測中的自動發現此時是空的

到配置->主機->選擇tobejiang的自動發現->選中點擊如今檢查

點擊圖形,會多出幾項

監測下的圖形,也多出這幾項

把圖形放到:監測->儀表板中

操做方法:監測->聚合圖形->建立聚合圖形

添加完成後點擊後面的構造函數->點擊更改,選擇須要顯示的圖形

自定義儀表板:

編輯儀表盤右邊模塊->建立新的->輸入名稱->點擊空白處添加構件

添加一個新的構件:圖形->下面的添加新數據集,能夠添加監控項

想要在新建立的screens中顯示tobe02的聚合圖形,須要在聚合圖形界面點擊這個收藏按鈕

點擊保存報錯,不支持中文,把名稱改成英文後,正常保存

監控客戶機-配置觸發器

配置->主機->觸發器->建立觸發器->添加表達式(結果中的單位爲bit)>=1000000(10M)->添加

配置告警過程:

 

解決中文名稱不能寫數據庫的問題

寫入中文名字時不識別

show create table items\G;

在導入前設置字符集

show variables like 'character%'; 能夠在my.cnf更改字符集

此處因爲已經安裝好了,因此導出表數據

mysqldump -uroot -ptobe --default-character-set=utf8 zabbix > zabbix.sql

vim zabbix.sql   編輯導出的sql
把latin1改爲utf8
:1,$s/latin1/utf8/g   查找替換,$表示到最後一行,s表示要查找替換了,/latin1表示須要替換的,/utf8/表示要替換成的內容,g替換全部

導入表數據

mysql -uroot -ptobe --default-character-set=utf8 zabbix < zabbix.sql

此時在回到數據庫  show create table items\G;

已經改成utf8

回到頁面更改,顯示中文

解決圖形中文亂碼

緣由是沒有支持中文的字體

搜索: find . -type f -name "*inc*"

字體存放目錄 :  vim /usr/share/zabbix/include/defines.inc.php

搜索font,注意此處fonts的路徑

windows中的字體所在路徑,把須要的字體放到桌面,rz到服務器上


並移動到/usr/share/zabbix/assets/fonts目錄下

先把原來的graphfont.ttf文件更名: mv graphfont.ttf graphfont.ttf.bak
作軟鏈接:  ln -s ./simfang.ttf graphfont.ttf

此時回到頁面顯示已正常

zabbix郵件告警

阿里雲郵件推送服務
阿里雲 -> 管理控制檯 -> 產品與服務 -> 雲通訊 -> 郵件推送
當即開通 -> 發信域名 -> 新建域名 -> 點擊配置
到dnspod -> 域名解析-> 添加TXT記錄/MX記錄/CNAME
驗證
發信地址 -> 新建發信地址 -> 域名/帳號/發信類型(觸發) -> 設置smtp密碼
SMTP服務地址: smtpdm.aliyun.com ,SMTP服務端口號:25或80或465(SSL加密)

把阿里雲上對應的值寫入便可,主機記錄爲空,寫@

阿里雲上的狀態變爲   可以使用-未備案  便可繼續下一步

建立發信地址和smtp密碼

yum install -y expect  生產隨機字符串使用

mkpasswd -s 0 -l 15 生成密碼複製到郵件推送控制檯中的發信地址

 

建立發郵件python腳本

vim mail.py   放到root下就能夠

#!/usr/bin/python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText
import sys

mail_user = 'foutt@tobej.cn'        域名
mail_pass = 'xxxxx'                smtp密碼

def send_mail(to_list,subject,content):
    me = "zabbix 監控告警平臺"+"<"+mail_user+">"
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['Subject'] = subject
    msg['From'] = me
    msg['to'] = to_list

    try:
        s = smtplib.SMTP("smtpdm.aliyun.com", 25)
        s.login(mail_user,mail_pass)
        s.sendmail(me,to_list,msg.as_string())
        s.close()
        return True
    except Exception,e:
        print str(e)
        return False

if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

給予755權限,不然不會執行此腳本;

chmod 755 mail.py

測試:給郵箱發郵件,進行測試,把標題爲測試郵件,內容爲my.cnf中的內容發送到foutt7777@163.com

./mail.py foutt7777@163.com "測試郵件" "`cat /etc/my.cnf`"

163郵箱已經收到,測試成功

編輯zabbix配置文件    /etc/zabbix/zabbix_server.conf

vim /etc/zabbix/zabbix_server.conf

找到:AlertScriptsPath=/usr/lib/zabbix/alertscripts

把mail.py 挪到這個目錄下來

mv mail.py /usr/lib/zabbix/alertscripts/

cd /usr/lib/zabbix/alertscripts

給它一個755權限  chmod 755 mail.py

 

設置zabbixWEB UI

1) 設置報警媒介

管理->報警媒介類型->建立媒體類型
腳本參數 -> Add {ALERT.SENDTO}/ Add {ALERT.SUBJECT}/Add {ALERT.MESSAGE}

2)設置接收郵件地址

管理->用戶->選擇admin(或新建)
報警媒介->添加,此處的收件人能夠添加多個

並確認是否有權限,若是沒有權限的話,在用戶處選擇Zabbix administrators羣組,並選擇權限中的用戶類型

3)配置動做

配置->動做->建立動做
設置好名稱後,在操做模塊->新的->選擇發送到的用戶->發送到baojing->點擊添加
恢復操做->新的->選擇用戶->發送到baojing->點擊添加
最後點擊添加便可

測試報警 :

配置->主機
爲了實驗效果,先停用Zabbix server
主機->觸發器->故意調整一個觸發器 :網卡入口流量,改成<=10000000

監測->問題->選擇主機->應用,能夠看到報警

郵箱也收到了報警郵件

測試完成後,把觸發器恢復爲>=10000000,過一下子會收到已解決郵件

更改發送時間

配置->模板->選擇模板->自動發現規則->Network interface discovery的監控項原型->點擊Incoming network traffic on {#IFNAME}->更新間隔改成30s

zabbix監控Nginx

配置文件中前面不能有空格

在002上安裝Nginx

編輯yum倉庫: vim /etc/yum.repos.d/nginx.repo

粘貼:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

安裝: yum install -y nginx
systemctl start nginx
vim /etc/nginx/nginx.conf   配置狀態信息放到此目錄下


配置Nginx狀態信息
vim /etc/nginx/conf.d/default.conf  #增長
location /nginx_status 
{
        stub_status on;
        access_log   off;
        allow 127.0.0.1;
        deny all;
    }

nginx -t檢查沒有問題

nginx -s reload

進行測試

curl http://127.0.0.1/nginx_status

說明:

字段

含義

Active Connections

當前活動鏈接數,其中也包括了等待狀態的鏈接

accepts

接收到的鏈接數

handled

已經處理完的鏈接數,該數字通常和accepts一致,若是不一致那麼說明Nginx出錯了

requests

總共處理的請求數,一個鏈接能夠有多個請求,因此該值比accpets要大

Reading

正在讀取請求頭信息的鏈接數

Writing

正在發送響應報文的鏈接數

Waiting

處於閒置狀態,等待客戶端發送請求的鏈接數

在客戶端002上,編寫監控腳本

vim /usr/local/sbin/ngx_status.sh  #內容以下
#!/bin/bash
url="http://127.0.0.1/nginx_status"
curl=/usr/bin/curl

# 檢測nginx進程是否存在
function ping {
    /sbin/pidof nginx | wc -l 
}
# 檢測nginx性能
function active {
    $curl $url 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
    $curl $url 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
    $curl $url 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
    $curl $url 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
    $curl $url 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1

curl

更改權限    chmod 755 /usr/local/sbin/ngx_status.sh

在客戶端002上,編輯zabbix_agent.conf

vi /etc/zabbix/zabbix_agentd.conf # 增長
UserParameter=nginx.status[*],/usr/local/sbin/ngx_status.sh $1 用來定義自定義的腳本,若是有多個腳本,就定義多行,執行該腳本後,能夠獲取到該機器上的某些指標的數值

重啓服務

systemctl restart zabbix-agent

zabbix_get 測試

在服務端執行

zabbix_get -s 192.168.183.33 -k 'nginx.status[accepts]'

導入nginx模板

下載模板 https://github.com/aminglinux/linux2019/blob/master/zabbix_nginx_template/zbx_export_templates.xml

配置->模板->導入,把在上面連接複製的內容複製到xml文件中導入->規則不動->導入

監控nginx的狀態頁

配置->主機->點擊須要設置的機器->模板->選擇Template App NGINX->添加->更新

zabbix監控Tomcat

監控流程:

1)安裝zabbix_java_gateway
2)配置zabbix_java_gateway配置文件和zabbix_server配置文件,指定監聽端口,啓動進程數
3)編輯Tomcat配置文件,開啓JMX
4)添加host,指定JMX interface
5)連接TOMCAT模板

服務端001上,安裝zabbix_java_gateway

yum install -y zabbix-java-gateway

修改配置文件

vim /etc/zabbix/zabbix_java_gateway.conf 
    去掉 LISTEN_PORT 和 START_POLLERS  的註釋

vim /etc/zabbix/zabbix_server.conf
    定義 JavaGateway 和 JavaGatewayPort 和  StartJavaPollers

啓動zabbix-java-gateway服務 systemctl start zabbix-java-gateway

重啓zabbix-server服務 systemctl restart zabbix-server

開啓JMX

vim /usr/local/tomcat/bin/catalina.sh #在#!/bin/sh下增長
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=192.168.183.3
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"

重啓tomcat,若是啓動了須要先中止

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh

監聽了9999端口

添加Host連接模板

配置->主機->建立主機
agent代理程序的接口 -> 移除
JMX接口 -> Add -> 192.168.183.3  9999
模板-> 選擇-> Template App Apache Tomcat JMX -> 添加-> 添加

 zabbix監控MySQL

受權一個監控用戶

grant usage, process, replication client on *.* to 'mon'@'localhost' identified by 'x2ay9xodTvyM';

編輯配置文件

cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

mkdir /var/lib/zabbix   建立目錄
vim /var/lib/zabbix/.my.cnf #建立一個隱藏的配置文件,內容以下
[mysql]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock

[mysqladmin]
host=localhost
user=mon
password='x2ay9xodTvyM'
socket=/tmp/mysql.sock

能夠經過  mysql -umon -px2ay9xodTvyM   看是否可以鏈接

重啓zabbix-agent服務

systemctl restart zabbix-agent

測試

zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
若提示:sh: mysqladmin: 未找到命令
須要作軟鏈接: ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/

zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.size

添加主機和模板

配置->主機->建立主機
模板->Template DB MySQL->添加->添加

相關文章
相關標籤/搜索