zabbix监控系统

zabbix监控系统
zabbix监控系统:
是一个分布式的C语言编写高性能开源监控工具
分为server端和agent端
server端负责整个agent发回的数据,进行分析,保存与现实
agent需要装在每一个监控节点,根据监控项的设置可以进行监控数据的收集

zabbix在程序架构上,收集数据采用的是C/S架构,展示数据采用的是B/S架构

zabbix的监控模式:主被动模式(针对客户端而言)
被动模式(默认模式):
1、首先server端会向agent端建立连接
2、发送需要的监控项信息给agent
3、agent收集每个监控项所需的数据,然后发回给服务端
4、服务端收到后,处理,分析及保存显示数据给用户,然后断开连接

特点:被动模式中,连接和请求的发起都是由服务端完成,如果网络中监控的主机过多,服务端需要同时向多个主机建立连接,由此会对服务端造成很大的压力,属于一对多的关系

主动模式:
1、当agent端启动时,就会主动的向server发起连接,索要监控项内容
2、server端收到后,会将监控信息返回给agent(包含监控项及每个监控项的监控周期)
3、agent收到后将监控内容保存,然后准备定期返回server端
agent收到监控项信息后
1、每当达到一个监控周期时,会主动的想server端建立连接
2、连接建立后,将自己再这一瞬间收集到的监控数据发送给server端
3、服务端收到后,处理,分析保存显示数据给用户,然后断开连接

特点:主动模式中,连接和请求的发起等候室客户端自己完成,每一个客户端只需要维持自己和服务端的连接即可,在性能和降低服务器压力方面有较大的改善

zaabix的基本架构:
1、server-agent(通用架构):由server端直接连接agent端
2、server-proxy-agent:由proxy代理程序去收集agent端的相关数据,整合好以后再统一发给server
3、master-node-agent:node自身实际上就是一个zabbix_server,可以实现和proxy一样的效果,用于收集小部分主机的监控数据,然后整合发送给master,每一个node节点也可以当做独立server来使用

zabbix服务端的默认端口号:10051
zabbix代理端的默认端口号:10050

zabbix监控项:
由键和值组成,监控项有自己的名称,会通过调用对应键的值,来展示监控的内容,监控项可以和图标进行连接,从而使图标展示监控项监控的内容
所以监控项中包含了键和值,和图标之间属于相关联的关系

zabbix的自定义监控项:
在agent端的配置文件上使用UserParameter参数可以定义自定义监控项所需要的键和值,键的名称可以自己制定,值是linux命令执行结果,键和值用逗号隔开
UserParameter(User/pan/ruo/mi/ter)
例如:
UserParameter=mysql.ping,mysqladmin -uzabbix -p123123 -h192.168.100.100 ping |grep alived |wc -l

额外补充:cut命令中-f表示取哪一列,-d""表示以什么作为分隔符

监控项:
CPU jumps:表示CPU中的进程切换次数

自动以监控项的设置流程:
首先在agent的配置文件中,使用UserParameter参数定义键和值,等号后面先写上键的名字,然后用逗号分隔,后面写上一个命令行中的命令,这个命令的执行结果就是键的值,配置完成后,重启agent端程序,然后进入图形界面,添加监控项,并且设置监控项和键的关联

触发器:
当监控数值,达到设置的阈值时,就会触发报警信息

zabbix安装及被动模式简单操作
=zabbix安装及被动模式简单操作==
环境部署
systemctl stop firewalld
setenforce 0
###确保主机联网,必须同步时间
ntpdate ntp1.aliyun.com

==安装zabbix_server所需要的依赖
===方法一本地安装=
mkdir /root/zabbix
cd /root/zabbix
#将提前下载好的依赖包放入zabbix目录中
createrepo ./
##修改本地yum源文件,将baseurl路径改为zabbix的绝对路径
yum clean all
yum makecache

###安装LAMP和依赖包
yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate

==方法二阿里云镜像源安装=
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache

yum -y install net-snmp net-snmp-devel libxml2 libxml2-devel libcurl-devel libevent libevent libevent-devel curl curl-devel mysql-devel snmp perl-DBI php-xml php-bcmath php-mbstring php-ldap php-xmlrpc httpd php php-mysql php-common php-gd php-odbc php-pear gcc* net-snmp libssh2 libssh2-devel mariadb-server mariadb mariadb-devel ntpdate

