Zabbix学习-Shuttle.L-运维学习笔记

Zabbix学习

一、Zabbix介绍:

  • zabbix是一个基于WEB界面(php开发)的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
  • zabbix由zabbix server与可选组件zabbix agent两部门组成。两者都是c语言开发
  • zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。c/s和b/s结构
  • zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

zabbix中国官网:https://www.zabbix.com/cn

二、Zabbix特点:

  • 安装与配置简单,学习成本低
  • 支持多语言(包括中文)
  • 免费开源
  • 自动发现服务器与网络设备
  • 分布式监视以及WEB集中管理功能
  • 可以无agent监视
  • 用户安全认证和柔软的授权方式
  • 通过WEB界面设置或查看监视结果
  • email等通知功能

三、主要监控状态

  • CPU负荷
  • 内存使用
  • 磁盘使用
  • 网络状况
  • 端口监视
  • 日志监视

四、各组件介绍:

  • zabbix agent(10050):部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
  • zabbix server(10051):负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
  • zabbix database(3306):用于存储所有zabbix的配置信息、监控数据的数据库。
  • zabbix web(80):zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
  • zabbix proxy(10051):可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端,解决监控主机多、server性能不够、延迟大、跨机房问题。
  • Zabbixjavagateway(10052):用于监控tomcat的插件
  • Zabbixdbforbix:用于监控数据库的插件

zabbix架构图:
zabbix架构

五、Zabbix安装(二进制安装)

1.关闭防火墙、selinux、iptables
2.安装数据库
安装依赖包,安装cmake,解压数据库安装包
预编译编译指定路径安装,msyql_secure_installation初始化,进入数据库
创建zabbix库,设置编码utf8,grant授权并创建zabbix数据库用户密码
导入sql文件,路径为/zabbix-3.0.7/database/mysql的三个sql(yum安装的sql为/usr/share/doc/zabbix-server-mysql*/create.sql)
3.安装zabbixserver 10051端口
新增zabbix组zabbix系统用户,安装依赖包,jkd,cmake,解压zabbix安装包
预编译编译指定路径安装,zabbix目录路径权限所有者改为zabbix
安装httpd服务(yum安装提供页面访问,修改php.ini文件:连接数内存大小时区等),将zabbix安装包里的frontends目录下的文件复制到/var/www/html目录下
修改配置zabbix_server.conf文件(修改数据库链接实例用户密码等),去sbin目录,指定zabbix_server.conf启动,启动后ps查看进程
4.登录http://ip地址/zabbix,进行配置页面,确认配置,填写数据库连接配置、zabbix信息后,生成zabbix.conf.php文件后,进入zabbix登录页面,账户密码Admin/zabbix

六、Zabbix-agent安装

也有多种方式安装,此处使用tar包与rpm包安装
都需要关闭防火墙跟selinux
Tar包:
1.Agent服务器新建zabbix组及系统用户,上传tar包
进入解压后目录下bin目录,建立zabbix-get 与zabbix-sender的软连接到/usr/bin目录下
进入解压后目录下sbin目录,建立zabbix-agent的软连接到/usr/sbin目录下
进入解压目录后的conf目录,将conf文件复制到/etc目录下
2.修改/etc目录下的conf文件
Server=zabbix服务器地址(proxy地址)
ServerActive=zabbix服务器地址(proxy地址)
Hostname=zabbixweb上配置的hostname一致(proxy主机名)
zabbix目录路径权限所有者改为zabbix
3.拷贝启动脚本到/etc/init.d下,赋予执行权限,启动
rpm包安装:
1.rpm -ivh zabbix-agent-3.4.4-2.el7.x86_64.rpm
2.修改/etc/zabbix_agent.conf
Server=zabbix服务器地址
ServerActive=zabbix服务器地址
Hostname=zabbixweb上配置的hostname一致
3.Systemctl start zabbix-agent

