常见开源监控软件

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。

img

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 即可

imgimg

vim /etc/php.ini

date.timezone = Asia/Shanghai

systemctl restart httpd

刷新网页

imgimg

错误:–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 服务

imgimgimg

img

默认用户名:Admin 默认密码:zabbix

登录web界面设置修改语言和密码

imgimgimg

修改密码:

administration——> users——> 点击用户名admin——> 在password处点击“change password”来修改密码;

设置语言:

administration——> users——> 点击用户名Admin——> 在language处选择语言;

忘记登录密码:

mysql -uroot -padmin123 -e "select * from zabbix.users\G"

img

设置一个密码为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,但却能连外网,这种场景适合主动模式。

添加主机:

创建主机前,先创建一个主机群组;

创建主机群组:

配置——主机群组——创建主机群组 img

img

创建主机:

配置——主机——创建主机

img

主机名称:填客户端/etc/zabbix/zabbix_agentd.conf里面定义的Hostname 群组:选择刚刚定义的群组Client agent代理程序接口:这里ip填客户端的ip,端口默认10050

imgimg

添加自定义模板:

可以自定义一个常用模板,方便给新增主机添加监控项目;

配置——模板——创建模板

img

模板名称:随便定义模板名称 群组:必须选择Templates群组

img

添加监控项到模板:

配置——模板——找到其它模板——点击其它模板的“监控项”——选择适用的监控项(比如cpu、内存)——点击“复制”——目标类型选“模板”——“目标”选择勾选对应模板,这里我们选test模板,然后点击“复制”;

imgimgimgimg

选择一个模板(最好带“自动发现规则”的模板),完全复制到新模板上,删选需要监控的项:

配置---模板----选择其中一个模板(Template OS Linux,带自动发现规则)

img

模板名称---选择群组--全克隆

img

模板名称(创建新的模板)--选择群组

img

取消链接 必须取消链接后,点击更新按钮,才能删除监控项和应用集; 配置——模板——选择新建的模板——链接的模板——点击“取消链接”——点击“更新”按钮;

imgimg

删除监控项、应用集、图形等这些不需要的,只保留自动发现就ok; 也可以一次性添加监控项、应用集、图形等,删除不要的,保留需求的;

imgimgimgimgimgimg

模板Link到相关的主机上面:

配置--主机--点击选择主机--模板--选择链接模板--添加---更新

imgimgimg

在server端输入命令检查客户端相关流量数据

zabbix_get -s 192.168.111.137 -k "system.cpu.load[all,avg1]"

监测--图形--选择监控主机---选择监控项(例如网卡,CPU等)

img