1. 程式人生 > >zabbix監控系統的介紹及zabbix監控系統的高級應用

zabbix監控系統的介紹及zabbix監控系統的高級應用

linux

監控系統: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監控系統的高級應用