- 分布式监控,好处是提高信息数据采集,降低server端的压力,对用户的体验还是稳定性都是很好的选择。proxy和agent一样分为主被动,日常中一般使用主动模式(默认),agent端主动将数据提交给proxy端, 然后proxy主动推给server端,server端进行数据的分析和告警。
- 分布式结构,了解
- zabbix数据收集
- agent多平台部署
- 支持SNMP和IPMI
- 支持无agent监控
- 自定义监控
- 支持监控计算和聚合
- web事务监控
- 数据展示
- 图表及监控大屏
- 网络拓扑图
- 幻灯片图表
- 图片展示插件
- 故障检测(功能)
- 故障预警
- 故障规则和恢复规则独立
- 多个告警规则组合
- 与历史数据对比分析告警
- 支持数据波动规则
- 告警依赖关系
- 告警发送
- 发送告警信息
- 自动修复故障
- 告警升级
- 自定义告警信息
- 告警关联
- 安全和认证
- 加密通信
- 统一认证
- 权限管理
- 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 维护模式
安装配置
- 安装过程,可参考官网
- 注意看安装需求(软件版本):前往
- 用aliyun的镜像加速,安装epel源
- wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- yum install epel-release
- 安装常用的开发组件
- yum groups install “Development Tools”
- yum groups info “Development Tools”
- 增加Zabbix镜像源
- rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- 也可以使用国内源
rpm -ivh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
- 下载好后,就是zabbix.repo了,然后修改其内部的地址为国内的就OK,vim下进行下面的替换
- :%s#repo.zabbix.com#mirror.tuna.tsinghua.edu.cn/zabbix#g
- 因此,第6步就顺畅多了
- 关闭SElinux
- systemctl stop firewalld.service systemctl disable firewalld.service
- vim /etc/selinux/config yum install iptables-services
- 安装Zabbix Server和Frontend
- yum install zabbix-server-mysql
- yum install zabbix-web-mysql
- 安装配置数据库,导入初始数据
- yum install mariadb-server -y
- systemctl start mariadb.service systemctl status mariadb.service
- mysql_secure_installation 初始化
- 创建数据库
- mysql -uroot -p
- create database zabbix character set utf8 collate utf8_bin; 数据库的字符集
- grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;
- 导入数据结构
- zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
- 查到数据文件的路径,
rpm -ql zabbix-server-mysql
- 配置zabbix server
vim /etc/zabbix/zabbix_server.conf,修改内容
DBPassword=zabbix
grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
,查看刚刚改过的内容
- 启动zabbix server
- systemctl start zabbix-server.service systemctl status zabbix-server.service
- more /var/log/zabbix/zabbix_server.log
netstat -ntlp
查看端口也是ok的
配置zabbix frontend,vim /etc/php.ini
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
max_input_vars = 10000
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai
启动httpd,然后访问
- systemctl start httpd.service systemctl status httpd.service ~~
[http://192.168.10.10/zabbix/setup.php~~](http://10.211.55.7/zabbix/setup.php) - 账号密码Admin zabbix
- 因为这个文件中,/etc/httpd/conf.d/zabbix.conf 设置了别名,会跳转
- 上面的时区,也可以在/etc/httpd/conf.d/zabbix.conf 文件中更改,
php_value date.timezone Asia/Shanghai
Configuration file "/etc/zabbix/web/zabbix.conf.php" created.
这里提示的文件,就保存有数据库连接信息- 安装zabbix agent, 启动(server可以自己监控自己)
- yum install zabbix-agent systemctl start zabbix-agent.service
- vim /etc/zabbix/zabbix_agent.conf Hostname=Zabbix server,注意要和在web页面填写的保持一致
- 其他的主机安装agent
wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.2-1.el7.x86_64.rpm
选择一个agent即可rpm -ivh rpm包名
后面加上参数 —force —nodeps可以忽略依赖强制安装上- 新建两个container,172.17.0.3和172.17.0.4,可ssh远程过去,修改zabbix_agent配置
源码包安装
- ```bash 注意:以下都以centos7为OS进行操作,操作前检查自己的系统版本。 因为每个人环境不同,很可能你的是minimal的OS,那注意需要把类似php等基本的依赖包一并安装好 下载zabbix server源码包 wget -O zabbix-4.0.4.tar.gz https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz/download
安装依赖 yum install wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC libevent-devel mysql-devel libxml2-devel libssh2-devel OpenIPMI-devel java-1.8.0-openjdk-devel openldap-devel curl-devel unixODBC-devel 注意先把之前安装过的包删除掉,否则可能会报依赖问题
解压并编译安装 tar -zxvf zabbix-4.0.4.tar.gz cd zabbix-4.0.4/ 建立编译安装目录 mkdir -p /data/findsec/zabbix ./configure —prefix=/data/findsec/zabbix —enable-server —enable-agent —enable-java —with-mysql —with-libxml2 —with-unixodbc —with-net-snmp —with-ssh2 —with-openipmi —with-ldap —with-libcurl —with-iconv make && make install /data/findsec/zabbix/sbin/zabbix_server -V
数据库安装 yum install mariadb-server systemctl start mariadb.service systemctl status mariadb.service mysql_secure_installation初始化
创建数据库 mysql -uroot -p create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix123’;
导入数据结构 mysql -uzabbix -pzabbix123 zabbix < /root/zabbix-4.0.4/database/mysql/schema.sql mysql -uzabbix -pzabbix123 zabbix < /root/zabbix-4.0.4/database/mysql/images.sql mysql -uzabbix -pzabbix123 zabbix < /root/zabbix-4.0.4/database/mysql/data.sql
修改zabbix server配置 vim /data/findsec/zabbix/etc/zabbix_server.conf DBHost=localhost DBPassword=zabbix123 增加用户 groupadd —system zabbix useradd —system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c “Zabbix Monitoring System” zabbix
启动服务 /data/findsec/zabbix/sbin/zabbix_server -c /data/findsec/zabbix/etc/zabbix_server.conf tail -f /tmp/zabbix_server.log
增加Zabbix镜像源 rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 安装Zabbix Frontend yum install zabbix-web-mysql 配置Zabbix frontend vim /etc/php.ini
max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 max_input_vars = 10000 always_populate_raw_post_data = -1 date.timezone = Asia/Shanghai
启动httpd systemctl start httpd.service systemctl status httpd.service http://192.168.10.10/zabbix/setup.php Admin zabbix
安装Zabbix Agent
yum install zabbix-agent systemctl start zabbix-agent.service
vim /data/findsec/zabbix/etc/zabbix_agentd.conf Hostname=Zabbix server 起服务 /data/findsec/zabbix/sbin/zabbix_agent -c /data/findsec/zabbix/etc/zabbix_agentd.conf tailf /tmp/zabbix_agentd.log
<a name="0uYZL"></a>
## 容器安装
```bash
安装好docker后,
docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="zabbix123" -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-java-gateway -t -d zabbix/zabbix-java-gateway: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="zabbix123" -e MYSQL_ROOT_PASSWORD="zabbix123" -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
link是用于两个容器间的链接
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="zabbix123" MYSQL_ROOT_PASSWORD="zabbix123" --link mysql-server:mysql --link zabbix-server-mysql:zabbix-server -p 80:80 -d zabbix/zabbix-web-nginx-mysql:latest
docker rum --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
前端介绍
主机监控部署
- 拓扑图如下,
- linux安装agent,
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
- 添加zabbix镜像源,
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
systemctl stop firewalld.service
systemctl disable firewalld.service
vim /etc/selinux/config
yum -y install iptables.service
yum -y install zabbix
编辑配置文件,vim /etc/zabbix/zabbix-agentd.conf
- Server=192.168.10.11 ServerActive=192.168.10.11都是Zabbix Server的地址
- Hostname=ZabbixAgent_linux 和web前端配置的保持一致
systemctl start zabbix-agent.service
enable- 在web前端配置,Configuration-Hosts-Create host
- Hosts-Templates-Link new templates,选择”Templates OS Linux” 添加模板
- Configuration-Host groups,创建主机组
- Monitoring-Latest data-Hosts,选中要监控的主机,查看相关的监控项
- 创建监控模板,Configuration-Templates-Create templates
创建监控项,Hosts-applications-items-Create item
Latest data 查看主机监控的最新数据
- Graphs 查看模板graph数据;自定义graph图表
- 同样是Create graph
- Screens 查看模板screen数据;自定义screen
- Web监控 查看web监控数据
- 图表中出现中文字体乱码,是因为字体不兼容导致,
- 先把win上面的字体(例如微软雅黑)拷贝到linux上,
cp /tmp/msyh.ttf /usr/share/zabbix/fonts
cd /usr/share/zabbix
vim include/defines.inc.php
修改 FONT_NAME的相关配置项,改成mysh告警触发
- 增加trigger
- Trigger-Expression,在表达式进行编写触发条件,
- {Template_test_linux:net tcp.service[telnet,192.168.10.12,10051].last()}<>0
- 监听10051端口,连接失败会有警告信息
- Administration-User groups
- 用户管理 新建用户;将用户加入组中
- Administration-Users
- 告警媒介 自定义告警媒介;用户配置告警媒介
- 安装邮件服务,
yum -y install mailx
vim /etc/mail.rc
- 末尾添加,
set from=finsec@163.com
set smtp=smtp.163.com
set smtp-auth-user=finsec@163.com
set smtp-auth-password=test@123
密码需要到163设置-客户端授权密码,进行开启set smt-auth=login
- 末尾添加,
- 发邮件测试,
echo "zabbix@findsec test" | mailx -s "zabbix alert test" findsec@163.com
- 查看脚本目录,
/etc/zabbix/zabbix_server.conf
AlertScriptsPath参数,进入目录创建脚本 - echo “#!/bin/bash\nSENT_TO=$1\nSENT_SUBJECT=$2\nSENT_CONTENT=$3\necho “$SENT_CONTENT” |mailx -s “$SENT_SUBJECT” $SENT_TO” > mail.sh
- Administration-Media types-Create media type
- 添加名称,脚本名称,脚本参数
- Administration-Users-Media,添加媒介
- Configuration-Actions,Event source选择Triggers,Create action
- 当主机未处于维护模式,并且触发器级别>=warning的时候,就会给findsec组内的所有用户发送邮件告警
- 改下脚本内容,
yum -y install dos2unix
#!/bin/bash
SENT_TO=$1
SENT_SUBJECT=$2
SENT_CONTENT="/tmp/alert_$$.tmp"
echo "$3">$SENT_CONTENT
dos2unix $SENT_CONTENT
mailx -s "$SENT_SUBJECT" $SENT_TO<$SENT_CONTENT
- 告警操作 新建action发送告警;触发告警发送
补充
监控概述
- 监控对象
- 监控对象的理解:CPU是怎么工作的
- 监控对象的指标:CPU使用率、CPU负载、上下文切换
- 确定性能基准线:CPU负载多少才算高
- 监控范围
- 远程控制卡:DELL服务器:iDRAC;HP:ILO;IBM:IMM
- linux就可以使用IPMI,BMC控制器;ipmitool
- 条件:硬件要支持;操作系统 linux;管理工具 ipmitool
yum install -y OpenIPMI ipmitool
ipmitool help
systemctl start impi
- 使用方式:本地调用;远程调用(IP地址、用户名和密码)
- 机房巡检
- 路由器和交换机:SNMP监控(简单网络管理协议)
yum install -y net-snmp net-snmp-utils
yum list | grep snmp
- 默认监听端口:udp的161
- OID,linux系统的SNMP Trap
snmpget -v2c -c xiaobai 192.168.56.11 +监控项对应的OID
系统监控
- CPU
- 上下文切换:CPU调度器实施的进程的切换过程
- 运行队列(负载):负载只是一个参考值
- 使用率:使用百分比。用户态、内核态
- 推荐,我是一个线程
- 内存
- IO Input/Output(网络、磁盘)
CPU
- 确定服务类型
- IO密集型:数据库
- CPU密集型:web mail
- 确定性能基准线
- 运行队列:1-3线程、1CPU 4核、负载不超过12
- CPU使用:65%-70% 用户态利用率
- 30-35% 内核态利用率
- 0-5% 空闲
- 上下文切换:
- 监控工具:top
- 按页为单位的,4KB/页
- 硬盘:以块为单位
- 寻址;空间
free -m
直接看 available(centos7)- 内存使用:>80%,告警
yum install -y iotop
按照IO使用百分比进行排序
- 网络:
yum install -y iftop
带宽- IBM的nmon 二进制 测试用
./nmon -c 10 -s 10 -f -m /tmp/
会生成一个文件 - 结合nmon Analyser分析上面的生成文件,可生成图表(excel)
- IBM的nmon 二进制 测试用
- A^A
应用监控
- nginx:
yum install -y gcc gcc-c++ glibc pcre-devel openssl-devel