Zabbix企业分布式监控工具

前言:在工作中常常需要对服务器进行监控,但是要选择一款合适监控软件可不容易,今天介绍下zabbix这款监控软件

一、Zabbix介绍
1.Zabbix是一个企业级的、开源的、分布式的监控套件
2.Zabbix可以监控网络和服务的监控状况.Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警.
这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划。
3.Zabbix 支持 polling和trapping两种方式. 所有的 Zabbix报告都可以通过配置参数在WEB前端进行访问.
Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix 可以通过尽可能的配置来扮演监控你的IT基础框架的角色,
而不管你是来自于小型组织还是大规模的公司.
4.Zabbix是零成本的. 因为 Zabbix 编写和发布基于 GPL V2 协议. 意味着源代码是免费发布的
5.Zabbix公司也提供商业化的技术支持

二、Zabbix特性
1.数据收集
a.可用性及性能检测
b.支持SNMP(trapping及polling)、IPMI-(智能平台管理接口,定义了嵌入式管理子系统进行通信的特定方法)、JMX监控-(是一个为应用程序、设备、系统等植入管理功能的框架)
c.自定义检测
b.自定义间隔收集数据
e.server/porxy/agents

2.灵活的阀值定义
a.允许灵活地自定义问题阀值,Zabbix中称为触发器(trigger),存储在后端数据库中。

3.高级告警配置
a)可以自定义告警升级(escalation)、接收者及告警方式
b)告警信息可以配置并允许使用宏变量,让zabbix更加灵活
c)通过远程命令实行自动化动作(action)

4.实时绘图
a)通过内置的绘图方法实现监控数据实时绘图

5.扩展的图形化显示
b)允许自定义创建多监控项视图
c)网络拓扑
d)自定义的面板(screen)和slide shows,并允许在dashboard页面显示
e)报告
f)高等级(商业)监控资源

6.历史数据存储
a)数据存储在数据库中
b)历史数据可配置
c)内置数据清理机制

7.配置简单
a)主机通过添加监控设备方式添加
b)一次配置,终生监控(除非调整或删除)
c)监控设备允许使用模板

8.模板使用
a)模板中可以添加组监控
b)模板允许继承

9.网络自动发现
a)自动发现网络设备
b)agent自动注册
c)自动发现文件系统、网卡设备、SNMP OID(对象标识符)等

10.快速的web接口
a)web前端采用php编写
b)访问无障碍
c)你想怎么做就能做
d)审计日志

11.Zabbix API
a)Zabbix API提供程序级别的访问接口,第三方程序可以很快接入

12.权限系统
b)安全的权限认证
c)用户可以限制运行维护的列表

13.全特性、agent易扩展
a)在监控目标上部署
b)支持Linux及window

14.二进制守护进程
a)C开发,高性能,低内存
b)易移植

15.具备应对负责环境情况
a)通过Zabbix proxy可以非常容易的创建远程监控

三、Zabbix进程构成
默认情况下 zabbix 包含 5 个程序: zabbix_agentd、 zabbix_get、 zabbix_proxy、 zabbix_sender、
zabbix_server,另外 zabbix_java_gateway
1.zabbix_agentd
客户端守护进程,收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等
2.zabbix_get
zabbix工具,单独使用的命令,通常在 server 或者 proxy 端执行, 用户获取被监控端数据, 通常用于排错。
例如在 server 端获取不到客户端的内存数据,我们可以使用 zabbix_get 获取客户端的内容的方式来做故障排查
3.zabbix_sender
zabbix工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的 check,并且与 trapper 配合使用。 生
存环境中,个别非常耗时间 check 经常导致 zabbix 超时。于是我们在脚本执行完毕之后,使用 sender 主动提交数据
4.zabbix_server
zabbix服务端守护进程。zabbix_agentd、 zabbix_get、 zabbix_sender、 zabbix_proxy、 zabbix_java_gateway 的数
据最终都是提交到 server
备注:当然不是数据都是主动提交给 zabbix_server,大多数情况下都是 server 主动去取数据。
5.zabbix_proxy
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。
一般跨机房、地区的环境需要用到proxy。
6.zabbix_java_gateway
zabbix2.0 之后引入的一个功能。顾名思义: Java 网关,类似 agentd,但是只用于 Java 方面。
需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者 proxy。

四、Zabbix安装

安装Zabbix前需要搭建LNMP环境

4.1、安装Nginx
1.创建用户

useradd -M -s /sbin/nologin nginx

2.进入/usr/local/src目录,创建/usr/local/nginx目录

