zabbix第一篇:zabbix安装及使用
一:搭建zabbix命令集
cat /etc/redhat-release
uname -r
getenforce
systemctl status firewalld.service
hostname -I
tail -1 /etc/hosts
#192.168.19.200 repo.zabbix.com mirrors.aliyun.com
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb.service
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
exit
zcat /usr/share/doc/zabbix-server-mysql-3.0.13/create.sql.gz|mysql -uzabbix -pzabbix zabbix
sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
systemctl start zabbix-server
systemctl start httpd
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent.service
yum install zabbix-get
zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]"
zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]"
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
一:zabbix服务端安装:
cat /etc/redhat-release
uname -r
getenforce
systemctl status firewalld.service
hostname -I
tail -1 /etc/hosts
#192.168.19.200 repo.zabbix.com mirrors.aliyun.com
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-web-mysql
yum -y install mariadb-server
systemctl start mariadb.service
mysql
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
exit
zcat /usr/share/doc/zabbix-server-mysql-3.0.13/create.sql.gz|mysql -uzabbix -pzabbix zabbix
sed -i.ori '115a DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
sed -i.ori '18a php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
systemctl start zabbix-server
systemctl start httpd
ip/zabbix
zabbix页面中英文语言类型修改
创建监控主机
二:zabbix服务端自我监控
yum install zabbix-agent
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent.service
yum install zabbix-get
zabbix_get -s 172.16.1.61 -p 10050 -k "system.cpu.load[all,avg1]"
三:添加zabbix客户端
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum install zabbix-agent
sed -i.ori 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent.service
#服务端测试
zabbix_get -s 172.16.1.21 -p 10050 -k "system.cpu.load[all,avg1]"
可刷新查看
没变绿查看模板是否添加上了
zabbix图形界面有乱码:
#服务端操作:
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
刷新
http://c.onealert.com/ucid/registerForABTest/register.jsp
认识zabbix其他界面
监控案例
实际需求:公司已经有了100台服务器,现在需要使用zabbix全部监控起来。
1. 先出个方案(规划)
常规监控:cpu,内存,磁盘,网卡 问题:怎样快速添加100台机器
方法1:使用克隆的方式
方法2:自动注册和自动发现
方法3:调用zabbix api接口 curl 、python
开发自己的运维平台兼容zabbix的通道
curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://10.0.0.61/zabbix/api_jsonrpc.php"
curl -i -X POST -H 'Content-Type:application/json' -d'
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"hostid",
"host"
],
"selectInterfaces": [
"interfaceid",
"ip"
]
},
"id": 2,
"auth": "6a450a8fc3dce71fd310cfe338746578"
}' "http://10.0.0.61/zabbix/api_jsonrpc.php"
服务监控,url监控等特殊监控:自定义监控
2. 具体的实施步骤
1. 全网监控技术要点分析
考试目标:使用zabbix将期中架构所有集群监控
具体内容:
一、硬件、系统、网络监控
所有集群节点(所有虚拟机)都监控上
交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)
snmp监控
二、应用服务监控
l 服务端口的监控测试
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.listen[80]'
1
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.listen[81]'
0
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[172.16.1.61,80]'
1
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[172.16.1.62,80]'
0
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[,80]'
1
添加监控项
l 进程监控测试(m01服务端)
zabbix_get -s 172.16.1.61 -p 10050 -k 'proc.num[httpd,]'
zabbix_get -s 172.16.1.61 -p 10050 -k 'proc.num[,apache]
添加模板,监控项,图形等等
部分服务器监控方案
1. 监控备份服务器方案
监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;
方法1:监控873端口net.tcp.port[,873]
方法2:模拟推送拉取文件
2. 监控NFS服务器方案
监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;
方法1:端口(通过111的rpc端口获取nfs端口) net.tcp.port[,111]
方法2:showmount -e ip|wc -l
3. 监控MySQL服务器方案
监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;
方法1:端口(通过3306的mysql端口) net.tcp.port[,3306]
方法2:mysql远程登录
方法3:使用zabbix agent自带的模板及key
l 没有权限访问 key中添加用户密码
4. 监控2台web服务器方案
监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;
方法1:端口(通过80的web端口) net.tcp.port[,80]
方法2:看网页状态码、返回内容==zabbix 自带WEB检测
5. 监控URL地址构建web场景
监控URL地址来更精确的监控我们的网站运行正常;
yum -y install nginx
echo ok >>/usr/share/nginx/html/check.html
浏览器测试 http://10.0.0.21/check.html
1) 建web场景
1) 步骤
1) 成功
1) 常见错误
步骤"监控check" [1之于1] 失败: Couldn't connect to server: Failed connect to 10.0.0.21:80; Connection refused
6. 监控反向代理服务器方案
监控反向代理服务器,PPTP服务器等你在期中架构部署的服务。
nginx,pptp
ntp 端口udp 123
7. 监控Nginx的7种连接状态
监控Nginx的7种连接状态。
====cache01操作=============zabbix客户端
vim /etc/nginx/nginx.conf
……
location /status {
stub_status on;
access_log off;
}
……
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx_status.conf
UserParameter=nginx_active,curl -s 127.0.0.1/status|awk '/Active/ {print $NF}'
UserParameter=nginx_accepts,curl -s 127.0.0.1/status|awk 'NR==3 {print $1}'
UserParameter=nginx_handled,curl -s 127.0.0.1/status|awk 'NR==3 {print $2}'
UserParameter=nginx_requests,curl -s 127.0.0.1/status|awk 'NR==3 {print $3}'
UserParameter=nginx_reading,curl -s 127.0.0.1/status|awk 'NR==4 {print $2}'
UserParameter=nginx_writing,curl -s 127.0.0.1/status|awk 'NR==4 {print $4}'
UserParameter=nginx_waiting,curl -s 127.0.0.1/status|awk 'NR==4 {print $6}'
编辑后重启zabbix客户端
zabbix 服务端命令测试
zabbix web页面添加监控模板,将它们放在同一图形中
由于三种总的状态和实时状态相差巨大,所以应该分两图显示,再做成聚合图形,这样更加美观,直观。
web页面在zabbix服务端用zabbix给的键值测试
zabbix_get -s 172.16.1.21 -p 10050 -k 'web.page.get[172.16.1.21,check.html]'
zabbix_get -s 172.16.1.61 -p 10050 -k 'web.page.get[172.16.1.21,check.html]'
zabbix_get -s 172.16.1.21 -p 10050 -k 'web.page.get[www.baidu.com]'
zabbix_get -s 172.16.1.21 -p 10050 -k 'web.page.get[www.etiantian.org]'
监控服务通用方法:
1. 监控端口 netstat ss lsof ==》 wc -l
2. 监控进程 ps -ef|grep 进程|wc -l 试运行一下
3. 模拟客户端的使用方式监控服务端
web ==》 curl
mysql ==》 select insert
memcache ==》 set再get
端口,进程,url监控也是大家都要的,所有zabbix也自带
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.listen[80]'
1
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.listen[81]'
0
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[172.16.1.61,80]'
1
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[172.16.1.62,80]'
0
[root@m01 ~]# zabbix_get -s 172.16.1.61 -p 10050 -k 'net.tcp.port[,80]'
1
进程
zabbix_get -s 172.16.1.61 -p 10050 -k 'proc.num[httpd,]'
zabbix_get -s 172.16.1.61 -p 10050 -k 'proc.num[,apache]'
监控URL
cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_login.conf
UserParameter=login-user,who|wc -l
systemctl restart zabbix-agent.service
systemctl restart zabbix-agent.service
1. 自定义监控(制作模板)
zabbix自带模板Template OS Linux (Template App Zabbix Agent)提供CPU、内存、磁盘、网卡等常规监控,只要新加主机关联此模板,就可自动添加这些监控项。
需求:服务器登录人数不超过3人,超过3人报警
自定义key能被server和agent认可
# 正确的key
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "system.uname"
Linux cache01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64
# 没有登记的,自定义的key
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user"
ZBX_NOTSUPPORTED: Unsupported item key.
# 写错的key
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "system.uname1"
ZBX_NOTSUPPORTED: Unsupported item key.
1.1 在agent注册
语法:
UserParameter=<key>,<shell command>
UserParameter=login-user,who|wc -l
UserParameter=login-user,/bin/sh /server/scripts/login.sh
[root@cache01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@cache01 zabbix_agentd.d]# vim userparameter_login.conf
UserParameter=login-user,who|wc -l
UserParameter=login-user2,who|wc -l
UserParameter=login-user3,who|wc -l
# key名字要唯一,多个key以行为分割
[root@cache01 zabbix_agentd.d]# systemctl restart zabbix-agent.service
# 在server检测
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user"
3
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user2"
3
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user3"
3
[root@m01 ~]# zabbix_get -s 172.16.1.21 -p 10050 -k "login-user4"
ZBX_NOTSUPPORTED: Unsupported item key.
1.2 在server注册(web操作)
1.2.1 创建模板
Template Login User
1.2.2 创建应用集
给监控项分类
1.2.3 创建监控项
监控的内容
1.2.4 创建触发器
当监控项获取到的值 达到一定条件时 就触发报警
1.2.5 创建图形
1.2.6 主机关联模板
2. 监控报警设置
one It sm
http://c.onealert.com/ucid/login.jsp
[root@m01 ~]# grep AlertScriptsPath /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@m01 ~]# cd /usr/lib/zabbix/alertscripts
wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.0.1.tar.gz
tar -zxf oneitsm_zabbix_release-1.0.1.tar.gz
cd oneitsm/bin
bash install.sh d13ad820-fc56-2f53-df59-992a9fe3aad3
什么时候发邮件:当状态改变的时候才会发邮件
好--坏
坏--好
2.2安装后后多的四个东西,重装得删除这四样
3. 监控可视化,图形和幻灯片
最新数据
图形
聚合图形
幻灯片
https://github.com/zhangyao8/zabbix-community-repos
4. 模板的共享
主机共享
https://github.com/zhangyao8/zabbix-community-repos
模拟试验:将所以集群用zabbix监控起来
具体内容:
一、硬件、系统、网络监控
所有集群节点(所有虚拟机)都监控上
二、应用服务监控
1. 监控备份服务器,简单方法是监控rsync端口,如果有其他更佳方案可以说明;
2. 监控NFS服务器,使用监控NFS进程来判断NFS服务器正常,如果有其他更佳方案可以说明;
3. 监控MySQL服务器,简单方法监控mysql的3306端口,或者使用zabbix提供的Mysql模板,如果有其他更佳方案可以说明;
4. 监控2台web服务器,简单方法监控80端口,如果有其他更佳方案可以说明;
5. 监控URL地址来更精确的监控我们的网站运行正常;
6. 监控反向代理服务器,PPTP服务器等你在期中架构部署的服务。
7. 监控Nginx的7种连接状态
1. zabbix自动发现与自动注册的简介
自动发现:zabbix Server主动发现所有客户端,然后将客户端登记自己的小本本上,缺点zabbix server压力山大(网段大,客户端多),时间消耗多。
自动注册:zabbix agent主动到zabbix Server上报到,登记;缺点agent有可能找不到Server(配置出错)
被动模式:默认,都是站在agent的立场上说话,agent被server抓取数据
主动模式:都是站在agent的立场上说话,agent主动的将数据发送给Server
两种模式都是在agent上的配置文件配置的
1.1 自动发现(被动模式)
第一步:zabbix Server安装完毕 (完成)
第二步:zabbix agent安装完毕,Server=172.16.1.61 (完毕)
第三步:网页上配置自动发现规则
1.2 自动注册(主动模式)
第一步:zabbix Server安装完毕 (完成)
第二步:zabbix agent安装完毕,需要额外增加的配置
vim /etc/zabbix/zabbix_agentd.conf
ServerActive=172.16.1.61
# Hostname=Zabbix server
HostnameItem=system.hostname
systemctl restart zabbix-agent.service
netstat -tunlp|grep zabbix
看日志
第三步:Server上做hosts解析
echo "172.16.1.21 cache01" >> /etc/hosts
第四步:网页上配置自动注册
主机没有添加上,等候时间
2. 分布式监控
zabbix Server ===》 zabbix agent (只能同一个局域网监控)
分布式监控:
a. 分担压力,降低负载
zabbix Server ===》 zabbix proxy ===》zabbix agent1 agent2 agent3 。。。
172.16.1.61 172.16.1.21 172.16.1.0/24
===》 zabbix proxy ===》zabbix agent4 agent5 agent6 。。。
b. 多机房监控
zabbix Server(北京) ==》 zabbix proxy(每个机房搭建) ==》 zabbix agent
122.71.240.233/172.16.1.61 122.71.241.11/172.16.2.21 172.16.2.0/24
环境
ZABBIX SERVER m01
zabbix proxy cache01
zabbix agent cache01
第一步:在代理机cache01安装zabbix proxy
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
yum -y install zabbix-proxy-mysql
第二步: 配置zabbix proxy,并在zabbix网页登记
zabbix proxy也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息
# 安装数据库
yum -y install mariadb-server
systemctl start mariadb.service
#建库 创建用户授权
mysql
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
exit
# 导入数据库文件
zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy
# 配置zabbix proxy连接数据库
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
systemctl start zabbix-proxy.service
sed -i 's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf
systemctl start zabbix-proxy.service
第三步:agent 指向 proxy
[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.61
ServerActive=172.16.1.61
[root@cache01 ~]# sed -i 's#172.16.1.61#172.16.1.21#g' /etc/zabbix/zabbix_agentd.conf
[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.conf
Server=172.16.1.21
ServerActive=172.16.1.21
[root@cache01 ~]# systemctl restart zabbix-agent.service
tailf /var/log/zabbix/zabbix_proxy.log
小结:以前内容全部属于zabbix agent方式监控
错误:
有server运行时,启动proxy起不来,但命令行看不出,杀掉server,启动proxy
3. SNMP监控
无法安装agent 很多前辈的监控软件都可以监控各种设备 都是通过snmp监控
snmp simple network manager protocol 简单网络管理协议
yum -y install net-snmp net-snmp-utils
配置snmp
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
systemctl start snmpd.service
http://www.ttlsa.com/monitor/snmp-oid/ .1相关权限问题
使用SNMP
[root@db01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname
# snmpwalk 类似 zabbix_get
# -v 2c 指定使用snmp协议的版本 snmp分为v1 v2 v3
# -c public 指定暗号
# sysname 类似zabbix的key
[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: m01
[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 IfNumber
IF-MIB::ifNumber.0 = INTEGER: 3
[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 IfDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
问题:
客户端配置案例
# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf PidFile=/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=zabbix.xx.com,10.x.x.x,10.x.x.x ListenPort=10050 ListenIP=10.x.x.x StartAgents=32 ServerActive=zabbix.xxx.com Hostname=otter007.axx.axxs.com Timeout=30 AllowRoot=0 Include=/etc/zabbix/zabbix_agentd.d/ UnsafeUserParameters=1