博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zabbix
阅读量:4229 次
发布时间:2019-05-26

本文共 11663 字,大约阅读时间需要 38 分钟。

一 Zabbix监控

监控目的

报告系统运行情况

每一部分必须同时监控

内容包括吞吐量\反应时间\使用率等

提前发现问题

进行服务器性能调整前,知道调整什么

找出系统的瓶颈在什么地方

 

类别

公开数据

web,ftp,ssh数据库等应用服务

私有数据(本地数据)

CPU,内存,磁盘,网卡流量等使用信息

用户,进程等运行信息

硬件监控

1.通过远程控制卡:dell的iDRAC,HP的ILO和IBM的IMM等

2.使用IPMI来完成物理设备的监控工作,通常必须要监控的就是温度,硬盘故障等

3.路由器,交换机(端口、光衰,日志),打印机,winds等

系统监控 cpu,内存,硬盘使用率,硬盘io,系统负载,进程数
服务监控 Apache,nginx,php-fpm,mysql,memcache,redis,tomcat,JVM,停车票连接数
性能监控 网站性能,服务器性能,数据库性能,存储性能
日志性能 系统会产生系统日志,应用程序会有应用的访问日志、错误日志、服务有运行日志等,可以使用elk来进行日志监控
安全监控

1.nginx+lua编写了一个WAF通过kibana可以图形化的展示不同的攻击类型的统计

2.用户登录数,password文件变化,本地所有文件改动

网络监控 端口,web(URL)。DB,ping包,IDC带宽网络流量,网络流出速率,网络入流量,网络出流量,网络使用率,SMTP,POP3

用监控软件搭建监控服务

主流软件:

Cacti(仙人掌):绘图能力,基于SNMP协议(要支持才能使用)简单网络协议(没有报警功能)

Nagios:基于Agent监控(被监视的要有Agent代理服务),插件多,状态检查报警机制,或自己写监控脚本放nagios使用(没有绘图功能)

Zabbix:支持分布式监控

手动监控:

traceroute www.baidu.com        #查看

iostat                                         #查看硬盘读写状态

ps                                              #查看进程信息

uptime                                       #查看CPU信息

free                                            #查看内存信息

swapon -s                                   #查看交换分区

df -h                                            #查看磁盘信息

ifconfig                                        #查看网卡信息

netstat或ss                                  #查看端口进程

ping                                              #查看是否能ping通

 

 

zabbix介绍

开源分布式监控

客户端C/S服务器模式采集监控数据

浏览器B/S服务器模式实现web管理

监控服务器可以通过SNMP或Agent采集数据

数据可以写入Mysql,Oracle等数据库中

服务器使用LNMP实现WEB前端的管理

被监控主机需装Agent,常见网络设备一般都支持SNMP

 

安装方式:

编译安装(服务较多,环境复杂)

yum安装(干净环境)

注:官网有安装文档

 

部署LNMP运行环境

[192.168.2.5]

防火墙和selinux已关闭

 

yum -y install gcc pcre-devel zlib-devel openssl-devel

tar  -xf nginx-1.12.2.tar.gz

cd nginx-1.12.2/

 ./configure  --with-http_ssl_module

make  && make install

ls /usr/local/nginx/

yum -y install mariadb-server(服务) mariadb-devel() mariadb(管理命令) 

yum -y install php php-mysql php-fpm

修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
...

      location ~ \.php$ {

            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
          # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

 

启服务

/usr/local/nginx/sbin/nginx 

systemctl start mariadb

systemctl start php-fpm

netstat -nutlp | grep 9000/3306/80          #查看是否有端口

vim /usr/local/nginx/html/test.php

<?php

$i=33;
echo $i;
?>
curl localhost/test.php

 

 

部署Zabbix

 yum -y install net-snmp-devel curl-devel libevent-devel

tar -xf zabbix-3.4.4.tar.gz

cd zabbix-3.4.4

root@localhost zabbix-3.4.4]# ./configure --enable-server  --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl

