超大規模門戶網站叢集架構:
<a href="http://s3.51cto.com/wyfs02/M02/8C/37/wKiom1hltqPBmHVsAABHQ5U8NAM606.jpg" target="_blank"></a>
運維30%的時間都在監控,監控要多元度;
監控(單機監控(系統監控)、網絡監控、應用監控、分布式監控);
業務監控(業務名額-->流量分析-->輿論監控):
流量分析:
SEO(search engine optimization,指通過站内優化(比如網站結構調整、網站内容建設、網站代碼優化等)以及站外優化(比如網站站外推廣、網站品牌建設等)使網站滿足搜尋引擎收錄排名需求,在搜尋引擎中提高關鍵詞排名,進而吸引精準使用者進入網站,獲得免費流量,産生直接銷售或品牌推廣;嚴謹的定義如下:SEO是指在了解搜尋引擎自然排名機制的基礎之上,對網站進行内部及外部的調整優化,改進網站在搜尋引擎中關鍵詞的自然排名,獲得更多的展現量,吸引更多目标客戶點選通路網站,進而達到網絡營銷及品牌建設的目标;搜尋引擎檢索原則是不斷更改的,檢索原則的更改會直接導緻網站關鍵字在搜尋引擎上排名的變化,是以搜尋引擎優化并非一勞永逸);
PR(PR值全稱為PageRank,網頁的級别技術,用來表現網頁等級的一個标準,是Google用于評測一個網頁“重要性”的一種方法,取自Google創始人Larry Page,它是Google排名運算法則(排名公式)的一部分,用來辨別網頁的等級/重要性,級别從0到10級,10級為滿分,PR值越高說明該網頁越受歡迎(越重要);例如:一個PR值為1的網站表明這個網站不太具有流行度,而PR值為7到10則表明這個網站非常受歡迎,或者說極其重要);
PV(page view即頁面浏覽量,通常是衡量一個網絡新聞頻道或網站甚至一條網絡新聞的主要名額,網頁浏覽數是評價網站流量最常用的名額之一,監測網站PV的變化趨勢和分析其變化原因是很多站長定期要做的工作,Page Views中的Page一般是指普通的html網頁,也包含php、jsp等動态産生的html内容,來自浏覽器的一次html内容請求會被看作一個PV,逐漸累計成為PV總數;使用者每1次對網站中的每個網頁通路均被記錄1次,使用者對同一頁面的多次通路,通路量累計);
IP(獨立IP,是指獨立使用者/獨立訪客,指通路某個站點或點選某條新聞的不同IP位址的人數,在同一天的00:00-24:00内,獨立IP隻記錄第一次進入網站的具有獨立IP的通路者,假如一台電腦關機了,30分鐘後重新開機,再次通路這個站那就再計算一次ip,在同一天内再次通路該網站則不計數,獨立IP通路者提供了一定時間内不同觀衆數量的統計名額,而沒有反應出網站的全面活動,比如你是ADSL撥号上網的,你撥一次号都自動配置設定一個ip,這樣你進入了本站,那就算一個ip,當你斷線了而沒清理cookie,之後又撥了一次号,又自動配置設定到一個ip,你再進來了本站,那麼又統計到一個ip,但是UV(獨立訪客)沒有變,因為2次都是你進入了本站);
UV(unique visitor,是指通過網際網路通路、浏覽這個網頁的自然人,網站獨立訪客);
注:piwik.org(做統計分析,可定制、可開發、可架構;piwik is the leading open-source analytics platform that gives youmore than just powerful analytics:free open-source software;100% data ownership;user privacy protection;user-centric insights;customisable andextensible)
網絡監控:
監控寶(http://www.jiankongbao.com/);
smokeping(rrdtool作者寫的,支援分布式,是一款用于網絡性能監測的監控軟體,通過它可以在自己公司IDC的網絡狀況,如延時,丢包率,是否BGP多線等,通過rrdtool制圖方式,圖形化地展示網絡的時延情況,進而能夠清楚的判斷出網絡的即時通信情況)
應用監控(httpd、nginx、memcached、redis):
httpd狀态監控:
[root@client ~]# rpm -qa httpd
httpd-2.2.15-54.el6.centos.x86_64
[root@client ~]# vim /etc/httpd/conf/httpd.conf
LoadModule status_module modules/mod_status.so
LoadModule info_module modules/mod_info.so
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.96.20.89
</Location>
<Location /server-info>
SetHandler server-info
測試:http://10.96.20.118/server-status
<a href="http://s4.51cto.com/wyfs02/M00/8C/34/wKioL1hlt0CAnKnyAAEFywXBUj0182.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/8C/37/wKiom1hlt0zwbDvsAAB0sXkGl_s894.jpg" target="_blank"></a>
nginx狀态監控:
[root@server1 ~]# vim /etc/nginx/nginx.conf
http {
……
server {
location /nginx-status {
stub_status on;
access_log off;
allow 10.96.20.89;
deny all;
}
}
測試:http://10.96.20.113/nginx-status
<a href="http://s5.51cto.com/wyfs02/M01/8C/37/wKiom1hlt6rzso9eAAA_3lCOEQA703.jpg" target="_blank"></a>
active connections #(目前nginx正處理的活動連接配接數)
server accepts handled requests #(總共處理了$1個連接配接;成功建立$2次握手(證明中間沒有失敗的);總共處理了$3個請求)
reading #(nginx當讀取到client的header資訊數)
writing #(nginx目前傳回給client的header資訊數)
waiting #(開啟keepalive的情況下,這個值=active-(reading+writing),為nginx已經處理完正在等候下一次請求指令的駐留連接配接)
注:生産中要開長連接配接keppalive,否則連接配接數過多會有很多TIME_WAIT;nginx用作LB,upstream要作keepalive,預設不開啟;nginx與backend server要作keepalive;app server(php的pdo)要與MySQL server要作keepalive;php和redis之間要作keepalive;php與memcached之間要作keepalive,還要有壓縮功能;
redis狀态監控:
#redis-cli info [server|clients|memory|persistence|stats|replication|cpu|cluster|keyspace]
[root@server1 ~]# redis-cli info
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a54b0b3a63c1c32b
redis_mode:standalone
os:Linux 2.6.32-431.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:2806
run_id:e9ce8a9e21c8ba87b46fd1d75d8078f26745ca3e
tcp_port:6379
uptime_in_seconds:19
uptime_in_days:0
hz:10
lru_clock:14918416
config_file:/etc/redis.conf
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:879256
used_memory_human:858.65K
used_memory_rss:2441216
used_memory_peak:879256
used_memory_peak_human:858.65K
used_memory_lua:36864
mem_fragmentation_ratio:2.78
mem_allocator:jemalloc-3.6.0
# Persistence
loading:0
rdb_changes_since_last_save:15003
rdb_bgsave_in_progress:0
rdb_last_save_time:1474536189
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:1
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_current_size:519180
aof_base_size:519180
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# Stats
total_connections_received:1
total_commands_processed:0
instantaneous_ops_per_sec:0
total_net_input_bytes:14
total_net_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
# CPU
used_cpu_sys:0.03
used_cpu_user:0.00
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Cluster
cluster_enabled:0
# Keyspace
db0:keys=4,expires=0,avg_ttl=0
[root@server1 ~]# redis-cli info stats
total_connections_received:3
total_commands_processed:1
total_net_input_bytes:54
total_net_output_bytes:2142
memcached狀态監控:
[root@server1 ~]# memcached -m 64 -n 48 -f 1.1 -vv -u nobody -d
[root@server1 ~]# netstat -tnulp | grep:11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 9983/memcached
tcp 0 0 :::11211 :::* LISTEN 9983/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 9983/memcached
udp 0 0 :::11211 :::* 9983/memcached
[root@server1 ~]# telnet 10.96.20.113 11211
Trying 10.96.20.113...
<36 new auto-negotiating client connection
Connected to 10.96.20.113.
Escape character is '^]'.
stats
36: Client using the ascii protocol
<36 stats
STAT pid 9983
STAT uptime 212
STAT time 1474537274
STAT version 1.4.25
STAT libevent 2.0.22-stable
STAT pointer_size 64
STAT rusage_user 0.003999
STAT rusage_system 0.003999
STAT curr_connections 10
STAT total_connections 11
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 7
STAT bytes_written 0
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 0
END
^]
telnet> quit
Connection closed.
<36 connection closed.
[root@server1 ~]#
單機監控:
IPMI是智能型平台管理接口(Intelligent Platform Management Interface),是管理基于 Intel結構的企業系統中所使用的外圍裝置采用的一種工業标準,該标準由英特爾、惠普、NEC、美國戴爾電腦和SuperMicro等公司制定,使用者可以利用IPMI監視伺服器的實體健康特征,如溫度、電壓、風扇工作狀态、電源狀态等,而且更為重要的是IPMI是一個開放的免費标準;自1998年,IPMI論壇建立了IPMI标準以來,其已經得到了170 多家供應商的支援,這使得其逐漸成為了一個完整地包括伺服器和其他系統(如儲存設備、網絡和通信裝置)的硬體管理規範,目前該标準最新版本為IPMI 2.0,該版本在原有基礎上有了不少的改進,包括可以通過序列槽、Modem以及Lan等遠端環境管理伺服器系統(包括遠端開關機),以及在安全、VLAN 和刀片支援等方面的提高;IPMI針對大量監控、控制和自動回複伺服器的作業,提供了智能型的管理方式,此标準适用于不同的伺服器拓撲學,以及Windows、Linux、 Solaris、Mac或是混合型的作業系統,此外,由于IPMI可在不同的屬性值下運作,即使伺服器本身的運作不正常,或是由于任何原因而無法提供服務,IPMI仍可正常運作;
[root@test1 ~]# yum -y install OpenIPMI
根據服務類型确定監控名額;确定性能基準線;
cpu、memory、io(disk io;network io):
cpu:
cpu scheduler;
cs(context switch,cs的數目直接關系到cpu的使用率,如果cpu使用率保持在一定的均衡狀态,大量的cs是正常的);
run queues運作隊列(每個processor運作隊列不超過過1-3個線程,一個雙處理器runqueues不要超過6個線程);
cpu utilization(如果一個cpu被充分使用,使用率分類之間均衡的比例應該是:65%-70%user space、30%-35%kernel space、0%-5%idle time);
注:GSLB ,Global Server Load Balance,全局負載均衡,作用:實作在廣域網(包括網際網路)上不同地域的伺服器間的流量調配,保證使用最佳的伺服器服務離自己最近的客戶,進而確定通路品質;分類(基于DNS實作、基于重定向實作、基于路由協定實作);特點(能通過判斷伺服器的負載,包括CPU占用、帶寬占用等資料,決定伺服器的可用性,同時能判斷使用者(通路者)與伺服器間的鍊路狀況,選擇鍊路狀況最好的伺服器,是以GSLB是對伺服器和鍊路進行綜合判斷來決定由哪個地點的伺服器來提供服務,實作異地伺服器群服務品質的保證;使用範圍(有有多個站點的系統,最常見的是在CDN系統中作為核心的流量排程系統);
電商架構:
browser(browser對單個域名的内容下載下傳是有限制的,用多域名解決;browser有三種緩存協商方法:最後修改時間If-Modified-Since和Last-Modified、etag、過期時間;優化browser緩存;減少http請求數(合并css、合并js、圖檔用背景偏移技術、前端用懶加載(yahoo的懶加載12條軍規)));
CDN(動态域名解析,智能DNS,反向代理緩存squid|varnish|GSLB);
兩LVS間高可用,其後用三個haproxy;
LB(元件分離,如static.example.com、pic.example.com、js.example.com;job用于通路後端動态内容生成靜态頁面;nginx(openfile、sendfile、keepalive、gzip),nginx+tomcat|php(連接配接頻率;lua+xss+sql注入+ua限制+頻率限制));
靜态頁面主備server間用rsync同步;
共享存儲(NFS|GlusterFS|MooseFS);
内部LB(SOA;user、price、運費、購物車、規則);
ELK搜尋;
JS(智能推薦,js+hadoop+mapreduce+mahout+MySQL);
mail(觸發式郵件、智能營銷類郵件);
SMS(觸發類、營銷類;億美軟通);
分布式緩存(memcached|redis);
MQ(rabbitMQ|ActiveMQ);
DAL+MySQL|MongoDB|hadoop;
[root@test1 ~]# which ethtool
/sbin/ethtool
[root@test1 ~]# ethtool eth0
Settings for eth0:
Supportedports: [ TP ]
Supportedlink modes: 10baseT/Half 10baseT/Full
100baseT/Half100baseT/Full
1000baseT/Full
Supportedpause frame use: No
Supportsauto-negotiation: Yes
Advertisedlink modes: 10baseT/Half 10baseT/Full
Advertisedpause frame use: No
Advertisedauto-negotiation: Yes
Speed:1000Mb/s
Duplex:Full
Port:Twisted Pair
PHYAD:0
Transceiver:internal
Auto-negotiation:on
MDI-X:Unknown
SupportsWake-on: d
Wake-on:d
Currentmessage level: 0x00000007 (7)
drv probe link
Linkdetected: yes
[root@test1 ~]# yum -y install iftop #(display bandwidthusage on an interface by host,檢視網絡流量,在client與server之間互動的流量)
[root@test1 ~]# which iftop
/usr/sbin/iftop
[root@test1 ~]# iftop -n
tcp狀态11種(重點LISTEN、ESTABLISHED、TIME_WAIT、CLOSE_WAIT):
[root@test1 ~]# netstat-ant | awk '/^tcp/{STATE[$NF]++}END{for (KEY in STATE) print KEY,STATE[KEY]}'
ESTABLISHED 5
LISTEN 16
[root@test1 ~]# which ss #(another utility toinvestigate sockets)
/usr/sbin/ss
[root@test1 ~]# ss -ant | awk 'NR>1{STATE[$1]++}END{for (KEY in STATE) print KEY,STATE[KEY]}'
ESTAB 5
nmon,幫助在一個螢幕上顯示所有重要的性能優化資訊,并動态地對其進行更新;分析 AIX 和 Linux 性能的免費工具,這個高效的工具可以工作于任何啞螢幕、telnet 會話、甚至撥号線路,另外它并不會消耗大量的 CPU 周期,通常低于百分之二,在更新的計算機上,其CPU使用率将低于百分之一;使用啞螢幕,在螢幕上對資料進行顯示,并且每隔兩秒鐘對其進行更新,然而,您可以很容易地将這個時間間隔更改為更長或更短的時間段,如果您拉伸視窗,并在X Windows、VNC、PuTTY 或類似的視窗中顯示這些資料,nmon 工具可以同時輸出大量的資訊;nmon 工具還可以将相同的資料捕獲到一個文本檔案,便于以後對報告進行分析和繪制圖形,輸出檔案采用電子表格的格式.csv;
http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
[root@test1 ~]# chmod 755 nmon16e_x86_rhel65
[root@test1 ~]#./nmon16e_x86_rhel65 --help
./nmon16e_x86_rhel65: invalid option -- '-'
Hint for nmon16e_x86_rhel65 version 16e
FullHelp Info : nmon16e_x86_rhel65 -h
On-screenStats: nmon16e_x86_rhel65
DataCollection: nmon16e_x86_rhel65 -f [-s <seconds>] [-c <count>][-t|-T]
CapacityPlan : nmon16e_x86_rhel65 -x
Interactive-Mode:
Readthe Welcome screen & at any time type: "h" for more help
Type"q" to exit nmon
For Data-Collect-Mode
-f Must be the first option on theline (switches off interactive mode)
Saves data to a CSV Spreadsheetformat .nmon file in then local directory
Note: -f sets a defaults -s300-c288 which you can then modify
FurtherData Collection Options:
-s<seconds> time between datasnapshots
-c<count> of snapshots beforeexiting
-t Includes Top Processes stats (-Talso collects command arguments)
-x Capacity Planning=15 min snapshotsfor 1 day. (nmon -ft -s 900 -c 96)
---- End of Hints
[root@test1 ~]# ./nmon16e_x86_rhel65
<a href="http://s4.51cto.com/wyfs02/M00/8C/34/wKioL1hlurjRe1R3AABz5KowsP4223.jpg" target="_blank"></a>
按m
<a href="http://s3.51cto.com/wyfs02/M01/8C/34/wKioL1hlusXSV-ZRAABNiNvoOBg445.jpg" target="_blank"></a>
[root@test1 ~]# yum -y install screen #(screen manager with VT100/ANSI terminal emulation)
具體使用(在編譯核心或執行腳本時,在需要很長時間的情況下,用來防止終端意外終止導緻核心編譯中斷或執行的腳本自動停止):
[root@test1 ~]# screen #(會自動跳至一個全新的視窗)
[root@test1 ~]# ./test.sh #(在新生成的視窗中執行腳本或編譯核心,然後直接ctrl+a,d退出到上一個視窗裡)
[root@test1 ~]# screen-list #(使用-list或-ls,檢視目前開了幾個視窗;若要恢複某個使用-r)
There is a screen on:
30483pxs-0.test1 (Detached)
1 Socket in /var/run/screen/S-root.
[root@test1 ~]# screen -r 22862 #(恢複22862,剛執行腳本的那個視窗)
[root@test1 ~]# pstree #(查出目前在哪個bash下,若不用哪一個bash直接ctrl+d)
├─screen───bash───pstree
├─sshd───sshd───bash───screen
#top
#vmstat 1 10
#mpstat 1 10
[root@test1 ~]# free -m
total used free shared buffers cached
Mem: 474 437 37 0 12 63
-/+ buffers/cache: 361 113
Swap: 1983 344 1639
[root@test1 ~]# sync
[root@test1 ~]# echo 1 > /proc/sys/vm/drop_caches #(to free pagecache)
[root@test1 ~]# echo 2 > /proc/sys/vm/drop_caches #(to free dentries and inodes)
[root@test1 ~]# echo 3 > /proc/sys/vm/drop_caches #(to free pagecache、dentries、inodes)
Mem: 474 368 105 0 0 11
-/+ buffers/cache: 357 117
Swap: 1983 344 1639
[root@test1 ~]# yum -y install iotop
[root@test1 ~]# iotop
Total DISK READ: 0.00 B/s | Total DISKWRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2560be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % python2.6~-master-d
1be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
zabbix安裝:
test1(192.168.23.129,server-sideand agent-side);
test2(192.168.23.130,agent-side);
[root@test1 ~]# uname -rm
2.6.32-431.el6.x86_64 x86_64
[root@test1 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5(Santiago)
[root@test1 ~]# ls /etc/yum.repos.d #(準備163的yum源)
CentOS6-Base-163.repo epel-testing.repo
epel-release-6-8.noarch.rpm rhel-source.repo.backup_20161102
epel.repo
test1:
[root@test1 ~]# yum -y install zabbix22-server zabbix22-web zabbix22-web-mysql zabbix22-dbfiles-mysql zabbix22-agent mysql-server mysql php php-devel php-mysql
[root@test1 ~]# service mysqld start
[root@test1 ~]# mysql
mysql> CREATE DATABASE zabbix CHARACTER SET utf-8; #(字元集要是utf8)
mysql> SHOW CREATE DATABASE zabbix;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
| zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 */ |
1 row in set (0.00 sec)
mysql> GRANT ALL ON zabbix.* TO 'zabbix'@'192.168.23.129' IDENTIFIED BY 'zabbix';
Query OK, 0 rows affected (0.00 sec)
[root@test1 ~]# cd /usr/share/zabbix-mysql/; ls #(schema.sql各種表結構;images.sql基本資料;data.sql自帶模闆;這三個DB腳本導入時有先後順序,先schema.sql再images.sql最後data.sql)
data.sql images.sql schema.sql upgrades
[root@test1 zabbix-mysql]# mysql -u root -p zabbix < schema.sql #(預設密碼為空)
Enter password:
[root@test1 zabbix-mysql]# mysql -u root -p zabbix < images.sql
[root@test1 zabbix-mysql]# mysql -u root -p zabbix < data.sql
[root@test1 zabbix-mysql]# mysql -e 'USE zabbix;SHOW TABLES;'
[root@test1 zabbix-mysql]# vim /etc/zabbix_server.conf
DBHost=192.168.23.129
DBPassword=zabbix
[root@test1 zabbix-mysql]# vim /etc/zabbix_agentd.conf #(更改/etc/zabbix_agentd.conf,/etc/zabbix_agent.conf是模闆檔案)
Server=192.168.23.129
[root@test1 zabbix-mysql]# grep '^[a-Z]' /etc/zabbix_server.conf
LogFile=/var/log/zabbixsrv/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbixsrv/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBSocket=/var/lib/mysql/mysql.sock
AlertScriptsPath=/var/lib/zabbixsrv/alertscripts
ExternalScripts=/var/lib/zabbixsrv/externalscripts
TmpDir=/var/lib/zabbixsrv/tmp
[root@test1 zabbix-mysql]# grep '^[a-Z]' /etc/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
ServerActive=127.0.0.1
Hostname=Zabbix server
[root@test1 zabbix-mysql]# service zabbix-server start
Starting Zabbix server: [ OK ]
[root@test1 zabbix-mysql]# service zabbix-agentd start
Starting Zabbix agent: [ OK ]
[root@test1 zabbix-mysql]# ps aux | grep zabbix
[root@test1 zabbix-mysql]# netstat -tnulp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 24172/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 24202/zabbix_server
tcp 0 0 :::10050 :::* LISTEN 24172/zabbix_agentd
tcp 0 0 :::10051 :::* LISTEN 24202/zabbix_server
[root@test1 zabbix-mysql]# ls /etc/httpd/conf.d #(檢視有zabbix.conf)
mod_dnssd.conf php.conf README welcome.conf zabbix.conf
[root@test1 zabbix-mysql]# service httpd start
Starting httpd: httpd: Could not reliablydetermine the server's fully qualified domain name, using 192.168.23.129 forServerName
[ OK ]
test2:
[root@test2 ~]# yum -y install zabbix22-agent
[root@test2 ~]# vim /etc/zabbix_agentd.conf
[root@test2 ~]# service zabbix-agentd start
[root@test2 ~]# netstat -tnulp | grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 95294/zabbix_agentd
tcp 0 0 :::10050 :::* LISTEN 95294/zabbix_agentd
通路http://192.168.23.129/zabbix
<a href="http://s3.51cto.com/wyfs02/M01/8C/34/wKioL1hlvvXTfrSrAABbZm96xfw024.jpg" target="_blank"></a>
點Next
<a href="http://s5.51cto.com/wyfs02/M02/8C/38/wKiom1hlvwjyFOONAACKoC3y9z0450.jpg" target="_blank"></a>
[root@test1 zabbix-mysql]# vim /etc/php.ini #(此處,改跳紅的部分;PRC,people'srepublic of china)
[PHP]
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
[Date]
date.timezone = RPC
[root@test1 zabbix-mysql]# service httpd restart
Stopping httpd: [ OK ]
<a href="http://s2.51cto.com/wyfs02/M02/8C/34/wKioL1hlvxXSUQTNAACD1MYDsok363.jpg" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M01/8C/34/wKioL1hlvyCQbYERAAB2f1VyynU089.jpg" target="_blank"></a>
Database host(192.168.23.129)
Database port(0表示預設,即3306)
User(zabbix)
Password(zabbix)
點Test connection-->Next
<a href="http://s3.51cto.com/wyfs02/M02/8C/38/wKiom1hlvzDjckDnAABlw9c1K9A915.jpg" target="_blank"></a>
Host(192.168.23.129)
Port(10051)
Name(u)
<a href="http://s5.51cto.com/wyfs02/M01/8C/34/wKioL1hlv0HzMtGbAAB74c0AzRk569.jpg" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M00/8C/38/wKiom1hlv1PxVnZRAABYqKkVLRU787.jpg" target="_blank"></a>
點Finish
[root@test1 zabbix-mysql]# ll /etc/zabbix/web/zabbix.conf.php
-rw-r--r--. 1 apache apache 427 Nov 5 20:42 /etc/zabbix/web/zabbix.conf.php
<a href="http://s2.51cto.com/wyfs02/M02/8C/34/wKioL1hlv2PTmmBGAAA_r2nfV2c889.jpg" target="_blank"></a>
Username(Admin)
若切至中文有亂碼,解決辦法:
1、檢視/etc/httpd/conf.d/zabbix.conf得知zabbix網頁目錄為/usr/share/zabbix/;
2、檢視/usr/share/zabbix/include/defines.inc.php得知字型目錄位置:
define('ZBX_FONTPATH', '/usr/share/fonts/dejavu');// where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name;
3、将win中的任意字型(控制台-->字型,例如仿宋或華文雅黑)複制到/usr/share/fonts/dejavu/下并覆寫改名為DejaVuSans.ttf;
<a href="http://s2.51cto.com/wyfs02/M00/8C/3B/wKiom1hl4zmBFU3XAAERyZqnvK8180.jpg" target="_blank"></a>
關閉guest使用者,改Admin密碼:
Administration-->Users-->選Guests,Disabled selected,Go(1),确定
Administration-->Users-->點Members列的Admin(Zabbix administrators),點Change password
注:下圖,監控中、資産記錄、報表、組态、管理;
<a href="http://s3.51cto.com/wyfs02/M00/8C/3B/wKiom1hl42KChZcdAAAmecwX1wk554.jpg" target="_blank"></a>
Administration僅super admin才能看到,标簽有:
一般;
分布管理;
認證(internal、ldap、http);
使用者(重要,權限是根據使用者組設的,生産中不同的部門為不同的使用者組);
示警媒介類型(預設三種email、jabber、sms,若用email本地要啟動相關的服務還要認證,通常使用自定義腳本);
腳本;
審計(誰幹了什麼事);
隊列;
警報;
安裝;
右上角Profile,可改language、theme
<a href="http://s5.51cto.com/wyfs02/M00/8C/38/wKioL1hl44XxQUAuAACFyRzhYko349.jpg" target="_blank"></a>
注:不允許監控項中的觸發器是關閉狀态,可先設為“維護模式”
<a href="http://s1.51cto.com/wyfs02/M00/8C/38/wKioL1hl46bRgYeWAAAgw6yeOak554.jpg" target="_blank"></a>
組态中,标簽有:
主機群組;
模闆;
主機;
維修;
動作;
篩選;
簡報片展示;
拓撲圖;
搜尋;
IT服務;
Configuration-->Hosts中,若Availability為紅色的Z,點開其Name将IP改為192.168.23.129
添加主機:
Configuration-->Hosts,Createhost-->
Host name(test2)
Visable name(test2)
New group(demo)
IP address(192.168.23.130)
Port(10050)
Status(Monitored)
<a href="http://s1.51cto.com/wyfs02/M01/8C/3B/wKiom1hl48KyGeWvAABBqhftEH8754.jpg" target="_blank"></a>
點Host标簽旁的Templates,在Link new templates中搜尋linux,選Template OS Linux,Add-->Save
Macros(宏,即變量,若用中文版為巨集)
Host inventory(主機資産記錄,手動、自動)
Monitoring中,标簽有:
DashBoard儀表闆;
總覽;
web;
最近資料;
觸發器(事件管理、故障管理、問題管理;
事件;
圖形(Group、Host、Graph;若字元集有問題,将win的微軟雅黑copy至zabbix server);
篩選(常用,點右上角“+”,在儀表闆中檢視“常用的篩選”,在“組态”中選“篩選配置”);
探索;
<a href="http://s1.51cto.com/wyfs02/M02/8C/3B/wKiom1hl5FyTfzK-AAAkJPNrZJY472.jpg" target="_blank"></a>
Monitoring-->Dashboard-->PERSONALDASHBOARD中
system status
host status
web monitoring
last 20 issues(最近20個議題,最近發生的事件)
<a href="http://s2.51cto.com/wyfs02/M02/8C/38/wKioL1hl5G7yXqHPAADhoghO4Ic038.jpg" target="_blank"></a>
添加報警:
注:報警針對使用者和使用者組;生産環境最好有短信平台,或晚上用SMS,白天email;
Administration-->Users-->選Zabbixadministrators旁的Users-->右上角Create User,User标簽(Alias(demo),Name(demo),Groups(Zabbix administrators),Password(demo)兩次,勾選Auto-login)-->Media标簽,Add,Type(Email),Send to(*@163.com),Add-->Permissions标簽(User-type選Zabbix Super Admin)-->Save;
<a href="http://s2.51cto.com/wyfs02/M00/8C/3B/wKiom1hl5IHDix3wAACCezBQpLI555.jpg" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M00/8C/38/wKioL1hl5JDS_DeiAACcYuB5wow783.jpg" target="_blank"></a>
<a href="http://s1.51cto.com/wyfs02/M01/8C/3B/wKiom1hl5J7hNVXsAABwa4XkAQ8931.jpg" target="_blank"></a>
右上角logout,用demo登入;
注:Configuration-->Templates中的Applications應用集是監控項的集合,Item項目是監控的最小機關,有的Templates有Triggers有的沒
注:在test2上設定檢測腳本,因為test1的zabbix-server要用到DB;
Configuration-->Hosts,選test2中的Items-->點右上角Createitem,如下圖建立,Name(mysql_check),Key(mysql_alive),update interval(in sec)(60),new flexible interval(300)-->Add,new application(MySQL),Description(MySQL Check)-->Save
<a href="http://s5.51cto.com/wyfs02/M02/8C/3B/wKiom1hl5KqSRF1zAACvMY54Gxw463.jpg" target="_blank"></a>
[root@test2 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql_alive,mysqladminping | grep -c alive
[root@test2 ~]# service zabbix-agentdrestart
Shutting down Zabbix agent: [ OK ]
Configuration-->Hosts,選test2的triggers,右上角Createtrigger-->Name(MySQL down),Expression(點Add,如下圖,點Select,test2的mysql_check,Function(選Last (most recent) T value is NOT N,N(1))-->Insert-->Severity(disaster)
<a href="http://s5.51cto.com/wyfs02/M02/8C/38/wKioL1hl5U-xATTrAABSXnlC8aY706.jpg" target="_blank"></a>
點Trigger标簽旁邊的Dependencies-->Add,選Zabbix agent on {HOST.NAME} is unreachable for 5minutes-->Save
<a href="http://s4.51cto.com/wyfs02/M02/8C/38/wKioL1hl5X3zqWdOAAA5IhwTfTw753.jpg" target="_blank"></a>
Configuration-->Hosts,選test2的graph,右上角Creategraph,Name(mysql status),Graph type(Normal),Items-->Add,選test2的mysql_check,點Graph标簽旁邊的Preview可預覽-->Save
<a href="http://s1.51cto.com/wyfs02/M00/8C/3B/wKiom1hl5aqg8oUVAAA6714-qKQ269.jpg" target="_blank"></a>
Configuration-->Actions,将Reportproblems to Zabbix administrators的status改為Enabled-->點Report problems to Zabbix administrators,Action标簽中的項(要精簡,一條短信是70個字元),Conditions,Operations(Operation details,from 1 to 3,第1次到第3次報警每次發送通知給指定的人,Operation type選Send message)-->先點Update-->再Save
<a href="http://s4.51cto.com/wyfs02/M00/8C/3B/wKiom1hl5cXQVj3wAAC0QPzPaVE668.jpg" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M00/8C/38/wKioL1hl5dfiZ7qJAABgdQpqyeU743.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/8C/38/wKioL1hl5eSR3kSRAABjMqQ2WGE456.jpg" target="_blank"></a>
[root@test1 ~]# vim /etc/zabbix_server.conf
[root@test1 ~]# cd /var/lib/zabbixsrv/alertscripts/ #(此目錄下的腳本必須支援三個參數,媒體參數(email or SMS),title,content)
[root@test1 alertscripts]# service postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
[root@test1 alertscripts]# vim send_mail.sh
#!/bin/bash
#
MAIL_TITLE=$2
MAIL_CON=$3
echo "$MAIL_CON" | /bin/mail -s "$MAIL_TITLE" $1
echo "$1 $2 $3" >> /tmp/alert
[root@test1 alertscripts]# chmod 755 send_mail.sh
Administration-->Media types-->Create media type,Name(send_mail),Type(Script),Script name(會自動生成),勾選Enabled-->Save
<a href="http://s3.51cto.com/wyfs02/M01/8C/3B/wKiom1hl5iKACvLPAAA7so4vjg4676.jpg" target="_blank"></a>
Configuration-->Actions-->點Report problems to Zabbix administrators-->選Operations,Edit,Operation details中,User group為zabbix administrator,Send only to選send_mail-->Update-->Save
<a href="http://s1.51cto.com/wyfs02/M01/8C/3B/wKiom1hl5yawJm-LAABh7K6Kr6o004.jpg" target="_blank"></a>
Administration-->Users-->demo-->Media-->Add,Type(send_mail),Send to([email protected])-->Add-->Save
<a href="http://s1.51cto.com/wyfs02/M01/8C/38/wKioL1hl5sSDTPD3AACZvGshKx0615.jpg" target="_blank"></a>
Administration-->Users-->Admin-->Media-->Add,Type(send_mail),Send to(root@localhost)-->Add-->Save
<a href="http://s3.51cto.com/wyfs02/M00/8C/3B/wKiom1hl5q3i2S8nAACbqJ1RPso896.jpg" target="_blank"></a>
設定報警聲音:
右上角Profile-->Messaging标簽,勾選Frontend messaging;
<a href="http://s4.51cto.com/wyfs02/M02/8C/38/wKioL1hl5pqClAe3AACRhRwzp38672.jpg" target="_blank"></a>
測試:
将test2的mysqld停掉,#service mysqld stop|start
在Monitoring-->Dashboard中檢視System status、Host status、Last 20issues中的Actions
[root@test1 ~]# less /var/log/zabbixsrv/zabbix_server.log
[root@test1 ~]# tail -f /var/log/maillog
本文轉自 chaijowin 51CTO部落格,原文連結:http://blog.51cto.com/jowin/1887630,如需轉載請自行聯系原作者