Agent利用Ansible批量部署
1、使用命令生成密钥。
2、将公钥发送到所有安装zabbix客户端的主机。
3、安装 ansible 软件,(修改配置文件,将zabbix 客户机添加进组)。
4、创建一个安装zabbix客户端的剧本playbook。
5、执行该剧本。
6、验证。

七、Zabbix-proxy安装

1.安装数据库及proxy:
yum install -y mariadb-server##proxy安装数据库,启动数据库systemctl start mariadb
yum install -y zabbix-proxy-mysql##安装proxy
mysql_secure_installation#数据库初始化
导入路径/usr/share/doc/zabbix-proxy-mysql-4.0.5/下的sql
2.修改zabbix_proxy.conf配置文件
Server=zabbixserverIP
ServerPort=10051(端口一样,一般不与server装一台)
DBName=zabbix_proxy
DBUser=zabbix
DBPasswprd=redhat
3.启动zabbix-proxy,进入zabbixWEB页面-管理-agent代理程序-创建代理
zabbixproxy
创建监控时,选择由proxy代理
zabbixproxy

八、grafana安装.

1.下载grafana的rpm包wget https://dl.grafana.com/oss/release/grafana-7.5.3-1.x86_64.rpm
2.RPM -ivh grafana-7.5.3-1.x86_64.rpm
3.Systemctl start grafana

九、Zabbix+grafana应用

1.在grafana上安装zabbix插件 grafana-cli plugins install alexanderzobnin-zabbix-app
2.重启grafana,进入config界面设置zabbix插件为enable
点击”Configureation”-“Data Sources”-“Add data source”
name:是登录grafana的用户名,默认是admin
url:http://x.x.x.x/api_jsonrpc.php
zabbix api details : Admin/zabbix zabbix web界面的登录账号和密码:Admin/zabbix
3.新增面板,配置面板展示的监控项

十、zabbix常用触发器表达式及监控等级

zabbix表达式,多种函数
AVG:十分钟平均值小于5:avg(10m)<5
Count:最近30分钟zabbix.zabbix.com这个主机超过5次不可到达:count(30m,0)>5
Last:最新值>5:last()>5
Min:十分钟内磁盘空间小于10G:Min(10m)<10G
max:十分钟内磁盘空间大于10G:Max(10m)>10G

6个告警等级:
未分类、信息、警告、一般严重、严重、灾难

十一、zabbix监控应用思路

监控路由器交换机等网络设备

1.开启路由器交换机snmp服务
2.监控服务器安装net-snmp各种工具,服务器端使用snmpwalk命令测试是否又返回值
3.进入web页面创建主机、配置snmp接口IP+端口161,根据设备类型和型号选择链接模板(自定义模板可以根据snmpwalk的输出中找到对应的oid创建监控项、创建触发器,),配置设备的团体字、用户名密码
4.等待监控信息

监控tomcat

##zabbix编译安装时 --enable-java zabbix_server.conf配置javaGateway地址端口(10052端口)
1.启动zabbix-java-gateway
2.配置tomcat jmx
#Vi catalina.sh 修改tomcat地址端口号
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=tomcat端口
-Djava.rmi.server.hostname=tomcat地址"
重启tomcat
3.jmx开启测试确认:
打开Windows端,确认安装有jdk,打开jconsole输入tomcat地址端口号链接确认
或linux端安装cmdline-jmxclient,输入
java -jar /usr/local/tomcat/cmdline-jmxclient-0.10.3.jar - Tomcat地址:端口 java.lang:type=Memory HeapMemoryUsage
4.可根据jconsole的Mbean下的OjectName及名称创建自定义的jmx模板
5.创建监控主机,链接模板,等待数据验证

监控nginx

