cacti、nagios、zabbix、smokeping、open-falcon等等php
cacti、smokeping偏向於基礎監控,成圖很是漂亮python
cacti、nagios、zabbix服務端監控中心,須要php環境支持,其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖mysql
open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究linux
目前流行的監控爲: zabbix ,Prometheus+grafanaios
擴展:使用Prometheus+grafana打造高逼格監控平臺:http://blog.51cto.com/youerning/2050543nginx
首先要準備兩臺機器。web
兩臺機器都要下載安裝sql
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql數據庫
yum install -y zabbix-agentvim
若是不設置在web界面zabbix中文顯示會有問題。
增長內容以下:
character_set_server = utf8
添加完後重啓下mysql
首先登錄 mysql -uroot -p123456
登錄後指定字符集 create database zabbix character set utf8;
爲了讓php代碼連接mysql等,在建立用戶,指定來源IP,建立密碼。
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
沒有這些數據zabbix沒法工做。
[root@localhost ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/ [root@localhost zabbix-server-mysql-3.4.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@localhost zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz [root@localhost zabbix-server-mysql-3.4.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@localhost zabbix-server-mysql-3.4.11]# mysql -root -p123456 zabbix < create.sql Warning: Using a password on the command line interface can be insecure. [root@localhost zabbix-server-mysql-3.4.11]#
vim /etc/zabbix/zabbix_server.conf
### Option: DBHost # Database host name. # If set to localhost, socket is used for MySQL. # If set to empty string, socket is used for PostgreSQL. # # Mandatory: no # Default: # DBHost=localhost DBHost=127.0.0.1
正常生產環境中數據庫可能在另外一臺機器上,須要定義那臺機器得IP.
定義DBName 要和數據庫定義得名字同樣
定義DBUser,以及密碼。
# DBUser= DBUser=zabbix DBPassword=aming-zabbix
啓動後用ps aux |grep zabbix檢查一下,若是出現特別多得內容說明啓動成功了,若是隻有幾行說明啓動得有問題。
啓動httpd服務:systemctl start httpd(啓動前檢查是否啓動了nginx監聽80端口,若是啓動須要停掉)
加入開機啓動裏: systemctl enable zabbix-server ,systemctl enable httpd
[root@localhost ~]# netstat -lntp |grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2486/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 2486/zabbix_server
只看faild 不用管ok的。vi /etc/php.ini 找到timezone,添加
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone =Asia/Shanghai
定義完成以後重啓httpd服務。以後刷新網頁就會沒有剛剛的報錯,直接點下一步便可。
下一步後,填寫name無所謂寫什麼自定義便可。
完成以後出現登錄界面,默認用戶名:Admin 密碼:zabbix
進入後臺第一件事情就是修改密碼
mysql -u root -p123456 use zabbix
mysql -uroot -p zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
這樣就更改了Admin用戶的密碼
其中有三個地方須要修改
Server=127.0.0.1修改成Server=192.168.159.128 //定義服務端的ip(被動模式) ServerActive=127.0.0.1修改成ServerActive=192.168.159.128 //定義服務端的ip(主動模式) Hostname=Zabbix server修改成Hostname=aming-01 //這是自定義的主機名,一會還須要在web界面下設置一樣的主機名
主動或者被動是相對客戶端來說的
被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端
主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可。
當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。
服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
首先添加主機羣組 aming-text
而後點擊主機,添加主機命名爲:aming-01,配置如圖:
監控項可定義主動模式被動模式
應用集就是監控項目的集合
自動發現規律:會自動發現客戶端的磁盤分區,網卡流量,文件系統進行監控。
之因此連接模板是由於會把自動發現選項的模板也連接過來。自動發現的模板沒法單獨複製。連接完以後,把不須要的在刪除。
連接以後的模板沒法刪除,由於是連接其餘組的膜拜你。可是取消連接以後,自定義組會保留以前連接的全部模板,這樣就能夠刪除沒有用的了。
先刪除監控項,後刪除應用集。
保留如下選項,其餘均可以刪除
設置爲中文後,zabbix圖形的中文文字會顯示小方框 這是由於在zabbix的字體庫中沒有中文字體,須要從windows上借用一個過來
它定義的路徑是「fonts」,它是一個相對路徑,絕對路徑爲/usr/share/zabbix/fonts,而字體文件爲「ZBX_GRAPH_FONT_NAME」所定義的「graphfont」,它是一個文件,絕對路徑爲/usr/share/zabbix/fonts/graphfont windows字體路徑爲「C:\Windows\Fonts\」,找到「simfang.ttf」(其實就是那個仿宋簡體),先把它複製到桌面上,而後上傳到linux的/usr/share/zabbix/fonts/,而且更名爲graphfont.ttf
把自動發現更新時間改成1分鐘,而後重啓server和agent
看到圖形就會自動識別網卡之類的
爲了防止服務器壓力,在更新出新圖表後把自動發現更新時間改成時間稍微長一點。
#!/bin/bash ##獲取80端口併發鏈接數 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
chmod 755 /usr/local/sbin/estab.sh
客戶端上編輯配置文件 vim /etc/zabbix/zabbix_agentd.conf//增長
UnsafeUserParameters=1 //表示使用自定義腳本 UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh (這個名字後面要填寫到鍵值裏面key)//自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,參數由逗號分隔若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh
重啓zabbix-agent服務 systemctl restart zabbix-agent
首先到服務端驗證,看客戶端腳本是否生效,執行命令值爲0,說明正常
[root@localhost ~]# zabbix_get -s 192.168.159.130 -p 10050 -k 'my.estab.count' 0
表達式
「管理」,「報警媒介類型」,「建立媒體類型」
腳本參數 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
腳本必須放在這個目錄下, 由於服務端的配置文件就是這樣定義的,/usr/lib/zabbix/alertscripts/
在客戶端建立腳本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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) if __name__ == "__main__": main() #####腳本使用說明###### #1. 首先定義好腳本中的郵箱帳號和密碼 #2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"
權限必定不要忘記更改 chmod 755 /usr/lib/zabbix/alertscripts/mail.py
測試腳本是否可用
[root@localhost alertscripts]# python mail.py 13261666323@163.com "這是一個測試標題" "這是一個測試內容,124234djgajgoaiodjboshjb"
測試成功,只不過中文是亂碼。
建立一個接受告警郵件的用戶,「管理」,「用戶」,「建立用戶」,「報警媒介」,類型選擇「baojing」,注意用戶的權限,若是沒有須要到用戶組去設置權限
設置動做,「配置」,「動做」,「建立動做」,名稱寫「sendmail」(自定義),「操做」頁面,內容以下
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類,操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
切換到「恢復操做」,把信息改爲以下
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE}
點擊「新的」,「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
測試告警
此觸發器是檢測系統負載小於1的時候發送郵件。
zabbix監控交換機(思科) http://tryrus.blog.51cto.com/10914693/1789847
zabbix遠程執行命令 http://www.ywnds.com/?p=6610
zabbix分佈式部署 http://sfzhang88.blog.51cto.com/4995876/1364399
zabbix監控tomcat(版本有點老,你們只須要參考步驟,不能照搬) http://www.fblinux.com/?p=616