标签归档: 服务器

CentOS + Cacti 集中监控服务器 (笔记)

Cacti官方网站

官方文档——Installing Under Unix

Percona Monitoring Plugins (Plugins for Cacti)
Percona 为我们提供了很多包括linux,apache,mysql,redis,nginx等等常见服务的监控模板非常方便。
下载地址 | 官方文档

监控机配置
1. 下载Cacti
2. 解压到wwwroot目录(cacti默认URL是/cacti,不想改配置就同样解压到www/cacti好了)
3. 配置web服务(注意屏蔽cli目录访问)
4. 编译安装PHP SNMP扩展
5. 安装SNMP服务

yum install net-snmp net-snmp-libs net-snmp-utils

如何安装PHP SNMP扩展
进入PHP源代码目录下的ext/snmp目录,执行以下命令

phpize
./configure
make && make install

6. 修改cacti/include/config.php 配置mysql连接参数
7. 导入cacti.sql
8. 访问http://服务器地址/cati 开始安装

被监控机配置
1. 配置防火墙(打开UDP 161端口,其他端口根据需要打开)
对于运行在网络上的服务器来说对外开发的端口自然是越少越好,可能的话最好只对内部网络开放SNMP服务。
其他端口根据需要选择开放。
在/etc/sysconfig/iptables添加

-A INPUT -p udp -m state --state NEW -m udp -s 允许访问的IP --dport 161 -j ACCEPT

2. 安装SNMP服务

yum install net-snmp net-snmp-libs net-snmp-utils
service snmpd start

其他注意事项:
1. Percona的提供的脚本很多监控项目是通过ssh连接到远程服务器上,所以需要监控机有访问被监控机的权限,在Percona的脚本里是通过ssh密钥登陆的。
2. Percona默认访问的Nginx统计地址是/server-status,可以在cacti的data source里改或者偷懒直接改scripts/ss_get_by_ssh.php。
3. Percona为每种服务都提供了Host模板,在创建Host之后可以通过多次更改Host Template来合并不同的图表模板。当然,还是都分开比较好一点,都在一起太多了,乱。

待续。。。

强大的 轻量级 Linux服务器监控系统 Monitorix

Monitorix 是一个开源的、轻量的 Linux/Unix 服务器监控工具。安装配置简单,图表功能丰富。

官方网站:http://www.monitorix.org

安装方法:

# perl-HTTP-Server-Simple 需要从EPEL安装
rpm -ivh http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

# 安装依赖
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple

# 安装Monitorix
yum install monitorix

# 启动服务
service monitorix start

博主最近要监控一台线上服务器,用cacti又嫌太麻烦,在看了《比cacti更好的linux单机监控——Monitorix的安装与配置》 之后决定采用Monitorix。

在使用的过程中博主发现一个问题,当刷新报表页面的时候会有一个进程 netstat -nl –tcp 消耗掉大量的CPU,而且报表页面载入非常的慢。根据分析 Network port traffic (port.rrd),和 Nginx statistics (nginx.rrd) 两个脚本都会执行这个命令,而且不止一次。通过google搜索,我找到了解决方案——采用ss替代netstat命令。

修改方法:

在/usr/lib/monitorix 下面找到nginx.pm和port.pm,修改其中执行netstat 命令的部分替换为ss即可。

关于ss的介绍在这里:《篡权的ss》

如果需要监控温度、电压情况需要安装lm_sensors,可以通过yum安装。安装lm_sensors之后还要运行sensors-detect来检测生成/etc/sysconfig/lm_sensors文件。

Linode LNMP服务器环境配置笔记

我选的是1GB的套餐,每个月$20,年付减10%,实付$230.21折合人民币1400多点。

Linode 1GB

Linode 1GB

操作系统: CentOS Linux 6.2 64bit
运行环境: Nginx+PHP+MySQL

准备工作
编译环境部署:
在服务器上启用编译环境是非常危险的做法,为了保证安全我专门用一个虚拟机来做编译工作,编译完成后再将程序部署至服务器即可。

根据VPS操作系统情况下载安装CentOS 6.2 64bit, 因为只是做编译机,所以只要装 Minimal 版就可以了,几百M,下载也很快。
历史版本的ISO文件可以在 http://vault.centos.org 找到。

Minimal版本安装好后不会自动启动网络,需要执行以下操作:
运行命令

dhclient -v eth0

修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0
在文件最后添加一行
BOOTPROTO=”dhcp”

再把ONBOOT=”no”改成ONBOOT=”yes”

这样以后启动都自动连接网络了。

用root登陆后在/root目录建立packages、build两个目录,分别用于放置安装包和解压后的程序目录。
# 安装

yum install gcc make
cd
mkdir packages build

创建用户

groupadd -g 500 www && useradd -g 500 -m -u 500 www
groupadd -g 501 Hessian && useradd -g 501 -m -u 501 Hessian
groupadd -g 27 mysql && useradd -d /www/database -M -g 27 -u 27 mysql

环境变量

修改文件/etc/profile,将下面的内容加到文件末尾

