首页 > 其他 > 详细

Centos 7 最小化部署zabbix

时间:2019-08-02 18:54:41      阅读:99      评论:0      收藏:0      [点我收藏+]

前言

文章内容是作者本人编写,之前一直放在word文档中,突然有闲情转移到博客上来了,欢迎后续观看者有问题找我探讨~~~

废话不多说,先说下原理吧

 

概述

工作原理

通过c/s模式采集数据,基于b/s模式进行数据的分析及展示

Agent            配置数据采集项
Server           收集数据并进行分析,最终通过web gui进行数据的展示
Database         历史数据的存储
Proxy            分布式监控程序,对agent端的数据进行接收,转发到Server
Web gui          数据的展示,一般与Server在同一机器
Java gateway     2.0以后版本引入的工具, 类似agentd,但是只用于Java方面。
Sender           主动发送数据至Server,一般配置于agent端
Get              主动收集数据,一般应用与server或者proxy,手动触发

 

常用进程

zabbix_agentd        agent端的守护进程,负责收集数据
zabbix_server        zabbix服务端守护进程,接收并分析数据
zabbix_get           手动采集数据工具,一般用于server端对agent端的测试
zabbix_sender        zabbix工具,用于发送数据给server或者proxy
zabbix_proxy         zabbix代理守护进程。功能类似server,它只是一个中转站
zabbix_java_gateway  Java网关,类似agentd

 

工作模式

主动模式:        agent端根据server端的具体请求来主动返还数据
被动模式:        server端根据监控列表项对agent进行数据的索取

 

常见名词

Host              需要被监控的设备,如主机、路由器、打印机等等
Host group        被监控主机的逻辑分组,可配置模板
Items             监控项
Application       应用组,一组监控项的集合
Keys              具体的监控值
Trigger           阀值,主要对监控项进行进行评估
Event             事件,对一个事物的描述,如状态改变、主机列入、登入
Action            动作,实现定义好的operations(操作),如脚本、邮件
Escalation        执行action中的operations的定制场景;一连串的发送通知、执行远程命令
Media             媒介,传递信息的方式
Notification      通过media发送给用户的事件信息
Remote commend    远程命令
Template          模板,对实现定义好的itmes、application、action等

 

部署详情

部署网络环境

Server       192.168.2.111
Database     192.168.2.111
Agent        192.168.2.112

 

服务端部署

卸载防火墙,关闭selinux

rpm -qa | grep "iptables" | xargs rpm -e --nodeps
rpm -qa | grep "firewall" | xargs rpm -e --nodeps
sed -i s/enforcing/disabled/g /etc/selinux/config

 

挂载iso,配置本地yum源

mount -t iso9660 -o loop /opt/CentOS-7-x86_64-Everything-1708.iso /mnt/
echo [ever] > /etc/yum.repos.d/local.repo
sed -i $a name=ever /etc/yum.repos.d/local.repo 
sed -i $a baseurl=file:///mnt /etc/yum.repos.d/local.repo 
sed -i $a gpgcheck=0 /etc/yum.repos.d/local.repo 
sed -i $a enable=1 /etc/yum.repos.d/local.repo
rm -rf /etc/yum.repos.d/CentOS-*
yum makecache

 

安装http、php及相关插件

安装httpd与php

yum -y install httpd php gcc gcc-c++ ncurses ncurses-devel autoconf

 

安装zabbix及相应程序

ls /opt                            #这下面这些包是得去zabbix官网下载的包
fping-3.10-1.el7.x86_64.rpm
iksemel-1.4-2.el7.centos.x86_64.rpm
iksemel-devel-1.4-2.el7.centos.x86_64.rpm
iksemel-utils-1.4-2.el7.centos.x86_64.rpm
zabbix-server-mysql-3.4.10-1.el7.x86_64.rpm
zabbix-web-3.4.10-1.el7.noarch.rpm
zabbix-web-mysql-3.4.10-1.el7.noarch.rpm

