常见开源监控软件
CactiEZ、nagios、zabbix、smokeping、open-falcon、prometheus、grafana等; cacti、smokeping偏向于基础网络设备监控,成图漂亮; cacti、nagios、zabbix服务端,需要php环境支持,其中zabbix和cacti都需要mysql做数据存储; open-falcon为小米公司开发,适用于大企业;
zabbix监控介绍
C/S架构,基于c++开发,监控中心支持web界面配置和管理; 单台server节点可以支持上万台客户端; 官网下载地址:https://www.zabbix.com/manuals Zabbix 组件
Zabbix整个体系架构中有下面几个主要的角色。
\1. zabbix-server :是整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、统计数据及操作数据都由它组织。
\2. 数据存储
所有的收集信息存储在这里。
\3. Web界面:即GUI,这是Zabbix监控简单易用的原因之一,因为我们可以在Web界面中配置、管理各个客户端。运行Web界面需要有PHP环境支持。
\4. zabbix-proxy :为可选组件,用于监控节点非常多的分布式环境中,它可以代理zabbix-server的功能,减轻zabbix-server的压力。
\5. zabbix-agent:为部署在各客户端上的组件,用于采集各监控项目的数据,并把采集的数据传输给zabbix-proxy或者zabbix-server。
Zabbix服务端安装
准备条件:LAMP或LNMP架构(这里我提前安装了LNMP)
设置基本环境:关闭selinux
添加 zabbix yum仓库:
[root@jinkai yum.repos.d]# wget
http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@jinkai yum.repos.d]# rpm -ivh
http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
[root@jinkai yum.repos.d]# ls
zabbix.repo //出现一个zabbix的yum仓库
安装zabbix:
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
这里我安装出现报错:
Error downloading packages:
zabbix-web-4.0.25-1.el7.noarch: [Errno 256] No more mirrors to try.
zabbix-server-mysql-4.0.25-1.el7.x86_64: [Errno 256] No more mirrors to try.
解决方法:
sed -i 's/repo.zabbix.com/mirrors.aliyun.com/zabbix/g'
/etc/yum.repos.d/zabbix.repo
最后在重新安装一遍成功
[root@jinkai src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
·Zabbix-agent:客户端程序。
·Zabbix-get:服务端上命令行获取客户端检测项目的工具。
·Zabbix-server-mysql:zabbix-server MySQL版。
·Zabbix-web:Web界面。
·Zabbix-web-mysql:Web界面MySQL相关。
Mysql 设置:
vim /etc/my.cnf
[mysqld]
character_set_server = utf8
innodb_strict_mode = 0
重启mysql服务:
systemctl restart mysqld
创建zabbix数据库,并给zabbix用户权限:
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
MariaDB [(none)]>flush privileges;
导入zabbix数据:
cd /usr/share/doc/zabbix-server-mysql-4.0.25/
zcat create.sql.gz | mysql zabbix -uroot -padmin123
修改zabbix_server.conf的配置文件: vim /etc/zabbix/zabbix_server.conf DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix
启动zabbix服务:
systemctl start zabbix-server
查看监听端口:
netstat -lntp | grep zabbix
注意:
查看zabbix服务,一般有很多进程,如果只有一个,就看看zabbix日志
less /var/log/zabbix/zabbix_server.log
报错:connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
无法通过/var/lib/mysql/mysql.sock连接到数据库
解决方法:
ps aux | grep mysqld 查看到--socket=/tmp/mysql.sock
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
web设置:
通过http://IP/zabbix/ 就行访问,这里zabbix服务器的ip为192.168.111.136,那么访问http://192.168.111.136/zabbix 即可
vim /etc/php.ini
date.timezone = Asia/Shanghai
systemctl restart httpd
刷新网页
错误:–Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock
修改配置文件:
vim /etc/my.cnf
Socket = /var/lib/mysql/mysql.sock
vim /etc/php.ini
mysql.default_socket = /var/lib/mysql/mysql.sock
vim /etc/zabbix/zabbix_server.conf
DBSocket= /var/lib/mysql/mysql.sock
改完后重启mysqld httpd zabbix-server 服务
默认用户名:Admin 默认密码:zabbix
登录web界面设置修改语言和密码
修改密码:
administration——> users——> 点击用户名admin——> 在password处点击“change password”来修改密码;
设置语言:
administration——> users——> 点击用户名Admin——> 在language处选择语言;
忘记登录密码:
mysql -uroot -padmin123 -e "select * from zabbix.users\G"
设置一个密码为zabbix123 md5值加密
echo -n zabbix123 | openssl md5
(stdin)= 135b8eb196702590f45fa01f57cb4192
登录mysql:
MariaDB [zabbix]> update users set
passwd='135b8eb196702590f45fa01f57cb4192' where userid = '1';
解释:135b8eb196702590f45fa01f57cb4192 = zabbix123 是MD5值加密 userid=’1’ =Admin 上图给出的对应ID号
测试登录成功
Zabbix 客户端部署
安装yum源:
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
安装zabbix-agent包:
yum install -y zabbix-agent
修改zabbix-agent配置:
vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1修改为Server=192.168.111.136
ip地址为zabbix服务端的ip地址(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.111.136
ip为zabbix-server的ip地址(主动模式)
Hostname=Zabbix server修改为Hostname=zabbix-client
显示到监控中心的被监控主机的主机名,用于区分各个client(自定义,一会还需要在Web界面下设置同样的主机名);
启动服务:
systemctl start zabbix-agent
systemctl enable zabbix-agent
查看服务是否启动
ps aux|grep zabbix
查看监听端口,客户端端口为10050,服务端为10051
netstat -lntp |grep zabbix
防火墙:
iptables -I INPUT -s 192.168.111.136 -j ACCEPT
扩展:主动模式和被动模式
主动或者被动是相对客户端来讲的
被动模式:服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端; 主动模式:客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力,例如:服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。
添加主机:
创建主机前,先创建一个主机群组;
创建主机群组:
配置——主机群组——创建主机群组
创建主机:
配置——主机——创建主机
主机名称:填客户端/etc/zabbix/zabbix_agentd.conf里面定义的Hostname 群组:选择刚刚定义的群组Client agent代理程序接口:这里ip填客户端的ip,端口默认10050
添加自定义模板:
可以自定义一个常用模板,方便给新增主机添加监控项目;
配置——模板——创建模板
模板名称:随便定义模板名称 群组:必须选择Templates群组
添加监控项到模板:
配置——模板——找到其它模板——点击其它模板的“监控项”——选择适用的监控项(比如cpu、内存)——点击“复制”——目标类型选“模板”——“目标”选择勾选对应模板,这里我们选test模板,然后点击“复制”;
选择一个模板(最好带“自动发现规则”的模板),完全复制到新模板上,删选需要监控的项:
配置---模板----选择其中一个模板(Template OS Linux,带自动发现规则)
模板名称---选择群组--全克隆
模板名称(创建新的模板)--选择群组
取消链接 必须取消链接后,点击更新按钮,才能删除监控项和应用集; 配置——模板——选择新建的模板——链接的模板——点击“取消链接”——点击“更新”按钮;
删除监控项、应用集、图形等这些不需要的,只保留自动发现就ok; 也可以一次性添加监控项、应用集、图形等,删除不要的,保留需求的;
模板Link到相关的主机上面:
配置--主机--点击选择主机--模板--选择链接模板--添加---更新
在server端输入命令检查客户端相关流量数据
zabbix_get -s 192.168.111.137 -k "system.cpu.load[all,avg1]"
监测--图形--选择监控主机---选择监控项(例如网卡,CPU等)