====启动数据库及apache=
systemctl start mariadb
systemctl enable mariadb
mysqladmin -uroot password 123123

systemctl start httpd
systemctl enable httpd

====源码安装zabbix=
tar -xf zabbix-3.4.2.tar.gz -C /usr/src
cd /usr/src/zabbix-3.4.2
####注意,如果只是作为agent使用那么在编译时可以去掉–enable-server
##–with-net-snmp模块可以对网络设备进行监控,如路由器、交换机等
##–enable-java如果使用zabbix监控服务器中的java程序需要增加该模块,如tomcat
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 && make && make install

#创建日志目录
mkdir /usr/local/zabbix/logs
====配置zabbix所需的数据库环境=
cd /usr/src/zabbix-3.4.2/database/mysql

mysql -uroot -p123123
create database if not exists zabbix default character set utf8 collate utf8_general_ci;
use zabbix;
#####注意,一下恢复语句,顺序不能乱
source /usr/src/zabbix-3.4.2/database/mysql/schema.sql;
source /usr/src/zabbix-3.4.2/database/mysql/images.sql;
source /usr/src/zabbix-3.4.2/database/mysql/data.sql;
####创建zabbix用户
grant all on zabbix.* to zabbix@‘192.168.40.13’ identified by ‘123123’;
flush privileges;

=创建zabbix程序用户
useradd -M -s /sbin/nologin -r zabbix
chown -R zabbix:zabbix /usr/local/zabbix/