通过自定义键值,引入脚本,根据脚本实现Nginx服务的监控
##nginx编译安装需要加上该选项–with-http_stub_status_module
1.修改nginx.conf的server模块,开启监控功能:stub_status on,重启NGINX
2.查看页面是否输出监控数据curl http://nginx服务器地址:端口/status
3.新增agent端配置文件
vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
4.新增nginx状态获取的shell脚本
#vim /etc/zabbix/zabbix_agent.d/nginx_monitor.sh
5.授权脚本nginx_monitor.sh
#chmod +x nginx_monitor.sh
6.重启agent服务
#systemctl restart zabbix-agent
7.服务器端配置
查看server是否获取到agent端的key值
zabbix_get -s agent地址 -k nginx_status[active]
输出键值
根据键值新增模板,定义监控项,新增触发器,创建监控主机,填写agent代理接口,链接模板,等待数据验证

监控php-fpm(php进程管理器)

1.启用php-fpm的状态功能:vim /etc/php-fpm.d/www.conf 重启php服务
2.Nginx中开启访问php-fpm状态,curl测试访问
3.在zabbix_agent.d目录下新增键值配置文件php_status.conf与监控脚本php_status.sh并授权
4.到web页面新增监控项(键值+状态名称)、配置触发器

监控数据库

1.编写数据库检测脚本
2.在zabbix_agent.d下目录新增userparameter_mysql.conf文件配置键值,重启zabbixagent
3.进入web页面,添加链接模板,自带的数据库链接模板(没有模板的可以创建自定义模板)
4.等待观察监控信息

DBforbix
DBforBIX是一个协助zabbix监控关系型数据库的插件(相当于代理),它通过jdbc方式监控数据库,利用它我们可以很轻松的监控相关的数据库。它是Orabix、MysqlBix、PostBix集成与扩展,我们可以把Dbforbix装在zabbix server上,也可以安装在每台数据库服务器上。
步骤:
解压后修改连接zabbixserver的地址,db链接实例(用户名密码url)
启动DBforbix,进入web页面创建主机选择代理、链接模板,即可

监控redis(非关系型数据库-存储数据结构)

1.编写redis状态检测脚本到zabbix/scrpict目录下
2.在zabbix_agent.d下目录新增userparameter_redis.conf文件配置键值,重启zabbixagent
3.进入web页面,添加链接模板,自带的数据库链接模板(没有模板的可以创建自定义模板)
4.等待观察监控信息

监控日志

通过自定义键值,引入脚本,根据脚本实现服务的日志监控
1.zabbix_agent.conf配置文件中引入配置文件
2.新增配置文件:
#vim /etc/zabbix/zabbix_agent.d/userparameter_log.conf
配置内容,设置键值
UserParameter=test_log,/etc/zabbix/script/logs/log_usercenter-service.sh
UserParameter=usercenter_count,/etc/zabbix/script/logs/count_eq-usercenter-service.sh
3.自定义脚本,
监控日志中出现error的数量(tail -n | wc -l)统计,赋予脚本777权限,重启agent
4.创建主机,创建监控项(键值是/etc/zabbix/zabbix_agent.dparameter_log.sh设置的),创建触发器

十二、自动化监控-自动发现

自动发现(server端轮询网段扫描发现agent)
工作流程:
创建自动发现>指定条件(IP段、时间间隔、设备类型、服务类型、状态)>启动自动发现>添加动作(触发条件、操作为添加主机与添加动作链接模板)>保存规则
自动发现的操作
发送消息
添加/删除主机
启用/禁用主机
添加主机到组
从组中删除主机
将主机链接到模板/从模板中取消链接
执行远程脚本命令

十三、实现发送邮件功能

1.进入web页面点击管理>点击报警媒介类型>选择email-填写邮箱服务器的地址、端口、以及邮箱用户名称和密码(客户端授权码)等,并勾选已启用
2.配置收件人邮箱,依次点击:管理—>用户,点击要收到邮件的用户
3.点击报警媒介—>添加,填写收件人邮箱地址,其余的根据需要选择,点击添加—>更新
4.创建动作(触发动作的条件,触发后的操作为发送信息)、操作和恢复操作设置(告警内容与回复内容设置)、观察动作状态

