当前位置: 首页 > article >正文

Zabbix企业分布式监控(Zabbix Enterprise Distributed Monitoring)

 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

前言:在工作中常常需要对服务器进行监控,但是要选择一款合适监控软件可不容易,今天介绍下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.创建用户

1

useradd -M -s /sbin/nologin nginx

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

1

2

cd /usr/local/src

mkdir /usr/local/nginx

3.解压nginx源码包

1

tar xf nginx-1.10.3.tar.gz

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

1

yum install pcre* openssl* -y

5.编译nginx

1

2

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

make && make install

6.启动Nginx 

1

2

3

4

5

6

/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.添加环境变量  

1

2

3

vim /etc/profile.d/nginx.sh

export PATH=/usr/local/nginx/sbin:$PATH

source /etc/profile.d/nginx.sh

4.2、安装MySQL服务  

1.创建用户

1

useradd mysql -M -s /sbin/nolgoin

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

1

2

cd /usr/local/

tar xf mysql-5.5.54-linux2.6-x86_64.tar.gz

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

1

2

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文件  

1

2

3

4

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.做一个软链接  

1

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

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

1

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

7.初始化数据库  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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.启动数据库

1

2

/etc/init.d/mysqld start

. SUCCESS!

9.添加环境变量  

1

2

3

vim /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

source /etc/profile.d/mysql.sh

10.添加数据库密码

1

mysqladmin -uroot password '123456'

11.登录测试  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

终端命令:mysql -p123456<br>结果输出:

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.安装依赖  

1

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

2.创建目录

1

mkdir /usr/local/php

3.解压编译安装PHP

1

2

3

4

5

6

7

8

9

10

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配置文件添加内容

1

2

3

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.安全优化  

1

2

3

4

5

6

7

8

9

10

11

12

13

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  

1

2

3

4

5

6

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

查看端口

1

2

netstat -tpunl | grep php

tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      125593/php-fpm 

7.设置环境变量

1

2

3

4

5

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文件

1

2

3

4

5

[root@lnmp html]# vim /usr/local/nginx/html/index.php

[root@lnmp html]# cat index.php

<?php

   phpinfo();

 ?>

9.配置nginx配置文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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服务

1

nginx -s reload

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

4.4正式安装zabbix

确保以下参数选项

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

1

2

character-set-server=utf8     #设置字符集为utf8

innodb_file_per_table=1        #让innodb的每个表文件单独存储

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

1

2

3

4

5

6

max_execution_time = 300

memory_limit = 128M

post_max_size = 16M

upload_max_filesize = 2M

max_input_time = 300

date.timezone = 'Asia/Shanghai'

3.安装所需的依赖包

1

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

4.做一个软件接

1

2

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

/sbin/ldconfig

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

1

mkdir /usr/local/zabbix

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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用户  

1

2

3

4

5

6

7

8

9

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用户

1

2

3

4

5

6

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库

1

2

3

4

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

1

2

3

4

5

6

7

8

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的启动

1

2

3

4

5

6

7

8

9

10

11

拷贝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.添加环境变量和开机自启动

1

2

3

4

5

6

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环境文件

1

2

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


http://www.kler.cn/news/310472.html

相关文章:

  • Electron 图标修改
  • 深度学习 之 常见损失函数简介:名称、作用及用法
  • mysql 8.0 日期维度表生成(可运行)
  • CSS传统布局方法(补充)——WEB开发系列37
  • 【路径规划】WDM网络中RWA问题的教育网络规划工具(基于MILP和启发式)
  • 图说GPT网络结构(参数量与计算量估计)
  • 何时空仓库
  • 计算机毕业设计 乡村生活垃圾管理系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • C++《类和对象》(下)
  • 创意照片比赛点子以及Wishpond如何变革您的活动
  • redis常见类型设置、获取键值的基础命令
  • 【工具变量】气候适应型试点城市DID(2005-2022年)
  • 【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)
  • iptables配置NAT及端转发
  • Restample使用http访问https接口
  • 【AI战略思考0】导言
  • 【FFT】信号处理——快速傅里叶变换【通俗易懂】
  • 多层感知机——pytorch与paddle实现多层感知机
  • Java发邮件:如何配置SMTP服务器实现发信?
  • 【项目一】基于pytest的自动化测试框架———解读requests模块
  • C# 修改项目类型 应用程序程序改类库
  • IOS 24 实现歌单详情(UITableView)列表
  • 下载Kafka 3.0.0教程
  • 基于Matlab的模拟答题卡识别阅卷可以识别指定答题卡的各个部分-界面
  • Day04_JVM实战
  • 开发定制:学校考试成绩自动处理,可定制规则
  • 2024桥梁科技两江论坛——第二届桥梁工程安全与韧性学术会议
  • laravel public 目录获取
  • 如何在 Fork 的 GitHub 项目中保留自己的修改并同步上游更新?github_fork_update
  • 如何使用麦肯锡方法解决软件的BUG和运维管理?