监控目的
报告系统运行情况
每一部分必须同时监控
内容包括吞吐量\反应时间\使用率等
提前发现问题
进行服务器性能调整前,知道调整什么
找出系统的瓶颈在什么地方
类别
公开数据
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安装(干净环境)
注:官网有安装文档
[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
$i=33;
echo $i;
?>
curl localhost/test.php
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/ #查看配置文件
创建数据库与数据库账户
[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/Shanghaimax_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 #查看信息
// 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值为当前获取到的值
创建图形
主机关联模板,可以关联多个模板
第三方报警平台
http://www.onealert.com 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台机器
api 接口使用(curl)
实施规划
硬件、系统、网络监控
所有集群节点(所有虚拟机)都在监控上
交换机,路由器监控(简单方法:换成端口对应服务器网卡流量监控;标准方法:监控交换机的网卡)
应用服务监控:
1.监控备份服务器,监控rsync端口;
2.监控NFS服务器,使用监控NFS进程来判断NFS服务器正常;
3.监控mysql服务器,监控3306端口或者使用zabbix提供的mysql模板;
4.监控2台web服务器;
5.监控URL地址来更精确的监控我们的网站运行正常
6.监控反向代理服务器,PPTP服务器等你在期中部署的服务
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.61
122.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.rpm
yum install zabbix-proxy-mysql -y
第二个里程碑:安装数据库
zabbix proxy也需要数据库,这个数据库不是用于存储监控数据的 只是用于存储配置信息
安装数据库
yum -y install mariadb-server
systemctl start mariadb.service
建立数据库
mysql
create 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.conf
sed -i
's#Server=127.0.0.1#Server=172.16.1.61#' /etc/zabbix/zabbix_proxy.conf
sed -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_agent
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 85273/zabbix_proxy
tcp6 0 0 :::10050 :::* LISTEN 105762/zabbix_agent
tcp6 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监控
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.conf
systemctl 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监控对的主机