十四、zabbix常用监控项

Windows系统

内存 :
vm.memory.size[free] 系统可用内存量
vm.memory.size[total] 系统总共内存量

swap空间 system.swap.size[,free]
system.swap.size[,total] swap情况

CPU system.cpu.util[,avg1] 系统CPU平均1min的利用百分比
system.cpu.util[,avg5] 系统CPU平均5min的利用百分比
system.cpu.util[,avg15] 系统CPU平均15min的利用百分比
system.cpu.load[percpu,avg1] 系统CPU总负载/在线cpu个数平均1min的利用百分比
system.cpu.load[percpu,avg5] 系统CPU总负载/在线cpu个数平均5min的利用百分比
system.cpu.load[percpu,avg15] 系统CPU总负载/在线cpu个数平均15min的利用百分比
perf_counter["\Processor(_Total)% User Time"] 系统CPU使用时间百分比情况
perf_counter["\Processor(_Total)% Processor Time"] 系统CPU使用负载百分比情况

磁盘空间(可用量) vfs.fs.size[{#FSNAME},free] 可用磁盘空间大小
磁盘空间(使用百分比) vfs.fs.size[{#FSNAME},pfree] 可用磁盘空间大小占分区总磁盘空间的百分比
磁盘空间(总量) vfs.fs.size[{#FSNAME},total] 分区总磁盘空间大小
磁盘空间(使用量) vfs.fs.size[{#FSNAME},used] 已使用磁盘空间大小

I/O (读) perf_counter[\2\16] 磁盘读取量 (bytes)
I/O (写) perf_counter[\2\18] 磁盘写入量 (bytes)
I/O (读队列) perf_counter[\234(_Total)\1402] 磁盘读取队列数
I/O (写队列) perf_counter[\234(_Total)\1404] 磁盘写入队列数

网络流量(进口) net.if.in[{#IFNAME}] 网络进接口流量 (bps)
网络流量(出口) net.if.out[{#IFNAME}] 网络出接口流量 (bps)

系统
proc.num[] 系统中总进程数量
perf_counter[\2\250] 系统中线程的数量
system.uname 系统详细信息
system.uptime 系统开启持续时间
system.localtime 系统时间

Agent agent.ping 检查客户端可用性
agent.version 检查客户端使用版本
agent.hostname 客户端主机名

程序内存/虚拟内存
proc_info[,] 程序内存、虚拟内存监控:
process - process name
attribute - requested process attribute(vmsize,wkset内存)
type -min,max,avg,sum
eg:proc_info[NewImport.exe,vmsize,sum] NewImport.exe的内存使用情况
程序PID监控
perf_counter[counter,] 监控程序Pid
counter-"\Process(reportserver)\ID Process"

linux系统

内存
vm.memory.size[available] 系统中已用内存量
vm.memory.size[total] 系统总共内存量

swap空间
system.swap.size[,free]swap空余交换空间
system.swap.size[,pfree]

system.swap.size[,total]swap总交换空间

CPU system.cpu.switches 系统文件切换 (bps)
system.cpu.util[,user] 类似于对应系统中top命令查看CPU显示值
system.cpu.util[,nice]
system.cpu.util[,system]
system.cpu.util[,iowait]I/O等待
system.cpu.util[,idle]
system.cpu.util[,interrupt]
system.cpu.util[,steal]
system.cpu.util[,softirq]
system.cpu.load[percpu,avg1] 系统CPU总负载/在线cpu个数平均1min的利用百分比
system.cpu.load[percpu,avg5] 系统CPU总负载/在线cpu个数平均5min的利用百分比
system.cpu.load[percpu,avg15] 系统CPU总负载/在线cpu个数平均15min的利用百分比

磁盘空间(可用量) vfs.fs.size[{#FSNAME},free] 可用磁盘空间大小
磁盘空间(使用百分比) vfs.fs.size[{#FSNAME},pfree] 可用磁盘空间大小占分区总磁盘空间的百分比
磁盘空间(总量) vfs.fs.size[{#FSNAME},total] 分区总磁盘空间大小
磁盘空间(使用量) vfs.fs.size[{#FSNAME},used] 已使用磁盘空间大小
磁盘空间(节点数占用) vfs.fs.inode[{#FSNAME},pfree] 可用磁盘节点数占总节点数的百分比(iNode节点数)

网络流量(进口) net.if.in[{#IFNAME}] 网络进接口流量 (bps)
网络流量(出口) net.if.out[{#IFNAME}] 网络出接口流量 (bps)

系统
proc.num[] 系统中总进程数量,通过top查看
proc.num[,run] 系统中处于running的进程,通过top查看
system.localtime 系统时间
vfs.file.cksum[/etc/passwd] 系统文件passwd的文件总数
system.boottime 系统启动的时间戳
system.hostname 系统名称
system.cpu.intr 设备中断
system.uname 系统详细信息
system.users.num 登陆系统的用户数
system.uptime 系统开启持续时间
kernel.maxfiles 系统支持打开文件的最大数量
kernel.maxproc 系统支持打开进程的最大数量

Agent agent.ping 检查客户端可用性
agent.version 检查客户端使用版本
agent.hostname 客户端主机名

端口 net.tcp.listen[port] 监控程序端口启用

监控mysql数据库

吞吐量
Com_select:select查询语句个数/每秒
Com_insert:insert操作语句个数/每秒
Com-update:update操作语句个数/每秒
Com-delete:delete操作语句个数/每秒

查询性能
Slow_queries:慢查询数量(查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令: show global variables like ‘long_query_time’;)

连接情况
Threads_connected:当前打开的数据库连接数
max_connections:数据库当前的最大连接数

缓冲池使用情况
缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。

监控tomcat

堆内存监控
jmx[“java.lang:type=Memory”,“HeapMemoryUsage.max”]堆内存最大值
jmx[“java.lang:type=Memory”,“HeapMemoryUsage.committed”]已提交堆内存
jmx[“java.lang:type=Memory”,“HeapMemoryUsage.used”]已用堆内存

内存池监控
jmx[“java.lang:type=MemoryPool,name=PS Old Gen”,Usage.used]内存池使用空间
jmx[“java.lang:type=MemoryPool,name=PS Old Gen”,Usage.committed]内存池已提交空间
jmx[“java.lang:type=MemoryPool,name=PS Old Gen”,Usage.max]内存池最大空间

tomcat线程监控
总开启线程数jmx[“java.lang:type=Threading”,“TotalStartedThreadCount”]
活动线程数jmx[“java.lang:type=Threading”,“ThreadCount”]
线程峰值数jmx[“java.lang:type=Threading”,“PeakThreadCount”]
最大线程数jmx["Catalina:type=ThreadPool,name=“http-bio-8080"”,maxThreads]
当前线程数jmx["Catalina:type=ThreadPool,name=“http-bio-8080"”,currentThreadCount]
繁忙线程数jmx["Catalina:type=ThreadPool,name=“http-bio-8080"”,currentThreadsBusy]

Tomcat接收发送流量监控
接收流量jmx["Catalina:type=GlobalRequestProcessor,name=“http-bio-8080"”,bytesReceived]
发送流量jmx["Catalina:type=GlobalRequestProcessor,name=“http-bio-8080"”,bytesSent]

tomcat请求数和出错数监控
请求数jmx["Catalina:type=GlobalRequestProcessor,name=“http-bio-8080"”,requestCount]
出错请求数jmx["Catalina:type=GlobalRequestProcessor,name=“http-bio-8080"”,errorCount]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值