====生成zabbix启动脚本=
cp -p /usr/src/zabbix-3.4.2/misc/init.d/tru64/* /etc/init.d/
chmod 775 /etc/init.d/zabbix_agentd
chmod 775 /etc/init.d/zabbix_server
sed -i ‘/DAEMON/ s@local/@local/zabbix/@g’ /etc/init.d/zabbix_server
sed -i ‘/DAEMON/ s@local/@local/zabbix/@g’ /etc/init.d/zabbix_agentd

====修改zabbix_server主配置文件
vim /usr/local/zabbix/etc/zabbix_server.conf

LogFile=/usr/local/zabbix/logs/zabbix_server.log ###指定日志存放位置
PidFile=/tmp/zabbix_server.pid ###指定pid存放位置
DBHost=192.168.40.13 ###指定数据库所在主机IP
DBName=zabbix ###zabbix专用数据库名称
DBUser=zabbix ###指定用什么用户名使用数据库
DBPassword=123123 ###用户所对应的密码
DBSocket=/var/lib/mysql/mysql.sock
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf ##除了应用以上参数外,还需要应用该参数目录中的配置文件中的参数
Timeout=20 ###超时时间,当监控项较多或主机较多时,应该调大该值,但注意不要超过30秒

======修改zabbix_agentd主配置文件=
vim /usr/local/zabbix/etc/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid ###指定PID文件
Server=127.0.0.1,192.168.40.13 ###server端所在主机的IP地址,在被动模式下允许该IP的server端来连接我
#StartAgents=0 ###在被动模式下,可以开启agent的进程数量,默认值为5,0表示关闭zabbix被动模式
ServerActive=192.168.40.13 ###server端所在主机的IP地址,在主动模式下I去连接该P的server端
Hostname=server.zabbix.com ###定义agent主机名称,该名称用于在图形界面增加agent主机时所用,注意图形界面的名称和这个名称必须一样
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log ###指定日志存放位置
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

====使用service启动zabbix的server和agent查看是否能启动
service zabbix_server start
service zabbix_agentd start
####查看端口是否开启,server默认端口号10051,agent默认端口号10050
netstat -anpt |grep zabbix

=生成zabbix监控网页=
cp -rp /usr/src/zabbix-3.4.2/frontends/php /var/www/html/zabbix
chown -R apache:apache /var/www/html/zabbix/

==优化php,设置zabbix所需的最低参数=
878 date.timezone = Asia/Shanghai ##指定失去
384 max_execution_time = 300 ##php程序上传你文件解析数据时的超时时间(php脚本的执行时间限制)
394 max_input_time = 300 ##单位秒,通过POST、GET以及PUT方式接收数据时间进行限制
672 post_max_size = 32M ##POST 方式请求数据所允许的最大大小
405 memory_limit = 128M ##设置php程序的内存限制
854 extension=bcmath.so ##加载zabbix程序需要加载的扩展模块bcmath.so

##重启apache
systemctl restart httpd

网页安装
192.168.40.13/zabbix ###server端ip地址加zabbix网页目录名称

#####页面一

Database type [MySQL] ##使用的数据库类型
Database host [192.168.40.13] ##数据库IP
Database port [3306] ###数据库端口号
Database name [zabbix] ###库的名称
User [zabbix] ###用户名
Password [123123] ###密码

#####页面二

Host [192.168.40.13] ###zabbix_server端IP
Port [10051] ###端口号
Name [ ]

#####登录zabbix
默认用户:admin
默认密码:zabbix

zabbix页面优化
#######设置中文
点击右上角小人,在语言楚选择中文即可

#######解决zabbix图形界面中文乱码问题
cd /var/www/html/zabbix/fonts/
mv DejaVuSans.ttf DejaVuSans.ttf.bak
####将msyh.ttf字体包拖入该目录,并改名为DejaVuSans.ttf

######添加监控主机和监控项
1、点击左上角配置
2、点击主机
3、点击右上角创建主机
4、填写agent配置文件中设置的主机名称
5、群组可选可不选,该项是为了之后批量设置监控项
6、点击模板中的选择
7、选择Template App HTTP Service、Template DB MySQL、Template OS Linux等看实体情况选择,根据agent端实际安装的服务进行选择
8、点击浅色的添加后,再点击深色的添加
9、点击左上角检测中下的图形
10、在右侧选择你要查看监控的主机及监控项

#####自己增加图形
1、点击配置下的主机中的图形
2、右上角创建图形
3、定义图形名称,如http_status
4、在监控项点击增加,选择要增加的监控项
5、选择深色的增加即可

=在监控项中我们可以看到有很多监控项写的不支持,以下为解决办法
===针对mysql监控项优化=
###########################1.修复mysql启停状态的监控########################
1、点击配置下的主机中的图形
2、右上角创建图形
3、定义图形名称,如mysql_status
4、在监控项点击增加,选择mysql_status
5、选择深色的增加即可

####修改agent主配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

#####增加以下内容,下方内容表示,将后方命令的执行结果作为zabbix中mysql键的ping值
##mysqladmin -uzabbix -p123123 -h192.168.40.13 ping |grep -c alive通过该命令可以确定mysql是否能启动,当过了的结果为1时表示启动,为0时表示关闭
UserParameter=mysql.ping,mysqladmin -uzabbix -p123123 -h192.168.40.13 ping |grep -c alive

###########################2、修复mysql版本号的监控##########################
####修改agent主配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

#####增加以下内容,mysql -V可以获取mysql的版本号
UserParameter=mysql.version,mysql -V

##################3、针对mysql_update、mysql_uptime等监控项修复################
####修改agent主配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

#####增加以下内容,mysql.status监控项属于符合键,其中根据中括号中的参数不同,可现实不同的监控内容,所以需要有[]来表示,逗号后面可以跟上脚本路径,让该值等于脚本执行后的结果,$1启动到展位作用,表示将中括号中的内容作为$1的参数
UserParameter=mysql.status[
],/usr/local/zabbix/etc/chk_mysql.sh $1

#######脚本如下:
#!/bin/bash

用户名

MYSQL_USER=‘zabbix’

密码

MYSQL_PWD=‘123123’

主机地址/IP

MYSQL_HOST=‘192.168.40.13’

端口

MYSQL_PORT=‘3306’

数据连接

MYSQL_CONN="/usr/bin/mysqladmin -u M Y S Q L U S E R − p {MYSQL_USER} -p MYSQLUSERp{MYSQL_PWD} -h M Y S Q L H O S T − P {MYSQL_HOST} -P MYSQLHOSTP{MYSQL_PORT}"

参数是否正确,当参数个数不等于1时回显错误并退出

if [ $# -ne “1” ];then
echo “arg error!”
exit 1
fi

获取数据

case 1 i n U p t i m e ) r e s u l t = ‘ 1 in Uptime) result=` 1inUptime)result={MYSQL_CONN} status|cut -f2 -d" “echo $result ;; Com_update) result=${MYSQL_CONN} extended-status |grep -w “Com_update”|awk -F”[ ]+" ‘{print $4}’echo $result ;; Slow_queries) result=${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"echo $result ;; Com_select) result=${MYSQL_CONN} extended-status |grep -w “Com_select”|awk -F"[ ]+" ‘{print $4}’echo $result ;; Com_rollback) result=${MYSQL_CONN} extended-status |grep -w “Com_rollback”|awk -F"[ ]+" ‘{print $4}’echo $result ;; Questions) result=${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"echo $result ;; Com_insert) result=${MYSQL_CONN} extended-status |grep -w “Com_insert”|awk -F"[ ]+" ‘{print $4}’echo $result ;; Com_delete) result=${MYSQL_CONN} extended-status |grep -w “Com_delete”|awk -F"[ ]+" ‘{print $4}’echo $result ;; Com_commit) result=${MYSQL_CONN} extended-status |grep -w “Com_commit”|awk -F"[ ]+" ‘{print $4}’echo $result ;; Bytes_sent) result=${MYSQL_CONN} extended-status |grep -w “Bytes_sent” |awk -F"[ ]+" ‘{print $4}’echo $result ;; Bytes_received) result=${MYSQL_CONN} extended-status |grep -w “Bytes_received” |awk -F"[ ]+" ‘{print $4}’echo $result ;; Com_begin) result=${MYSQL_CONN} extended-status |grep -w “Com_begin”|awk -F"[ ]+" ‘{print $4}’`
echo $result
;;

    *) 
    echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" 
    ;; 

esac

#####通过mysqladmin -u{用户名} -p{密码} -h {允许登录的IP地址} status可显示mysql的状态信息,其中
#Uptime: 启动时间,单位秒
#Threads: 活动线程的数量
#Questions: 多少次查询请求
#Slow queries: 慢查询次数
#Opens:服务启动到现在打开表格的次数
#Flush tables:刷新表的次数
#Open tables: 当前打开表的次数
#Queries per second avg:每秒种的查询量

####通过mysqladmin -u{用户名} -p{密码} -h {允许登录的IP地址} extended-status可获取命令的使用情况
#如:
#Com_begin:可以理解为开启事务的次数
#Com_commit:可理解为提交事务的次数,等

#####额外补充:cut命令中-f表示取哪一列,-d""表示以什么作为分隔符

####注意每自定义一个监控项时,在设置好之后需要通过zabbix_get -s {agentIP} -k {键.值}来测试改监控项是否能使用,zabbix_get命令所在路径为/usr/local/zabbix/bin下,如:
zabbix_get -s 192.168.40.13 -k mysql.ping

#####全部修复完以后重启agent等待一段时间即可

==增加其他agent端=
#####安装agent所需依赖
yum -y install libxml2-devel libcurl-devel pcre-devel ntpdate gcc gcc-c++

####安装agent
tar -xf zabbix-3.4.2.tar.gz -C /usr/src
cd /usr/src/zabbix-3.4.2
./configure --prefix=/usr/local/zabbix --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 && make && make install

####生成agent启动脚本
cp -p /usr/src/zabbix-3.4.2/misc/init.d/tru64/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd
sed -i ‘/DAEMON/ s@local/@local/zabbix/@g’ /etc/init.d/zabbix_agentd

####修改agent主配置文件
vim /usr/local/zabbix/etc/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid
Server=192.168.40.13
#StartAgents=0
ServerActive=192.168.40.13
Hostname=agent.zabbix.com
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

####创建程序用户及logs存放目录
mkdir /usr/local/zabbix/logs
useradd -M -s /sbin/nologin -r zabbix
chown -R zabbix:zabbix /usr/local/zabbix/

####启动agent
service zabbix_agentd start

=======安装vsftpd用于后续测试报警使用=
yum -y install vsftpd
systemctl start vsftpd

======最终测试=
1、先在zabbix web端把这个新的agent增加进去,模块选择Template App FTP Service和Template OS Linux
2、增加图形,增加ftp_status,选择监控项FTP service is running
3、停掉vsftpd,看是否会报警,开机vsftpd看是否报警解除

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值