cd /usr/local/src
mkdir /usr/local/nginx

3.解压nginx源码包

tar xf nginx-1.10.3.tar.gz 

4.安装前的准备,安装pcre和openssl,支持rewrite和https  

yum install pcre* openssl* -y

5.编译nginx

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
make && make install

6.启动Nginx 

/usr/local/nginx/sbin/nginx 
访问测试一下
[root@lnmp nginx]# curl -I http://localhost 
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Wed,22 Mar 2017 16:41:22 GMT

7.添加环境变量  

vim /etc/profile.d/nginx.sh
export PATH=/usr/local/nginx/sbin:$PATH
source /etc/profile.d/nginx.sh 

4.2、安装MySQL服务  

1.创建用户

useradd mysql -M -s /sbin/nolgoin 

2.进入目录,解压mysql二进制包  

cd /usr/local/
tar xf mysql-5.5.54-linux2.6-x86_64.tar.gz

3.生成配置文件和开机脚本 

cd mysql-5.5.54-linux2.6-x86_64/support-files/
cp my-small.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld

4.编辑/etc/init.d/mysqld文件  

cat /etc/init.d/mysqld | grep -E "^basedir=|^datadir="
basedir=/usr/local/mysql		#原始目录
datadir=/usr/local/mysql/data		#数据目录
chmod 755 /etc/init.d/mysqld 

5.做一个软链接  

ln -s mysql-5.5.54-linux2.6-x86_64/ mysql  

6.修改权限,为了生成初始化数据库

chown mysql.mysql -R /usr/local/mysql

7.初始化数据库  

cd /usr/local/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
WARNING: The host 'lnmp' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon,mysqld,should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
170323  1:12:30 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170323  1:12:30 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.54) starting as process 5104 ...
OK
Filling help tables...
170323  1:12:30 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170323  1:12:30 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.5.54) starting as process 5111 ...
OK

8.启动数据库

/etc/init.d/mysqld start
. SUCCESS! 

9.添加环境变量  

vim /etc/profile.d/mysql.sh 
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh 

10.添加数据库密码

mysqladmin -uroot password '123456'

11.登录测试  

终端命令:mysql -p123456
结果输出: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.5.54 MySQL Community Server (GPL) Copyright (c) 2000,2016,Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

4.3、安装PHP

1.安装依赖  

yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y

2.创建目录

mkdir /usr/local/php

3.解压编译安装PHP

cd /usr/local/ && tar xf php-5.5.38.tar.gz
cd php-5.5.38/
/configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc --with-bz2 --with-curl \
--enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-fpm-user=nginx --with-fpm-group=nginx \
--with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --enable-soap --enable-static \
--with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-mhash --enable-pcntl \
--with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-inline-optimization \
--with-mysql=mysqlnd --enable-fpm --with-libdir=lib64 --enable-bcmath  --enable-shmop --enable-sysvsem 
make && make install

4.安装成功后配置php,在php.ini配置文件添加内容

cd /usr/local/php-5.5.38 
cp php.ini-production /usr/local/php/etc/php.ini
cp php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

5.安全优化  

vim /usr/local/php/etc/php.ini
expose_php = Off		#关闭版本信息
display_errors = Off		#错误信息控制,测试的时候开启
log_errors = On			#打开错误日志
error_log = /usr/local/php/log/php_errors.log	#log日志路径,log_errors必须开启
allow_url_fopen = Off		#打开远程(禁止)
cgi.fix_pathinfo=0		#防止nginx文件类型错误解析漏洞
max_execution_time = 300	#单个脚本最大运行时间,单位是秒
memory_limit = 128M		#单个脚本最大使用的内存,单位为K或M
post_max_size = 16M			
upload_max_filesize = 2M	#上传文件最大许可2M
max_input_time = 300		#单个脚本等待输入最长时间
date.timezone = 'Asia/Shanghai'	#时间区域

6.启动php-fpm  

cd /usr/local/php-5.5.38/
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm 
chkconfig php-fpm on
service php-fpm start
Starting php-fpm  done

查看端口

netstat -tpunl | grep php
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      125593/php-fpm  

7.设置环境变量

cd /etc/profile.d/
[root@lnmp profile.d]# vim php.sh
[root@lnmp profile.d]# cat php.sh 
export PATH=/usr/local/php/sbin:$PATH
[root@lnmp profile.d]# source php.sh

8.结合nginx连接php 添加php文件

[root@lnmp html]# vim /usr/local/nginx/html/index.php
[root@lnmp html]# cat index.php 
<?php
   phpinfo();
 ?>