[root@localhost zabbix-3.4.4]# make install        #会直接提示Now run 'make install'

ls /usr/local/bin/       #查看命令

ls  /usr/local/sbin/     #查看服务启动命令

ls /usr/local/etc/        #查看配置文件

 

 

  • 初始化Zabbix

创建数据库与数据库账户

[root@localhost zabbix-3.4.4]# mysql

MariaDB [(none)]> create database zabbix character set utf8;

MariaDB [(none)]> grant all on zabbix.* to zabbix@"localhost" identified by "zabbix";

[root@localhost zabbix-3.4.4]# cd database/mysql/

[root@localhost mysql]# ls
data.sql  images.sql  schema.sql

[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix  < schema.sql 

[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix  <  images.sql

[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix  <  data.sql

上线web页面

cd zabbix-3.4.4/frontends/php/                    #后端的php页面                                                           

[root@localhost php]# cp -a *  /usr/local/nginx/html/

[root@localhost php]# chmod  -R 777  /usr/local/nginx/html/
[root@localhost php]# ls /usr/local/nginx/html/

修改配置文件

[root@localhost php]# useradd zabbix                           #zabbix用户启服务

vim /usr/local/etc/zabbix_server.conf

# ListenPort=10051                       #默认端口10051,(可去掉#)

DBHost=localhost  数据库主机

DBName=zabbix   数据库名

DBUser=zabbix   数据库用户名

DBPassword=zabbix  用户密码

LogFile=/tmp/zabbix_server.log  日志

[root@localhost php]# zabbix_server   启服务

[root@localhost php]# netstat -nutlp | grep 10051

vim /usr/local/etc/zabbix_agentd.conf(自己监控自己)

# ListenPort=10050     #默认10050端口,被监控的主机

Server=127.0.0.1,192.168.2.5  允许可以访问agent的IP地址

ServerActive=127.0.0.1,192.168.2.5 指定监控服务器ip地址

Hostname=Zabbix_server   标识自己的主机名(和命令行的主机名无关系)

LogFile=/tmp/zabbix_agentd.log  日志名称存储位置

UnsafeUserParameters=1 是否允许'被监控'自定义监控命令

[root@localhost php]# zabbix_agentd

[root@localhost php]# netstat -nutlp | grep 10050

[root@localhost php]# yum -y install php-gd php-xml php-ldap php-bcmath php-mbstring

]# vim /etc/php.ini

date.timezone =Asia/Shanghai

max_execution_time = 300

post_max_size = 32M

max_input_time = 300

memory_limit = 128M

[root@localhost php]# systemctl restart php-fpm

 

初始化web管理页面(浏览器访问web)

[root@localhost php]# firefox http://192.168.2.5/index,html

检查全部有ok字样

 

连接数据库

 

host要写监视服务器的ip

name随便写

 

确认后点击[Finish]

vim /usr/local/nginx/html/conf/zabbix.conf.php    #查看信息

<?php

// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';

$DB['SERVER']   = 'localhost';
$DB['PORT']     = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'zabbix';

// Schema name. Used for IBM DB2 and PostgreSQL.

$DB['SCHEMA'] = '';

$ZBX_SERVER      = '192.168.2.5';

$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Tom';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

登陆管理页面

管理员 admin或Admin   初始密码 zabbix

 

修改密码,修改语言

 

可用性ZBX绿了就ok了

 

 

 

[192.168.2.100] 客户端部署

[root@host lnmp_soft]# tar -xf zabbix-3.4.4.tar.gz 

[root@host lnmp_soft]# cd zabbix-3.4.4/
[root@host zabbix-3.4.4]# yum -y install gcc pcre-devel        #先装gcc在配置

[root@host zabbix-3.4.4]# ./configure --enable-agent              #如果忘装gcc就编译会报错,再装gcc再编译还失败就把该目录删除重新解包

[root@host zabbix-3.4.4]# make install

[root@host zabbix-3.4.4]# ls /usr/local/bin/

eip  setip  zabbix_get  zabbix_sender
[root@host zabbix-3.4.4]# ls /usr/local/etc/
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@host zabbix-3.4.4]# ls /usr/local/sbin/
zabbix_agentd
 

 

[root@host zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf

Server=127.0.0.1,192.168.2.5    

ServerActive=192.168.2.5            设置监控服务器的ip  

Hostname=Web100

LogFile=/tmp/zabbix_agentd.log   #日志(可查看报错信息)

# ListenPort=10050      默认10050可去掉#

UnsafeUserParameters=1

[root@host zabbix-3.4.4]# useradd -s /sbin/nologin zabbix        #需先建用户不然启服务失败 

[root@host zabbix-3.4.4]# zabbix_agentd                                  #启服务

[root@host zabbix-3.4.4]# netstat -nutlp | grep 10050

 

 

添加监控主机

 

一般主机名和可见名(别名)一致,ip写被监控的服务器,如填的域名就需写DNS来解析

 

给web100添加监控模板

 

点击web100进去添加模板成功更新后出来刷新页面绿了就okl(生活没有点绿色怎么多姿多彩呢~)

 

 

查看HTTP service的状态,目前为Down(0)

把web100的主机装上http并启动,再看状态是否为Up(1)

 

自定义监控(在客户端编写监控命令给监控服务器调用)

 

  • 配置客户端

1.启用自定义监控项

[root@host zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf

280 UnsafeUserParameters=1

263 # Include=/usr/local/etc/zabbix_agentd.userparams.conf
264 # Include=/usr/local/etc/zabbix_agentd.conf.d/
265  Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf                 #编写监控命令路径
 

2.编写监控命令

[root@host zabbix-3.4.4]# cd /usr/local/etc/zabbix_agentd.conf.d/

[root@host zabbix_agentd.conf.d]# vim count.line.passwd.conf     #与上面配置的路径下的扩展名要一致
UserParameter=get_user_num,wc -l /etc/passwd | awk '{print $1}' 

UserParameter=命令名,命令   ...可以定义多个

3.重启zabbix_agentd服务

[root@host zabbix_agentd.conf.d]# netstat -nutlp | grep 10050

[root@host zabbix_agentd.conf.d]# killall -9 zabbix_agentd

zabbix_agentd: no process found                           #一直杀,杀到报不存在为止(自身没有停服务命令)

[root@host zabbix_agentd.conf.d]# zabbix_agentd

4.使用zabbix_get 测试自定义监控项

[root@host zabbix_agentd.conf.d]# zabbix_get -s 127.0.0.1 -p 10050 -k get_user_num

22

  • 配置监控服务器

管理员admin登陆管理网页做以下操作;

1.创建新的监控模板(里面有应用集选项)

 

2.创建应用集

 

3.创建监控项目,并关联命令

4.监控客户端时调用新创建的监控模板

 

5.查看监控\信息

 

 

 

 

 

监控报警

zabbix报警机制(邮件  短信  微信[收费] 即时消息)

 

自定义的监控项默认不会自动报警,首页也不会提示错误,需要配置触发器与报警动作才可以自定报警

 

触发器

当触发条件发生后,会导致一个触发事件,触发事件会执行某个动作

表达式格式:  {主机:监控命令.函数(参数)} <表达式> 常数

动作

触发器的条件被触发后的行为,如发邮件,重启服务等

[root@localhost lnmp_soft]# yum -y install postfix

[root@localhost lnmp_soft]# systemctl start postfix.service 
[root@localhost lnmp_soft]# netstat -nutlp | grep 25
 

 

表达式的定义,选择之前创建的监控项,最新T值为当前获取到的值

 

 

创建图形

 

主机关联模板,可以关联多个模板

 

第三方报警平台

  onealert提供的通知分派与排班策略,以及全方位的短信、微信、qq、电话提醒服务

 

添加应用,注意添加的是zabbix

实现微信报警需关注微信公众号即可

 

安装onealert agent

切换zabbix脚本目录

查看zabbix脚本目录: vim /etc/zabbix/zabbix_server.conf  ---> AlertScriptsPath

下载onealert agent包,解包安装,在安装过程中按提示输入zabbix管理地址,用户名,密码

 

如何删除onealert agent

1.删除报警媒介类型中的脚本

删除创建的用户和用户群组,还有动作

 

聚合图形

 

模板共享 

https://github.com/zhangyao8/zabbix-community-repos

 

 

监控全网服务器

100台服务器,先需要zabbix全部监控起来

方案

常规监控:cpu 内存 磁盘 网卡

问题:怎么快速添加100台机器

  1. 使用克隆的方式
  2. 自动注册和自动发现
  3. 调用zabbix api接口 curl,python

 

api 接口使用(curl)

 

实施规划

硬件、系统、网络监控

所有集群节点(所有虚拟机)都在监控上

交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)

 

应用服务监控:

1.监控备份服务器,监控rsync端口;

  • 监控837端口net.tcp.port[,837], 模拟推送拉取文件

2.监控NFS服务器,使用监控NFS进程来判断NFS服务器正常;

  • 端口(111的rpc端口获取nfs端口)net.tcp.port[,111]
  • showmount -e ip | wc -l

3.监控mysql服务器,监控3306端口或者使用zabbix提供的mysql模板;

  • net.tcp.port9,3306]
  • mysql远程登录
  • 使用zabbix agent 自带模板及key

4.监控2台web服务器;

  • 监控80端口 net.tcp.port[,80]
  • 查看网页状态码,返回内容==zabbix自带web检测

5.监控URL地址来更精确的监控我们的网站运行正常

  • 使用zabbix自带的监控 进行监控

6.监控反向代理服务器,PPTP服务器等你在期中部署的服务

  • nginx ,pptp
  • ntp端口udp 123

7.监控nginx7中连接状态

  • 自定义监控

 

监控端口 netstat ss lsof ---> wc -l

监控进程 ps -ef | 个人票进程 | wc -l 试试运行一下

web ---> curl

mysql ---> select insert 

memcache ---> set 再get

 

全网监控

安装客户脚本,for centos6

 

使用自动发现规则

添加自动发现规则

创建发现动作

 

自动发现:zabbix server 主动发现所有客户端,然后将客户端登记到自己的小本本上,缺点是会压力大

自动注册:zabbix agent主动到server上报到,登记;缺点是agent有可能找不到server(配置出错)

 

两种模式(都是在agent上配置,zabbix的使用要在hosts文件中预先做好主机名的解析):

被动模式:默认agent被server抓取数据

主动模式:agent主动将数据发送到server端

 

 

自动发现----被动模式

创建发现动作

配置动作

在条件中添加条件,更精确

在操作里添加主机与启用主机

 

分布式监控与SNMP监控

作用:分担压力,减轻负载

多机房监控

zabbix server---> zabbix agent (只能同一局域网监控)

zabbix Server ===》  zabbix proxy===》zabbix agent1 agent2 agent3 。。。172.16.1.61           172.16.1.21        172.16.1.0/24===》  zabbix proxy===》zabbix agent4 agent5 agent6 。。。

多机房监控

zabbix Server(北京)==》 zabbix proxy(每个机房搭建)==》 zabbix agent    122.71.240.233/172.16.1.61122.71.241.11/172.16.2.21     172.16.2.0/24

环境说明

zabbix server m01  zabbix proxy cache01  zabbix agent  cache01

配置zabbix proxy

第一个里程碑:配置zabbix yum源,并安装proxy

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpmyum install zabbix-proxy-mysql -y

第二个里程碑:安装数据库

zabbix  proxy也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息

安装数据库

yum -y install mariadb-serversystemctl start mariadb.service

建立数据库

mysqlcreate database zabbix_proxy character set utf8 collate utf8_bin;grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by'zabbix';exit

导入数据文件

zcat /usr/share/doc/zabbix-proxy-mysql-3.0.13/schema.sql.gz |mysql -uzabbix -pzabbix zabbix_proxy

配置zabbix proxy 连接数据库

sed -i.ori'162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.confsed -i's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.confsed -i's#Hostname=Zabbix proxy#Hostname=cache01#' /etc/zabbix/zabbix_proxy.conf# Hostname

作为后面添加的代理程序名称,要保持一致

启动

systemctl restart zabbix-proxy.service

检查端口

[root@cache01 ~]# netstat -lntup |grep zabbixtcp        0      0 0.0.0.0:10050     0.0.0.0:*       LISTEN      105762/zabbix_agenttcp        0      0 0.0.0.0:10051   0.0.0.0:*         LISTEN      85273/zabbix_proxytcp6       0      0 :::10050       :::*      LISTEN      105762/zabbix_agenttcp6       0      0 :::10051  :::*           LISTEN      85273/zabbix_proxy

第三个里程碑:修改agent配置指向 proxy

[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.61ServerActive=172.16.1.61[root@cache01 ~]# sed -i 's#172.16.1.61#172.16.1.21#g' /etc/zabbix/zabbix_agentd.conf[root@cache01 ~]# grep ^Server /etc/zabbix/zabbix_agentd.confServer=172.16.1.21ServerActive=172.16.1.21[root@cache01 ~]# systemctl restart zabbix-agent.service

第四个里程碑:web界面添加代理

管理 >> agent代理程序 >> 创建代理

代理程序名称要填写主机名

稍等片刻就能在程序中出现代理

在主机中能发现主机代理

SNMP监控

使用范围

无法安装agent  很多前辈的监控软件都可以监控各种设备  都是通过snmp监控

snmp simple network manager protocol 简单网络管理协议
简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

安装snmp程序

yum -y install net-snmp net-snmp-utils

 配置snmp程序

sed -i.ori'57a view systemview   included  .1' /etc/snmp/snmpd.confsystemctl start snmpd.service

 测试snmp

[root@m01 ~]# snmpwalk -v 2c -c public 127.0.0.1 sysnameSNMPv2-MIB::sysName.0 = STRING: m01

说明:

  • snmpwalk 类似 zabbix_get

  • -v 2c  指定使用snmp协议的版本  snmp分为v1 v2 v3

  • -c public  指定暗号

  • sysname  类似zabbix的key

在web界面进行配置

添加新的主机,注意使用snmp接口

选择模板,注意使用SNMP的模板

添加完成就能够在主机中看到snmp监控对的主机

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://xriqi.baihongyu.com/

你可能感兴趣的文章
MuchGCN:Multi-Channel Graph Convolutional Networks
查看>>
kernel_size为1的卷积核与全连接层的关系
查看>>
STRATEGIES FOR PRE-TRAINING GRAPH NEURAL NETWORKS
查看>>
PAT_A 1010. Radix (25)
查看>>
PAT_A 1005. Spell It Right (20)
查看>>
PAT_A 1012. The Best Rank (25)
查看>>
PAT_A 1013. Battle Over Cities (25)
查看>>
PAT_A 1015. Reversible Primes (20)
查看>>
SetWindowLong函数介绍
查看>>
百度云cdn,bos设置
查看>>
[chrome]好用的chrome Json 格式化插件
查看>>
[Android]hex 64k解决
查看>>
[iphone]调出来控制的小圆球(控制点)
查看>>
[react-native]prop,state对比
查看>>
ssl问题被google 拒收
查看>>
[GreenDAO]like的坑
查看>>
正则表达式中的元字符
查看>>
Java Collection很好的介绍
查看>>
java中的JSon解析
查看>>
解决 Mybatis Generator由表字段使用关键字导致的异常方案
查看>>