19.1 Linux监控平台介绍
常见开源监控软件
cacti、nagios、zabbix、smokeping、open-falcon等等
cacti、smokeping偏向于基础监控,成图非常漂亮
cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
后续以介绍zabbix为主
19.2 zabbix监控介绍
C/S架构,基于C++开发,监控中心支持web界面配置和管理
单server节点可以支持上万台客户端
最新版本3.4,官方文档https://www.zabbix.com/manuals
5个组件
zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
数据存储 存放数据,比如mysql
web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
zabbix-agent 客户端软件,负责采集各个监控服务或项目的数据,并上报
zabbix监控流程图
解释:
监控主机,先添加主机到监控中心,让其2者之间通信。
然后再添加配置监控项目,监控项目配置完成后,并能与服务端进行通信,
通信的同时会进行采集数据动作(存入数据库,mysql),采集完数据后,会上报到数据中心(zabbix server)。
整个采集过程可以是主动或被动。
zabbix server建立告警规则,过滤采集的数据是否达到告警的条件,如果达到了条件,会进行告警。如果没有达到要求,会进行存储。
除此之外,zabbix server还需要配置报警的机制,当检测到数据达到告警条件后,需要通过什么方式进行告警,短信?邮件?还是QQ信息?被通知的对象?
这些都需要在服务端(zabbix server)上面配置。
所有的配置过程,全部都可以在Web界面(UI界面交互)上面操作。
采集后的数据能通过图形呈现出来,最终在Web界面展现出来。
19.3 安装zabbix(上)
准备工作
两台Linux
一台服务端
server centos7-01 192.168.189.128
一台客户端
client centos7-02 192.168.189.129
1 官网下载地址 www.zabbix.com/download
zabbix版本3.2-->> Centos 7-->> Database-->> MySQL-->>获取下载地址
1.1 wget下载
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
2 安装zabbix
2.1 先安装rpm包
#rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm 警告:zabbix-release-3.2-1.el7.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:zabbix-release-3.2-1.el7 ################################# [100%]
其实这里是安装了一个zabbix的yum源,目的是方便zabbix 利用yum安装其他zabbix的组件。
[root@centos7-01 src]# ls /etc/yum.repos.d/zabbix.repo /etc/yum.repos.d/zabbix.repo
2.2 服务端安装zabbix的五个组件
#yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
组件介绍
zabbix-agent 客户端软件,
zabbix-get 服务端工具,可以通过命令行模式获得客户端的某些监控项目的数据
zabbix-server-mysql 安装跟mysql相关的文件(.mysql),后续安装zabbix的时候,会需要这种文件的导入
zabbix-web web的界面,web UI
zabbix-web-mysql安装web和mysql相关的文件
2.3 客户端只需要安装zabbix-agent
zabbix安装会连带安装httpd和php
3 启动mysql
[root@centos7-01 src]# systemctl start mysql [root@centos7-01 src]# ps aux |grep mysql root 1155 0.0 0.1 115388 1676 ? S 10:29 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/centos7-01.pid mysql 1344 0.0 45.8 1301056 462076 ? Sl 10:29 0:15 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/centos7-01.err --pid-file=/data/mysql/centos7-01.pid --socket=/tmp/mysql.sock root 3853 0.0 0.0 112676 980 pts/0 R+ 18:00 0:00 grep --color=auto mysql
****如果mysql启动失败,分析一下原因:
读写权限出错,给予/data/mysql所属主所属组用户权限,执行#chown -R mysql:mysql /data/mysql。如果再不行的话,尝试给予755权限。
还有一种情况是找不到.pid文件的报错信息,这种情况多数跟更改主机名有关系。
4 编辑mysql的配置文件/etc/my.cnf
[root@centos7-01 src]#vim /etc/my.cnf //需要增加配置 character_set_server = utf8
如果没设置这参数,中文显示会有问题
4.1 重启mysql服务
[root@centos7-01 src]# systemctl restart mysql
5 创建zabbix数据库
登录mysql
创建zabbix库并制定utf8
mysql> create database zabbix character set utf8;
再创建用户
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
目的是需要Web代码连接mysql,
监控中心服务zabbix启动的前提也是需要能够连接mysql,
客户端采集数据,需要把数据传递给服务端,服务端通过这个用户来写入mysql.
这个用户需要有读写权限。
6 导入数据
[root@Centos7-01 mysql]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/(zabbix此处版本号有所不同,根据实际情况) [root@Centos7-01 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql.gz NEWS README [root@Centos7-01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz [root@Centos7-01 zabbix-server-mysql-3.2.11]# ls AUTHORS ChangeLog COPYING create.sql NEWS README [root@Centos7-01 zabbix-server-mysql-3.2.11]# mysql -uroot -paminglinux zabbix < create.sql Warning: Using a password on the command line interface can be insecure.
7 启动服务
启动zabbix服务
[root@Centos7-01 src]# systemctl start zabbix-server
启动httpd服务(启动httpd之前,需要把nginx的服务停掉,因为他占用了httpd即将要监听的80端口)
[root@Centos7-01 src]# systemctl start httpd
添加开机启动
[root@Centos7-01 src]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@Centos7-01 src]# systemctl enable zabbix-server Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
8 停止nginx服务,以免发生冲突
[root@Centos7-01 src]# systemctl disable nginx nginx.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig nginx off 监听端口 [root@Centos7-01 src]# netstat -lntp |grep 80 tcp6 0 0 :::80 :::* LISTEN 1707/httpd
19.4 安装zabbix(中)
1 发现监听端口发生失败,
[root@Centos7-01 ~]# netstat -lntp |grep zabbix
查看zabbix日志文件
[root@Centos7-01 ~]# less /var/log/zabbix/zabbix_server.log 1206:20180525:220141.770 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 1206:20180525:220141.771 database is down: reconnecting in 10 seconds 1206:20180525:220151.771 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) . . .
可以看到出现很多这种错误,报错意思大概就是有进程,但是没有彻底启动起来,导致没有连接到mysql.
2 修改配置文件,
[root@Centos7-01 ~]# vim /etc/zabbix/zabbix_server.conf DBHost=127.0.0.1 DBPassword=aming-zabbix
参数解释:
DBHost=127.0.0.1 //在# DBHost=localhost下面一行面增加此参数,因为mysql装在本机,所以这里写本机了,在生产环境中,如果mysql装在其他机器上,这里可以写对应mysql库的ip地址。因为开始授权zabbix库的用户的时候设定了127.0.0.1,所以这样也需要设定这个地址。
DBname=zabbix 自定义,但一定要记得,一般也是定义为zabbix(根据实际情况)
DBPassword=aming-zabbix //在DBuser下面增加,DBuser对应的密码
*参数一定要输对否则会有报错,启动不到服务。
3 更改完成后,重启zabbix服务
[root@Centos7-01 ~]# systemctl restart zabbix-server
[root@Centos7-01 ~]# ps aux |grep zabbix
zabbix 1551 0.0 0.4 254768 4168 ? S 22:26 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf zabbix 1553 0.0 0.3 254776 3056 ? S 22:26 0:00 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.019651 sec, idle 60 sec] zabbix 1554 0.0 0.2 254768 2856 ? S 22:26 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.006279 sec, idle 60 sec] zabbix 1555 0.0 0.5 361704 5248 ? S 22:26 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 1556 0.0 0.5 361704 5248 ? S 22:26 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000003 sec, idle 5 sec] zabbix 1557 0.0 0.5 361704 5248 ? S 22:26 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000005 sec, idle 5 sec] zabbix 1558 0.0 0.5 361704 5248 ? S 22:26 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 1559 0.0 0.5 361704 5248 ? S 22:26 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000002 sec, idle 5 sec] zabbix 1560 0.0 0.5 361704 5248 ? S 22:26 0:00 . . . .
正常的情况是,zabbix需要启动很多子进程。
检查监听的端口
[root@Centos7-01 ~]# netstat -lntp |grep zabbix tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1551/zabbix_server tcp6 0 0 :::10051 :::* LISTEN 1551/zabbix_server
4 配置web界面
浏览器访问监控中心的ip地址,也就是服务端
httpd不需要做任何修改也能直接访问zabbix的安装向导,原因是安装zabbix的时候,它已经把httpd的配置设置好了。
4.1 下一步继续,需要留意右边的状态栏,如果是fail是不通过的设置,需要操作。
这里是PHP的时区出现问题了,回到Linux服务端修改php的时区设置
4.2 修改php.ini,搜索timezone参数,修改为中国区时间(上海,重庆都可以)
[root@Centos7-01 ~]#vim /etc/php.ini date.timezone = Asia/Shanghai
4.3 修改完成后,重启httpd服务
[root@Centos7-01 ~]# systemctl restart httpd
4.4 回到windows浏览器,刷新状态
4.5 继续Next step下一步,填写mysql数据库的信息
4.6 设置zabbix服务端信息
4.7 确认信息
4.8 完成设置向导
4.9 登录管理界面
默认账号密码是Admin,zabbix
4.10 修改密码
通常第一时间修改账号密码
Administration-->users-->选中Admin-->change password
这界面也可以修改中文语言
修改完成后刷新即可
最后重新登录zabbix的管理用户
19.5 忘记Admin密码如何做
大纲操作,
进入mysql命令行,选择zabbix库
mysql -uroot -p zabbix
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
上述操作都做了的话,就能成功更改Admin用户的密码
1 登录mysql,切换至zabbix库
mysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
2 进入users表
mysql> desc users; +----------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+---------------------+------+-----+---------+-------+ | userid | bigint(20) unsigned | NO | PRI | NULL | | | alias | varchar(100) | NO | UNI | | | | name | varchar(100) | NO | | | | | surname | varchar(100) | NO | | | | | passwd | char(32) | NO | | | | | url | varchar(255) | NO | | | | | autologin | int(11) | NO | | 0 | | | autologout | int(11) | NO | | 900 | | | lang | varchar(5) | NO | | en_GB | | | refresh | int(11) | NO | | 30 | | | type | int(11) | NO | | 1 | | | theme | varchar(128) | NO | | default | | | attempt_failed | int(11) | NO | | 0 | | | attempt_ip | varchar(39) | NO | | | | | attempt_clock | int(11) | NO | | 0 | | | rows_per_page | int(11) | NO | | 50 | | +----------------+---------------------+------+-----+---------+-------+ 16 rows in set (0.06 sec)
其中passwd就是密码了,密码存放在user表里面,
3 执行命令,修改密码
update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
4 查看users表的字段信息,
mysql> select * from user; ERROR 1146 (42S02): Table 'zabbix.user' doesn't exist mysql> select * from users; +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ | userid | alias | name | surname | passwd | url | autologin | autologout | lang | refresh | type | theme | attempt_failed | attempt_ip | attempt_clock | rows_per_page | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ | 1 | Admin | Zabbix | Administrator | f3e5e7e3e23af2f741786761bcfb440f | | 1 | 0 | zh_CN | 30 | 3 | default | 0 | | 0 | 50 | | 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 900 | en_GB | 30 | 1 | default | 0 | | 0 | 50 | +--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+------------+---------------+---------------+ 2 rows in set (0.00 sec)
其中passwd加密的MD5码就是密码了
5 成功更改了Admin用户的密码
19.6 Zabbix客户端安装
1 在客户端上也需要下载zabbix的yum源
wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
2 安装zabbix-agent
yum install -y zabbix-agent
3 修改如下配置
#vim /etc/zabbix/zabbix_agentd.conf Server=127.0.0.1 修改为 Server=192.168.189.128 ServerActive=127.0.0.1 修改为 ServerActive=192.168.189.128 Hostname=Zabbix server 修改为 Hostname=aming-02
参数解释:
Server=127.0.0.1修改为Server=192.168.189.128 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.189.128 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=aming-02 //这是自定义的客户端的主机名,一会还需要在web界面下设置同样的主机名
主动模式与被动模式:
主动或被动模式是相对于客户端来讲的。
如果是被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端;
如果是主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式。
4 启动zabbix-agent服务
# systemctl start zabbix-agent # systemctl start zabbix-agent # ps aux |grep zabbix-agent root 2695 0.0 0.0 112720 972 pts/0 S+ 00:09 0:00 grep --color=auto zabbix-agent [root@centos7-02 ~]# ps aux |grep zabbix zabbix 2688 0.0 0.1 80704 1276 ? S 00:09 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf zabbix 2689 0.0 0.1 80704 1320 ? S 00:09 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 2690 0.0 0.1 80704 1844 ? S 00:09 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 2691 0.0 0.1 80704 1844 ? S 00:09 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 2692 0.0 0.1 80704 1844 ? S 00:09 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 2693 0.0 0.2 80836 2184 ? S 00:09 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 2697 0.0 0.0 112720 968 pts/0 R+ 00:10 0:00 grep --color=auto zabbix
检查监听端口
[root@centos7-02 ~]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 553/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 927/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1218/master tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2688/zabbix_agentd tcp6 0 0 :::111 :::* LISTEN 553/rpcbind tcp6 0 0 :::22 :::* LISTEN 927/sshd tcp6 0 0 ::1:25 :::* LISTEN 1218/master tcp6 0 0 :::10050 :::* LISTEN 2688/zabbix_agentd tcp6 0 0 :::3306 :::* LISTEN 1156/mysqld 添加开机启动
[root@centos7-02 ~]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
快速配置:
链接: