注意:此篇是在安装好lnmp环境后才能部署的操作,所以,做之前准备好lnmp环境,或者可以参考我做的lnmp环境,之后接着此篇开始安装

监控系统Zabbix-3.2.1的安装

zabbix-server端的操作

zabbix服务器端要提前安装好LNMP环境(mysql,nginx,php5的安装目录均是/usr/local)

创建Zabbix运行的用户:

# userd -g zabbix zabbix
# useradd -g zabbix zabbix

安装libcurl和net-snmp:

# yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel  libssh2-devel

注:OpenIPMI-devel 和libssh2-devel软件包使用centos在线yum软件源安装

安装Fping:

# tar -xvf fping-3.12.tar.gz
# cd fping-3.12/
# ./configure && make && make install
# chown -R root:zabbix /usr/local/sbin/fping
# chmod 4710 /usr/local/sbin/fping
# ll /usr/local/sbin/fping
-rws--x---. 1 root zabbix 93506 4月 27 09:26 /usr/local/sbin/fping

安装Zabbix Server:

 

# tar -xvf zabbix-3.2.1.tar.gz
# cd zabbix-3.2.1/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi

  

注意:编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。

--with-ssh2 是不需要在客户端服务器上面安装Zabbix agent,如果需要使用ssh检查,需要在编译的时候加上这项,最低需要libssh2 1.0.0版本,需要安装ssh开发包

--with-openipmi用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等。

如果添加了--enable-proxy, 那么会生成get和sender两条命令. 如下, 用于接收agent发生过来的信息, 同时发送给server.

# make && make install
# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

  

Zabbix Server配置与启动
创建Zabbix数据库和MySQL用户:

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

导入Zabbix初始数据:

切换到zabbix的解压目录下

[root@localhost zabbix-3.2.1]# cd database/mysql/
[root@localhost mysql]# pwd
/data/src/zabbix/zabbix-3.2.1/database/mysql
[root@localhost mysql]# ls
data.sql  images.sql  schema.sql

进行zabbix初始数据导入

[root@localhost mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -pzabbix -hlocalhost zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

编辑/usr/local/zabbix/etc/zabbix_server.conf:

# vim /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306
FpingLocation=/usr/local/sbin/fping

创建日志目录并设置属主属组

# mkdir -p /usr/local/zabbix/logs
# chown -R zabbix:zabbix /usr/local/zabbix

启动Zabbix Server:

# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
/usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory 

解决方法:

在ld.so.conf中加入/usr/local/mysql/lib

# vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib
/usr/local/lib

  

# ldconfig

 

再次执行zabbix_server启动

# /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
# ps -ef f|grep zabbix_server
root      23511  13356  0 10:04 pts/0    S+     0:00          \_ grep --color=auto zabbix_server
zabbix    23456      1  0 10:03 ?        S      0:00 /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
zabbix    23457  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes]
zabbix    23458  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: db watchdog [synced alerts config in 0.013618 sec, idle 60 sec]
zabbix    23459  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: poller #1 [got 0 values in 0.000012 sec, idle 5 sec]
zabbix    23460  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: poller #2 [got 0 values in 0.000009 sec, idle 5 sec]
zabbix    23461  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: poller #3 [got 0 values in 0.000018 sec, idle 5 sec]
zabbix    23462  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: poller #4 [got 0 values in 0.000012 sec, idle 5 sec]
zabbix    23463  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: poller #5 [got 0 values in 0.000012 sec, idle 5 sec]
zabbix    23464  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000012 sec, idle 5 sec]
zabbix    23465  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix    23466  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix    23467  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix    23468  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix    23469  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix    23470  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix    23471  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.001350 sec, idle 30 sec]
zabbix    23472  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix    23473  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000168 sec, 0 maintenances in 0.004566 sec, idle 30 sec]
zabbix    23474  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: http poller #1 [got 0 values in 0.001100 sec, idle 5 sec]
zabbix    23475  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.002285 sec, idle 60 sec]
zabbix    23476  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix    23477  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix    23478  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix    23479  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix    23480  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001507 sec, idle 3 sec]
zabbix    23481  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000003 sec, idle 5 sec]
zabbix    23482  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: self-monitoring [processed data in 0.000009 sec, idle 1 sec]
zabbix    23483  23456  0 10:03 ?        S      0:00  \_ /usr/local/zabbix/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000433 sec, idle 5 sec]
[root@localhost mysql]#

  