cd /opt/ 
yum -y install ./*.rpm

 

安装mysql

卸载默认数据库

rpm -qa | grep "mysql" | xargs rpm -e --nodeps
rpm -qa | grep "mariadb*" | xargs rpm -e --nodeps

 

安装cmake及相应插件

wget https://cmake.org/files/v3.10/cmake-3.10.1.tar.gz
tar -zxf cmake-3.10.1.tar.gz -C /usr/local/
cd /usr/local/cmake-3.10.1
./bootstrap
make && make install

 

创建mysql守护进程用户

groupadd -g 306 mysql
useradd -g mysql -s /sbin/nologin -M mysql

 

Mysql的安装

cd mysql-5.6.26
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DWITH_DEBUG=0
make -j `grep "processor" /proc/cpuinfo | wc -l`
make install

 

Mysql的配置

cp support-files/my-default.cnf /etc/my.cnf
sed -i $a basedir=/usr/local/mysql /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
sed -i $a PATH=$PATH:/usr/local/mysql/bin /etc/profile
sed -i $a export PATH /etc/profile
source /etc/profile

 

初始化并启动

cd /usr/local/mysql
chown -R mysql:mysql *
./scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
chown -R root *
chown -R mysql data
service mysqld start

 

创建zabbix数据库及数据导入

登入数据库

mysql -uroot -p

 

创建数据库,并授权用户

CREATE DATABASE IF NOT EXISTS zabbix DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on zabbix.* to zabbix@% identified by zabbix;
flush privileges;

 

Zabbix数据信息的导入

cd /usr/share/doc/zabbix-server-mysql-3.4.10/
gunzip -d create.sql.gz
mysql -uzabbix -pzabbix -h192.168.2.111 zabbix < create.sql

 

配置zabbix server

vi /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
DBHost=192.168.2.111                            指定zabbix数据库存储位置
DBName=zabbix                                指定zabbix数据库名
DBUser=zabbix                                    指定zabbix数据库登录用户
DBPassword=zabbix                                指定数据库远程连接密码
#DBSocket=/var/lib/mysql/mysql.sock                指定sock连接文件
SNMPTrapperFile=/var/log/snmptt/snmptt.log        
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts

 

配置启动服务

修改php默认时区

vim /etc/php.ini
date.timezone = Asia/Shanghai

 

启动http与zabbix

systemctl start httpd.service
systemctl start zabbix-server
systemctl enable httpd.service
systemctl enable zabbix-server

 

Web界面的配置

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

更改中文

在windows的目录C:\Windows\Fonts下面寻找一份自己喜欢的字体,上传至Server 的zabbix字体目录下面

技术分享图片

技术分享图片

将这个目录下面的原有链接文件干掉,并将自己上传的文件改成原有的这个文件即可,其他版本可能还需要仅fonts的配置文件里面更改支持中文

技术分享图片

技术分享图片

技术分享图片

至此server端的部署完毕

 

代理端部署

安装agent程序

Agent的安装不需要依赖任何插件,直接安装即可

wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.10-1.el7.x86_64.rpm
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-sender-3.4.10-1.el7.x86_64.rpm
rpm -ivh zabbix-sender-3.4.10-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-3.4.10-1.el7.x86_64.rpm

 

配置agent

vim zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid     # 设置agent的pid文件位置
LogFile=/var/log/zabbix/zabbix_agentd.log     # 设置agent的日志文件位置
LogFileSize=0                                 # 设置agent的日志文件大小
Server=192.168.2.111                          # 设置zabbix server的地址
ServerActive=192.168.2.111                    # 设置主动模式,并且填写server地址
Hostname=192.168.2.112                        # 设置server能解析agent的主机名或IP
Include=/etc/zabbix/zabbix_agentd.d/*.conf    # 设置扩展配置目录

 

启动agent

systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
systemctl is-enabled zabbix-agent.service

 

创建主机

登录Server 的web管理界面

技术分享图片

Configure >> Hosts >> create host

技术分享图片

技术分享图片

配置agent的信息

技术分享图片

技术分享图片

技术分享图片

至此主机添加完毕,需要注意的是,zabbix刚加入被监控主机,需要一段时间来激活主机

 

创建监控项

Configure >> Hosts >> Items >> Create item

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

自定义keys,手动添加监控项

切换zabbix的扩展配置目录

cd /etc/zabbix/zabbix_agentd.d

 

生成网卡流量监控脚本 network.sh

#!/bin/bash
usage() {
        echo "Useage : $0"
        echo "eg. sh $0 eth0"
        exit 1
}
if [ $# -lt 1 ]
then
        usage
fi
eth=$1
timer=1
in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $1 })
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $9 })
x=1
while [ $x -le 2 ]
do
        sleep ${timer}
        in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $1 })
        out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $9 })
        dif_in=$(((in-in_old)/timer))
        dif_in=$((dif_in/1024))
        dif_out=$(((out-out_old)/timer))
        dif_out=$((dif_out/1024))
        ct=$(date +"%F %H:%M:%S")
        echo "${ct} -- IN: ${dif_in} KByte/s     OUT: ${dif_out} KByte/s"
        in_old=${in}
        out_old=${out}
        x=3
done
exit 0

 

将脚本加入到Items自定义文件中

UserParameter=Network_in,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk {print $5}
UserParameter=Network_out,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk {print $8}

 

重启agent,server测试Keys

systemctl restart zabbix-agent            
#agent端

zabbix_get -s 192.168.2.112 -p 10050 -k "Network_out"        
#server端

 

web界面添加item

技术分享图片

技术分享图片

至此自定义keys已经创建

 

创建监控图像

Configure >> Hosts >> Graphs >> Create graph

技术分享图片

技术分享图片

技术分享图片

技术分享图片

单一图形的添加完毕,下面介绍整合图形的创建

 

Monitoring >> Screens >> Edit screen

技术分享图片

技术分享图片

技术分享图片

至此聚合图形创建完毕

 

创建触发器

触发器用来定义阀值,下面演示创建触发器

Configure >> Hosts >> Triggers >> create trigger

技术分享图片

技术分享图片

技术分享图片

触发器创建完毕

 

创建告警

告警可以使用命令或者邮件或者脚本程序等等,我这里做演示仅用远程命令

下面演示Actions的创建:Configure >> Actions >> create action

技术分享图片

技术分享图片

技术分享图片

技术分享图片

一般触发器主要就是定义这些内容

 

Zabbix 监控案例

agent协议

自定义监控磁盘使用使用率

自定义监控磁盘IO

自定义监控CPU负载

自定义监控内存

自定义监控网卡流量

# cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf | tail -n2
UserParameter=Network_in,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk {print $5}
UserParameter=Network_out,bash /etc/zabbix/zabbix_agentd.d/network.sh eth0| awk {print $8}

 

下面附network.sh脚本内容

#!/bin/bash
usage() {
        echo "Useage : $0"
        echo "eg. sh $0 eth0"
        exit 1
}
if [ $# -lt 1 ]
then
        usage
fi
eth=$1
timer=1
in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $1 })
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $9 })
x=1
while [ $x -le 2 ]
do
        sleep ${timer}
        in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $1 })
        out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk {print $9 })
        dif_in=$(((in-in_old)/timer))
        dif_in=$((dif_in/1024))
        dif_out=$(((out-out_old)/timer))
        dif_out=$((dif_out/1024))
        ct=$(date +"%F %H:%M:%S")
        echo "${ct} -- IN: ${dif_in} KByte/s     OUT: ${dif_out} KByte/s"
        in_old=${in}
        out_old=${out}
        x=3
done
exit 0

 

自定义监控端口

自定义监控用户文件使用量

自定义监控日志文件

自定义监控URL

 

文件已上传至博客园的存储处,其实看那个更加好使,因为图片的清晰度比博客这个强,但是我怕下次又忘记文档放哪去了,先写到博客上再说。。。

Centos 7 最小化部署zabbix

原文:https://www.cnblogs.com/guge-94/p/11290506.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!