9.配置nginx配置文件

cd /usr/local/nginx/conf
grep -vE "(#|^$)" nginx.conf.default > nginx.conf
vim nginx.conf
在http标签下输入以下内容
server {
    listen  80;
    server_name www.test.com;
    index index.php
    root html;
    location ~ .*\.(php|php5)?$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi.conf;
	}
}

10.重启nginx服务

nginx -s reload

浏览器访问是否处理php页面,如果有就成功了

4.4正式安装zabbix

确保以下参数选项

1.数据库要在my.cnf添加的选项

character-set-server=utf8     #设置字符集为utf8
innodb_file_per_table=1        #让innodb的每个表文件单独存储

2.PHP配置参数,php.ini配置文件

max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = 'Asia/Shanghai'

3.安装所需的依赖包

yum install net-snmp-devel.x86_64 mysql-devel 

4.做一个软件接

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
/sbin/ldconfig

5.创建zabbix编译时指定目录

mkdir /usr/local/zabbix

6.解压zabbix源码包,并且编译安装

cd /usr/local/ && tar xf zabbix-3.2.4.tar.gz
cd zabbix-3.2.4/
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 
参数说明 
―prefix=/usr/local/zabbix 为指定安装目录为/usr/local/zabbix
―enable-server 为安装zabbix服务端程序 
―enable-agent 为安装agent程序 
―with-mysql 为使用mysql数据库 
―with-net-snmp 为启用snmp支持 
―with-libcurl 为启用curl 
―with-libxml2 编译xml模块,主要用于监控vm虚拟机
[root@zabbix zabbix-3.2.4]#make
[root@zabbix zabbix-3.2.4]#make install
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*                                  *
***********************************************************

7.创建zabbix用户  

groupadd zabbix
useradd -g zabbix zabbix
id zabbix
uid=502(zabbix) gid=502(zabbix) groups=502(zabbix)
chown -R zabbix:zabbix /usr/local/zabbix/ 
mkdir -p /var/log/zabbix-server 
mkdir -p /var/log/zabbix-agentd 
chown -R zabbix:zabbix /var/log/zabbix-server/ 
chown -R zabbix:zabbix /var/log/zabbix-agentd/ 

8.初始化zabbix数据库
zabbix server 与 proxy 需要数据库, angent 不需要。尤其要注意的是proxy只需要导入1个sql文件,而server一共要导入3个sql 文件。
我当时在搭建 proxy 的时候导入了3个sql,导致出现报错。后来才发现 proxy 只需要导入1个表结构即可。
创建zabbix数据库,和zabbix用户

mysql> create database zabbix character set utf8;
Query OK,1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by '123456';
Query OK,0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK,0 rows affected (0.01 sec)

9.进入zabbix-3.2.4的源码目录,按顺序导入三个SQL脚本导入zabbix库

cd /usr/local/zabbix-3.2.4/
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/schema.sql 
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/images.sql 
mysql -uzabbix -p'123456' -hlocalhost zabbix < database/mysql/data.sql 

10.修改zabbix.conf

vim /usr/local/zabbix/etc/zabbix_server.conf

DBName=zabbix  数据库名字
DBUser=zabbix  数据库用户
DBPassword=123456  zabbix密码
DBHost=localhost   主机
PidFile=/tmp/zabbix_server.pid
DBSocket=/tmp/mysql.sock

11.zabbix3.2.4的启动

拷贝zabbix_server,zabbix_agentd文件
cp /usr/local/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /usr/local/zabbix-3.2.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
修改zabbix_server,zabbix_agentd文件
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
启动
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start

12.添加环境变量和开机自启动

cd /etc/profile.d/
vim zabbix.sh 
export PATH=/usr/local/zabbix/sbin:$PATH
source /etc/profile.d/zabbix.sh 
chkconfig --add zabbix_server
chkconfig zabbix_server on

13.拷贝zabbix的web环境文件

cd /usr/local/zabbix-3.2.4/frontends/
cp -rf php /usr/local/nginx/html/zabbix

确保前面都没问题,打开浏览器访问http://url/zabbix

 

 

 

 

 

 

 

 

 

 

 

 

 

如果这一步有问题,chmod 777 /usr/local/nginx/html/zabbix/conf/,因为要生成zabbix.conf.php文件

默认用admin用户登录,密码为zabbix

这是效果图,可以根据自己的需求来调整zabbix

 

 

 

 

PS:有需要zabbix详细学习文档的私信我~

原文地址:https://www.cnblogs.com/lucktomato

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340