PATH=$PATH:/opt/mysql/bin
PATH=$PATH:/opt/php/bin
PATH=$PATH:/opt/nginx/sbin

添加完成后执行: . /etc/profile
(中间的空格可别漏)


 

Nginx

下载地址:http://nginx.org/en/download.html

1. 下载

cd ~/packages
wget http://nginx.org/download/nginx-1.4.1.tar.gz

2. 解压

cd ~/build
tar -zxf ~/packages/nginx-1.4.1.tar.gz

3. 解决依赖

yum install pcre-devel
yum install zlib-devel

3. 编译

cd nginx-1.4.1
./configure --prefix=/opt/nginx-1.4.1 --with-pcre --with-openssl=/usr
make -j 2 && make install

 

MySQL

下载地址:http://dev.mysql.com/downloads/mysql

这里我选择的是Binary包
Linux – Generic (glibc 2.5) (x86, 64-bit), Compressed TAR Archive
mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz

下载之后解压缩即可使用


 

PHP

虽然YUM有提供PHP,但是出于性能方面和个人需要的考虑我还是选择自己编译。
PHP版本我用的是5.3 主要是不知道5.4会不会带来什么兼容性问题。

下载地址:http://cn2.php.net/get/php-5.3.24.tar.bz2/from/a/mirror

1. 下载

cd ~/packages
wget http://cn2.php.net/get/php-5.3.24.tar.bz2/from/this/mirror

2. 解压

cd ~/build
tar -zjf ~/packages/php-5.3.24.tar.gz

3. 解决依赖

yum install libxml2-devel
yum install libcurl-devel
yum install libjpeg-devel
yum install libpng-devel
yum install freetype-devel
yum install autoconf

libmcrypt 在yum里没有,可以从EPEL里下载
EPEL(Extra Packages for Enterprise Linux)是Fedora社区打造的为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。
安装

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm

3. 编译

cd php-5.3.24
./configure --prefix=/opt/php-5.3.24 \
--with-config-file-path=/opt/php \
--with-mysql=mysqlnd \
--with-mysql-sock=/tmp/mysql.sock \
--with-iconv-dir=/usr \
--enable-xml \
--with-libxml-dir \
--disable-rpath \
--enable-safe-mode \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--with-gd \
--enable-zip \
--enable-sockets \
--enable-mbstring=all \
--with-mcrypt \
--enable-gd-native-ttf \
--with-freetype-dir=/usr \
--with-jpeg-dir=/usr \
--with-png-dir=/usr\
--with-pdo-mysql=mysqlnd \
--without-pdo-sqlite \
--enable-fpm \
--enable-cli

make -j2
make install

4. 编译扩展

后续步骤

cd /opt
ln -s mysql-5.6.11-linux-glibc2.5-x86_64 mysql
ln -s nginx-1.4.1 nginx
ln -s php-5.3.24 php
tar -czf servers.tar.gz *

将配置文件、启动脚本以及servers.tar.gz 上传到服务器,解压到/opt,放置好配置文件和启动脚本。


VPS 安装步骤

解决依赖

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm
yum install libpng libjpeg freetype

yum install svn

创建用户

groupadd -g 500 www && useradd -g 500 -m -u 500 www
groupadd -g 501 Hessian && useradd -g 501 -m -u 501 Hessian
groupadd -g 27 mysql && useradd -d /www/database -M -g 27 -u 27 mysql

上传并解压
将servers.tar.gz、配置文件、启动脚本放到服务器

tar -zxf servers.tar.gz -C /opt
 tar -zxf init-scripts.tar.gz -C /etc/init.d

添加服务

chkconfig --add nginx
chkconfig --add mysql
chkconfig --add php-fpm

建立资源目录

mkdir /www
mkdir /www/database
mkdir /www/logs
mkdir /www/svn-repos

调整目录权限

chown www:www -R /www
chown mysql:mysql -R /www/database

环境变量
修改文件/etc/profile,将下面的内容加到文件末尾

PATH=$PATH:/opt/mysql/bin
PATH=$PATH:/opt/php/bin
PATH=$PATH:/opt/nginx/sbin

添加完成后执行: . /etc/profile
(中间的空格可别漏)


 

安全设置

SSH设置:
修改/etc/ssh/sshd_config
1. 禁用root登陆:PermitRootLogin no
2. 禁用密码登陆:PasswordAuthentication no
3. 启用密钥登陆:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

将公钥加入到服务器上 .ssh/authorized_keys中,生成密钥及具体设置方法参考:

http://stevenz.blog.hexun.com/15798089_d.html

在客户端可以通过下面的命令直接将公钥添加到服务器上:

cat  ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> ~/.ssh/authorized_keys"

执行完成后重启sshd

service sshd restart

如果无法登陆可以查看安全日志 /var/log/secure 确定问题原因。

 

防火墙设置:
创建文件/etc/sysconfig/iptables,加入以下内容

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

这里只开放了22、80、3690三个有限的端口,如果有其他需要再自己参考添加就行。