中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解Zabbix 監控方式

發布時間:2021-11-09 12:00:45 來源:億速云 閱讀:227 作者:柒染 欄目:建站服務器

本篇文章給大家分享的是有關怎么理解Zabbix 監控方式,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

第三章  Zabbix 監控方式

有人說通過Zabbix可以完成任何監控任務,只有你想不到的,但沒有監控不了的,真是這樣嗎?當你通過本章了解了Zabbix提供的多種監控方式后,你就會發現此言非虛。

這里所說的監控方式,實際上就是Zabbix中的配置監控項時選擇的監控項類型。為了適應各種應用場景的需要,Zabbix提供了多種方法幫助你更好的完成監控任務。

Zabbix 3.0中提供的監控方式包括:

  • Active agents

  • Passive agents

  • Extending agents

  • Simple checks

  • SNMP agents

  • Zabbix Internal checks

  • Zabbix trapper

  • IPMI agents

  • JMX agents

  • External checks

  • Database monitoring

  • SSH agents

  • Telnet agents

  • SNMP Traps

  • Aggregate checks

  • Calculated checks

3.1 Active agents

使用Zabbix agent創建監控項時有兩種方式,即Active(主動式)agent和Passive (被動式)agent。

在Active agent模式下,Zabbix agent啟動后,由agent端初始化和Zabbix server之間的通信,向Zabbix server發出獲取監控項清單的請求,server端收到請求后響應agent發出的請求,并將監控項清單發送給agent。agent端定期和Zabbix server通信,保證獲得最新的監控項清單。agent則根據監控項清單查詢監控項的數據并將結果發送給Zabbixserver。流程如下圖3-1所示。

  怎么理解Zabbix 監控方式

圖 3-1

為了啟用Active agent模式,需要在zabbix_agentd.conf文件中配置ServerActive參數,告訴agent可以聯系到哪些服務器(默認端口是10051)。通過配置RefreshActiveChecks參數,可以設置agent端多長時間向server詢問一次監控項清單,默認是120秒。在默認設置下server端改變active agent監控項有關的一些設置后,server端需要1分鐘刷新配置緩存(通過server配置文件中的參數CacheUpdateFrequency設置,默認是60秒),agent需要等待2分鐘才能夠知道監控項的變化。如果從server查詢監控項清單失敗(網絡問題或其他原因),agent端會等待1分鐘后重新向server發出查詢請求。Active agent也有自己的緩存,可以通過BufferSend或BufferSize進行設置, BufferSend參數設置監控項數據在緩存中保留的時間,默認是5秒(可以設置到3600)。BufferSize參數設置保留監控項數據的緩存大小,默認是100(可以設置到65535)

配置Active agent監控項的步驟:

1、  Zabbix agent安裝完成后,打開配置文件zabbix_agentd.conf。

2、  設置ServerActive參數,格式為IP:port 或DNS主機名:port。在這里我們可以設置多個server或proxy的DNS主機名或IP地址,用逗號分隔。

3、  設置Hostname參數,這個名字必須是唯一的并和Zabbixserver中Configuration -->Hosts頁面中添加的主機名稱相同。

4、  驗證Zabbix server的10051端口能夠訪問。

5、  重啟zabbix_agent(systemctlrestart zabbix-agent.service)。

6、  檢查agent日志(tail -f/var/log/zabbix/zabbix_agentd.log)。

7、  在主機中添加主動式監控項(Configuration --> Hosts --> Items --> Create item)。選擇監控項的Type(類型)為Zabbix agent(active)。

3.2 Passive agents

Passive agent為我們提供了一種簡單易行的方法,Zabbixserver或proxy根據監控項中配置的Update interval(數據更新間隔),定期向agent端發出查詢請求,如CPU負載、磁盤使用空間等等。agent根據請求收集監控項數據并返回給server或proxy。整個過程就是簡單的一問一答,你要什么值我給你什么值,從agent角度來看是被動的回答。如下圖3-2所示。

 怎么理解Zabbix 監控方式

圖 3-2

近日完成《深入淺出 zabbix 4.0》視頻教程的錄制并正式發布,該教程基于 zabbix 4.2 ,對Zabbix進行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000 

配置Passive agent監控項的步驟:

1、  安裝Zabbix agent,打開配置文件zabbix_agentd.conf。

2、  設置Server參數,格式為IP 或DNS主機名。在這里我們可以設置多個server或proxy的DNS主機名或IP地址,用逗號分隔。

3、  注釋掉ServerActive和Hostname這兩個參數,在Passive agent模式中不需要這兩個參數,如果你想同時使用active agent,這兩個參數必須配置。

4、  驗證agent端的10050端口能夠訪問。

5、  重啟zabbix_agent(systemctlrestart zabbix-agent.service)。

6、  檢查agent日志(tail -f/var/log/zabbix/zabbix_agentd.log)。

7、  在主機中添加被動式監控項(Configuration --> Hosts --> Items --> Create item)。選擇監控項的Type(類型)為Zabbix agent。

3.3 Extending agents

Zabbix中提供了一些標準的監控項可以使用Key,當你添加Zabbix agent監控項時可以選擇使用,但在實際環境中這些標準的Key并不能滿足特定的監控需求,在Zabbix中可以使用多種方法進行擴展,其中一個方法就是在agent配置文件中使用UserParameter進行擴展。

通過UserParameter參數擴展監控項的key,可以靈活的實現多種監控需求。Zabbix中定義UserParameter的格式為UserParameter=<key>,<command>。

配置UserParameter的步驟:

1、  打開agent配置文件zabbix_agentd.conf。

2、  設置UserParameter參數。例如:UserParameter=mysql.threads,mysqladmin -u root –p<password> status|cut -f3 -d":"|cut -f1-d"Q" ,該參數返回MySQL線程的數量給自定義的key:mysql.threads。

3、  保存配置文件,重新啟動Zabbix agent服務。

4、  Web前端Configuration --> Hosts--> Items頁面中添加監控項。

u  Name字段中設置監控項名稱,例如 MySQL Threads。

u  Type字段中選擇Zabbix agent或者Zabbix agent(active)。