添加开机启动脚本

 

[root@localhost zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_server  /etc/rc.d/init.d/zabbix_server
[root@localhost zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd  /etc/rc.d/init.d/zabbix_agentd
 chmod +x /etc/rc.d/init.d/zabbix_server
 chmod +x /etc/rc.d/init.d/zabbix_agentd
# chkconfig --add zabbix_server
# chkconfig --add zabbix_agentd
# chkconfig zabbix_server on
chkconfig zabbix_agentd on

  

修改zabbix开机启动脚本中的zabbix安装目录

vim /etc/rc.d/init.d/zabbix_server #编辑服务端配置文件

# vim /etc/rc.d/init.d/zabbix_server
修改下面两项
BASEDIR=/usr/local/zabbix
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid    #pid文件路径 

vim /etc/rc.d/init.d/zabbix_agentd #编辑客户端配置文件

# vim /etc/rc.d/init.d/zabbix_agentd
修改下面两项
BASEDIR=/usr/local/zabbix
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid

  

# systemctl daemon-reload
# /etc/init.d/zabbix_server stop
Stopping zabbix_server (via systemctl):                    [  确定  ]
# /etc/init.d/zabbix_server start
Starting zabbix_server (via systemctl):                    [  确定  ]
# netstat -tanpl |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      27324/zabbix_agentd
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      23456/zabbix_server

  此时关闭防火墙或者做防火墙规则

配置zabbix web页面

在安装目录将frontends拷贝到指定的web root:

# cp -r frontends/php/ /usr/local/nginx1.10/html/zabbix
# chown -R www:www /usr/local/nginx1.10/html/zabbix

  

注:/usr/local/nginx/html为Nginx默认站点目录 www为Nginx运行账户

注:PHP需要至少开启扩展:

gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql

如下,查看是否包括了上面所提到的扩展模块

# /usr/local/php5.6/bin/php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib

  

安装Web

访问Web界面http://192.168.92.129/zabbix,进行相关web配置,配置完成后使用默认用户admin(密码:zabbix)登陆即可

进入ZABBIX WEB安装画面

进入ZABBIX检测画面

对数据库进行设置,这里如果数据库在本地的话端口可以使用0

点击Next step 一下步进行zabbix server 细节的设置  这一步可以默认

点击安装,安装完成后  如果没有错误就会进入完成画面

完成画面有设置文件放在服务器的位置,请记下来

点击Finish 完成

使用Admin  用默认密码 zabbix 登录

登录后画面如下

至此 ZABBIX的基础安装完成

注:

  1. 显示简体中文界面

在安装数据库时已经将zabbix库设置了utf-8字符

首先确定zabbix开启了中文支持功能:
登录到zabbix服务器的数据目录下(前面部署的zabbix数据目录是/usr/local/nginx1.10/html/zabbix/),打开 locales.inc.php文件

# cd /usr/local/nginx1.10/html/zabbix/include/
[root@localhost include]# ls
acknow.inc.php       events.inc.php          js.inc.php            screens.inc.php
actions.inc.php      forms.inc.php           locales.inc.php       services.inc.php
audit.inc.php        func.inc.php            maintenances.inc.php  sounds.inc.php
blocks.inc.php       gettextwrapper.inc.php  maps.inc.php          translateDefines.inc.php
classes              graphs.inc.php          media.inc.php         triggers.inc.php
config.inc.php       groups.inc.php          menu.inc.php          users.inc.php
correlation.inc.php  hosts.inc.php           page_footer.php       validate.inc.php
db.inc.php           html.inc.php            page_header.php       valuemap.inc.php
debug.inc.php        httptest.inc.php        perm.inc.php          views
defines.inc.php      ident.inc.php           profiles.inc.php
discovery.inc.php    images.inc.php          regexp.inc.php
draw.inc.php         items.inc.php           schema.inc.php
[root@localhost include]# vim locales.inc.php
function getLocales() {
        return [
                'en_GB' => ['name' => _('English (en_GB)'),     'display' => true],
                'en_US' => ['name' => _('English (en_US)'),     'display' => true],
                'bg_BG' => ['name' => _('Bulgarian (bg_BG)'),   'display' => false],
                'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => true],
                'zh_TW' => ['name' => _('Chinese (zh_TW)'),     'display' => false],
                'cs_CZ' => ['name' => _('Czech (cs_CZ)'),       'display' => true],
                'nl_NL' => ['name' => _('Dutch (nl_NL)'),       'display' => false],
                'fi_FI' => ['name' => _('Finnish (fi_FI)'),     'display' => false],
                'fr_FR' => ['name' => _('French (fr_FR)'),      'display' => true],
                'ka_GE' => ['name' => _('Georgian (ka_GE)'),    'display' => false],

登陆zabbix后,点击右上角的“用户”图标,将语言设置为“中文”:  

按照如图选择Chinese(zh_CN),点击update:

如下图,此时可以显示中文了

解决zabbix绘图中出现中文乱码问题:

a.从windows下控制面板->字体->选择一种中文字库例如“宋体”

b.把它拷贝到zabbix的web端的fonts目录下例如:/usr/local/nginx1.10/html/zabbix/fonts/,并且把TTF后缀改为ttf

# cp SIMSUN.TTC  /usr/local/nginx1.10/html/zabbix/fonts/
# mv SIMSUN.TTC SIMSUN.ttf
# ls
DejaVuSans.ttf SIMSUN.ttf
# pwd
/usr/local/nginx1.10/html/zabbix/fonts

并且将之前的字体文件DejaVuSans.ttf移动到别处

c.然后,接着修改代码include/defines.inc.php文件中的字体配置,将里面关于字体设置从DejaVuSans替换成SIMSUN

# vim /usr/local/nginx1.10/html/zabbix/include/defines.inc.php
会修改两处
vim替换技巧  “:%s/DejaVuSans/SIMSUN”

其中:SIMSUN为字库名字,不包含ttf后缀

这样,修改后,zabbix监控图形中的中文字就不会出现乱码了

第二部分,安装zabbix客户端

既然要监控我们就要添加要监控的主机,在添加主机之前我们首先要在被检测主机上面安装agent,安装agent比较简单,我们也是按照安装server的流程,下载软件包,在编译的时候,我们只选择agent

192.168.92.130作为zabbix的被监控端,提供web和mysql应用

安装Zabbix,配置Zabbix agent:

在192.168.92.130上配置如下:

# groupadd zabbix
# useradd -g zabbix zabbix# yum -y install gcc cc cl
# yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel  libssh2-devel

  

# tar -xvf zabbix-3.2.1.tar.gz
# cd zabbix-3.2.1/# ./configure --prefix=/data/soft/zabbix --enable-agent#  make && make install# cp misc/init.d/fedora/core/zabbix_agentd  /etc/init.d/# mkdir -p /usr/local/zabbix/logs# chown -R zabbix:zabbix /usr/local/zabbix/

 

配置开机自动启动:

 

# chkconfig --add zabbix_agentd
# chkconfig zabbix_agentd  on

  

修改zabbix开机启动脚本中的zabbix安装目录

# vim /etc/rc.d/init.d/zabbix_agentd
修改下面两处
 BASEDIR=/usr/local/zabbix/
PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid

 

# systemctl daemon-reload 

编辑zabbix_agentd.conf

 

# vi /usr/local/zabbix/etc/zabbix_agentd.conf

  

 PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168..92.129
ServerActive=192.168.92.129
Hostname=192.168.92.130
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

注:

其中Server和ServerActive都指定zabbixserver的IP地址,不同的是,前者是被动后者是主动。也就是说Server这个配置是用来允许192.168.31.225这个ip来我这取数据。而serverActive的192.168.31.225的意思是,客户端主动提交数据给他。

Hostname=XXX,这个定义的名字必须和web页面里面host的名字一样。

启动zabbix_agentd:

  

# /etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                    [  确定  ]
# netstat -anpt | grep zabbix_agentd
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      60832/zabbix_agentd  

zabbix客户端要么关闭防火墙,要么做防火墙规则

到此,zabbix3.2.1监控系统的基本环境安装完成。

实现zabbix添加监测项

添加对Linux主机的监控

在浏览器中打开:http://192.168.92.129/zabbix

登录zabbix,先在“配置”-“主机”里添加主机监控,监控os资源:内存,cpu,io,负载,带宽等.

登录zabbix,先在“配置”-“主机”里单击”创建主机”

注意:下图中的“主机名称”要和zabbix_agentd.conf文件中设置的“Hostname”后面的名称一致!

主机名称:192.168.92.130

群组:Linux servers

agent代理程序接口ip:192.168.92.130

已启用:勾选

其它选项默认即可

切换到模板

未完,待续。。。。。。。。。。。。。。。。。。。

 

  

zabbix 监控安装的更多相关文章

  1. 细化如何安装LNMP + Zabbix 监控安装文档以及故障排除

    1.LNMP所需安装包: 上传如下软件包到/soft目录中 mysql- (centos6. 64位自带)也可根据版本自行挑选,前提你了解这个版本 pcre-8.36.tar.gz nginx-.ta ...

  2. zabbix监控安装

    1.关闭iptables和selinux # systemctl stop firewalld # systemctl disable firewalld # setenforce 2.安装yum源 ...

  3. zabbix 监控安装部署

    今天尝试一下部署zabbix 官方文档包括多个版本,此处选择4.0版本 https://www.zabbix.com/documentation/4.0/manual 1.安装环境选择 zabbix4 ...

  4. 基于LNMP环境的Zabbix监控安装

    一.准备LNMP环境 1.使用putty或类似的SSH工具登陆VPS或服务器: 登陆后运行:screen -S lnmp 如果提示screen: command not found 命令不存在可以执行 ...

  5. 手把手教你在CentOS 7.4下搭建Zabbix监控(转)

    Linux系统版本:CentOS 7.4 1.安装前需要先关闭selinux和firewall. 1.1 [root@zabbix ~]# vi /etc/selinux/config 将SELINU ...

  6. CentOS 6.6 搭建Zabbix 3.0.3 过程

    分享CentOS 6.6下搭建Zabbix 3.0.3 的过程,希望都大家有所帮助. 环境安装 系统环境: # cat /etc/RedHat-release CentOS release 6.6 ( ...

  7. Linux运维相关目录

  8. zabbix安装笔记

    部署监控安装zabbix时,安装环境选择位mysql5.6.29 php选5.4.45 环境安装:centOS7: yum install httpd php mariadb-server mysql ...

  9. Zabbix二次开发_03api列表_中文版

    基于ZABBIX 3.0 https://www.zabbix.com/documentation/3.0/manual/api/reference 参考方法 本节提供了的zabbix提供的功能的概述 ...

随机推荐

  1. RHEL6.3下挂载ISO并配置安装软件包(转)

    1.将RHEL6.3的ISO镜像上传至RHEL6.3服务器上 2.挂载ISO镜像 一般将镜像文件挂载到/mnt/XXX下,所以首先创建挂载文件夹: # mkdir /mnt/cdrom 挂载(我将上传 ...

  2. 2019.01.24 NOIP训练 旅行(轮廓线dp)

    传送门 题意简述: 给一个n∗mn*mn∗m的有障碍的网格图,问你从左上角走到左下角并覆盖所有可行格子的路径条数. 思路: 路径不是很好算. 将图改造一下,在最前面添两列,第一列全部能通过,第二列只有 ...

  3. join和split 的使用

    var abc = new Array(a,b,c,d,e); abc.join('-') // 结果 : a-b-c-d-e-f var obk = 'a-b-c-d-e'; obk.split(' ...

  4. nginx自动启动脚本

    #!/bin/bash#nginx - this script starts and stops the nginx daemin # # chkconfig: - 85 15 # descripti ...

  5. UVaLive 3357 Pinary (Fib数列+递归)

    题意:求第 k 个不含前导 0 和连续 1 的二进制串. 析:1,10,100,101,1000,...很容易发现长度为 i 的二进制串的个数正好就是Fib数列的第 i 个数,因为第 i 个也有子问题 ...

  6. call和apply的作用实例

    <script> var scopeTest = function(){ //考察了 this 的含义 window.a=2; function fn(b){ this.b = b; co ...

  7. 诡异的 ERROR 1045 (28000): Access denied for user 错误

    问题描述: 用户已建,权限已赋予.long long ago这个用户是可以正常访问的,但是今天它就不能访问了.报错如下: ERROR 1045 (28000): Access denied for u ...

  8. Effective C++ 随笔(2)

    条款5 了解c++默默编写并调用哪些函数 编译器自动生成的copy 构造函数,copy赋值操作符,析构函数,构造函数,这些都是public和inline的,此处inline的意思是他们的定义都是在头文 ...

  9. 2.3.1关键字volatile与死循环

    关键字volatile的主要作用是使变量在多个线程间可见. 测试如下 package com.cky.test; /** * Created by edison on 2017/12/9. */ pu ...

  10. 笔记 Bioinformatics Algorithms Chapter7

    一.Lloyd算法 算法1 Lloyd Algorithm k_mean clustering * Centers to Clusters: After centers have been selec ...