目录
一、Linux监控平台介绍
二、zabbix监控介绍
三、安装zabbix
四、忘记Admin密码如何做
一、Linux监控平台介绍
- 常见开源监控软件
cacti、nagios、zabbix、smokeping、open-falcon等等。
cacti、smokeping偏向于基础监控,成图非常漂亮,擅长监
控网络流量。
cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图。
open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究。
nagios、zabbix、cacti都支持使用web界面管理。Zabbix可以存储数据,很方便地画图,并且支持查询历史数据和自定义监控项目,web界面下管理彻底,操作方便。nagios需要修改配置文件,比较繁琐。
二、Zabbix监控介绍
- Zabbix介绍
Zabbix不仅适合中小型企业,也适合大型企业,它是C/S架构,基于C++开发。
服务端可以主动抓取客户端数据,也可以等客户端上报数据。
单server节点可以支持上万台客户端,支持的并发量较高,但若监控的项目太多,单server采集的数据量过多效率会降低。此时可以增加proxy(代理点)来充当server,代替server采集数据,得到结果后再汇报给server。
- Zabbix组件
- zabbix-server
zabbix-server是整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置统计数据及操作数据都由它组织。- 数据存储
所有的收集信息存储在这里,比如mysql。- Web界面
Web界面即GUI,这是Zabbix监控简单易用的原因之一,因为我们可以在Web界面中配置、管理各个客户端。运行Web界面需要有PHP环境支持。- zabbix-proxy
Zabbix-proxy为可选组件,用于监控节点非常多的分布式环境中,它可以代理zabbix-server的功能,减轻zabbix-server的压力。- zabbix-agent
Zabbix-agent为部署在各客户端上的组件,用于采集各监控项目的数据,并把采集的数据传输给zabbix-proxy或者zabbix-server。
-
zabbix监控流程图
image.png
三、安装zabbix
- 实验环境
#两台机器,一台服务端,一台客户端。
zabbix-server
主机名:minglinux-01
内网IP 192.168.162.130
zabbix-agent
主机名:minglinux-02
内网IP 192.168.162.132
- 安装Zabbix官方的yum扩展源
zabbix可以从epel扩展源扩展源安装,但安装的是2.2旧的版本。我这里实验使用3.2版本,那就需要安装Zabbix的yum扩展源,然后利用yum安装对应版本Zabbix即可。
//服务端和客户端都安装上
[root@minglinux-01 ~] wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@minglinux-01 ~] rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
[root@minglinux-01 ~] cat /etc/yum.repos.d/ #可以看到zabbix.repo即为新安装yum源文件
CentOS7-Base-163.repo CentOS-Media.repo epel-testing.repo
CentOS-CR.repo CentOS-Sources.repo zabbix.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-fasttrack.repo epel.repo
- 安装Zabbix
[root@minglinux-01 ~] yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
#这里会连带安装httpd和PHP,Zabbix需要LAMP支持
安装的包作用如下:
Zabbix-agent:客户端程序。
Zabbix-get:服务端上命令行获取客户端检测项目的工具。
Zabbix-server-mysql:zabbix-server MySQL版。
Zabbix-web:Web界面。
Zabbix-web-mysql:Web界面MySQL相关。
服务端需安装以上全部包,客户端仅需安装zabbix-agent即可。
- 数据库配置
[root@minglinux-01 ~] ps aux|grep mysql
root 885 0.0 0.0 115432 1728 ? S 14:22 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/minglinux-01.pid
mysql 1439 0.0 24.7 1407420 462488 ? Sl 14:22 0:22 /usr/localmysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=minglinux-01.err --pid-file=/data/mysql/minglinux-01.pid --socket=/tmp/mysql.sock --port=3306
root 4376 0.0 0.0 112724 984 pts/1 S+ 21:53 0:00 grep --color=auto mysql
[root@minglinux-01 ~] vim /etc/my.cnf
#编辑mysql配置文件,设置默认字符集为utf8
···
character_set_server = utf8
···
#修改完配置文件重启一下
[root@minglinux-01 ~] systemctl restart mysql
#登录进入mysql命令行创建 zabbix 库和用户
[root@minglinux-01 ~] mysql -uroot -p
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
#导入zabbix初始化相关数据
[root@minglinux-01 ~] cd /usr/share/doc/zabbix-server-mysql-3.2.11/
[root@minglinux-01 /usr/share/doc/zabbix-server-mysql-3.2.11] ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@minglinux-01 /usr/share/doc/zabbix-server-mysql-3.2.11] gzip -d create.sql.gz
[root@minglinux-01 /usr/share/doc/zabbix-server-mysql-3.2.11] ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@minglinux-01 /usr/share/doc/zabbix-server-mysql-3.2.11] mysql -uroot -p123456 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.
- 启动zabbix-server服务
[root@minglinux-01 ~] vim /etc/zabbix/zabbix_server.conf
#编辑zabbix配置文件修改如下内容:
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=123456
#启动zabbix-server
[root@minglinux-01 ~] systemctl start zabbix-server
[root@minglinux-01 ~] 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.
[root@minglinux-01 ~] netstat -lntp |grep zabbix #zabbix服务默认监听10051端口
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 922/zabbix_server
tcp6 0 0 :::10051 :::* LISTEN 922/zabbix_server
[root@minglinux-01 ~] tail /var/log/zabbix/zabbix_server.log #日志在这里
1719:20181224:224530.410 server #17 started [timer #1]
1725:20181224:224530.411 server #22 started [history syncer #3]
1727:20181224:224530.412 server #24 started [escalator #1]
1729:20181224:224530.416 server #25 started [proxy poller #1]
1724:20181224:224530.419 server #21 started [history syncer #2]
1726:20181224:224530.437 server #23 started [history syncer #4]
1723:20181224:224530.437 server #20 started [history syncer #1]
1730:20181224:224530.438 server #26 started [self-monitoring #1]
1721:20181224:224530.439 server #19 started [discoverer #1]
1731:20181224:224530.450 server #27 started [task manager #1]
[root@minglinux-01 ~] !ps #成功启动zabbix后会有很多子进程
ps aux |grep zabbix
zabbix 922 0.0 0.2 181952 3980 ? S 22:45 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix 1703 0.0 0.1 181960 3328 ? S 22:45 0:00 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.010860 sec, idle 60 sec]
zabbix 1704 0.0 0.1 181952 3076 ? S 22:45 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.004905 sec, idle 60 sec]
zabbix 1705 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000004 sec, idle 5 sec]
zabbix 1706 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix 1707 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000006 sec, idle 5 sec]
zabbix 1708 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix 1709 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000004 sec, idle 5 sec]
zabbix 1710 0.0 0.2 288896 5452 ? S 22:45 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix 1711 0.0 0.2 181952 3784 ? S 22:45 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix 1712 0.0 0.2 181952 3784 ? S 22:45 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix 1713 0.0 0.2 181952 3784 ? S 22:45 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix 1714 0.0 0.2 181952 3784 ? S 22:45 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix 1715 0.0 0.2 181952 3784 ? S 22:45 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix 1716 0.0 0.1 184528 2852 ? S 22:45 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000004 sec, idle 5 sec]
zabbix 1717 0.0 0.1 181952 3068 ? S 22:45 0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000578 sec, idle 30 sec]
zabbix 1718 0.0 0.1 181952 2672 ? S 22:45 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix 1719 0.0 0.1 182032 3176 ? S 22:45 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000013 sec, 0 maintenances in 0.001278 sec, idle 30 sec]
zabbix 1720 0.0 0.1 181952 3080 ? S 22:45 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000577 sec, idle 5 sec]
zabbix 1721 0.0 0.2 286312 5444 ? S 22:45 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000892 sec, idle 60 sec]
zabbix 1723 0.0 0.1 181952 3072 ? S 22:45 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000003 sec, idle 1 sec]
zabbix 1724 0.0 0.1 181952 3072 ? S 22:45 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 1725 0.0 0.1 181952 3072 ? S 22:45 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 1726 0.0 0.1 181952 3072 ? S 22:45 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix 1727 0.0 0.2 181952 4028 ? S 22:45 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001125 sec, idle 3 sec]
zabbix 1729 0.0 0.2 181952 4032 ? S 22:45 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000003 sec, idle 5 sec]
zabbix 1730 0.0 0.1 181952 2820 ? S 22:45 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000005 sec, idle 1 sec]
zabbix 1731 0.0 0.1 181952 3060 ? S 22:45 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000500 sec, idle 5 sec]
root 1810 0.0 0.0 112724 984 pts/0 S+ 23:00 0:00 grep --color=auto zabbix
#启动httpd,这里nginx已经启动并占用80端口,需要先停掉nginx服务
[root@minglinux-01 ~] systemctl start httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@minglinux-01 ~] ps aux |grep nginx
root 3218 0.0 0.0 46028 1300 ? Ss 20:38 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 3219 0.0 0.2 48516 4444 ? S 20:38 0:00 nginx: worker process
nobody 3220 0.0 0.2 48516 4452 ? S 20:38 0:00 nginx: worker process
root 5264 0.0 0.0 112724 984 pts/1 S+ 22:35 0:00 grep --color=auto nginx
[root@minglinux-01 ~] systemctl stop nginx
[root@minglinux-01 ~] systemctl start httpd
[root@minglinux-01 ~] ps aux |grep httpd
root 5285 0.5 0.8 391232 15664 ? Ss 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5286 0.0 0.4 391364 7752 ? S 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5287 0.0 0.4 391364 7752 ? S 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5288 0.0 0.4 391364 7752 ? S 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5289 0.0 0.4 391364 7752 ? S 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 5290 0.0 0.4 391364 7752 ? S 22:37 0:00 /usr/sbin/httpd -DFOREGROUND
root 5292 0.0 0.0 112720 980 pts/1 S+ 22:37 0:00 grep --color=auto httpd
[root@minglinux-01 ~] systemctl enable httpd #设置httpd开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@minglinux-01 ~] systemctl disable nginx #关闭nginx开机启动
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off
-
windows浏览器访问测试
image.png
点Next step
报错:Time zone for PHP is not set (configuration parameter "date.timezone").
修改PHP配置文件:
[root@minglinux-01 ~] vim /etc/php.ini
#修改date.timezone内容如下
···
878 date.timezone = Asia/shanghai
···
[root@minglinux-01 ~] systemctl restart httpd //修改完成后重启httpd
浏览器刷新无报错了点Next step
填写数据库信息
继续点Next step自定义主机名
确认信息
成功安装zabbix
点Finish后出现登录页面
默认的账号:Admin 密码:zabbix
登录成功后台
修改默认密码
退出重新使用新密码登录
- Zabbix客户端安装
安装yum源和zabbix-agent
#和服务端一样安装yum源,然后仅安装zabbix-agent即可
[root@minglinux-02 ~] wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@minglinux-02 ~] rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
[root@minglinux-02 ~] yum install -y zabbix-agent
修改配置文件
服务端与客户端通信需要经过认证,认证的方式是服务端和客户端之间互相通信需要指定白名单IP,避免所有服务端都能连接客户端,获取客户端的监控数据,造成信息泄露。
[root@minglinux-02 ~] vim /etc/zabbix/zabbix_agentd.conf
#修改如下内容:
···
Server=192.168.162.130 #指定服务端白名单,指定该项后可使用客户端的被动模式
ServerActive=192.168.162.130 #修改该项后可使用客户端主动模式
Hostname=minglinux-02 #自定义的zabbix-agent主机名,服务端监控界面显示该主机名
···
主动或者被动是相对于客户端来讲的。如果是被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端;如果是主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
启动zabbix-agent服务
[root@minglinux-02 ~] systemctl start zabbix-agent
[root@minglinux-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.
[root@minglinux-02 ~] ps aux |grep zabbix
zabbix 4521 0.0 0.0 80824 1272 ? S 00:18 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 4522 0.0 0.0 80824 1360 ? S 00:18 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 4523 0.0 0.0 80824 1836 ? S 00:18 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 4524 0.0 0.0 80824 1836 ? S 00:18 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 4525 0.0 0.0 80824 1836 ? S 00:18 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 4526 0.0 0.1 80956 2212 ? S 00:18 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 4528 0.0 0.0 112720 980 pts/0 S+ 00:18 0:00 grep --color=auto zabbix
[root@minglinux-02 ~] netstat -lntp #zabbix_agentd默认监听10050端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1295/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 4521/zabbix_agentd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3610/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 801/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1295/master
tcp6 0 0 :::10050 :::* LISTEN 4521/zabbix_agentd
tcp6 0 0 :::3306 :::* LISTEN 1233/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 3610/nginx: master
tcp6 0 0 :::22 :::* LISTEN 801/sshd
四、忘记Admin密码如何做
[root@minglinux-01 ~] mysql -uroot -p
Enter password:
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
mysql> desc users; #密码保存在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.00 sec)
#修改密码语句,密码使用md5加密
mysql> update users set passwd=md5('admin') where alias = 'Admin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
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 | 21232f297a57a5a743894a0e4a801fc3 | | 1 | 0 | zh_CN | 30 | 3 | default | 0 | 192.168.162.1 | 1545665036 | 50 |
| 2 | guest | | | d41d8cd98f00b204e9800998ecf8427e | | 0 | 900 | en_GB | 30 | 1 | default | 0 | | 0 | 50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+
2 rows in set (0.00 sec)
使用新密码登录