u  Key字段中填寫mysql.threads,這里填寫的內容必須和UserParameter中定義的一樣。

u  Type of Information字段中選擇Numeric(unsigned)。

u  Data type中選擇Decimal。

u  其他配置參數保持不變。點擊Add按鈕保存。

5、  Monitoring --> Latest data頁面查看監控項MySQL Threads。

3.4 Simple checks

Zabbix 中simple checks是基于ICMP ping或者端口檢測來確定主機是否在線或服務端口能否正常連接。這種方式下主機中不需要安裝Zabbix agent,當我們檢測主機或端口的可用性時simplechecks返回的值為1或者0,當我們檢測性能時返回的是浮點數(如檢測ping的響應時間時返回值0.02秒),如果檢測失敗則返回0。

為了降低網絡流量,更高效的進行ICMP檢測,Zabbix執行icmppingsec、icmpping 和 icmppingloss檢測時使用了一個第三方的工具fping和fping6,依賴linux不同的發行版安裝的版本各有不同,建議使用fping 3.0以上的版本。在CentOS系統中需要安裝fping時可以通過命令yum install fping完成安裝。

Zabbix中默認定義了3個用于ICMP檢測的監控項和2個用于TCP/UDP連接檢測的監控項,分別是:

  • Icmpping:主機響應ICMP ping返回1,否則返回0。

  • Icmppingloss:返回丟失ICMP ping數據包的百分比。

  • Icmppingsec:返回ICMP ping的響應時間,單位是秒。如果主機沒有響應(timeout reached)則返回0。如果返回值小于0.0001秒時返回值將被設置為0.0001。

  • Net.tcp.service / net.udp.service:主機上指定的服務正常運行并能建立TCP / UDP連接時返回1,否則返回0。

  • Net.tcp.service.perf / net.udp.service.perf:返回連接到指定TCP / UDP端口的服務所使用的時間,單位是秒。如果服務沒有運行則返回0.000000。

net.tcp.service 和net.tcp.service.perf支持我們知道的大部分協議,如SSH、FTP、HTTP等。這兩個項目是非常有用的,我們可以對特定的IP和端口進行簡單的TCP握手連接完成可用性的檢測,同時對主機或應用的性能不會有任何影響。

下面一起來看看這幾個項目的用法。

  • Icmpping

