Linux Zabbix監控
zabbix監控系統:
zabbix是基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。zabbix能監視各種網絡參數,保證服務器系統的安全運營;并提供靈活的通知機制以讓系統管理員快速定位解決存在的各種問題。zabbix有兩部分組成,zabbix server與可選組件zabbix agent。zabbix server可以通過snmp、zabbix agent、ping端口監視等方法提供對遠程主機服務器網絡狀態的監視,數據收集等功能,它可以運行在Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OS X等平臺上。
監控系統:硬件監控、軟件監控、業務監控
采樣:sensor
存儲:
數據:歷史數據、趨勢數據;
展示:
報警:
被監控對象:主機、交換機、路由器、UPS、…
采樣:周期性地獲取某個關注指標相關的數據;
監控系統采集數據通道:
ssh/telnet
agent:較為理想的監控系統采集數據通道;
master/agent
IPMI:
SNMP:Simple Network Management Protocol(簡單網絡管理協議)
v1, v2c (community, public),v3
JMX:Java Management eXtension
JVM: Java Virtual Machine
存儲系統:
歷史數據:每次采樣的結果,保存時長較短;
趨勢數據:聚合數據,保存時長較長周期內的數據;
存儲系統:
關系型數據庫:MySQL, PGSQL, Oracle, …
rrd:RoundRobin Database (輪循數據庫)時間序列數據庫
NoSQL:redis/mongo
時間序列數據庫
報警:
郵件、短信、微信
腳本
展示:
WebGUI
GUI
APP
開源監控項目:
cacti, nagios兩者結合使用;
zabbix:采樣、存儲、報警、展示都可以;
ganglia
zabbix版本:
Version:
LTS:Long Time Support (長期維護版)
zabbix 3.0版本(長期維護版)
zabbix特性:
數據采樣:snmp, agent, ipmi, jmx;
注:如果監控的是主機我們應優先采用agent數據采樣;
報警:
升級:步進
數據存儲:
mysql/pgsql:關系型數據庫;
展示:php程序
實時繪圖:graph, screen, slide show, map
支持監控模板
網絡自動發現
分布式監控
API:支持二次開發
zabbix程序組件:
zabbix_server:服務端守護進程;
zabbix_agentd:agent守護進程;
zabbix_proxy:代理服務器,可選;
zabbix_database:存儲系統,MySQL/PGSQL
zabbix_web: Web GUI
zabbix_get:命令行工具,測試向agent端發起數據采集請求;
zabbix_sender:命令行,測試向server端發送數據;
zabbix_java_gateway:java網關;
zabbix邏輯組件:
主機組(host groups)
主機(hosts)
應用(applications)
監控項(items)
觸發器(triggers)
事件(events)
動作(actions):條件(conditions)和操作(operations)
媒介(media):發送通知的通道;
通知(notifications)
遠程命令(remote command)
報警升級(escalation)
模板(template)
圖形(graph)
屏幕(screens)
幻燈(slide show)
zabbix 3.x版本:
zabbix Server端安裝的軟件:zabbix-server-mysql、zabbix-get 、mysql
Web Gui:zabbix-web, zabbix-web-mysql
zabbix被監控主機端安裝的軟件::zabbix-agent, zabbix-sender
Proxy:zabbix_proxy
安裝zabbix監控服務端:
實驗環境:
zabbix-server服務器IP地址:192.168.3.101
安裝zabbix3.0版本;
在zabbix server端安裝mariadb數據庫,安裝httpd、php及相關的php組件,安裝zabbix-server-mysql,安裝zabbix-agent;
注意:如果是在生產環境中,建議將zabbix-sever、mariadb、webGUI都各自按在不同的主機上。
1)安裝zabbix database:
2)配置數據庫服務:
3)啟動mariadb數據庫并設置開機自啟動:
4)設置mariadb數據庫的安全配置:
5)使用root用戶輸入密碼進入數據庫并創建zabbix數據庫和授權用戶zbxuser可以遠程連接訪問zabbix數據庫中的所有內容:
創建數據庫zabbix數據庫并使用utf8字符集:
授權遠程用戶zbxuser用戶可以通過192.168.3.0網絡訪問zabbix數據中的所有表:
6)安裝zabbix-server-mysql和zabbix-get:
注意:安裝zabbix-server-mysql時需要依賴到epel源中的程序包如下:
iksemel-1.4-6.el7.x86_64.rpm
fping-3.10-4.el7.x86_64.rpm
zabbix-server-mysql程序環境:
配置文件:/etc/zabbix/zabbix_server.conf
Unit File:zabbix-server.service
7)導入數據庫腳本,以生成數據庫環境:
zabbix的數據庫腳本文件:
/usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
解壓 zabbix的數據庫腳本文件到當前目錄下:
導入數據庫腳本,以生成數據庫環境:
注意:zabbix 2.2版本的sql腳本有三個,需要依次導入;
zabbix server主配置文件:
通用配置相關的參數:
ListenPort=10051 zabbix默認監聽的端口;
SourceIP= 連接agent客戶端使用的源ip;
LogType=file 使用的日志類型;
LogFile=/var/log/zabbix/zabbix_server.log zabbix日志默認存放的位置;
LogFileSize=0 是否啟動日志滾動;0為禁用;
DebugLevel=3 記錄日志的級別;
DBHost=localhost 數據庫主機名;
DBName=zabbix 數據庫名;
DBUser=zbxuser 可登錄數據庫使用的用戶名;
DBPassword=zbxpass 登錄數據庫使用的密碼;
DBPort=3306 數據庫的端口
DBSocket=/tmp/mysql.sock
8)配置zabbix-server-mysql的主配置文件:
DBHost=192.168.3.101
DBName=zabbix
DBUser=zbxuser
DBPassword=redhat
啟動zabbix-server服務并開機自啟動:
注意:如果安裝的系統是centos系統版本是7.1的默認trousers包的的版本是0.3.11的版本過低啟動zabbix-server時會報錯,需要安裝trousers 0.3.12以上的版本。
例如:trousers-0.3.13-1.el7.x86_64.rpm
zabbix webGUI配置:
(1)解決依賴關系
~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
(2) 安裝web GUI
~]# yum install zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
(3)配置php時區參數
(a) php.ini
(b) /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
(4)啟動web服務
~]# systemctl start httpd.service
(5)訪問web
http://HOST/zabbix
安裝后生成的配置文件:/etc/zabbix/web/zabbix.conf.php
登錄的管理員:
admin/zabbix
(6)菜單:
Monitoring:查看監控
Inventory :主機清單
Reports :監控報告
Configuration :配置監控項
Administration :管理zabbix監控
9)安裝http php相關的程序包及組件:
10)安裝webGUI
11)編輯/etc/httpd/conf.d/zabbix.conf
12)啟動httpd服務并開機自啟動:
13)使用web訪問zabbix:
配置zabbix數據庫連接:
zabbix agent安裝配置:
(1)安裝
~]# yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm
程序環境:
配置文件:/etc/zabbix/zabbix_agentd.conf
Unit File:zabbix-agent.service
(2)配置
# grep -i "^####" zabbix_agentd.conf
############ GENERAL PARAMETERS #################
##### Passive checks related 被動監控相關的配置
##### Active checks related 主動監控相關的配置
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS ####### 用戶自定義的監控參數,UserParamter
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
##### Passive checks related
Server=IP1,IP2,… 監控端主機ip地址;
ListenPort=10050 默認監聽端口;
ListenIP=0.0.0.0 表示監聽本機的所有地址;
StartAgents=3
##### Active checks related
ServerActive=IP1,IP2,… 監控端主機ip地址;
Hostname=HOST-ID 指明zabbix-server的主機名;
(3)啟動服務
# systemctl start zabbix-agent.service
在webGUI配置監控項:
快速配置一個監控項:
hostgroups –>host –> applications –> item –> triggers (events事件) –> action (condtions條件, operations操作)–>發送通知—>operations:remote command(執行遠程命令)–>alert(報警)—–>graph—->screen—->slideshow
主機組—》主機—》應用—-》監控向—-》觸發器—》事件—-》動作—》條件—-》操作—-》通知—-》執行遠程命令—》報警升級—-》圖表—–》屏幕——》幻燈
item –> simple graph
items –> graph
grapps –> screen
screens –> slide show
item:item key
zabbix agent安裝配置實例:
實驗環境:
在192.168.3.8被監控主機上安裝zabbix-agent和zabbix-sender:
把192.168.3.101主機上的zabbix-agent包和zabbix-sender包復制到192.168.3.8主機的/root目錄下。
1)在192.168.3.8被監控主機上安裝zabbix-agent和zabbix-sender:
2)配置zabbix-agent主配置文件:
##### Passive checks related
### Option: Server
Server=192.168.3.101
### Option: ServerActive
ServerActive=192.168.3.101
### Option: Hostname
Hostname=centos7.1
3)啟動zabbix-agent服務并開機自啟動:
先測試一下在zabbix-server端使用zabbix_get命令手動獲取一下system.cpu.switches數據:
4)在webGUI中配置監控CPU 上下文切換次序的監控項:
(3)Monitoring——》Latest data——-》SelectHost—–》Filter—–》Graph(圖表)
Graph(圖表)示例:
zabbix監控配置:
host group –> host –> application –> item (simple graph) –> trigger (event)
action(condition, operation)
graph –> screen –> slide show
item:item key
item的值有兩類:
zabbix 內建:
zabbix agent:被動模式下專用的key
zabbix agent(active):主動模式下專用的key
用戶自定義(UserParamter)
采集到的數據類型:
數值:
整數
浮點數
字符型:
string:字符串
text :文本
log :日志
存儲的值:
As is:不對數據做任何處理,存儲采集到的數據本身;
Delta(simple change):本次采樣的數據減去前一次采樣的數據;
Delta(speed per second):本次采樣的數據減去前一次采樣的數據,再除以經過的時長;速率數據;
使用zabbix_get命令執行用戶自定義key參數:收集被監控主機上網卡接受和發送字節大?。?/span>
在zabbix webGUI中配置用戶自定義key參數的items:
觸發器:
邏輯表達式,閾值,通常用于定義數據的不合理區間; 條件滿足時,TRUE,表示PROBLEM狀態,反之,則OK狀態;
OK –> PROBLEM
Recovery:PROBLEM –> OK
{<server>:<item>.<fuction>(<parameters>)}<operator><constant>
觸發器間可存在依賴關系;
在zabbix webGUI中配置觸發器:
點擊Hosts—-》點擊要配置的主機名中的Triggers——》點擊右上角的Createtrigger—-》到達如下界面:
使用模板選項生成觸發器邏輯表達式:
使用模板選項生成觸發器邏輯表達式結果:
現在我們點擊Monitoring—–》Latest data——》inboud packets(item)—–》graph會看到如下圖表:
現在我們點擊Monitoring—–》Events:可以查看到事件從 OK—》PROBLEM—》OK,如下圖:
媒介類型(Media Types):
報警信息的傳遞方式;
類型:
Email:郵件,需要定義發件人郵箱地址和SMTP服務器;
Script:自定義腳本,此腳本有發送信息至相關用戶的功能;
SMS、Jabber、Ez Texting
接收通知信息者為zabbix的用戶:需要為用戶定義對應各種媒介通道的接收方式;
localmail:
script:
Action動作:
conditions:觸發此動作的條件,一般通過“事件”觸發;
operations:觸發條件滿足時要采取的動作;
send message:發送信息
功能:發報警信息給關聯的用戶;
(1)可用傳遞方式:
(a) Email
(b) script:報警腳本
位于server主機的AlertScriptsPath參數定義的目錄下,默認為/usr/lib/zabbix/alertscripts;
zabbix調用腳本時會向其傳遞參數;3.0之前的版本通過
$1:消息接收人;
$2:消息主題;
$3:消息主體;
3.x之后的版本,此三個參數默認不再傳遞,需自行定義; 可以使用宏來模擬此前的行為:
{ALTET.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注意:每個信息接收人相對于此媒介來說,得配置相應的接收地址;
發信息的信道:
郵件
腳本
remote command:執行遠程命令
功能:
在agent所在的主機上運行用戶指定的命令或腳本來嘗試著恢復故障;例如:
重啟服務;
任何由用戶自定義的腳本;
在zabbix webGUI上配置監控nginx服務及故障時采取的action(條件、操作)
條件:net.tcp.listen[80] 監控nginx的80端口是否正常;
操作:1、重啟服務 2、發送郵件給管理員;
1)點擊Hosts——》點擊要配置的主機名中的items——-》點擊Create item—–》如下圖:
2)配置web server item(監控項)的trigger觸發器:
點擊Hosts——》點擊要配置的主機名中的trigger—–》Createtrigger如下圖:
3)配置郵件報警通知媒介類型和收件人地址:
點擊Administration—》點擊Media types(媒介類型)—-》點擊右上角Create Media types—》
配置郵件收件人地址:
點擊Administration—》點擊Users—–》點擊Media—-點擊Add如下圖 :
4)點擊Actions—–》點擊Create action如下圖:
配置Conditions(條件):
配置Operations(操作):基于ssh執行remote command:
配置Operations(操作):基于自定義腳本sudo執行remote command:
由于第二次操作使用了sudo權限,所以要在遠程被控主機上要給zabbix用戶授權執行systemctl命令的權限:
在監控主機上配置/etc/zabbix/zabbix_agentd.conf主配置文件允許遠程主機執行命令:
重新zabbix-agent.service服務:
配置Operations(操作):添加郵件通知報警服務:
到此action動作已經配置完成:
注:action名稱和trigger名稱不小心重名了。
測試action動作:
停止遠端被監控主機的nginx服務:
在上圖中時間我們可得知:nginx故障持續了5秒中就已經恢復了,也就是說在action第一步ssh遠程重啟就成功了。
定義郵件報警腳本:
點擊Administration—–》點擊Mediatype——-》點擊右上角的CreateMediatype如下圖:
配置郵件收件人地址:
點擊Administration—》點擊Users—–》點擊Media—-點擊Add如下圖 :
在名稱為web server down的actions中的Operations中添加腳本報警郵件:
已添加成功:
這時我們還需在 /usr/lib/zabbix/alertscripts/目錄下定義一個腳本文件:
給腳本加上執行權限:
現在需重啟zabbix-server服務,使其重新加載mailscript腳本文件:
測試sendmail.sh腳本文件是否能正常發送郵件:
(1)修改遠程被監控主機上的nginx的監聽端口為:8080
(2)重新啟動遠程被監控主機的nginx服務;
測試結果如下:
恢復故障后郵件:
配置Graphs圖表:
點擊Configuration——》Hosts——》點擊選擇要配置graphs的主機點擊Graphs—》點擊右上角的Create graph如下圖:
配置screen圖表:
依照上面的上面的方法多創建幾個graphs如下圖:
點擊Monitoring—-》點擊Screens—–》點擊創建Create screen如下圖:
點擊下圖中的Constructor:
點擊 Change添加圖表:
完成結果如下:
配置Slideshows圖表:
點擊Monitoring—》Screens—–》在右上角的screen下拉菜單中選擇Slideshows——》點擊Cteate slide show如下圖:
點擊slide show名稱,進行展示幻燈片:
圖表總結:
item——>graph
items—–>graph
graphs—–>screen
screens——->slide show
模板:
主機配置模板,可鏈接至主機,從而實現主機的快速監控配置;
模板可繼承;
在模板之上link其它模板即可;
從主機上刪除模板:
unlink:反鏈接
unlink and clear:反鏈接并清除數據;
模板可導出,也可以從指定文件導入;
創建主機監控templates模板:
點擊Configuration—–》點擊Templates—-》點擊右上角的Create template如下圖:
創建完成的templates模板:這時我們就可以在上面添加item、trigger、Graph、screen等;
在templates模板上創建item、trigger、Graph、screen和在zabbix webGUI上創建進本類似,只是在模板上不能添加hosts。
templates可以鏈接模板:
可以使一個模板聚合多個模板;
模板可以導出(Export)/導入(Import);
宏:MACRO
預設的文本替換模式;
宏級別:
全局宏:Administration –> General –> Macros
模板宏:Configuration –> Templates –> TEMPLATE –> Macros
主機宏:Configuration –> Hosts –> HOST –> Macros
宏類型:
內建:{MACRO_NAME} 內建宏不能使用$符;
自定義:{$MARCRO_NAME} 自定義宏必須使用$符;
自定義宏命名方式:大寫字母、數字和下劃線;
網絡發現hosts:
zabbix server掃描指定網絡范圍內的主機;
發現方式:
ip地址范圍:
可用服務探測(ftp, ssh, http, …)
zabbix_agentd的響應對某個key的請求;
snmp_agent響應;
一旦發現某主機,就會產生發現事件;
事件有8類:
Host, Service
Up/Down, Discovered/Lost
發現操作分兩步:
discover:發現
actions:
conditions:條件
operations:操作
可采取的動作:
send message, remote command
add/remove host
enable/disable host
add host to group
link template to host
在zabbix-server上配置網絡發現:
點擊Configuration—-》點擊Discovery—-》點擊右上角的create discovery rule如下圖:
定義actions:
點擊Configuration—-》點擊Actions—–》在Event source 下拉菜單中選擇Discovy——》點擊Create ation如下圖:
點擊Monitoring—-》點擊Events——在右上角Source下拉菜單中選擇Discovery如下圖:
點擊Configuration—-》點擊Hosts如下圖:
zabbix-agent端設置自定義key:
自定義key:在zabbix agent端的配置文件中由用戶通過UserParameter指令定義用戶自定義參數;
UserParamter=<key>,<command>
UserParamter=<key[*]>,<command> $1…$9
注意:類似awk命令自帶$1…$9,需要改寫為$$1, $$2, …$$9;
在zabbix-agent端的主配置文件中:
UnsafeUserParameter=0|1 等于0表示禁止使用不安全的符號,1表示可以使用不安全的符號;
不安全符號: \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
UserParameter=<key> 定義key值
示例(1):
在zabbix-agent端設置自定義的用戶參數key:去獲取內存的可用空間;
在zabbix-agent端設置完自定義用戶參數key后需要重啟服務:
在zabbix-server端使用zabbix_get工具獲取一下zabbix-agent端的空閑內存:
示例(2)
在zabbix-agent端設置自定義的用戶參數key并傳遞位置參數,去獲取相應的值:
在zabbix-agent端設置完自定義用戶參數key后需要重啟服務:
在zabbix-server端使用zabbix_get工具獲取一下zabbix-agent端相應的值:
示例:
使用腳本自定義用戶參數key
配置nginx默認配置文件中的nginx狀態location:
在zabbix-agent端編寫userparamenter腳本:
在zabbix-agent端設置自定義的用戶參數key腳本傳遞參數:
在zabbix-server端測試結果:
主動/被動 檢測:
被動監控:
Server=
主動監控:
ServerActive=
Hostname=
基于SNMP監控:
SNMP:簡單網絡管理協議;基于UDP協議;
讀(get, getnext), 寫(set), 陷阱(trap)
161/udp(agent), 162/udp
snmpv1: 1989
snmpv2c: 1993
snmpv3: 1998
MIB: Management Information Base
OID: Object ID
基于SNMP監控主機:
1)在被監控主機上安裝snmp軟件包:
net-snmp.x86_64 1:5.7.2-24.el7 :snmp服務包
net-snmp-utils.x86_64 1:5.7.2-24.el7 :snmp客戶端工具包
在zabbix-agent端編輯snmp的配置文件:
啟動snmp服務:
使用snmpwalk命令獲取主機名:
在zabbix-server添加基于snmp監控主機:
點擊Configuration—-》點擊Hosts—》點擊Create host如下圖:
給主機centos7.1添加基于snmp的監控template模板:
點擊Configuration—-》點擊Hosts—–》點擊主機centos7.1——》點擊Templates如下圖:
配置基于snmp的item時最需要注意的是:
監控交換機或打印的時候,在交換機或打印機上開啟snmp服務,查看說明書看它們支持什么OID進行添加即可。
配置zabbix proxy:
實驗環境:
zabbix-server ip:192.168.3.101;
zabbix-proxy ip:192.168.3.7;
zabbix-agent ip:192.168.3.9;
1)安裝數據庫服務:
啟動mariadb服務并開機自啟動:
設置mariadb數據庫的安全配置:
創建zabbix_proxy數據庫并授權遠程用戶:
2)從zabbix-server中拷貝zabbix-proxy-mysql和zabbix-get安裝包到192.168.3.7的/root目錄下:
3)在zabbix-proxy中安裝zabbix-proxy-mysql和zabbix-get:
注意:安裝時需要依賴到epel源中的fping-3.10-4.el7.x86_64.rpm同時也把zabbix-agent包安裝上。
4)解壓/usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz
5)重定向/usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql到zabbix_proxy數據庫中:
6)編輯zabbix-proxy的主配置文件
### Option: Server
Server=192.168.3.101
### Option: Hostname
Hostname=centos7 //zabbix-proxy服務器的名稱;
### Option: DBHost
DBHost=192.168.3.7 //mariadb服務器名;
### Option: DBName
DBName=zabbix_proxy //數據庫名稱;
### Option: DBUser
DBUser=zabbix //數據庫用戶名;
### Option: DBPassword
DBPassword=redhat //數據庫密碼;
### Option: ConfigFrequency(頻率)
ConfigFrequency=600 //設置zabbix-server多久向zabbix-proxy推送配置;
### Option: DataSenderFrequency
DataSenderFrequency=1 //設置數據發送頻率;
啟動zabbix-proxy服務并開機自啟動:
7)在zabbix-server 的webGUI界面添加zabbix-proxy服務:
點擊Administration——》點擊Proxies—–》點擊Create proxy如下圖:
點擊Add之后到達如下界面:
配置被監控主機:
在被監控主機上安裝zabbix-agent和zabbix-sender軟件包:
把192.168.3.101主機上的zabbix-agent包和zabbix-sender包復制到192.168.3.9主機的/root目錄下。
1)在192.168.3.8被監控主機上安裝zabbix-agent和zabbix-sender:
2)配置zabbix-agent主配置文件:
##### Passive checks related
### Option: Server
Server=192.168.3.7
### Option: ServerActive
ServerActive=192.168.3.7
### Option: Hostname
Hostname=192.168.3.7
3)啟動zabbix-agent服務并開機自啟動:
先測試一下在zabbix-server端使用zabbix_get命令手動獲取一下system.cpu.switches數據:
在zabbix-server webGUI上配置被監控主機192.168.3.9:
點擊Configuration—–》點擊Hosts—–》點擊Createhost如下圖:
在zabbix-server webGUI中配置完使用zabbix-proxy主機(zbxproxy)后的Hosts效果:
在主機zbxproxy上配置一個item監控項:
點擊Configuration—–》點擊Hosts——》點擊選擇zbxproxy主機—-》點擊item—–》點擊Createitem如下圖:
在zabbix-server webGUI中配置完主機(zbxproxy)item監控項后的效果:
在zabbix-server webGUI中查看監控結果:
注意:
(1) 在server添加的Proxy的名稱,要與proxy的配置文件中Hostname的值保持一致;
(2) 通過proxy監控的主機,agent要授權proxy有監控權限;
server=Proxy_Server_IP
zabbix performance tuning:
NVPS:New Value Per Second
100w/m, 15000/s
zabbix服務器進程數量調整:
alerter, discoverer, escalator, http poller, housekeeper, poller, trapper, configration syncer, ipmi poller, …
StartPollers=50
StartPingers=10
…
StartDBSyncers=2
…
數據庫優化:
分表:
history_*
trend*
events*
建議:
Database:歷史數據不要保存太長時間;盡量讓數據緩存數據庫服務器內存中;
觸發器的表達式:減少使用min(), max(), avg();盡量使用last(), nodata();
數據收集:polling較慢時,減少使用snmp/agentless/agent, 盡量使用trapping方式,即agent(active);
數據類型:文本型數據處理速度較慢,盡量少收集類型為text或string或log型的數據,多使用numeric型數據;
原創文章,作者:zhengyibo,如若轉載,請注明出處:http://www.www58058.com/60054