Linux监控平台介绍
- cacti、nagios、zabbix、smokeping、open-falcon等等
- cacti、smokeping偏向于基础监控,成图非常漂亮
- cacti、nagios、zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图
- open-falcon为小米公司开发,开源后受到诸多大公司和运维工程师的追捧,适合大企业,滴滴、360、新浪微博、京东等大公司在使用这款监控软件,值得研究
- 后续以介绍zabbix为主
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
先下载rpm包,然后安装:
[root@zhangfei ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@zhangfei src]# 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%]
服务端安装:
[root@zhangfei src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
检查mysql是否启动:
[root@zhangfei src]# ps aux | grep mysql
若mysql启动失败,错误日志提示不能读写,则:
[root@zhangfei src]# chown -R mysql:mysql /data/mysql/
编辑配置文件(设置默认的字符集,因为后期zabbix的web界面设置成中文会显示有问题):
[root@zhangfei src]# vim /etc/my.cnf
在最前面加上:
character_set_server = utf8
然后重启mysql:
[root@zhangfei src]# systemctl restart mysql
登录mysql:
[root@zhangfei src]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.35-log MySQL Community Server (GPL)
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
创建库并制定编码为utf8
创建用户,需要让 web代码连接mysql:
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
Query OK, 0 rows affected (0.13 sec)
导入数据:
[root@zhangfei src]# cd /usr/share/doc/zabbix-server-mysql-3.2.7/
[root@zhangfei zabbix-server-mysql-3.2.7]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
解压压缩包:
[root@zhangfei zabbix-server-mysql-3.2.7]# gzip -d create.sql.gz
[root@zhangfei zabbix-server-mysql-3.2.7]# mysql -uroot -p94264334 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.
启动zabbix-server服务:
[root@zhangfei ~]# systemctl start zabbix-server
检查是否启动了nginx:
[root@zhangfei ~]# ps aux | grep nginx
root 2035 0.0 0.0 45480 0 ? Ss 9月07 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 2040 0.0 0.0 47968 0 ? S 9月07 0:00 nginx: worker process
nobody 2041 0.0 0.0 47968 0 ? S 9月07 0:00 nginx: worker process
root 4700 1.0 0.1 112668 976 pts/0 S+ 00:44 0:00 grep --color=auto nginx
关闭nginx:
[root@zhangfei ~]# /etc/init.d/nginx stop
Stopping nginx (via systemctl): [ 确定 ]
确定是否监听80端口:
[root@zhangfei ~]# netstat -lntp |grep 80
启动htttpd:
[root@zhangfei ~]# systemctl start httpd
确定监听80端口:
[root@zhangfei ~]# netstat -lntp |grep 80
tcp6 0 0 :::80 :::* LISTEN 4752/httpd
若要开机启动:
[root@zhangfei ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zhangfei ~]# 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.
将nginx禁止开机启动:
[root@zhangfei ~]# systemctl disable nginx
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off
[root@zhangfei ~]# chkconfig nginx off
[root@zhangfei ~]# ps aux | grep zabbix
zabbix 4697 0.0 0.6 255688 3412 ? S 00:44 0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root 4896 0.0 0.1 112664 972 pts/0 S+ 00:54 0:00 grep --color=auto zabbix
查看监听端口:
[root@zhangfei ~]# 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:20048 0.0.0.0:* LISTEN 1998/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1219/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2189/master
tcp 0 0 0.0.0.0:55294 0.0.0.0:* LISTEN 1987/rpc.statd
tcp 0 0 0.0.0.0:41601 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 4539/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 4752/httpd
tcp6 0 0 :::20048 :::* LISTEN 1998/rpc.mountd
tcp6 0 0 :::22 :::* LISTEN 1219/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2189/master
tcp6 0 0 :::36249 :::* LISTEN 1987/rpc.statd
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::41321 :::* LISTEN -
可以看到没有zabbix,有进程没有监听端口
安装zabbix
查看日志:
[root@zhangfei ~]# less /var/log/zabbix/zabbix_server.log
日志表明连接不上mysql,需要改配置文件:
[root@zhangfei ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1 //在DBName=zabbix上面增加
DBPassword=aming-zabbix //在DBuser下面增加
如果是远程机器,DBHost就要写远程的IP,前面mysql创建用户mysql> grant all on zabbix后面就要写web页面代码所在终端的IP
重启服务:
[root@zhangfei ~]# systemctl restart zabbix-server
查看进程以及监听端口:
[root@zhangfei ~]# ps aux | grep zabbix
zabbix 5089 12.7 0.8 255736 4148 ? S 01:08 0:01 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix 5092 0.0 0.4 255736 2460 ? S 01:08 0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes]
zabbix 5093 0.0 0.5 255736 2676 ? S 01:08 0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.113135 sec, idle 60 sec]
zabbix 5094 3.2 1.0 362664 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000137 sec, idle 5 sec]
zabbix 5095 1.6 1.0 362664 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000145 sec, idle 5 sec]
zabbix 5096 3.6 1.0 362664 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000171 sec, idle 5 sec]
zabbix 5097 1.2 1.0 362664 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000047 sec, idle 5 sec]
zabbix 5098 8.4 1.0 360080 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: poller #5 [connecting to the database]
zabbix 5099 1.0 1.0 362664 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000098 sec, idle 5 sec]
zabbix 5100 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix 5101 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix 5102 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix 5104 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix 5105 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix 5106 0.0 0.4 258308 2460 ? S 01:08 0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000339 sec, idle 5 sec]
zabbix 5107 1.2 0.5 255736 2688 ? S 01:08 0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.674769 sec, idle 30 sec]
zabbix 5110 0.0 0.5 255736 2464 ? S 01:08 0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix 5112 0.0 0.5 255736 2688 ? S 01:08 0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000000 sec, 0 maintenances in 0.000000 sec, idle 19 sec]
zabbix 5114 0.0 0.5 255736 2688 ? S 01:08 0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 1.819002 sec, idle 5 sec]
zabbix 5115 0.6 1.0 360080 5004 ? S 01:08 0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000000 sec, performing discovery]
zabbix 5116 0.0 0.5 255736 2692 ? S 01:08 0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix 5119 0.0 0.5 255736 2692 ? S 01:08 0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix 5120 0.0 0.5 255736 2692 ? S 01:08 0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000003 sec, idle 1 sec]
zabbix 5121 0.0 0.5 255736 2692 ? S 01:08 0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix 5122 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001445 sec, idle 3 sec]
zabbix 5123 0.0 0.7 255736 3580 ? S 01:08 0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000036 sec, idle 5 sec]
zabbix 5124 0.0 0.4 255736 2460 ? S 01:08 0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000005 sec, idle 1 sec]
zabbix 5125 0.0 0.5 255736 2680 ? S 01:08 0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.061865 sec, idle 5 sec]
root 5133 15.5 0.1 112668 976 pts/0 S+ 01:08 0:00 grep --color=auto zabbix
[root@zhangfei ~]# 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:20048 0.0.0.0:* LISTEN 1998/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1219/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2189/master
tcp 0 0 0.0.0.0:55294 0.0.0.0:* LISTEN 1987/rpc.statd
tcp 0 0 0.0.0.0:41601 0.0.0.0:* LISTEN -
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 5089/zabbix_server
tcp6 0 0 :::3306 :::* LISTEN 4539/mysqld
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 4752/httpd
tcp6 0 0 :::20048 :::* LISTEN 1998/rpc.mountd
tcp6 0 0 :::22 :::* LISTEN 1219/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2189/master
tcp6 0 0 :::36249 :::* LISTEN 1987/rpc.statd
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::10051 :::* LISTEN 5089/zabbix_server
tcp6 0 0 :::41321 :::* LISTEN -
浏览器打开http://192.168.137.20/zabbix/就会进入zabbix页面
进入下一个页面,看一下哪些不是OK,此时只有一个,是没有设置时区
设置时区:
[root@zhangfei ~]# vim /etc/php.ini
date.timezone =Asia/Shanghai
重启apache:
[root@zhangfei ~]# systemctl restart httpd
刷新浏览器页面,此时全部都是OK
下一页,
Database host 127.0.0.1
Database port 0 //表示默认,3306端口
Password aming-zabbix
登录:
默认的用户名:Admin
默认的密码:zabbix
然后更改密码并将页面改成中文
忘记Admin密码如何做
更改数据库数据就OK
[root@zhangfei ~]# mysql -uroot -p94264334
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 213
Server version: 5.6.35-log MySQL Community Server (GPL)
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;
+----------------+---------------------+------+-----+---------+-------+
| 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.11 sec)
mysql> update users set passwd=md5('94264334') where alias='Admin';
Query OK, 0 rows affected (0.33 sec)
Rows matched: 1 Changed: 0 Warnings: 0
安装zabbix
在客户端:
[root@zhangfei src]# wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@zhangfei src]# yum install -y zabbix-agent
编辑配置文件:
[root@zhangfei ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
改成
Server=192.168.137.20
ServerActive=127.0.0.1
改成
ServerActive=192.168.137.20
Hostname=Zabbix server
改成
Hostname=客户端主机名
启动zabbix:
[root@zhangfei ~]# systemctl start zabbix-agent
查看进程和监听端口:
[root@zhangfei ~]# ps aux | grep zabbix-agent
root 2760 0.0 0.1 112664 976 pts/0 R+ 02:21 0:00 grep --color=auto zabbix-agent
[root@zhangfei ~]# ps aux | grep zabbix
zabbix 2751 0.0 0.2 80100 1272 ? S 02:20 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix 2752 0.0 0.2 80100 1252 ? S 02:20 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 2753 0.0 0.3 80100 1840 ? S 02:20 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 2754 0.0 0.3 80100 1840 ? S 02:20 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 2755 0.0 0.3 80100 1840 ? S 02:20 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 2756 0.0 0.4 80100 2148 ? S 02:20 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 2762 0.0 0.1 112664 972 pts/0 R+ 02:21 0:00 grep --color=auto zabbix
[root@zhangfei ~]# netstat -ntlp
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 1787/nginx: master
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1280/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1058/sshd
tcp 0 0 0.0.0.0:49591 0.0.0.0:* LISTEN 864/rpc.statd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2029/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1787/nginx: master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 2751/zabbix_agentd
tcp 0 0 0.0.0.0:36997 0.0.0.0:* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN 2188/mysqld
tcp6 0 0 :::42477 :::* LISTEN 864/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20048 :::* LISTEN 1280/rpc.mountd
tcp6 0 0 :::22 :::* LISTEN 1058/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2029/master
tcp6 0 0 :::35233 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::10050 :::* LISTEN 2751/zabbix_agentd