格式:Icmpping[<target>,<packets>,<interval>,<size>,<timeout>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。例如icmpping[,20,50,256,100],如果你不想定義target、packet等值,可以不填寫任何參數,可以寫成icmpping[,4],只要4個數據包有1個響應,監控項就會返回1。

  • Icmppingloss

格式:icmppingloss[<target>,<packets>,<interval>,<size>,<timeout>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。

  • Icmppingsec

格式:icmppingsec[<target>,<packets>,<interval>,<size>,<timeout>,<mode>]。其中target是主機IP或DNS主機名;packets是數據包的數量;interval是數據包之間的間隔時間,單位是微秒;size是數據包的大小,單位是bytes;timeout是超時時間,單位是微秒。

  • net.tcp.servic

格式:net.tcp.service[service,<ip>,<port>]。其中service是TCP協議的名稱,如:ssh、ldap、smtp、ftp、http、pop、nntp、imap、Telnet等等;IP是IP地址或DNS主機名(默認使用定義監控項的主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.tcp.service[ftp,45]。當前不支持加密協議的檢測,像IMAP的993端口或POP的995端口,但我們可以用net.tcp.service[tcp,<ip>,port]來完成對它們的檢測。Zabbix 從v2.0起支持https和telnet。

  • net.tcp.service.perf

格式:net.tcp.service.perf[service,<ip>,<port>]。其中service是TCP協議的名稱,如:ssh、ldap、smtp、ftp、http、pop、nntp、imap、Telnet等等;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.tcp.service.perf [ssh]。當前不支持加密協議的檢測,像IMAP在993端口或POP在995端口上,但我們可以用net.tcp.service.perf [tcp,<ip>,port]來完成對它們的檢測。

  • net.udp.service

格式:net.udp.service[service,<ip>,<port>]。其中service是UDP協議的名稱,如:ntp;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.udp.service[ntp,45],在UDP端口45上檢測NTP服務的可用性。

  • net.udp.service.perf

格式:net.udp.service.perf[service,<ip>,<port>]。其中service是UDP協議的名稱,如:ntp;IP是主機的IP地址或DNS主機名(默認使用定義該監控項主機的IP或DNS主機名);port是端口號(默認使用服務標準的端口號)。例如:net.udp.service.perf [ntp],可以檢測NTP服務的響應時間。

Simple checks是一種簡單而高效的監控方式,由于其不需要傳輸復雜的監控數據,因此在監控成百上千的主機和服務的可用性時,對整體的網絡流量產生的影響是最小的。

配置Simple checks的步驟:

1、  創建一個新的監控項(Configuration --> Template --> Items--> Create item 或Configuration --> Host --> Items --> Create item)。

2、  在監控項配置頁面中:

  • 填寫Name ,例如:Check SSH port $3。($3是key中的第三個參數{$SSH_PORT})。

  • 選擇Type為Simple check。

  • 填寫Key,例如:net.tcp.service[ssh,,{$SSH_PORT}],{$SSH_PORT}是定義的macro。

  • Type of information選擇Numeric。

  • Data type選擇Decimal。

  • 如果需要可以在NewApplication中填寫一個監控項組的名稱,如:ssh check。

  • 其他配置參數可以保持不變,點擊Add按鈕保存。

3、  Monitoring --> Latest data頁面查看監控項。

4.5 SNMP agents

監控交換機、路由器、UPS等設備時,你是沒有辦法通過Zabbixagent進行監控的,原因是這些設備中沒有辦法安裝agent程序,但這并不代表Zabbix不能對這些設備進行監控,利用標準的SNMP協議,可以輕松實現Zabbix對這些設備的監控。

SNMP(簡單網絡管理協議)是TCP/IP協議簇的一個應用層協議,是一種廣泛用于監測網絡設備(例如:交換機、路由器、UPS等)的網絡協議。在每個被監控的設備中都會運行設備自帶的SNMP agent, Zabbix使用SNMP協議向被監控設備的SNMP agent發出查詢指令,并由SNMP agent返回查詢的值。

在設置SNMP agent監控項之前,我們先要確定OID(SNMP對象標識符)。SNMP將被管理對象用一個樹來組織,被管理對象用OID表示,如:1.3.6.1.2.1.1.3 代表sysUpTime。實際環境中會使用很多廠商的產品,每個產品中定義的OID不盡相同,所以準備使用SNMP agent 監控設備前,需要廠商提供設備的MIB文件。MIB文件是基于SMI語法定義的說明某個OID在OID樹中的位置、數據類型、描述等信息的文本文件,如果沒有MIB文件,你很難理解一串數字代表的含義是什么。

配置SNMP agent的步驟:

1、  確定已經安裝了net-snmp-utils,如果沒有安裝,可通過以下命令安裝:

# yum install net-snmp-utils

如果你是編譯源碼安裝的Zabbix server,一定要使用 --with-net-snmp選項。

2、  Zabbix server中添加新的主機并填寫SNMPInterface 信息,如下圖3-3所示。                            怎么理解Zabbix 監控方式

圖 3-3

3、  用snmpwalk檢查能否從被監控設備獲取到OID的值。

# snmpwalk -v 2c -cpublic 192.168.10.1 | more

其中 -v 2c 是SNMP協議的版本,Zabbix支持SNMP v1、2c、和3。-c public是community字符串。執行上面的命令有結果返回,說明被監控主機可以連接,可以使用SNMP進行監控。我們可以進一步確定OID的值。

# snmpget -v 2c -cpublic 192.168.10.1 -On IF-MIB::ifInOctets.1

返回信息:.1.3.6.1.2.1.2.2.1.10.1 = Counter32:1494804。

如果你想獲取完整的OID字符串,可以執行下面的命令。

# snmpget -v 2c -cpublic 192.168.10.1 -Of IF-MIB::ifInOctets.1

返回信息:.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifInOctets.1= Counter32: 1566936。

4、  現在創建新的監控項:

  • Name中輸入ifInOctets $1($1是Key中第一個參數 Port1)。

  • Type選擇正確的SNMP版本,例如SNMPv2 agent。

  • Key中輸入任何你想使用的名稱,如:ifInOctets[Port1]。

  • Host Interface使用主機中定義的SNMP接口。

  • SNMP OID中輸入第3步中用snmpget命令返回的OID。這里無論使用哪種格式的OID都是可以的。

  • SNMP community中填寫community字符串。

  • Type of information中選擇 Numeric(float)。

  • Units中填寫Bytes。

  • Store value中選擇Delta(speed per seconds)。

  • 其他參數可以保持不變,單擊Add按鈕保存。

如下圖3-4所示。

怎么理解Zabbix 監控方式

圖 3-4

5、  Monitoring --> Latest data頁面查看監控項。

3.6 Zabbix Internal checks

Zabbix Internal主要是用來監測Zabbixserver 或 proxy server自身的性能。Zabbix Internal由Zabbix server 或proxy server進行計算,從Zabbix 2.4版本開始,即使在主機維護狀態下也會處理Zabbix Internal。Zabbix server處理Zabbix Internal時不依賴agent,你只需要擁有超級管理員的權限即可。

Zabbix在系統中已經預設了針對Zabbix server和 proxy server的模板,模板的名稱是Template App Zabbix Server 和 Template App Zabbix Proxy。

配置Zabbix Internal的步驟:

1、  創建一個新的監控項(Configuration --> Template --> Items --> Create item 或Configuration --> Host --> Items --> Create item)。

  • Name中填寫監控項的名稱。

  • Type中選擇Zabbix internal。

  • Key中選擇(單擊右側的Select按鈕)zabbix[process,<type>,<num>,<state>],在這里我們使用zabbix[process,poller,avg,busy]。

  • Type of information選擇Numeric (float)。

  • Units填寫% 。

  • 其他參數可以保持原狀,單擊Add按鈕保持。

如下圖3-5所示。

怎么理解Zabbix 監控方式

圖 3-5

2、  Monitoring --> Latest data頁面查看監控項。

3.7 Zabbix trapper

Zabbix使用agent、IPMI或SNMP的方式收集監控數據時,有時候會因為監控項Key中使用的腳本執行時間過長而超時,從而無法獲取數據。因此Zabbix 提供了trapper的監控方式,利用zabbix-sender工具可以主動將數據從被監控主機發送到Zabbix server,這種方式中不需要在被監控主機中安裝Zabbix agent。

配置Zabbix trapper的步驟:

1、  首先我們要在被監控主機中安裝zabbix-sender程序,安裝命令如下:

# yum installzabbix-sender

2、  創建監控項(Configuration --> Template --> Items --> Create item 或Configuration --> Host --> Items --> Create item)。

  • Name中填寫監控項名稱。

  • Type中選擇Zabbix trapper。

  • Key中填寫你想使用的key名稱(例如:trapper.key)。

  • Type of information和Data type中選擇發送到Zabbixserver的數據類型。

  • Allowed hosts中可以填寫被監控主機的IP地址或DNS主機名,如果填寫,trapper只接收來自這些主機的數據。這里可以設置一個IP地址或DNS主機名,例如:192.168.10.22或testtrapper.Zabbix.com。也可以設置多個IP地址或DNS主機名(使用逗號分隔),例如:192.168.10.22,192.168.10.23,192.168.10.24或testtrapper1.Zabbix.com, testtrapper2.Zabbix.com, testtrapper3.Zabbix.com。

  • 其他參數可以保持不變,單擊Add按鈕保存。

如下圖3-6所示。

怎么理解Zabbix 監控方式

圖 3-6

3、  在被監控主機中運行 zabbix_sender -z <ip-zabbixserver> -s <hostname> -k <item_key> -o<value>。例如:

# zabbix_sender -z 192.168.10.102 –s "trapper host" -k trapper.key -o 20

4、   Monitoring --> Latest data頁面查看監控項。

3.8 IPMI agents

IPMI(Intelligent PlatformManagement Interface)是一個開放標準的硬件管理接口規范,定義了嵌入式管理子系統進行通信的特定方法。現在主流的服務器使用遠程控制卡(例如Dell的DRAC、HP的ILO等)都可以進行遠程控制管理,通過IPMI你可以遠程開機、關機、重啟,遠程查看服務器當前的運行狀態,可以安裝操作系統,實現帶外管理。Zabbix server通過IPMI可以直接監控服務器硬件,即使是服務器的電源處在關閉的狀態下也是沒有問題的。

如果你是編譯安裝Zabbix,并且需要在Zabbix中使用IPMI agent,那么在編譯時需要帶上 --with-openipmi參數。

在使用IPMI agent之前,我們需要在主機中安裝IPMI相關工具。

# yum install ipmitoolOpenIPMI OpenIPMI-libs

安裝完成后,我們可以檢測下溫度:

# ipmitool sdr list | grepTemp

Ambient Temp         | 23degrees C        | ok

CPU 1 Temp             | 45degrees C        | ok

CPU 2 Temp               |disabled                 | ns

CPU 3 Temp             |disabled                 | ns

CPU 4 Temp             |disabled                 | ns

進一步可以看看CPU 1 Temp的詳細情況:

# ipmitool event “CPU 1Temp” list

Finding sensor CPU 1 Temp... ok

Sensor States:

lnr : Lower Non-Recoverable

lcr : Lower Critical

lnc : Lower Non-Critical

unc : Upper Non-Critical

ucr : Upper Critical

unr : Upper Non-Recoverable

接下來我們配置IPMI的管理賬號,這一步可以通過服務器的遠程控制卡管理界面完成,也可以通過OpenIPMI工具完成。

重新設置管理員密碼,2為 root用戶的ID。

# ipmitool user setpassword 2 <new_password> 

     設置Zabbix用戶賬號,例子中用戶ID是3,在設置前要先確認ID 3 沒有其他用戶使用。

     # ipmitool user set name 3 zabbix

     設置Zabbix用戶密碼。

# ipmitool user setpassword 3

Password for user 3:

Password for user 3:

為Zabbix用戶授權。

# ipmitool channelsetaccess 1 3 link=on ipmi=on callin=on privilege=2

啟用Zabbix用戶。

# ipmitool user enable 3

驗證設置是否正確。

# ipmitool channelgetaccess 1 3

Maximum User IDs         : 15

Enabled User IDs             :2

User ID                               :3

User Name                        :zabbix

Fixed Name                       :No

Access Available              :call-in / callback

Link Authentication         :enabled

IPMI Messaging               :enabled

Privilege Level                   :USER

看到上面的信息時,說明Zabbix用戶已經創建,Privilege Level是USER。但這個賬號還不能通過網絡訪問,我們需要授權訪問。

# ipmitool lan set 1 authUSER MD5

驗證設置是否正確。

# ipmitool lan print 1

Set in Progress                            : Set Complete

Auth Type Support             :NONE MD5 PASSWORD

Auth Type Enable              : Callback      :

: User             : MD5

: Operator      :

: Admin           : MD5

: OEM             :

現在我們使用Zabbix用戶遠程查詢服務器的狀態。

# ipmitool –U Zabbix –H192.168.10.22 -I lanplus sdr list | grep Temp

Ambient Temp         | 23degrees C        | ok

CPU 1 Temp             | 45degrees C        | ok

CPU 2 Temp               |disabled                 | ns

CPU 3 Temp             |disabled                 | ns

CPU 4 Temp             |disabled                 | ns

修改zabbix_server.conf配置文件。

# vi zabbix_server.conf

StartIPMIPollers=5

重啟Zabbix server服務。

# systemctl restartzabbix-server

配置IPMI checks的步驟:

1、  在Configuration --> Host頁面中,單擊Name列中的主機名稱,例如Zabbix server,在主機配置頁面Host標簽下添加IPMI接口配置,如下圖3-7所示。

怎么理解Zabbix 監控方式

圖 3-7

2、  在IPMI標簽下配置身份驗證算法、權限級別、用戶名及密碼。如下圖3-8所示。

怎么理解Zabbix 監控方式

圖 3-8

3、  單擊Update按鈕保存主機的配置。

4、  創建一個新的監控項。

  • Name中填寫監控項名稱。

  • Type中選擇IPMI agent。

  • Key中填寫key名稱,例如:CPU 1 Temp。

  • Host Interface中選擇IPMI接口。

  • IPMI Sensor中填寫CPU 1 Temp。

  • Type of information選擇Numeric(float)

  • Units中填寫℃。

  • 其他參數可以保持不變,單擊Add按鈕保存。

如下圖3-9所示。

怎么理解Zabbix 監控方式

圖 3-9

5、  Monitoring --> Latest data頁面查看監控項。

3.9 JMX agents

Zabbix通過JMX(Java Management Extensions)可以對Java Application進行監控,Zabbix利用原生的Zabbix Java gateway,一個Java守護進程監控JMX應用。當Zabbix想要知道某個JMX counter當前的數據時,它只去詢問ZabbixJava gateway,而gateway會去查詢需要的數據,所有這些查詢都是通過JMX管理API完成的。

使用時,一個Java應用不需要額外安裝任何其他的軟件,也不需要實現或擴展新的代碼來處理Zabbix的查詢,僅僅需要在Java 應用的配置文件中設置一些參數,支持遠程JMX的監控。

這些參數主要有:

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.port=<你要設置的端口號>

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

例如:

java \

-Dcom.sun.management.jmxremote \

-Dcom.sun.management.jmxremote.port=12345 \

-Dcom.sun.management.jmxremote.authenticate=false \

-Dcom.sun.management.jmxremote.ssl=false \

-jar/usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar

上面的配置定義了Java程序使用12345端口監聽來自本地的JMX的連接,并不需要身份驗證和加密。如果你想從其他主機訪問,需要配置 -Djava.rmi.server.hostname 參數。

在實際環境中從安全的角度考慮,需要設置身份驗證和加密。具體設置步驟如下:

1、  啟用身份驗證并指定一個包含密碼的文件。

-Dcom.sun.management.jmxremote.authenticate=true

-Dcom.sun.management.jmxremote.password.file=/etc/java-6-penjdk/management/jmxremote.password

jmxremote.password文件內容:

monitorRole <monitor-password-here>

controlRole <control-password-here>

2、  指定用戶的配置文件。

-Dcom.sun.management.jmxremote.access.file=/etc/java-6-penjdk/management/jmxremote.access

jmxremote.access文件內容:

monitorRole readonly

controlRole readwrite

3、  啟用SSL。

-Dcom.sun.management.jmxremote.ssl=true

綁定下面的參數:

-Djavax.net.ssl.keyStore=<你的keyStore >

-Djavax.net.ssl.keyStorePassword=<你的 keyStorePassword >

-Djavax.net.ssl.trustStore=<你的trustStore >

-Djavax.net.ssl.trustStorePassword=<你的trustStorePassword >

-Dcom.sun.management.jmxremote.ssl.need.client.auth=true

完整的例子如下:

java \

-Djava.rmi.server.hostname=192.168.3.14 \

-Dcom.sun.management.jmxremote \

-Dcom.sun.management.jmxremote.port=12345 \

-Dcom.sun.management.jmxremote.authenticate=true \

-Dcom.sun.management.jmxremote.password.file=/etc/java-6-openjdk/management/jmxremote.password\

-Dcom.sun.management.jmxremote.access.file=/etc/java-6-openjdk/management/jmxremote.access\

-Dcom.sun.management.jmxremote.ssl=true \

-Djavax.net.ssl.keyStore=<你的KeyStore> \

-Djavax.net.ssl.keyStorePassword=<你的KeyStorePassword> \

-Djavax.net.ssl.trustStore=<你的trustStore > \

-Djavax.net.ssl.trustStorePassword=<你的trustStorePassword > \

-Dcom.sun.management.jmxremote.ssl.need.client.auth=true \

-jar/usr/share/doc/openjdk-6-jre-headless/demo/jfc/Notepad/Notepad.jar

-D參數需要寫到你的應用或應用服務器的啟動文件中,在完成上述的各項配置后,你的啟動文件中將包含一些敏感的內容(keyStore和trustStore密碼),因此需要保護好你的啟動文件。

為了在Zabbix server使用JMX agent,還需要在Zabbix server中安裝Java gateway。

# yum installzabbix-java-gateway

# systemctl enablezabbix-java-gateway

# systemctl startzabbix-java-gateway

如果你是編譯源碼安裝的Zabbix server,一定要使用 --enable-java選項。

在zabbix_server.conf文件中進行配置。

# vi zabbix_server.conf

Java gateway = 127.0.0.1

Java Gateway Port = 10052

Start Java pollers = 5

不要忘記修改zabbix_server.conf文件后要重啟Zabbixserver服務。

# systemctl restartzabbix-server

下面我們就可以配置一個JMX agent監控項,步驟如下:

1、  在Configuration --> Host頁面中,單擊Name列中的主機名稱,例如Zabbix server,在主機配置頁面Host標簽下添加JMX接口配置,如下圖3-10所示。

怎么理解Zabbix 監控方式

圖 3-10

2、  單擊Update按鈕保存主機的配置。

3、  創建一個新的監控項。

  • Name中填寫監控項名稱。

  • Type中選擇JMX agent。

  • Key中填寫你要監控的項目,格式為jmx[<object name>,<attribute name>]。例如:

jmx["java.lang:type=Memory","HeapMemoryUsage.used"]

  • Host interface中選擇JMX接口。

  • 安裝JMX控制臺后為了安全,通常我們會設置一個登錄控制臺的用戶名和密碼,Zabbix中支持這種方式,在User name和Password中填寫就可以了。

  • Type of information選擇Numeric(unsigned)。

  • Data type中選擇Decimal。

  • Unit中設置單位,如:B。

  • 其他參數可以保持不變,單擊Add按鈕保存。

如下圖3-11所示。

         怎么理解Zabbix 監控方式

圖 3-11

4、  Monitoring --> Latest data頁面查看監控項。

如果你想監控返回值為true或false的Boolean類型的監控項,你可以指定Typeof information為Numeric(unsigned),Data type為Boolean,Zabbix server將保存這個Boolean的值為1或0。

在Zabbix server中只能安裝一個Javagateway,如果你需要的話可以在每個proxyserver中安裝一個Java gateway。

如果遇到問題可以檢查JMX 的日志文件:/var/log/zabbix_java_gateway.log。

在設置JMX agent的Key時,需要注意下面的一些情況:

  • 屬性名稱中包含有點分隔符(.),比如說all.pen,你需要用 \ 轉義,例如:jmx[com.example:Type=Test,all\.pen.color]

  • 屬性名稱中包含有反斜杠(\),你需要使用兩個 \\ ,例如:jmx[com.example:Type=Test,c:\\utility]

  • 對象名稱或屬性名稱中包含有空格或逗號,它需要用兩個雙引號(”)括起來,例如:jmx[com.example:type=Hello,"c:\\documentsand settings"]

通過External checks監控方式可以在Zabbixserver上執行腳本或二進制程序收集監控數據,這種方式不需要在被監控設備中安裝agent。

使用這種方式之前,需要在zabbix-server.conf配置文件中定義腳本或程序的路徑,設置正確的執行權限,保證Zabbix用戶能夠執行腳本或程序。

# vi /etc/zabbix/zabbix-server.conf

ExternalScripts=/usr/lib/zabbix/externalscripts

ExternalScripts 參數中可以使用系統默認的路徑,你也可以指定其他路徑,需要執行的腳本或程序必須在ExternalScripts配置的目錄中,并設置相應的執行權限。以監測系統CPU內核數量的腳本為列子,看一下設置的過程。

1、   創建一個檢測系統CPU內核數量的腳本。

# touch cores.sh

2、   設置可執行權限。

# chmod +x cores.sh

3、   編輯cores.sh腳本內容。

# vi cores.sh

#! /bin/bash

nproc

4、   設置cores.sh腳本的所有者和所屬組為zabbix。

# chown zabbix:zabbixcores.sh

在External checks監控方式中,定義監控項的key必須遵循特定的語法,語法格式為:script[<parameter1>,<parameter2>,...] 。其中script是腳本/可執行程序的名稱,parameter是可選的命令行參數。腳本不帶參數時,可以寫成script[] 或者 script。

配置External checks監控項的步驟:

1、   在Configuration--> Host頁面,單擊Items列中的鏈接,例如主機Zabbix server的Items鏈接,在Items頁面右上角點擊Create item按鈕創建新的監控項。

  • Name中輸入監控項名稱,例如Number of CPU Core。

  • Type中選擇External check。

  • Key中填寫腳本的名字,例如:cores.sh[]。

  • Host Interface中選擇agent接口。

  • Type of information中選擇Numeric(unsigned)。

  • Data Type選擇Decimal。

  • 其他參數可以保持不變,點擊Add按鈕保存。

如下圖3-12所示。

怎么理解Zabbix 監控方式

圖 3-12

2、   Monitoring --> Latest data頁面查看監控項。

如果腳本或可執行程序需要傳遞參數時,可以把這些參數放到名稱后面的方括號中,例如:myscript.sh[“var1”,”var2]”,”var3”]。系統中定義的宏變量也可以傳遞給腳本或可執行程序,例如:myscript.sh[“{HOST.IP}”,”var1”]。

這里需要注意腳本或可執行程序的執行時間不能太長,如果超過3秒鐘,Zabbix 會標記這個item為unsupported,腳本進程將被殺掉。Zabbix server的配置文件中默認配置的Timeout參數是3秒,你可以調整這個參數,最大可以設置為30秒。

3.11 Database monitor

對于數據庫Zabbix也提供了監控方法,可以通過ODBC(Open Database Connectivity)接口對數據庫進行數據查詢,ODBC做為Zabbix和數據庫系統之間的中間件,能夠讓Zabbix查詢不同的數據庫收集數據,當然這個數據庫需要unixODBC或Independent Open DataBase Connectivity(iODBC)的支持。

使用ODBC監控數據庫之前,你要確認Zabbix支持ODBC,通過yum包管理器安裝的Zabbix server默認支持ODBC,如果你使用源碼編譯安裝Zabbixserver,在編譯時需要使用選項 --with-unixODBC,

首先需要安裝unixODBC。

# yum -y install unixODBC

# yum -y installunixODBC-devel(源碼編譯安裝Zabbix server時需要)

安裝數據庫的連接器,我們以MySQL為例子。

# yum -y install mysql-connector-odbc

接下來配置odbcinst.ini文件,使用下面的命令查找ODBC數據庫驅動的位置。

# odbcinst -j

     # odbcinst –j

unixODBC 2.3.1

DRIVERS............: /etc/odbcinst.ini

SYSTEM DATA SOURCES: /etc/odbc.ini

FILE DATA SOURCES..: /etc/ODBCDataSources

USER DATA SOURCES..: /root/.odbc.ini

SQLULEN Size.......: 8

SQLLEN Size........: 8

SQLSETPOSIROW Size.: 8

         編輯配置文件。

# vi /etc/odbcinst.ini

# Driver from the mysql-connector-odbc package

# Setup from the unixODBC package

[MySQL]

Description  = ODBC for MySQL

Driver            = /usr/lib/libmyodbc5.so

Setup             =/usr/lib/libodbcmyS.so

Driver64       =/usr/lib64/libmyodbc5.so

Setup64        =/usr/lib64/libodbcmyS.so

FileUsage     = 1

創建或編輯odbc.ini文件,設置dsn(data source),添加數據庫的配置。

# vi /etc/odbc.ini

[mysql-test]                                                         #dsn 名稱

Description = Mysql test DB                           #描述

Driver = mysql

Server = 127.0.0.1

User = root

Password = <root db password>                   #密碼

Port = 3306

Database = <zabbix database>                     #zabbix 數據庫

完成上面的配置后,我們可以測試能否連接到數據庫。

# isql mysql-test

+---------------------------------------+

| Connected!              |

|                        |

| sql-statement            |

| help [tablename]          |

| quit                     |

|                         |

+---------------------------------------+

SQL>

SQL> select count(*) from items

+---------------------+

| count(*)     |

+---------------------+

| 708         |

+---------------------+

SQLRowCount returns 1

1 rows fetched

當你看到上面的輸出內容,并能執行SQL查詢語句就說明配置沒有問題。接下來就可以添加監控項了。

配置ODBC監控項的步驟:

1、   創建新的監控項(Configuration--> Host --> Items --> Ctreate item)。

  • Name中輸入監控項名稱,例如item counts。

  • Type中選擇Database monitor。

  • Key中選擇(點擊右側Select按鈕)db.odbc.select[<uniqueshort description>,<dsn>],其中<unique short description>是我們自己定義的唯一的key的名字,<dsn>是odbc.ini中定義的DSN名稱。

  • 如果在odbc.ini中設置了數據庫的用戶名和密碼,Username 和 Password就不需要填寫了。

  • SQL query中填寫我們想要執行的SQL查詢語句,例如:select count(*)from items。

  • Type of information和Data type中選擇相應的數據類型

  • 其他配置可以保持不變,點擊Add按鈕保存。

如下圖3-13所示    

怎么理解Zabbix 監控方式

圖 3-13

2、   Monitoring --> Latest data頁面查看監控項。

3.12 SSH agents

Zabbix中通過SSH協議也可以實現監控目標,通過SSH agent監控方式,需要對服務器進行監控但又不能安裝Zabbix agent的環境中非常有用。Zabbix中使用SSh agent時要求libssh3的最低版本是 1.0.0。

SSH agent支持兩種身份認證的方式:基于用戶名密碼的方式和基于秘鑰的方式,使用用戶名密碼的方式不需要任何特殊的配置,添加監控項時需要在頁面中輸入明文的用戶名和密碼,因此在實際環境中建議使用基于秘鑰的方式,但這個方式需要做些額外的配置。下面我們來看看基于秘鑰的方式如何配置的。

首先,檢查zabbix用戶的設置,使用下面的命令。

# grep zabbix /etc/passwd

zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin

     可以看到系統中zabbix用戶的home目錄是/var/lib/zabbix,確認該目錄是否存在,如果不存在,使用下面的命令創建目錄。

     # mkdir –p /var/lib/zabbix/.ssh

     # chown –R zabbix:zabbix /var/lib/zabbix

接下來我們需要修改zabbix-server.conf文件,配置SSH Key文件的存儲路徑。

# vi /etc/zabbix/zabbix-server.conf

SSHKeyLocation=/ var/lib/zabbix/.ssh

修改完zabbix-server.conf配置文件后重啟Zabbixserver。

# systemctl restartzabbix-server

現在,我們生成zabbix用戶的SSH Key,詢問passphrase時直接回車就可以。

# sudo -u zabbixssh-keygen -t rsa -b 2048

Generating public/private rsa key pair.

Enter file in which to save the key (/var/lib/zabbix/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /var/lib/zabbix/.ssh/id_rsa.

Your public key has been saved in /var/lib/zabbix/.ssh/id_rsa.pub.

The key fingerprint is:

15:3e:d5:61:ed:16:b3:0a:67:9d:35:f0:35:55:0b:7e zabbix@zbxserver

The key's randomart p_w_picpath is:

+--[ RSA 2048]- -----+

|          . .+++*|

|          . o..++*|

|          +  ..EB|

|          . o o.+o|

|         S   + .. |

|             .   |

|                 |

|                 |

|                 |

+----------------------------+

# ll

total 8

-rw------- 1 zabbix zabbix 1675 May 31 13:29 id_rsa

-rw-r--r-- 1 zabbix zabbix 398 May 31 13:29 id_rsa.pub

接下來拷貝秘鑰文件到被監控主機中,假設被監控主機的IP 地址是192.168.10.112。

# sudo -u zabbixssh-copy-id root@192.168.10.112

The authenticity of host '192.168.10.112 (192.168.10.112)' can't beestablished.

ECDSA key fingerprint is0d:33:e5:5c:43:c3:5b:c4:da:e4:f0:6d:0c:fb:4a:6e.

Are you sure you want to continue connecting (yes/no)? yes

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), tofilter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if youare prompted now it is to install the new keys

root@192.168.10.112's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.10.112'"

and check to make sure that only the key(s) you wanted were added.

現在我們測試一下能否登錄成功。

# sudo -u zabbix ssh root@192.168.10.112

當完成上面的配置后,就可以創建SSH agent監控方式的監控項了。

配置SSH agent監控項的步驟:

1、  創建一個新主機(Configuration --> Host --> Create host)。在主機配置頁面的Host標簽下添加Agentinterfaces接口配置,如下圖3-14所示。

怎么理解Zabbix 監控方式

圖 3-14

2、  在主機中創建新的監控項。

  • Name中輸入監控項名稱,例如Check uname。

  • Type中選擇SSH agent。

  • Key中內容替換成ssh.run[uname]。

  • Host interface 中選擇agent接口。

  • Authentication method中選擇Public key。

  • User name中填寫root ,Public key file中填寫id_rsa_pub,Private keyfile中填寫 id_rsa。

  • Key passphrase留空,如果生成密鑰時你輸入了passphrase,就需要在這里輸入相同的passphrase。

  • Executed script中輸入uname -a。

  • Type of information中選擇Text類型。

  • 其他參數可以保持不變,點擊Add按鈕保存。

如下圖3—15所示。

怎么理解Zabbix 監控方式

圖 3-15

3、  Monitoring --> Latest data頁面查看監控項。

使用SSH agent監控方式需要注意的是libssh3可能會把可執行腳本的輸出截斷到32KB,另外在腳本中最好使用命令的全路徑。

3.13 Telnet agents

Telnet agent監控方式和SSH agent方式一樣,可以在無法安裝agent軟件的環境中使用。但和SSH 不同的是,Telnet不是一個加密的協議,只支持用戶名密碼的身份認證方式。除非是只能使用Telnet agent方式而別無選擇時可以使用Telnetagent,一般情況下不建議使用,使用時最好將用戶賬戶設置成只讀的權限。

使用Telnet agent方式前,需要確認被監控設備中已經安裝并啟動了Telnet server,設置了使用Telnet 登錄系統的用戶賬戶。

如果被監控設備中沒有安裝Telnet server,可以使用下面的命令安裝。

# yum –y installtelnet-server

編輯xinet.d配置文件,配置telnetserver的參數,將disabled設置從yes變為no。

# vi /etc/xinetd.d/telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

}

設置telnet服務在設備重啟后能自動啟動。

# systemctl starttelnet.socket

# systemctl enabletelnet.socket

在telnet服務器中添加用戶。

# useradd zabbix

# passwd zabbix

如果Zabbix server中沒有安裝Telnet客戶端,可以使用下面的命令進行安裝。

# yum -y install telnet

接下來我們就可以創建使用Telnet agnet方式的監控項了。

配置Telnet agent監控項的步驟:

1、  在主機中創建新的監控項。

  • 在Name中輸入監控項的名稱,例如:Check uname。

  • Type中選擇TELNET agent。

  • Key中輸入telnet.run[uname]。

  • Host Interface中選擇agent接口。

  • User name中輸入telnet用戶名,如:zabbix。

  • Password中輸入telnet用戶密碼,如:zabbix。

  • Executed script中輸入命令,如:uanme -a。

  • Type of information中選擇Text。

  • 其他參數可以保持不變,點擊Add按鈕保存。

如下圖3—16所示。

怎么理解Zabbix 監控方式

圖 3-16

2、  Monitoring --> Latest data頁面查看監控項。

3.14 SNMP Traps

SNMP Traps監控方式和前面介紹的監控方式有所不同,在這種方式中被監控設備能夠主動發送信息到Zabbix server。被監控設備發生一些特定事件時,例如設備重啟、網絡接口宕掉或磁盤損壞等,被監控設備中的SNMP agent會給Zabbix server發送事件的狀態信息。

Zabbix中并沒有定義一種簡單的監控項指標對應到特定的事件,為了能讓Zabbix有效的管理SNMP Traps,Zabbix額外使用snmptrapd守護進程幫助處理來自被監控設備中SNMP agent發送的traps信息,通過腳本進行格式化處理后將結果交給Zabbix server。

配置SNMP Traps監控項的步驟:

  1. 創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加SNMP interfaces接口配置,如下圖3-17所示。

怎么理解Zabbix 監控方式

圖 3-17

  1. 在主機中創建新的監控項。

  2. u Name中輸入Link Down trap。

  3. u Type選擇SNMP trap。

  4. u Key中選擇snmptrap[<regex>],將<regex>替換為linkDown。在這里主要有兩個選項,snmptrap.fallback是捕獲那些在該接口上沒有被snmptrap[]監控項捕獲的SNMP traps。snmptrap[<regex>]是捕獲所有和指定的regexp匹配的SNMP traps,如果沒有指定regexp則捕獲任意trap。

  5. u Host Interface中選擇SNMP 接口。

  6. u Type of information中選擇Log。如果想使用其他類型像Numeric也是可以的,但需要我們自定義trap handler處理程序。

  7. u 其他參數可以保持不變,點擊 Add按鈕保存。

如下圖3-18所示。

怎么理解Zabbix 監控方式

圖 3-18

  1. Monitoring --> Latest data頁面查看監控項。

3.15 Aggregate checks

直到現在,我們看到Zabbix提供的監控方式都是用不同的方法獲得監控項的原始數據,但在實際環境中,當我們想了解同一主機組中所有主機CPU負載的總計時,就需要用到Aggregatechecks監控方式。Aggregate我們可以理解為匯總的意思,這種方式不需要從被監控主機中直接收集原始數據,而是從數據庫中獲取監控項的數據進行計算,因此Aggregate checks僅對Numeric類型的監控項有效。

配置Aggregate 監控項的步驟:

1、   創建一個新的主機組,例如aggregated(Configuration --> Host groups --> Create host group),并添加兩個或多個Linux 主機到該組中。

2、   創建一個新的模板(Configuration--> Templates --> Create template),在這個模板中創建一個監控項,key為system.cpu.load。將這個模板鏈接到主機組Aggregated中所有的Linux主機上。

3、   創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加Agent interfaces接口,IP地址可以填寫127.0.0.1或者0.0.0.0都可以。

4、   在新建主機上添加一個監控項。

  • Name中填寫監控項名稱,例如avg cpu load。

  • Type中選擇Zabbix aggregate。

  • Key設置為grpavg["aggregated","system.cpu.load","last"]。其中aggregated是前面創建的主機組,system.cpu.load是該組中主機上的監控項。

  • Type of information中選擇Numeric(float)。

  • Date type中選擇Decimal。

  • 其他參數可以保持不變,點擊Add按鈕保存。

如下圖3-19所示。

怎么理解Zabbix 監控方式

圖 3-19

5、   Monitoring --> Latest data頁面查看監控項。

3.16 Calculated checks

Calculated checks和Aggregatechecks類似,也是從數據庫中獲取已經存在的數據進行計算,但和Aggregate checks不同的是Calculatedchecks不會限制到特定的主機組。Calculated 監控項的計算結果會保存到數據庫中,可以在觸發器表達式中使用Calculated 監控項,也可以在宏變量、圖形和動作中像其他類型的監控項一樣引用,

Calculated 監控項的定義包含在一個formula(公式)中,根據你的需要可以很簡單也可以很復雜。一個簡單公式的語法如下。

func(<key>|<hostname:key>,<parameter1>,<parameter2>,...)

其中func是觸發器表達式中支持的函數,包括:last、min、max、avg和count。Key或hostname:key是你想使用的其他監控項。建議將整個key放到雙引號中,以避免由于key中含有空格或逗號造成的解析錯誤,key中含有雙引號時要用斜杠( \ )轉義。Parameter為所需的參數。

Calculated 監控項遇到下面的情況時可能會變成unsupported:

  • 沒有發現引用的監控項

  • 沒有數據供函數計算

  • 被零除

  • 使用不正確的語法

在Calculated 監控項公式中引用宏變量時,可以對參數和常量進行擴展,不能對函數、主機名、監控項的key或運算符進行擴展。Zabbix處理Calculated監控項時使用的數據是依靠監控項定期收集的監控數據,不像觸發器表達式那樣接收到新的數據時馬上進行計算。

配置Calculated監控項的步驟:

1、   創建一個新主機(Configuration--> Host --> Create host)。在主機配置頁面的Host標簽下添加Agent interfaces接口,IP地址可以填寫127.0.0.1或者0.0.0.0都可以。

2、   在新建主機上添加一個監控項。

  • Name中填寫監控項名稱,例如% free on root。

  • Type中選擇Calculated。

  • Key中填寫free.root,這個名字和其他監控項一樣必須是唯一的。

  • Formula中輸入100*last("vfs.fs.size[/,free]",0)/last("vfs.fs.size[/,total]",0)。

  • Type of information中選擇Numeric(float)。

  • Units中填寫% 。

  • 其他參數可以保持不變,點擊Add按鈕保存

如下圖3-20所示。

怎么理解Zabbix 監控方式

圖3-20

3、   Monitoring --> Latest data頁面查看監控項。

以上就是怎么理解Zabbix 監控方式,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉节县| 大邑县| 南充市| 宿州市| 大渡口区| 石首市| 仁化县| 中山市| 洛阳市| 砀山县| 张家川| 温泉县| 永仁县| 桂东县| 安新县| 金沙县| 黎城县| 慈利县| 伊宁市| 辽阳市| 乐昌市| 双流县| 石林| 新巴尔虎右旗| 江都市| 会昌县| 福清市| 鹤峰县| 隆安县| 雅江县| 梧州市| 临邑县| 庆云县| 延吉市| 卫辉市| 蕉岭县| 邛崃市| 浦江县| 南皮县| 双桥区| 镇赉县|