监控系统介绍
监控系统功能
- 数据收集:客户端、SNMP协议、自定义插件等
- 数据展示:人难以通过原始数据发现问题,图形化展示很有必要,可以直观地从图形中发现数据的变化趋势。
- 告警:是监控的重要功能。包含告警策略(基于规则)、告警发送。每个告警都会存在历史事件中,便于后期问题排查,以及统计分析告警的趋势
- 报表:对一段时间的监控和告警数据进行分析,为运维和研发提供优化的方向。
- 使用监控系统的用于来自不同的部门,关心的数据也是不同的,所以统一认证及权限管理也是监控系统的基本功能之一。
监控系统组成
Cacti,基于SNMP和RRDTool的网络流量监控分析的系统,RRDTool是用来处理时间序列数据的套件
监控系统趋势
zabbix发展
两个特点:1.监控任何东西,设备、系统、应用、服务和资源。网络、服务器、云、应用、服务;2.企业级。可以无限扩展,分布式部署,高可用,注重安全。
由前端、服务端、代理端、客户端、Java监控网关组成
zabbix 4.0功能
数据收集
通过agent客户端来收集数据,客户端支持多平台部署。zabbix客户端占用的系统资源很少,可以获取CPU、内存、网卡、磁盘、日志等信息。对于无法安装客户端的设备,如网络设备,zabbix支持通过SNMP(简单网络协议)获取监控数据,还可以监控打印机、存储、UPS,基本只要联网的设备都可以通过SNMP监控。也支持通过IPMI获取硬件的温度,风扇,硬盘,电源电压等(IPMI智能平台管理接口,是一个开放的硬件接口标准,通过IPMI不仅可以获取监控数据,也可以管理硬件设备,重启,关机,获取硬件日志等)。有些服务不支持客户端安装,也不支持SNMP,可通过zabbix自带的检测进行监控,支持TCP,ICMP,SSH,Telnet检测方式。如果有特殊需求,zabbix还支持自定义监控,通过shell,python,ruby,perl,powershell任何可执行的脚本收集监控数据。
默认Zabbix提供URL监控,可以使用该功能监控线上的业务是香郦常,易常响应或者没有四配的关键字及时告警
数据展示
图表及监控大屏
网络拓扑图
幻灯片图表
图片展示插件
故障检测
zabbix支持8种运算符。29个函数可以任意组合使用。完全可以满是我们的告警阈值设置需求。
故障预警
故障规则和恢复规则独立
多个告警规则组合
与历史数据对比分析告警
支持数据波动规则
告警依赖关系
zabbix架构
zabbix server组成
zabbix基本术语
组件功能
frontend 前端
Zabbix API Zabbix的接口
Zabbix Server Zabbix服务端
Zabbix Agent Zabbix客户端
Zabbix Proxy Zabbix代理
Network discovery 网络自动发现
Active agent auto-registration 主动Agent自动注册
Low-level discovery 低级自动发现
监控收集
host 主机
host group 主机组
item 监控项
value preprocessing 预处理
template 模板
application 应用
web scenario web场景
Macros 宏
数据展示
图表 graph
聚合图表 screen
拓扑图 maps
Slide shows 幻灯片演示
告警相关
Trigger 触发器
event 事件
异常状态 problem
OK 正常状态
action 操作
escalation 升级
media 媒介
notification 通知
remote command 远程命令
Maintenance 维护模式
认证和权限
User 用户
User Group 用户组
permission 权限
User Type 用户类型
使用容器安装zabbix
mysql:
docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" -p 3311:3306 -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin
版本改成了5.7.32
docker run --name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway:latest
docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql01" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysql01:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysql-server:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-server-mysql -t -v /home/root123/sunjiajie/dockerdata/zabbix-server/zabbix_server.conf:/etc/zabbix/zabbix_server.conf -e DB_SERVER_HOST="106.14.99.71" -e DB_SERVER_PORT=3312 -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-server-mysql -t -v /home/root123/sunjiajie/dockerdata/zabbix-server/zabbix_server.conf:/etc/zabbix/zabbix_server.conf -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --link mysql-server:mysql --link zabbix-java-gateway:zabbix-java-gateway -p 10051:10051 -d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="mysql01" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --link mysql01:mysql --link zabbix-server-mysql:zabbix-server -p 8181:8080 -d zabbix/zabbix-web-nginx-mysql:latest
docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 8181:8080 -d zabbix/zabbix-web-nginx-mysql:latest
docker run --name zabbix-web-nginx-mysql -t -e DB_SERVER_HOST="106.14.99.71" -e DB_SERVER_PORT=3312 -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --link zabbix-server-mysql:zabbix-server -p 8181:8080 -d zabbix/zabbix-web-nginx-mysql:latest
登录网页: Admin zabbix
docker run --name zabbix-agent -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" --link zabbix-server-mysql:zabbix-server -d zabbix/zabbix-agent:latest
报错:找不到agent,需要改ip地址。
docker inspect zabbix-agent | grep IPAddress 改成容器的ip地址
图表中文乱码解决方法:
准备好可以显示的中文字体,使用ssh文件传输协议上传至服务器。
将字体文件复制到容器:
docker cp ./simhei.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/assets/fonts/
使用最高权限进入zabbix-web容器
sudo docker exec -it -u root zabbix-web-nginx-mysql /bin/bash
备份原先字体,建立软链接:
mv DejaVuSans.ttf DejaVuSans.ttf.bak
ln -s simhei.ttf DejaVuSans.ttf
刷新页面
注意:监控宿主机,需要修改配置:configuration -> hosts -> zabbix server ,改成zabbix-agent镜像的ip地址
- 查询镜像ip地址:docker inspect zabbix-agent | grep IPAddress
四
4.1 主机监控部署
IPMI
1、确认服务器端zabbix server是否启用了IPMI支持(通过启动日志查看。)
2、配置IPMI Poller的进程,安装IPMI Poller的客户端,用于验证到被监控设备的IPMI访问数据情况
- 编辑zabbix的配置文件,重启zabbix server:
vim /etc/zabbix/zabbix .conf
StartPollers=50
StartIPMIPollers=5
查看进程是否开启
ps ax|grep -i IPMI - 确认zabbix server端是否已经安装了IPMI Tool
which ipmi
linux 查找软件命令:apt-cache search ipmi
3、ipmi使用
- ubuntu 安装ipmitool
apt-cache search ipmi
apt-get install ipmitool
apt-get install openipmi
- 查看进程是否开启:lsmod | grep ^ipmi
- 加载模块:
modprobe ipmi_watchdog
modprobe ipmi_poweroff
modprobe ipmi_devintf
modprobe ipmi_si 加载该模块如果没有不影响ipmi的使用(与系统版本有关)
modprobe ipmi_msghandler 加载该模块如果没有不影响ipmi的使用
- 注意:使用ipmitool获取数据的前提是BMC接口已连接了网线!!
- BMC网络配置:
ip设置为静态:
sudo ipmitool lan set 8 ipsrc static
配置ip地址(注意:需要与服务器地址在同一网段下):
sudo ipmitool lan set 1 ipaddr 192.168.10.10
配置掩码:
ipmitool lan set 8 netmask 255.255.255.0
因为在同一网段下,所以不需要配置网关。
服务器上ping BMC 的ip,能ping通即有效。
另:
恢复默认值,适用于浪潮服务器BMC
ipmitool raw 0x32 0x66
BMC执行热(冷)复位,在一些服务器(如HPE)配置完IP后需重启BMC生效
ipmitool -I open mc reset <warm|cold>
- BMC用户配置:
配置用户和密码:
https://blog.csdn.net/ljlfather/article/details/102918530
sudo ipmitool user set name 3 zabbix
sudo ipmitool user set password 3 zabbix@123
sudo ipmitool channel setaccess 8 3 callin=on ipmi=on link=on privilege=2 配置权限
注意:还要让用户enabled。通过网页和命令都可以。
privilege的值:
1 callback
2 user
3 operator
4 administrator
5 OEM
- 测试:
sudo ipmitool -I lanplus -H XXXXXXX -U zabbix -P zabbix@123 -L user sensor list
列出一大段设备。成功。
- 浪潮服务器查看型号:
root123@root123:~$ sudo ipmitool fru list
FRU Device Description : Builtin FRU Device (ID 0)
Chassis Type : Rack Mount Chassis
Chassis Part Number : 0
Chassis Serial : 00
Chassis Extra : NULL
Board Mfg Date : Fri Dec 19 22:34:00 2014
Board Mfg : Inspur
Board Product : YZMB-00689-101
Board Serial : MBH811W20555A80
Board Part Number : NF5280M4
Product Manufacturer : Inspur
Product Name : NF5280M4
Product Part Number : 0
Product Version : 00001
Product Serial : 817359429
Product Asset Tag : 817359429
- 通过ipmitool获取设备信息
sudo ipmitool -I lanplus -H 10.166.38.10 -U zabbix -P zabbix@123 -L user sensor get "FAN_0"
SNMP
下载:
sudo apt-get install snmpd snmp
配置:
端口与用户,在 /etc/snmp/snmpd.conf 文件中:
rouser zabbix auth
创建用户,首先把服务停掉.
sudo systemctl stop snmpd
在 /var/lib/snmp/snmpd.conf 最后添加一行:
createUser zabbix SHA zabbix@123
重启服务
测试:
snmpwalk -v 3 -l authNoPriv -a SHA -u 'zabbix' -A 'zabbix@123' '127.0.0.1:161'