19.1 Linux监控平台介绍
监控存在的原因
站点出了问题,没有人知道,等用户发现了,才提醒供应商;对公司影响很大
常见开源监控软件
- cacti、nagios、zabbix、smokeping、open-falcon等等 //主流 nagios、zabbix
- cacti、smokeping偏向于基础监控,成图非常漂亮 //比较适合监控网络设备
- cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图;
因为zabbix配置简单,优势明显,早起使用nagios的企业,慢慢的转向使用zabbix
nagios,需要更改配置文件,并不支持web界面一键执行,nagios和zabbix相比,nagios\ 更注重的是某一个监控的状态,不关注历史;zabbix,则是把每一次监控的数值反馈出来,方便后期数据图去分析监控整个状态;nagios不支持mysql,需要安装插件以后才支持web界面;zabbix 支持mysql,可以成图,可以记录历史数据
zabbix 在web界面下管理得非常彻底,可以增加监控节点,报警预知等等
• open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,监控的思想和结构值得研究
• 后续以介绍zabbix为主
19.2 zabbix监控介绍
•C/S架构:有一个服务端,去客户端抓数据。在客户端必须要有一个服务运行才可以抓取数据;数据可以主动的上报服务端,也可以让服务端去连接客户端获取(通过抓取数据方式,数据获取分两个模式,一个主动模式,一个被动模式),基于C++开发,监控中心需要一个PHP的web环境,因为要开启一个web界面配置和管理 • 单server节点可以支持上万台客户端(瓶颈在于采集数据的量,虽然支持上万台,但监控的项目过多,还是会导致zabbix效率降低;所以,当服务器大到一定规模的时候,就需要对zabbix进行优化,解决方法:可以增加一些代理点,这些代理点充当server替代server去采集数据,最终才上报回给主服务端) • 最新版本3.4,官方文档https://www.zabbix.com/manuals • 5个组件
1. zabbix-server 监控中心,接收客户端上报信息,负责配置、统计、操作数据
数据存储 存放数据,比如mysql
1. web界面 也叫web UI,在web界面下操作配置是zabbix简单易用的主要原因
2. zabbix-proxy 可选组件,它可以代替zabbix-server的功能,减轻server的压力
1. zabbix-agent 客户端软件(每一台客户端都需要安装),负责采集各个监控服务或项目的数据,并上报
监控流程图:
19.3/19.4/19.6 安装zabbix
安装服务端
默认yum安装的zabbix版本是2.2的太旧,所以选择安装官方提供的repo源
wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
安装repo源
rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
然后就可以yum 安装zabbix 所需组件
yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
- zabbix-agent //客户端软件
- zabbix-get //服务端用的一个工具,这个工具,可以通过命令行的形式,获得客户端某些监控项目的数据
- zabbix-server-mysql //这个是服务端跟mysql打交道相关的组件
- zabbix-web //webUI
- zabbix-web-mysql //web和mysql相关组件
zabbix 是基于php环境的,也就是说用的是php 的代码编写的web界面,也就说这个zabbix 相当于一个站点
因为是网站,而且是基于lamp 的,如果没有这个环境的话,需要去安装一下
编译mysql的配置文件
给mysql设定一个默认的字符集
vim /etc/my.cnf //[mysqld] 下,加入以下内容
character_set_server = utf8
如果不设置字符集的话,后期zabbix的web界面,设置成中文的话,可能就会出现乱码
修改了配置文件,记得重启mysql
[root@aminglinux-02 src]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
创建zabbix的库
登录mysql
[root@aminglinux-02 src]# mysql -uroot -paminglinux
create database zabbix character set utf8; //指定字符集
grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
创建一个用户,这个用户是需要让web(php)代码连接mysql的,监控中心这个服务启动的前提就是要连接mysql;客户端采集了数据,需要把这些数据传递给服务端,那么服务端怎么把这些数据写入到MySQL去,这时就涉及到了mysql 的用户,涉及到了mysql 的数据库;用哪一个用户,去写入那一个库。
后期,配置zabbix的DBHost的时候 需要和这个IP对应
导入原始数据
cd /usr/share/doc/zabbix-server-mysql-3.2.7
[root@aminglinux-02 zabbix-server-mysql-3.2.7]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@aminglinux-02 zabbix-server-mysql-3.2.7]# gzip -d create.sql.gz
[root@aminglinux-02 zabbix-server-mysql-3.2.7]#mysql -uroot -paminglinux zabbix < create.sql
缺少这些数据,zabbix就没有办法工作,就没有办法在web界面下展现给我们
启动zabbix-server、httpd
systemctl start zabbix-server
systemctl start httpd
zabbix是基于lamp环境的,所以启动的时候,要看看httpd服务是否启动 因为在之前的章节,服务端安装有lnmp环境,所以启动httpd之前记得先把nginx服务先关掉,因为nginx用的是80端口,而httpd也是80端口,两个服务会冲突
配置服务器的自动启动
[root@aminglinux-02 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@aminglinux-02 ~]# 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@aminglinux-02 ~]# chkconfig nginx off
需要关闭nginx自启动
检查服务运行状况
ps aux |grep httpd
[root@aminglinux-02 ~]# ps aux |grep httpd
root 2895 0.0 0.8 393816 15368 ? Ss 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2897 0.0 0.4 393952 7656 ? S 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2898 0.0 0.4 393952 7656 ? S 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2899 0.0 0.4 393952 7656 ? S 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2900 0.0 0.4 393952 7656 ? S 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
apache 2901 0.0 0.4 393952 7656 ? S 01:37 0:00 /usr/sbin/httpd -DFOREGROUND
root 2930 0.0 0.0 112664 976 pts/0 R+ 01:47 0:00 grep --color=auto httpd
ps aux |grep zabbix
[root@aminglinux-02 ~]# ps aux |grep zabbix
zabbix 2862 0.0 0.2 255688 3776 ? S 01:36 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root 2932 0.0 0.0 112664 976 pts/0 R+ 01:47 0:00 grep --color=auto zabbix
检查一下端口情况
[root@aminglinux-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 1/systemd
tcp 0 0 0.0.0.0:41648 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1075/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1049/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2093/master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:50915 0.0.0.0:* LISTEN 1040/rpc.statd
tcp6 0 0 :::3306 :::* LISTEN 2817/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 2895/httpd
tcp6 0 0 :::20048 :::* LISTEN 1075/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 961/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1049/sshd
tcp6 0 0 :::34392 :::* LISTEN 1040/rpc.statd
tcp6 0 0 ::1:25 :::* LISTEN 2093/master
tcp6 0 0 :::43297 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
启动之后发现,zabbix监听的端口没不在列表里
检查一下日志,看看是什么问题
/var/log/zabbix/zabbix_server.log
[root@aminglinux-02 ~]# tail /var/log/zabbix/zabbix_server.log
2862:20170908:014910.399 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2862:20170908:014910.399 database is down: reconnecting in 10 seconds
2862:20170908:014920.400 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2862:20170908:014920.400 database is down: reconnecting in 10 seconds
2862:20170908:014930.402 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2862:20170908:014930.402 database is down: reconnecting in 10 seconds
2862:20170908:014940.405 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2862:20170908:014940.406 database is down: reconnecting in 10 seconds
2862:20170908:014950.407 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
2862:20170908:014950.407 database is down: reconnecting in 10 seconds
查看到的“连接数据库' zabbix '失败:[2002]不能通过socket / var / lib / MySQL / MySQL连接到本地MySQL服务器。”
修改一下 zabbix的配置文件
vim /etc/zabbix/zabbix_server.conf //修改或增加如下内容
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=aming-zabbix
因为mysql和zabbix装在同一台机器上,这里可以写localhost或者127.0.0.1;如果是在生产环境上,有时候为了提升zabbix的性能,可能会把MySQL装在其他机器上,这是的DBHost,就需要写上mysql的ip
配置好以后,重启zabbix-server服务
systemctl restart zabbix-server
检查一下进程
[root@aminglinux-02 ~]# ps aux |grep zabbix|wc -l
29
发现运行了很多进程,正常的话,至少运行了29个以上的进程,才的对的启动
查看一下端口
[root@aminglinux-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 1/systemd
tcp 0 0 0.0.0.0:41648 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1075/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1049/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2093/master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 2952/zabbix_server
tcp 0 0 0.0.0.0:50915 0.0.0.0:* LISTEN 1040/rpc.statd
tcp6 0 0 :::3306 :::* LISTEN 2817/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 2895/httpd
tcp6 0 0 :::20048 :::* LISTEN 1075/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 961/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1049/sshd
tcp6 0 0 :::34392 :::* LISTEN 1040/rpc.statd
tcp6 0 0 ::1:25 :::* LISTEN 2093/master
tcp6 0 0 :::43297 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::10051 :::* LISTEN 2952/zabbix_server
一直弄好,去配置一下zabbix的web页面 192.168.133.131/zabbix
提示需要配置时区
时区在php.ini的配置文件下配置
vim /etc/php.ini //因为是yum安装,所以默认的php.ini在/etc/ 下
date.timezone = Asia/Shanghai
配置好之后,记得重启httpd
继续回到配置页面
刷新一下界面
点击Next step 进行下一步
这个地方就是配置数据库相关,
host :MySQL所在机器IP
port:0为默认端口3306,如果有改动就修改
name:库的名字
user:库的用户
password:用户的密码
这里是配置站点名字相关
host:站点主机名
port:端口,如果有改动就改,没改动,默认就是10051
name:站点的名字,你喜欢就好
配置完成后会有一个信息显示,如果配置错误,可以back返回上一步重新修改
安装成功后,会有提示界面,如下图
登录管理页
默认的账号是Admin,密码为zabbix,因为是实验,就懒得改动了
进入Administration管理项的users用户管理菜单
选择admin账户,修改语言,或者管理员密码(因为实验,所以。。)
修改一下语言就好,密码就懒得弄了
最终效果
安装客户端
因为没有客户机器,所有看不到有监控项目或者监控数据之类的东西
yum install -y zabbix-agent
编辑配置文件
vim /etc/zabbix/zabbix_agentd.conf //修改内容如下
Hostname=aming-02 //方便服务中心识别客户端机器
Server=192.168.133.131 //ip为监控中心的IP
ServerActive=192.168.133.131 //这个涉及到一个主动和被动模式;如果这里不填写服务中心的IP,那么就只能使用被动模式;这个IP是主动模式时候用的
配置完成
启动服务
[root@aminglinux-01 src]# systemctl start zabbix-agent
查看一下进程状况
[root@aminglinux-01 src]# ps aux |grep zabbix
zabbix 2482 0.0 0.0 80100 1268 ? S 03:06 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 2483 0.0 0.0 80100 1244 ? S 03:06 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 2484 0.0 0.0 80100 1840 ? S 03:06 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 2485 0.0 0.0 80100 1840 ? S 03:06 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 2486 0.0 0.0 80100 1840 ? S 03:06 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 2487 0.0 0.1 80100 2136 ? S 03:06 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 2489 0.0 0.0 112664 976 pts/0 R+ 03:06 0:00 grep --color=auto zabbix
检查一下端口是否开启
[root@aminglinux-01 src]# 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 1/systemd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2066/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 797/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1605/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2482/zabbix_agentd
tcp6 0 0 :::3306 :::* LISTEN 1975/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 2066/nginx: master
tcp6 0 0 :::22 :::* LISTEN 797/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1605/master
tcp6 0 0 :::10050 :::* LISTEN 2482/zabbix_agentd
客户端监听的端口是10050
到此,这个zabbix算是安装结束了
19.5 忘记Admin密码如何做
进入mysql的
mysql -uroot -paminglinux;
进入zabbix库
use zabbix;
查看所有表
show tables;
以后监控的服务器,监控的主机很多的话,这些表会越来越多,所有需要指定合适的监控规则、策略,比如数据量需要保存多长时间,那么在定义这个监控项目的时候就该想到,比如要保留1个月还是1年,还是其他时间;比如,监控的站点服务量很大的话,一天就要涨好几个G,那么你的服务器磁盘能支持保存多长时间;
密码默认存放的表是users里面
查看表
desc 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.00 sec)
我们需要修改的就是passwd的表
修改密码
update users set passwd=md5('aminglinux') where alias='Admin';
查看表的情况
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 | 5fce1b3e34b520afeffb37ce08c7cd66 | | 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)
修改以后就可以去尝试用新密码登录。