第一章 zabbix监控
1.1 为什么要监控
在需要的时刻,提前提醒我们服务器出问题了
当出问题之后,可以找到问题的根源
网站/服务器 的可用性
1.1.1 网站可用性
在软件系统的高可靠性(也称为可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,这个X是代表数字3~5。X个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比,我们通过下面的计算来感受下X个9在不同级别的可靠性差异。
1个9:(1-90%)*365=36.5天,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天
2个9:(1-99%)*365=3.65天 , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天
3个9:(1-99.9%)*365*24=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。
4个9:(1-99.99%)*365*24=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。
5个9:(1-99.999%)*365*24*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。
6个9:(1-99.9999%)*365*24*60*60=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒
1.2 监控什么东西
监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控
1.3 怎么来监控
1.3.1 远程管理服务器
如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
1.3.2监控硬件
查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。
使用ipmitool实现对服务器的命令行远程管理
yum -y install OpenIPMI ipmitool ->IPMI在物理机可以成功,虚拟机不行
[root@KVM ~] ipmitool sdr type Temperature
Temp | 01h | ns | 3.1 | Disabled
Temp | 02h | ns | 3.2 | Disabled
Temp | 05h | ns | 10.1 | Disabled
Temp | 06h | ns | 10.2 | Disabled
Ambient Temp | 0Eh | ok | 7.1 | 22 degrees C
Planar Temp | 0Fh | ns | 7.1 | Disabled
IOH THERMTRIP | 5Dh | ns | 7.1 | Disabled
CPU Temp Interf | 76h | ns | 7.1 | Disabled
Temp | 0Ah | ns | 8.1 | Disabled
Temp | 0Bh | ns | 8.1 | Disabled
Temp | 0Ch | ns | 8.1 | Disabled
1.3.3 查看cpu相关
lscpu、uptime、top、htop vmstat mpstat
其中htop需要安装,安装依赖与epel源。
[znix@clsn ~]$lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
1.3.4 内存够不够可以用
free
[znix@clsn ~]$free -h
total used free shared buffers cached
Mem: 996M 867M 128M 712K 145M 450M
-/+ buffers/cache: 271M 725M
Swap: 1.0G 0B 1.0G
1.3.5 磁盘剩多少写的快不快可以用
df、dd、iotop
[znix@clsn ~]$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 24G 15G 62% /
tmpfs 499M 20K 499M 1% /dev/shm
/dev/vdb1 20G 4.4G 15G 24% /data
1.3.6 监控网络
iftop nethogs
iftop 监控主机间流量 -i 指定监控网卡
nethogs 监控进程流量
1.4 监控工具总览
mrtg 流量监控出图
nagios 监控
cacti 流量监控出图
zabbix 监控+出图
1.5 zabbix介绍
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。
使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做死活监视。
在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP、利用 IPMI、SSH、telnet 对目标进行监视。
另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
1.5.1 zabbix的组成
zabbix官网: https://www.zabbix.com
zabbix 主要由2部分构成 zabbix server和 zabbix agent
zabbix proxy是用来管理其他的agent,作为代理
1.5.2 zabbix监控范畴
硬件监控 :Zabbix IPMI Interface
系统监控 :Zabbix Agent Interface
Java 监控:ZabbixJMX Interface
网络设备监抟:Zabbix SNMP Interface
应用服务监控:Zabbix Agent UserParameter
MySQL 数据库监控:percona-monitoring-pldlgins
URL监控:Zabbix Web监控
第二章 安装zabbix
2.1关闭防火墙
systemctl stop firewalld.service 停止firewalld服务
systemctl disable firewalld.service 设置开机默认不启动
2.2关闭selinux
getenforce 查看状态
vim /etc/sysconfig/selinux 开机不启动
SELINUX=disabled
生产环境单独在防火墙上开启端口和策略
2.3安装zabbix5.0源
2.3.1 安装依赖
yum -y install openssl OpenIPMI-libs unixODBC libaio iksemel fping net-snmp net-snmp-utils mysql perl-DBI curl libcurl-devel net-snmp-devel libssh2 libssh2-devel libxml2 libxml2-devel
2.3.2安装数据库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all *清理yum缓存
2.4安装zabbix5.0服务端和客户端
yum install zabbix-server-mysql zabbix-agent 国外源安装可能比较慢或者出错,多试几次
2.5安装CentOS SCLo RH存储库:
yum install centos-release-scl
编辑配置文件 /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
Enabled=1
...
安装Zabbix前端包
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl
2.6安装并配置数据库
2.6.1安装mysql5.7
安装MySQL服务
yum install rh-mysql57-mysql rh-mysql57-mysql-server rh-mysql57-mysql-devel
配置MySQL服务
vim /etc/opt/rh/rh-mysql57/my.cnf
character_set_server = utf8
vim /etc/profile
export PATH=/opt/rh/rh-mysql57/root/bin:$PATH
source /etc/profile
启动服务
systemctl start rh-mysql57-mysqld
2.6.2创建初始数据库
mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'Password@123.';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
2.6.3导入初始架构和数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix 提示输入的密码为:password
2.6.4 Zabbix server配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=password
DBSocket=/var/lib/mysql/mysql.sock
2.7配置文件
vim /etc/opt/rh/rh-php72/php.ini
soap.wsdl_cache_enabled=1
max_input_time = 600
max_execution_time = 300
date.timezone = Asia/Shanghai
post_max_size = 32M
memory_limit = 128M
mbstring.func_overload = 1
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1
listen.mode = 0666
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
; php_value[date.timezone] = Europe/Riga
vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/opt/rh/rh-nginx116/log/nginx/error.log;
pid /var/opt/rh/rh-nginx116/run/nginx/nginx.pid;
# Load dynamic modules. See /opt/rh/rh-nginx116/root/usr/share/doc/README.dynamic.
include /opt/rh/rh-nginx116/root/usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/opt/rh/rh-nginx116/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/opt/rh/rh-nginx116/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/opt/rh/rh-nginx116/nginx/conf.d/*.conf;
}
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
listen 80;
# server_name example.com;
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /.ht {
deny all;
}
location ~ /(api/|conf[^.]|include|locale) {
deny all;
return 404;
}
location ~ [^/].php(/|$) {
fastcgi_pass unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
2.8启动Zabbix5.0
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm rh-mysql57-mysqld
2.9 配置Zabbix前端
第三章 基础功能使用
3.1 Linux主机监控
linux主机的话还是比较好处理的,无论是安装agent代理程序还是使用snmp,都是比较方便的
基础配置:关闭selinux,关闭防火墙或者打开161端口。
3.1.1 安装
安装net-snmp
yum install -y net-snmp
3.1.1.1修改配置文件
vim /etc/snmp/snmpd.conf
sec.name source community
com2sec notConfigUser default public #社区名称定义为public
view systemview included .1 #添加一个采集项.1,意味着可以采集到所有mib tree的信息
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
3.1.3启动服务
systemctl start snmpd.service
netstat -lntup|grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 6711/snmpd
3.1.4在zabbix server上测试
snmpwalk -v 2c -c zabbix 222.29.77.167|wc -l
12235 #这里取到了12235项
nmap端口扫描
yum install -y nmap
nmap -sU 目标IP -p 161
3.1.5 添加Linux主机
配置——主机——创建主机——移除interface的客户端——添加SNMP客户端
——填写主机名称、可见名称、群组、IP地址,如图所示:
点击添加,然后等待1分钟,等待图标变成绿色即正常,如图所示:
3.2 Web监控
通过zabbix做web监控,不仅仅可以监控到站点的响应时间,还可以根据站点返回的状态码或响应时间做报警设置,比如说对某个url进行监控,当访问返回的状态码是非200状态时都报警(创建触发器即可)。下面简单介绍下监控设置
3.2.1 创建监控模板
点击配置——模板——创建模板
3.2.2 创建web监控场景
监控网页名称便于自己区分
监控的URL地址
监控超时时间,根据自己相应业务动态调整频率
要求返回的状态码,这里返回200为正常,非200报警
3.2.3 查看效果
3.2.4 创建触发器
如果想要实现报警功能还需要我们进行触发器的设置
点击刚才创建的模块Templates Web status,选择触发器,创建触发器
3.3 Windows主机监控
3.3.1 安装/打开snmp服务
3.3.2 关闭防火墙
这里只是测试,实际生产环境环境,需要开放snmp端口161,或者对主机的固定IP进行放行。
3.3.3 配置snmp服务并将其重启
如图所示,192.168.249.142是我zabbix-server的IP,需要配置接受,上面是本地snmp的团体名,必须配置的与zabbix-server上的一样,否则不能正常的收发数据。
3.3.4配置检测
在server端使用命令检测client的配置是否有问题:
无法收集到数据:
[root@localhost ~]# snmpwalk -v 2c -c zabbix 192.168.249.128 hrMemory
Timeout: No Response from 192.168.249.128
正常情况:
[root@localhost ~]# snmpwalk -v 2c -c zabbix 192.168.249.128 hrMemory
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 2096632 KBytes
snmpwalk命令依赖于:net-snmp-utils软件包,如果提示找不到命令,安装就好了:yum install net-snmp-utils -y,如果检测不通过,则说明client配置有问题。
3.3.5 创建主机
SNMP绿色亮起,说明sever与client的交互没有问题,ok,如果一直为灰色,一般是团体名,既宏的配置有问题,检查更改直到这个按钮亮起。(在网络没有问题的前提下)