防伪码:真理不需色彩,美丽不需涂饰
一、监控概述:
·初级:
·1.识别监控对象 (分级)
·2.理解监控对象 (理论基础)
·3.细分监控对象的指标
·4.确定告警的基准线
·预中级:
1. 工具化和监控分离
2. 监控对象的分类:
2.1 硬件监控 (方法:机房巡检、IPMI、SNMP简单网络管理协议、)
2.2 系统监控 (对象:cpu、内存、IO【磁盘、网络】)
2.3 服务监控 (对象:分类服务)
2.4 日志监控 (方法:Elastic Stack)
2.5 网络监控 (方法: 第三方、Smokeping)
2.6 APM应用性能管理 (工具:pinpoint APM)
2.7 流量监控 (工具:Piwik、xx统计、xx分析)
2.8 其他监控 (APP监控、安全监控、业务监控、舆论监控、xx监控等)
3. 掌握一个监控工具。例如:zabbix
·中级:
0.标准化监控(标准化的脚本、模板、....)
1. 分布式监控 (主动、被动、分布式)
2. 自动化监控 (自动发现、主动注册【Agent主动注册、Server主动添加(API)】)
3. 性能优化 (数据采集、数据存储、数据查询)
4. 二次开发 (定制报表、API调用、)
·进阶:(精通到放弃)
1. 告警阈值动态化
2. 智能告警:【1.告警去重 2.依赖】
3. 故障自愈 (事件驱动、主动控制)
4. 大规模告警
硬件监控:
1. 机房巡检
2. 通过网络来巡检
例如:DELL 通过iDRAC口监控
HP 通过ILO
IBM 通过IMM
由于每个厂商不一样可以通过IPMI协议来统一管理。
IPMI简介:
Ipmitool是一种可用在linux系统下的命令行方式的ipmi平台管理工具,它支持ipmi 1.5规范(最新的规范为ipmi2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。
Ipmitool有两种使用方式:
安装IPMI
Zabbix自带IPMI
yum install OpenIPMI ipmitool systemctl start ipmi
安装ipmitool管理工具:
详细安装配置请参考网站:
https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html
建议通过以上IPMI网址安装配置。
通过SNMP来管理:
基于SNMP监控
安装略
使用方法
查看cpu负载
snmpget -v2c -c admin 192.168.56.11 .1.3.6.1.4.1.2021.10.1.3.1 UCD-SNMP-MIB::laLoad.1 = STRING: 0.00 snmpwalk -v2c -c admin 192.168.56.11 .1.3.6.1.4.1.2021.10.1.3 UCD-SNMP-MIB::laLoad.1 = STRING: 0.00 UCD-SNMP-MIB::laLoad.2 = STRING: 0.01 UCD-SNMP-MIB::laLoad.3 = STRING: 0.05
监控宝 SNMP安装:(环境CentOS 7 )
1. CentOS SNMP安装:
安装net-snmp
yum install net-snmp net-snmp-devel net-snmp-utils
说明:net-snmp-devel是为了使用net-snmp-config, net-snmp-utils是为了使用snmpwalk。
配置 Net-SNMP
CentOS下的net-snmp无法在selinux环境下正常使用v3。 如果您想使用snmp v3,请先禁用selinux。
net-snmp-config --create-snmpv3-user -ro -A snmp@jiankongbao -a MD5 jiankongbao
以上命令,创建一个snmpv3用户,只读,使用MD5,用户名为jiankongbao,密码为snmp@jiankongbao。
注意:运行之前请先停用net-snmp服务。
停止snmpd服务
service snmpd stop
运行Net-SNMP
运行 Net-SNMP 服务的方法比较简单,不过Net-SNMP服务的名字是snmpd
service snmpd start
加入开机自启动运行服务列表:
chkconfig snmpd on
检测 Net-SNMP
可以使用 snmpwalk 来检测snmp服务是否正常开启。
snmpwalk -v 3 -u jiankongbao -a MD5 -A "snmp@jiankongbao" -l authNoPriv 127.0.0.1 sysDescr
如果一切正常,就会返回正常结果。
配置 防火墙
Net-SNMP 使用 udp 协议,161端口。
可以实现对mysql监控、Apache监控、Lighttpd监控、Nginx监控等等。
例如:
mysql监控:
先创建mysql的权限,需要在被监控的mysql服务器上为监控宝创建一个专用的mysql用户,这样做的好处是:
与您的其它MySQL用户进行有效隔离,独立管理。
对该用户进行受限管理,不需要给予任何MySQL权限。
指定监控宝的访问IP地址,阻止其它非法访问。
操作非常简单,在MySQL中操作如下:
CREATE USER 'jiankongbao'@'60.195.252.106' IDENTIFIED BY 'your_password'; CREATE USER 'jiankongbao'@'60.195.252.108' IDENTIFIED BY 'your_password'; # CREATE USER 'jiankongbao'@'60.195.249.83' IDENTIFIED BY 'your_password';
注意:防火墙安全。在MySQL或者防火墙中指定授权IP地址的时候,请只开放我们指定的IP地址,而不要直接开放整个C类网段,比如60.195.252.0/24,因为该网段中其它服务器不在我们的可控范围内。
Apache 监控:
需要开启status模块,修改httpd.conf文件。
添加如下:
ExtendedStatus OnSetHandler server-status Order deny,allow Deny from all Allow from 60.195.252.106 60.195.252.108 # Allow from 60.195.249.83
也可以设置受限访问设置:在配置文件中,修改
Lighttpd 监控
Lighttpd的状态监控依赖于mod_status模块,幸运的是,Lighttpd缺省已经内置了mod_status模块,我们要做的就是打开配置文件lighttpd.conf,开启这个模块,也就是删除模块前边的“#”注释符,比如:
server.modules = ( # "mod_rewrite", # "mod_redirect", # "mod_alias", "mod_access", # "mod_trigger_b4_dl", # "mod_auth", "mod_status", "mod_fastcgi", "mod_accesslog" )
然后,在lighttpd.conf中找到以下部分:
#### status module status.status-url = "/server-status"
默认情况下以上语句是被注释的,同样,删掉注释符,保存配置文件,重启lighttpd。
Nginx监控:
默认情况下不包含状态stub_status,所以编译时添加参数,然后再nginx.conf中开启状态页面。
Windows SNMP安装:
http://blog.jiankongbao.com/?p=185
详细请参考
http://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:%E5%AE%89%E5%85%A8%E6%8C%87%E5%BC%95
系统监控:
CPU:
进程:每一个进程,至少有一个线程。
每个进程可以有多个线程。
(单CPU单核),进程的内存空间是共享的,每个线程可以使用这些共享。提供协调 机制,防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
在linux系统中用top命令查看到用户态和内核态,为什么会有用户态和内核态?
0为内核态
3为用户态
CPU监控指标:中断/使用率/cpu负载/上下文切换/僵死进程的监控、最大进程的运行 数量、
Top uptime vmstat mpstat lscpu
CPU负载:单位时间内运行队列中就绪等待的进程数平均值。
内存:
虚拟内存(linux管理的是虚拟内存)、swap、物理内存,linux管理虚拟内存
内存是分页的,内存页默认每页是4K
Free –m查看内存时,剩余内存需要查看available列
total used free shared buff/cache available Mem: 977 102 514 6 360 714 Swap: 2047 0 2047
优化内存
echo "0" > /proc/sys/vm/swappiness cat /sys/block/sda/queue/scheduler
IO:
Iftop -n 不解析域名 -i 指定网卡名 –P 显示端口名
iftop -i eth0 -F 192.168.56.0/24
Nethogs
Iotop
负载均衡器一定要监控tcp状态
以下是链接以及工具
http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html http://os.51cto.com/art/201012/240476.htm http://www.cnblogs.com/cutepig/p/3403711.html http://elf8848.iteye.com/blog/2089055 yum -y install nethogs yum –y install iotop yum –y install iftop yum –y install sysstat
网络监控:
检测工具:
http://ping.chinaz.com/
开源工具:SmokePing 支持分布式
zabbix部署
1. 什么是zabbix
Zabbix是一个分布式开源的监控系统,支持多种采集方法,使它几乎可以采集和处理所有类型的监控数据;灵活的报警机制,可以实现各种的自定义报警策略,强大的拓展性,可以自定义监控项、图形、模板,还支持自动注册和自动发现,使它可以快速构建一套大型的监控系统,还有丰富的API接口。
其他监控系统cacti、nagios、MangeEngine_ApplicationsManager,lepus,smokeping,piwiki等选zabbix的理由:简单、高效、灵活
安装zabbix前需准备环境:
时间同步:
yum -y install ntpdate
设置计划任务:crontab -e
echo '* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root
查看计划任务:
crontab -l
1. 设置主机名解析
cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.152.142 zabbix-server
2.安装 EPEL 仓库和常用命令
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm yum install -y net-tools vim lrzsz tree screen lsof tcpdump
注意:如果epel源不能使用,请自行切换其他yum源,本次安装zabbix-server不需要网络,但是,由于选择的是基础环境安装,需要安装的工具包。
5.更新系统并重启
yum update -y && reboot
安装部署zabbix 3.0 LTS
Zabbix 3.0的安装
软件版本要求:
http 1.3.12
Php 5.4.0(不支持php7.0)
Mysql 5.0.3
Zabbix 3.0版本不支持php v7版本。入选用php v7 选择使用zabbix 3.2
安装YUM源。
[root@localhost Desktop]# rpm -ivh http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
在/etc/yum.repo下形成一个zabbix.repo文件
[root@localhost ~]# ll /etc/yum.repos.d/ total 40 -rw-r--r--. 1 root root 1664 Nov 30 02:12 CentOS-Base.repo -rw-r--r--. 1 root root 1309 Nov 30 02:12 CentOS-CR.repo -rw-r--r--. 1 root root 649 Nov 30 02:12 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 314 Nov 30 02:12 CentOS-fasttrack.repo -rw-r--r--. 1 root root 630 Nov 30 02:12 CentOS-Media.repo -rw-r--r--. 1 root root 1331 Nov 30 02:12 CentOS-Sources.repo -rw-r--r--. 1 root root 2893 Nov 30 02:12 CentOS-Vault.repo -rw-r--r--. 1 root root 957 Dec 28 01:37 epel.repo -rw-r--r--. 1 root root 1056 Dec 28 01:37 epel-testing.repo -rw-r--r--. 1 root root 401 Feb 15 2016 zabbix.repo
打开zabbix.repo文件yum源是指向国外的官网的,为了访问方便,建议把yum源地址改为阿里云的源
修改yum源指向阿里源:
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/$basearch/ baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
查看zabbix安装包:
yum list | grep zabbix
安装zabbix包
yum -y install zabbix-server-mysql zabbix-web-mysql
安装数据库:
yum -y install mariadb mariadb-server
启动mariadb服务并设置开机自启动。
systemctl enable mariadb.service systemctl start mariadb.service
要想使用补全命令可以安装epel源的包。
yum install bash-comp* -y
初始化数据库:
mysql_secure_installation
设置数据库密码:
mysqladmin -u root password
进入数据库:
mysql -uroot -p
创建数据库,并设置字符集为Utf-8
create database zabbix character set utf8 collate utf8_bin;
授权数据库:
grant all privileges on zabbix.* to zabbix@'localhost' identified by '123.Com';
打开导入数据库并验证zabbix数据库:
zcat /usr/share/doc/zabbix-server-mysql-3.0.8/create.sql.gz|mysql -uzabbix -p123.Com zabbix
注意:zcat是一个查看命令。
设置web界面:
vim /etc/httpd/conf/httpd.conf
更改ServerName
启动web服务:
systemctl restart httpd.service systemctl enable httpd.service
配置zabbix-server,设置配置文件中添加密码:
vim /etc/zabbix/zabbix_server.conf
启动zabbix-server服务:
systemctl start zabbix-server.service
注意:
Zabbix端口号10051
Zabbix的web配置文件默认安装再/etc/httpd/conf.d/
连接php的配置文件默认安装再/etc/httpd/conf.d/
关闭NetworkManager和防火墙:
systemctl disable firewalld systemctl disable NetworkManager
4. 关闭并确认 SELinux 处于关闭状态
vim /etc/sysconfig/selinuxSELINUX=disabled #修改为 disable setenforce 0 getenforce
注意:不注意防火墙或者NetworkManager和selinux会导致zabbix启动了却web界面里还是显示zabbix 未启动。
进入web界面安装zabbix
输入http://zabbix服务器地址/zabbix/setup.php进入,根据向导安装。更改时区
修改/etc/httpd/conf.d/zabbix.conf中的一行:
php_value date.timezone Asia/Shanghai把这一行的注释去掉地点改为上海。
Asia/Shanghai
更改完毕后,重启httpd.service服务。
这是安装zabbix的向导安装的第一步:
这是安装zabbix的向导安装的第二步
可以看到时间地点已经更改成功了!
下一步设置连接数据库的用户密码等:
下一步设置命名:
下一步:
安装zabbix:
输入用户密码,进入zabbix界面。
默认的用户:Admin 密码:zabbix
进入了zabbix的界面:
由于只安装了zabbix,并没有配置zabbix配置
修改zabbix配置文件:
vim /etc/zabbix/zabbix_server.conf
修改配置文件中的DBPassword=这一行并把注释去掉!
重启zabbix-server服务并设置开机自启动
下面再看一下zabbix界面NO变成了YES.
显示zabbix已经正常启动!
如果zabbix到达瓶颈可以进行拆分。
/etc/zabbix/web/zabbix.conf.ph在这个文件中配置拆分。
要想让zabbix监控自己,需要安装一个zabbix-agent 可以监控自己本身。依赖openssl
修改zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
可以配置主动和被动
启动zabbix-agent服务:
systemctl start zabbix-agent
可以看到如下zabbix server主机hosts
点击红色位置启用zabbix server
看到已启动!
Zabbix主动模式和被动模式:
理论:
被动模式流程,被动模式一定要记得设置Server = ServerIP
被动模式工作流程:
Server 打开一个TCP连接
Server发送一个key 为agent.ping
Agent接受这个请求,然后响应< HEADER >< DATALEN >
Server对接受到的数据进行处理
TCP连接关闭
主动模式流程:主动模式一定要记得设置ServerActive=ServerIP
Agent向Server建立一个TCP连接
Agent请求需要检测的数据列表
Server响应Agent,发送一个Items列表
Agent允许响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据
安装第二台agent:
安装agent服务:
rpm -ivh zabbix-agent-3.0.5-1.el7.x86_64.rpm
启动并设置开机自启
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
Zabbix添加监控主机:
在configuration中选择hosts:
如果Groups没有可以NEW一个,然后ip地址填写agent的ip,添加完毕后不要add,
还需要添加Templates模板之后再按add(在这里选择Template OS Linux模板)
截图如下:
可以看见host主机添加成功:
发现添加的主机ZBX为红色,报错如下:
Received empty response from Zabbix Agent at [192.168.0.106]. Assuming that agent dropped connection because of access permissions.
解决办法:修改agent的配置文件:
vim /etc/zabbix/zabbix_agentd.conf
修改为Server=(zabbix server的ip地址)
Server=192.168.152.142
重启zabbix-agent服务:
systemctl restart zabbix-agent.service
可以看到如下图红色变为了绿色,问题解决了!
使用zabbix-get:
安装zabbix-get服务:
yum install -y zabbix-get
测试方法:
例如:
zabbix_get -s linux-node2.example.com -k agent.ping
只能取zabbix agent类型
查看本机有多少内置key
zabbix_agentd -p
zabbix网址: