zabbix監控系統的介紹及zabbix監控系統的高級應用
數據的采集-》存儲-》報警(告警)-》展示
監控對象:包括主機,主機之間的數據流量
主機:硬件設備
系統指標:CPU,memory io(disk磁盤io network網絡io)
cpu:sys(系統空間的比例),usr(用戶空間的比例) idle
業務指標:
SNMP:簡單網絡管理協議 實現網絡管理
jmx:java管理平臺
tps:每秒的事務數
qps:每秒的查詢書
采集:
多保留趨勢數據,歷史數據只保留最近幾個月的時間
存儲:
關系型數據庫
rrd輪詢存儲系統(cacti)輪轉 沒有對應的接口
時序數據庫:時間序列產生的密集型數據存儲
influxdb
報警:(發郵件)
寫程序調用ATI服務端的接口
展示:
展示界面
nagios:很好的告警系統,默認沒有存儲系統,不能進行展示
cacti:很好的展示系統,告警系統不行
zabbix:監控系統,整合了所有,接口簡單直觀 c語言編寫 ,展示接口使用PHP
采集:接口(agent snmp ipml imx)
存儲:mysql pgsql
報警:email,script腳本(短信,微信) ,遠程命令,報警升級
展示:簡單圖 圖形 screen slide show map....
grafana:作為眾多的展示接口 可以作為zabbix的接口
statsd:數據采集器
promethues(適用於大規模集群系統監控)+grafana展示
graphite+grafana:
zabbix常用的術語:
host (主機)
host group (主機組)
item 監控項
trigger (觸發器)
event(事件)
action(動作)
escaiation(報警升級)
media(媒介)
notification(通知)
remote command(遠程命令)
template(模版)
application(應用)
web場景(web scennario)
frontend(前端)zabbix的web接口
trigger(觸發器):ok ,PROBLEM,event,action(remote command,alert)
監控核心:監控項
zabbix proxy 分布式監控 可一將部分監控委托出去
zabbix監控Java需要統一專門的網關來實現
實現過程:
準備三臺虛擬機:node1 node2 server
LFT[ ntpdate 172.17.0.159(server ip)
1.sever
wget下載包
zabbix-release-3.4-2.el7.noarch.rpm 後綴為rpm要用 yum localinstall 安裝
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
//yum install zabbix-release-3.4-2.e17.noarch.rpm
yum info zabbix-agent
yum repolist
確定數據庫配置正確
vim /etc/my.cnf.d/server.cnf
[server]
skip_name_resolve=ON
innodb_buffer_pool_size=256M
innodb_file_per_table=ON
max_connections=2000
log-bin=master-log
systemctl start mariadb.service
//mysql_secure_installation mysql安全腳本,運行後進入mysql需要密碼
yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender
mysql
>create database zbxdb CHARACTER SET 'utf8 ';建立數據庫
>GRANT ALL ON zdxdb.* TO 'zbxuser'@'172.17.0.%'IDENTIFIED BY 'zbxpass';
>flush privileges; 刷新授權
>exit
rpm -ql zabbix-server-mysql
cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz ./
gzip -d create.sql.gz
導入指定文件
mysql -uzbxuser -h172.17.0.159 -pzbxpass zbxdb < create.sql
mysql -uzbxuser -h172.17.0.159 -pzbxpass
>show databases;
>use zbxdb;
>show tables;
>exit
cd /etc/zabbix
cp zabbix_server.conf{,.bak}
vim zabbix_server.conf
//grep -i "^####" zabbix_server.conf
listenport=10051
DBHost=172.17.0.159
DBname=zbxdb
DBUser=zbxuser
DBPassword=zbxpass
DBport=3306
systemctl start zabbix-server.service 啟動進程
systemctl status zabbix-server.service查看狀態
cd /etc/httpd/conf.d
vim zabbix.conf
vim /etc/php.ini
data.timezone=Asia/Shanghai
systemctl start httpd.service
ss -ntl 查看80端口是否開啟
zabbix_get -s 172.17.0.170 -p 10050 -k "net.if.in[eno16777736,packets]"手動獲取參數
瀏覽:
172.17.0.159/zabbix
next step
next step
mysql
172.17.0.159
0
zbxdb
zbxuser
zbxpass
next step
172.17.0.159
10051
server
next step
next step
finish
admin
zabbix
sign in 進入儀表盤
configuration配置
hosts
hostgroups
creat
mysrvs
hosts
creat
node1.magedu.com
node1
mysrvs
172.17.0.170
add
Application
creat
cpu utils
add
creat
memory stats
add
creat
Network interface stats
items
creat
rate of interrupt
zabbix agent
system.cpu.intr cpu的中斷次數
172.17.0.170:10050
5s
system stats
preprocessing
change per second
add
monintoring
select
node1
apply
graph
configuration配置
host
action
trigger
operation
//zabbix_get -s 172.17.0.170 -p 10050 -k "system.cpu.intr"
configuration
templates
configuration
hosts
item
rate of packets(in)
zabbix agent
net.if.in[eth1,packeets]
172.17.0.170:10050
numeric(unsigned)
pkts/sec
5s
network interface stats
add
preprocessing
change per second
add
克隆
configuration
hosts
items
找到想要克隆的
clone就可以
定義觸發器:
configuration
hosts
triggers
creat
hight speed in pkts
waring
{node1.magedu.com:net.if.in[eth1,packets].last(0)}>100 //add
add
動作:
configuration
actions
action
operation
send message
Asministration
users
admin
media
add
local_email
root@localhost
add
not classifiled
tail /var/log/zabbix/zabbix_server.log
2.node1
zabbix-release-3.4-2.el7-noarch.rpm
wget zabbix-release-3.4-2.el7-noarch.rpm
rpm -ivh zabbix-release-3.4-2.el7-noarch.rpm
yum repolist
yum install zabbix-agent zabbix-sender
cd /etc/zabbix
vim zabbix_agentd.conf
server=172.17.0.159
listenip=0.0.0.0
serverActive=172,17.0.159
hostname=node1.magedu.com
systemctl start zabbix-agent.service
ss -tnl
yum install redis
vim /etc/redis.conf
bind 0.0.0.0
systemctl start redis.service
ss -ntl 6379
visudo
zabbix ALL=(ALL) NOPASSWD:ALL
# befault requiretty
cd /etc/zabbix
vim zabbix_agent.conf
EnableRemoteCommands=1
LogRemoteCommands=1開啟記錄日誌
systemctl restart zabbix-agent.service
*在瀏覽器加入redist
configuration
hosts
item
redis status
zabbix agent
neet.tcp.service[redis,172.17.0.170,6379]
172.17.170.x:10050
numeric
5s
(new applicaition ) redis
add
monitoringg
latest data
redis
apply
hosts
trigger
creat
redis status down
.....
add
actions
action
redis service unavailable
trigger node1:redis service down
add
operation
5s
new
5m
1 1
remote command
current host
custom script
zabbix agent
sudo /usr/bin/systemctl restart redis service
add
add
recovery
send messages
admin
local_email
add
add
vmstat 1 查看
最後展示:
自定義graph
configuration
hosts
node1 graph點擊
create
interface traffic packets
exploded/normal/stacked/pie
item
add
rate of packets(in)
tate of packets(out)
select
add
monitoring
graphs
mysrvs node1 interface traffic packets
screens
node1.magedu.com monitoring graphs
2
2
add
編輯
screens
edit screen
change
maps
create
map
模版:
configuration
templates
create
template
redis stats
redis stats
db services
add
宏():
configuration Actions operation
Default subject:
Default message:
item
name redis listen status{$REDIS_PORT} 運用宏
key net.tcp.listen[{$REDIS_PORT}]
全局宏:
Administration
General Macros
{$SNMP_COMMUNITY} public
{$REDIS_PORT}
Update
//*在server的虛擬機在 安裝 redis
yum install redis
vim /etc/redis.conf
bind 0.0.0.0
systemctl start redis.service
//
zabbix
采集:agent/snmp/IPMI/jmx
設備:主機(hosts)-->主機組(hostgroups)
監控項(items)-->應用組(applications)
觸發器(triggers 表達式)--> trigger events
動作(actions CONDITIONS ,OPERATIONS ,RECOVERY OPERATIONS)
OPERATIONS:
remote command
send message-->USERS(media)
media type:
可視化:graph slide show map
監配控制:
術語:host group-->host -->application -->item-->trigger-->action(conditions operations)
graph
simple:每個item定義完成後自動生成
customed:用於將多個item的數據整合於一個圖形中展示
items:key+parameter(參數)
key:
zabbix內建
type:
agent(server:pull)被動模式
agent(active) (agent:push)主動模式
snmp v1
.....
用戶自定義(userprameter)
采集數據:item
采集到的數據類型:
數值:
整數
浮點數
字符數:
字符串
文本
存儲的值:
As is:不對數據做任何處理
Delta:(simple change) 本次采樣減去前一次采樣的值的結果
Delta:(speed per second)本次采樣減去前一次采樣的值,再除以經過的時長
trigger觸發器:界定某特定的item采集到的數據的非合理區間或非合理狀態:邏輯表達式
邏輯表達式:閾值 ;通常用於定義數據的不合理區間
ok:正常 狀態-->叫老的zabbix版本,其為true;
problem:非正常 狀態-->較老的zabbix版本,其為true
ok-->problem
pecovery:problem-->ok
定義觸發器的依賴關系
觸發器存在可調用的函數:
nodata()
last()
data()
time()
now()
dayofmonth()
觸發器表達式:
{hostname:key[paramters].function(arguments)}
> < = # (not equal)...
{n1.magedu.com:net.if.in[eno16777736,packets].last(#1)}>15
trigger間存在依賴關系:
zabbix server <--> router1 <--> host1
事件機制:
四種事件源:trigger discovery,auto regilstration internal
media:媒介
告誡信息的傳遞通道;
類型:
Email:郵件
script:自定義腳本
sms:短息
jabber :
ez texting:
接收信息的目標為zabbix用戶:
需要用戶上定義對應各種媒介通道的接收方式
Action:
conditions:
多個條件之間存在邏輯關系
展示接口:
graph:simple custom
screen:把多個graph整合於同一個屏幕進行展示
map
模版:
主機配置模版:用於連接至目標主機實現快速監控管理
link unlink unlink and clear
模版可繼承
宏:macro 預設的文本替換模式
級別
全局:Administration-->general -->macros 對所有主機所有模版都有效
模版:編輯模版-->macros 對於鏈接至此的主機都有效
主機:編輯主機-->macros 只對單個主機有效
類型:
內建:{MACRO_name}
自定義:{$MACRO_NAME}
命名方式:大寫字母,數字和下劃線;
action:
運行測試: zabbix_get -s 172.17.0.159 -p 10050 -k "net.tcp.listen[6379]"
vim /etc/redis.conf
tail /var/log/zabbix/zabbix_server.logs
hostnamectl set-hostname node1.magedu.com 修改主機名
ntpdate 172.17.0.xxx 同步時間
exec bash 刷新
高級用法:自定義
agent: user parameters (key值) 能不反回字符型數值就不返回字符型數值
key的使用:
如下:
node1:
systemctl start zabbix-agent.service
iptables -F
cd /etc/zabbix
cd zabbix_agent.d
vim memory_usage.conf
UserParameter=memory.used,free -m | awk '/^Mem/{print $3}'
UserParameter=memory.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}'
systemctl restart zabbix-agent.service
server:
systemctl start zabbix-server.service
systemctl start mariadb
systemctl start httpd
iptables -F
zabbix_get -s 172.17.0.170 -p 10050 -k "memory.used"
實例2:
1.node1
cd /etc/zabbix
cd zabbix_agent.d
yum install nginx php-fpm
vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
pm.status_path= /fpm-status php的狀態頁
ping.path= /ping
ping.response= pong
systemctl start php-fpm.service
ss -ntl 查看端口是否開啟
nginx反代PHP的頁面
vim /etc/nginx/nginx.conf
listen 80 default_service
location ~* \.php${
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* /(fpm-status|ping){
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include fastcgi_params
allow 127.0.0.1;
deny all;
access_log off;
}
nginx -t
systemctl start nginx.service
172.17.0.170:80/fpm-status
本機測試:
curl -s http://127.0.0.1/fom-status
//67:node
// :server
創建zabbix共享
vim php-fpm.conf
UserParameter=fpm.stats[*],curl -s http://127.0.0.1/fpm-ststus | awk '/^$1/{print $$NFF}'
systemctl restart zabbix-agent.service
server:
zabbix_get -s 172.17.0.170 -p 10050 -k "fpm.stata[idle]"
network discovery:
網絡發現是zabbix最具特色的功能之一 它能夠根據用戶事先定義的規則自動添加監控的主機或服務等
zabbix server掃描指定網絡範圍內的主機;
發現方式:
ip地址範圍
可用服務(ftp ssh http)
zabbix_agent的響應
snmp_agent的響應
分兩個階段:
discovery
action:把discvery events 當作前題條件;
發現:--》discovery events
Service Host
可采取的動作:
send message remote command
add/remove host
enable/disable host
add host to group
link template to host
..
Action:
網絡發現中的事件可以觸發action,從而自動執行指定的操作
配置網絡發現:
node2:68
rpm -ivh zabbix-release-3.4-2.el17.noarch.rpm
yum install zabbix-agent zabbix-sender
scp -r /etc/zabbix/* 172.17.0.172:/etc/zabbix
cd /etc/zabbix
vim zabbix_agentd.conf
Hostname=node2.magedu.com
systemctl start zabbix-agent.service
ss -tnl
configuration
Discovery
creat
test net
172.17.0.170-180
1m
check type: zabbix agent
key: system.uname
add
ip address
enable
add
Actions
Disscovery
Action
auto add host of test.net
operation
web監控:
監控指定的站點的資源下載速度,及頁面響應時間,還有響應代碼
一個站點 ,有多個頁面。
內建key:
web.test.in[Scenario,Step,bps]:傳輸速率
web.test.time[Scenario,Step]:響應時長
web.test.rspcode[Scenario,Step]:響應碼
主動/被動 檢測
被動檢測:相對於agent而言,agent server向agent請求獲取配置的各監控項相關的數據,agent接收請求,獲取數據並響應給server
主動檢測:相對於agent而言,agent(action)agent向server請求與自己相關監控項配置,主動的將server配置的監控項相關的數據發送給server
agent端所需要基本配置:
ServerActive =
Hostname=
HostnmaeItem=
zabbix_sender發送數據
zabbix server上的某主機上,直接定義item時隨便定義一個不與其它已有key沖突key即可 即item 為“zabbix trapper”;
configuration
hosts
web
creat
基於SNMP監控
SNMP:簡單網絡管理協議,基於tcp/ip 和udp協議 實現網絡設備之間交換監控,或管理信息
agent/nms
SNMP接口: 讀(get,getnext)寫(set)trap(陷阱);
161/udp 端口 被監控端
162/udp 端口 監控端
SNMP版本:
v1:1989
v2:1993
v3:1998
MIB:management Information Base
OID:Object Id
網絡設備:交換機,路由器
要想支持snmp先安裝包,linux啟用snmp的方法
1.node2:
yum install net-snmp
yum install net-snmp-utils
管控端只需要開啟snmptrapd.service
被管控端需要監控套接字只要開啟 snmpd.service
cd /etc/snmp
cp snmp.conf{,.bak}
vim snmp.conf
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
//view systemview included .1.3.6.1.4.1.2021
// view systemview included .1.3.6.1.2.1.25.1.1
systemctl start snmp.service
測試:
snmpget -v 2c -c public 172.17.0.x 1.3.6.1.2.1.1.3.0
snmpwalk -v 2c -c public 172.17.0.x
snmpget -h 獲取數據
定義ACL
.1.3.6.1.2.1.
1.1.0:系統描述信息
1.3.0:監控時間
1.4.0:系統聯系人信息
1.5.0:主機名
1.7.0:主機提供的服務
2.1.0:網絡接口數目
2.2.1.2 :網絡接口的描述信息
2.2.1.3:網絡接口類型snmp
......
JMX:監控 JMX本身就可連接套結字
tomcat主機設置
監控tomcat
/etc/sysconfig/tomcat 添加
CATALINA_OPTS=
zabbix-java-gateway主機設置:
安裝 zabbix-java-gateway程序包 啟動服務
zabbix-server端的設置:
JavaGateway=172.17.0.x
JavaGateway=10052
StartJavaPollers=5
zabbix proxy的配置
1.node2:
yum install java-1.8.0-openjdk-devel tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp
vim /etc/sysconfig/tomcat
CATALINA_OPTS=" -Djava.rmi.server.hostname=172.17.0.172 -Djavax.management.builder.initial= -Dco.sun.management.jmxremote
=true -Dcom.sun.management.jmxtemote.port=12345 -Dcom.sun.managemen.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
systemctl start tomcat.service
ss -tnl
2.server:
yum install zabbix-java-gateway
cd /etc/zabbix
vim zabbix_java_gateway.conf
systemctl restart zabbix-java-gateway.start
vim zabbix_server.conf
JavaGateway=172.17.0.159
JavaGatewayPort=10052
StartJavaPollers=5
systemctl restart zabbix-server.service
systemctl status zabbix-server.service
zabbix-proxy(代理):分布監控
1.新的虛擬機
ntpdate 172.17.0.x 同步時間
hostnamectl set-hostname zbxproxxy.magedu.com 修改主機名
exec bash刷新
yum install mariadb
vim /etc/my.cnf.d/server.cnf
skip_name_resolve =ON
innodb_file_per_table = ON
innodb_buffer_pool_size= 256M
log-bin =master-log
systemctl start mariadb.service
mysql
>create database zbxproxydb character set 'utf8';
>GRANT ALL ON zbxproxydb.* TO 'zbxproxyuser'@'172.17.0.%' IDENTFIED BY 'zbxproxypass'%;授權
>flush privileges; 刷新權限
node1:
scp zabbix-release-3.4-....noarch.rpm [email protected]/root
rpm -ivh zabbix-re.....
yum install zabbix-proxy
yum install zabbix-proxy-mysql zabbix-get zabbix-aget zabbix-sender
cd /etc/zabbix
rpm -ql zabbix-proxy-mysql
cp /usr/share/doc/zabbix-proxy-mysql-3-4.3/schema-sql.gz .
ls
zgip -d schema.sql.gz
mysql -uzbxproxyuser -h172.17.0.x -pzbxproxypass zbxproxydb < schema.sql
mysql
>use zbxproxdb;
>show tables;
>exit
cd /etc/zabbix
cp zabbix_proxy.conf{,.bak}
vim zabbix_proxy.conf
server=172.17.0.x , 代理ip
ServerPort=10051
Hostname=zbxproxy.magedu.com
listenport=10051
EnbleRemoteCommands=1
LogRemoteCommands=1
DBHost=172.17.0.x
DBName=zbxproxydb
DBUser=zbxproxyuser
DBPassword=zbxproxypass
ConfigFrequency=30
DataSenderFrequency=1
StartPoller=5
StartTrappers=5
StartPingers=1
StratHTTPPollers=1
ServerActive=172.17.0.70,172.18.0.69
systemctl start zabbix-proxy.service
systemctl status zabbix-proxy.service
Administration
proxies
creat
zbxproxy.magedu.com/ ip地址
add
configuration
hosts
creat
node2.magedu.com
node2
snmp hosts
172.17.0.x node2.magedu.com
zabbix.magedu.com
creat item
//vim /etc/hosts
//scp /etc/hosts nodex:/etc
zabix站點服務:
node1為例
yum install nginx
vim /etc/nginx/nginx.conf
server段進行配置
location /stub_status {
stub_status on;
access_log off;
// allow 127.0.0.1;
// deny all;
}
nginx -s reload
systemctl start nginx
cd /etc/zabbix
ls
mkdir -pv /srv/zabbix/libexec
cd /srv/zabbix/libexec
wget nginx.sh (瀏覽器上)
cat nginx.sh
chmod +x nginx.sh
cd /etc/zabbix/zabbix_agentd.d
wget userparameter ngnx.conf (網上下載)
物理機上安裝:
wget zbx_export_templates.xml(獲取模版)
configuration
templates
creat
選擇文件zbx prox
import
tempates
server:
zabbix_get -s 172.17.0.x -p 10050 -k "nginx.status[active]"
壓測一下:
ab -n 10000 -c 100 http://172.17.0.x/index.html
調優:
Database
歷史數據不要保存太長時長
盡量讓數據緩存在數據庫服務器的內存中
觸發器表達式:減少使用min() max()avg() 盡量使用last() nodata()
數據收集:polling較慢(減少使用SNMP/agent);盡量使用trapptrapping(agent (active));
數據類型:文本型數據處理速度較慢 盡量少收集類型為text或string 類型的數據 多使用類型為numeric的;
zabbix服務進程:
(1)服務器組件的數量
alerter discoverer escalator http poller hourekeeper icmp pingerr ipmi pooller trapper
configration syncer....
(2)設定合理的緩存大小
(3)數據庫優化
其他解決方案:
grafana:展示
collectd:收集
influxdb:存儲
grafana+ collectd+influxdb
prometheus:
exporter:收集
alertmanager
grafana:展示
openfalcon
Maintenance 服務維護,系統維護
zabbix監控系統的介紹及zabbix監控系統的高級應用