监控介绍

monitor  cacti(rrdtool) 画图 监控网络设备 流量 展现历史数据功能

nagios 监控服务的状态 磁盘 内存 不会记录数据 一目了然 可自己写脚本

zabbix 

cacti安装

rpm -ivh http://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm

yum install  epel-release

yum install -y httpd php php-mysql mysql mysql-server mysql-devel php-gd libjpeg libjpeg-devel libpng libpng-devel

yum install -y cacti net-snmp net-snmp-utils rrdtool 

/etc/init.d/mysqld start
/etc/init.d/httpd  start
/etc/init.d/snmpd start

netstat -lnp|grep 8   有端口占用时 使用  或者直接关闭 nginx

kill -9 +进程

vim /etc/httpd/conf.d/cacti.conf  

把"Deny from all" 改为  "Allow from all"

/etc/init.d/httpd  restart

mysql -uroot  -e "create database cacti"

mysql -uroot -e "grant all on cacti.* to 'cacti'@'127.0.0.1' identified by 'cacti';"

mysql -uroot cacti < /usr/share/doc/cacti-0.8.8b/cacti.sql

vim /usr/share/cacti/include/config.php

$database_type = "mysql";
$database_default = "cacti";
$database_name = "cacti";
$database_hostname = "127.0.0.1";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;

ip/cacti  访问 出现错误:

FATAL: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'

mysql -u cacti -pcacti 确发现无法访问,返回信息如下:
ERROR 1045 (28000): Access denied for user 'cacti'@'localhost' (using password: YES)

我是这样操作的/
mysql -u root -p
use mysql;
grant all privileges on cacti.* to cacti@"localhost" identified by 'cacti';
flush privileges;
再修改vim /usr/share/cacti/include/config.php
$database_hostname = "localhost";   这个没改
在测试mysql -u cacti -pcacti

关闭  setenforce 0   临时
修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启

ip/cacti/

/usr/bin/php /usr/share/cacti/poller.php

vim /etc/php.ini

增加

 date.timezone = 'Asia/Chongging'
cront -e

*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php

 cacti增加客户端监控

 yum install -y net-snmp

  vim /etc/snmp/snmpd.conf

修改syslocation以及syscontact, 其中syslocation 可以写本机ip

syslocation 11.20
syscontact Root [email protected]

service  snmpd  start

nagios监控客户端-1

客户端机器上

yum install -y epel-release

yum install -y nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe 
vim /etc/nagios/nrpe.cfg  找到“allowed_hosts=127.0.0.1” 改为 “allowed_hosts=127.0.0.1,192.168.0.11” 后面的ip为服务端ip; 找到” dont_blame_nrpe=0” 改为  “dont_blame_nrpe=1” 
启动客户端 /etc/init.d/nrpe start

cd /etc/nagios/conf.d/
vim 192.168.1.33cfg   

define host{

        use                     linux-server

        host_name           192.168.1.119

        alias                       1.119

        address                 192.168.1.119

}

define service{

        use                     generic-service

        host_name               192.168.1.119

        service_description     check_ping

        check_command           check_ping!100.0,20%!200.0,50%

        max_check_attempts 5

        normal_check_interval 1

}

define service{

        use                     generic-service

        host_name               192.168.1.119

        service_description     check_ssh

        check_command           check_ssh

        normal_check_interval 1

}

define service{

        use                     generic-service

        host_name               192.168.1.119

        service_description     check_http

        check_command           check_http

        max_check_attempts      5

        normal_check_interval 1

}

 nagios -v /etc/nagios/nagios.cfg

 service httpd restart; service nagios restart

nagios监控客户端-2

vim /etc/nagios/objects/commands.cfg

define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }


vim /etc/nagios/nrpe.cfg   从

command[check_hda3]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda3

/etc/init.d/nrpe start

 vim /etc/nagios/conf.d/192.168.1.33.cfg   主

define service{

        use     generic-service

        host_name       192.168.1.119

        service_description     check_load

        check_command           check_nrpe!check_load

        max_check_attempts 5

        normal_check_interval 1

}



define service{

        use     generic-service

        host_name       192.168.1.119

        service_description     check_disk_sda1

        check_command           check_nrpe!check_sda1

        max_check_attempts 5

        normal_check_interval 1

}

define service{

        use     generic-service

        host_name       192.168.1.119

        service_description     check_disk_sda3

        check_command           check_nrpe!check_sda3

        max_check_attempts 5

        normal_check_interval 1

}

/etc/init.d/nagios restart

nagios配置邮件告警

vim /etc/nagios/objects/contacts.cfg


define contact{

        contact_name               123

        use                             generic-contact

        alias                           aming

        email              [email protected]

        }



define contact{

        contact_name               456

        use                             generic-contact

        alias                            aaa

        email              [email protected]

        }



define contactgroup{

        contactgroup_name           common

        alias                                  common

        members                          123,456

        }

vim /etc/nagios/conf.d/192.168.1.33.cfg

contact_groups        common

 notification_period   24x7

 notification_options:w,u,c,r   

zabbix服务端安装

yum install -y epel-release

 yum install -y  httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring

yum install  zabbix20 zabbix20-agent zabbix20-server  zabbix20-server-mysql zabbix20-web zabbix20-web-mysql net-snmp-devel

/etc/init.d/zabbix-server start; /etc/init.d/zabbix-agent start
/etc/init.d/httpd start; 

mysql -uroot -p -e  "create database zabbix"
mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/schema.sql
mysql -uroot -p --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/p_w_picpaths.sql
mysql -uroot -p --default-character-set=utf8  zabbix < /usr/share/zabbix-mysql/data.sql

/etc/init.d/zabbix-server start

ps aux |grep zabbix

mysql -uroot -e "grant all on *.* to 'zabbix'@'localhost' identified by 'zabbix';

 vim /etc/zabbix_server.conf 

修改DBpassword= zabbix

/etc/init.d/zabbix-server start

vim /etc/php.ini

览器访问 http://ip/zabbix, 默认会有“It is not safe to rely on the system‘s timezone settings ”这样的警告信息,需要vim /etc/php.ini 设置 date.timezone=“Asia/Shanghai”点next
解决相关的报错信息,点retry  (vim /etc/php.ini)
输入mysql相关信息, 首先要测试一下,如果不通过,则需要调试,测试通过后,点next
Name 写127.0.0.1,(可以自定义)点next,再点next,最后点finish
默认管理员账号为 admin:zabbix
这时会遇到“zabbix server is not running”这样的错误,需要编辑一下 /etc/zabbix/zabbix_server.conf ,配置DBUser, DBPassword

 zabbix增加客户端监控

客户端上安装   yum install zabbix20-agent

vim /etc/zabbix_agentd.con

更改Server=服务端ip; ServerActive=0.0.0.0:10050; Hostname=aming(自定义,但要唯一) 

 /etc/init.d/zabbix-agent start

zabbix_get -s 192.168.1.208 -p10050 -k "system.hostname"   服务端上测试

  (关闭服务端防火墙)

在web界面下,点”configuration” --> “host” --> 右上角点”Create Host”  其中host name,  visible name自定义,可以选择groups,这里默认即可,ip address 写入客户端ip
配置监控项目模板:点“templates”, 点add, 在弹出的小窗口中选择Template OS Linux, 然后点select, 最后点save

zabbix配置邮件告警

yum install -y sendmail 

mail -s "test" [email protected]

mailq

/etc/init.d/postfix start

mkdir -p /home/zabbix/bin

vim /home/zabbix/bin/baojing.sh

#! /bin/bash
echo "$3" |/bin/mail -s "$2" $1
chmod +x /home/zabbix/bin/baojing.sh

vim /etc/zabbix_server.conf

在zabbix_server.conf配置文件中,有参数AlertScriptsPath和ExternalScripts
AlertScriptsPath=/home/zabbix/bin/ ---用户自定义的media types脚本
ExternalScripts=/home/zabbix/bin/ ---用户自定义的检查的脚本(item)
这样才能找到你的脚本,因为你在frontend中只是输入脚本的名称,没有路径。

 linux安全-1

1. Linux发行版本
选择主流的,更新较快的。
从官网获取安装镜像

2. 硬件和物理安全
设置bios密码
设置grub密码

 vim /etc/grub.conf

加入 password 123456

grub-crypt

cat /etc/shadow

grub-crypt --md5

设置系统密码
选择有安全保障的idc机房

系统和用户方面
关闭用不到的服务   (http://www.aminglinux.com/study_v2/chapter16.html#id5)

yum install -y netsysv

尽量升级到最新稳定版程序包

linux安全-2

设置防火墙规则  (http://www.aminglinux.com/study_v2/chapter16.html#id3)
不需要登录的用户要禁止登录

cat /etc/passwd
root远程登录限制 ( http://www.aminglinux.com/bbs/thread-5546-1-1.html and  http://www.aminglinux.com/bbs/thread-5545-1-1.html)

打开系统日志记录一切信息
配置合适的sudoer

3. 系统和用户方面
关闭用不到的服务   (http://www.aminglinux.com/study_v2/chapter16.html#id5)
尽量升级到最新稳定版程序包
设置防火墙规则  (http://www.aminglinux.com/study_v2/chapter16.html#id3)
不需要登录的用户要禁止登录
root远程登录限制 ( http://www.aminglinux.com/bbs/thread-5546-1-1.html and  http://www.aminglinux.com/bbs/thread-5545-1-1.html)
打开系统日志记录一切信息
配置合适的sudoer

4. 文件系统安全  (参考 http://www.aminglinux.com/bbs/thread-6917-1-2.html
使用ext3或者ext4
严格控制目录和文件的权限  umask
尽量少使用suid/sgid权限
重要的数据或配置文件要制定备份计划

linux安全-3
5. pam  (参考资料 http://www.infoq.com/cn/articles/linux-pam-one
/etc/pam.conf
/etc/pam.d/

pam类型
auth  用户验证相关  要求用户输入一个口令
account 用户账户管理相关  检查一个用户的账户或者口令是否过期
session 与连接或者会话管理相关  比如将用户登录会话信息记录到日志
password 密码管理 

am 级别
required:表示该行以及所涉及模块的成功是用户通过鉴别的必要条件。换句话说,只有当对应于应用程序的所有带 required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有模块都调用完毕后才将错误消息返回调用他的程序。 反正说白了,就是必须将所有的模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop一样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。
requisite:与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。
sufficient:  表示该行以及所涉及模块验证成功是用户通过鉴别的充分条件。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。
optional:  他表示即便该行所涉及的模块验证失败用户仍能通过认证。

6. 应用安全
各种常用服务 ftp、samba、nfs、rsync、mysql、http
web安全(漏洞:文件上传、xss、sql注入、CSRF、访问控制)

文件上传: 就像discuz论坛的图片上传,如果图片上传服务器时的目录可以执行php脚本,那么这就意味着,用户可以上传***脚本,然后可以执行

xss:跨站脚本漏洞(Cross Site Scripting,常简写作XSS)是Web应用程序在将数据输出到网页的时候存在问题,导致***者可以将构造的恶意数据显示在页面的漏洞。因为跨站脚本***都是向网页内容中写入一段恶意的脚本或者HTML代码,故跨站脚本漏洞也被叫做HTML注入漏洞(HTML Injection)。

sql注入:所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。PHP + MYSQL编程,引发SQL注入***的主要原因有两点:(1) PHP配置文件php.ini中的magic_quotes_gpc选项没有打开,被设置为off。(2) 开发者没有对数据类型进行检查和转义。第二点最为重要,如果没有第二点的保证,magic_quotes_gpc选项不论为on,还是off,都可能引发SQL注入***。

CSRF: (Cross-site request forgery,跨站请求伪造)伪造用户的请求利用受信任的网站来做一些用户不知道的事。当用户访问网站通过登录操作会得到身份标识的cookie,在不关闭浏览器并未注销登录的情况下会带着cookie,这种状态下就有可能会让***者去伪造请求。因为CSRF不容易被发现,所以用户通常不容易察觉但是其危害性是很明显的。
访问控制: 
apache配置:
apache的order allow deny  http://www.aminglinux.com/bbs/thread-832-1-1.html
apache限制某个目录下的php文件没有执行权限  http://www.aminglinux.com/bbs/thread-1000-1-1.html
apache 针对访问uri 限制ip  http://www.aminglinux.com/bbs/thread-5365-1-1.html
几种限制ip的方法 http://www.aminglinux.com/bbs/thread-6519-1-1.html
nginx配置
限制只让某个ip访问 http://www.aminglinux.com/bbs/thread-450-1-1.html
禁止通过ip访问站点 http://www.aminglinux.com/bbs/thread-38-1-1.html
禁止某个IP或者IP段访问站点的设置方法 http://www.aminglinux.com/bbs/thread-546-1-1.html
使用 user_agent 控制客户端访问 http://www.aminglinux.com/bbs/thread-846-1-1.html

7. ***检测
snort  (https://www.snort.org/
snort中文手册: http://www.360doc.com/content/08/0114/14/25127_972488.shtml

 linux系统调优

优目的是为了让系统更加高效,使系统资源使用达到最大的平衡。
参考资料: 
http://os.51cto.com/art/201303/385726.htm(调优那些事)
http://www.111cn.net/sys/linux/58433.htm(io/系统/内存性能调优)
http://hong.im/2013/04/20/linux-tcp-tuning/ (高流量大并发Linux TCP 性能调优)
http://wenku.baidu.com/view/0985c9dba58da0116c1749ae.html (文库--LINUX性能调优方法总结)
http://my.oschina.net/sharelinux/blog?catalog=289503 (浅谈linux性能调优系列)
http://colobu.com/2014/09/18/linux-tcpip-tuning/ (TCP/IP协议栈)
https://blog.linuxeye.com/379.html(mysql调优)
http://www.tuicool.com/articles/RbUNn2 (nignx+php-fpm 高并发参数配置及linux内核参数优化)
http://blog.csdn.net/wangsg2014/article/details/38804873 (nignx参数优化)
http://os.51cto.com/art/201003/192112.htm (apache参数优化)
http://www.phpboy.net/apache/488.html(apache参数优化)
http://www.360doc.com/relevant/178008993_more.shtml (apache参数优化文档库)
http://www.cnblogs.com/R-zqiang/archive/2012/06/12/2545768.html (php.ini参数优化)
http://www.cnblogs.com/ggjucheng/archive/2013/04/16/3024731.html (tomcat调优)
http://www.php-oa.com/2008/02/03/squidyouhua.html (squid调优)
http://www.neters.cn/archives/548.html(squid优化指南)
http://handao.blog.techweb.com.cn/archives/134.html (squid优化相关的内核参数调整)

一. 硬件方面
1. cpu   
2. 内存  (增加内存)
3. 存储 (使用raid,使用ssd)
4. 网卡 (使用千兆网卡,或者双网卡绑定)

二. 系统方面 
1. 内核参数优化(网络相关、内存相关、缓冲缓存相关)
2. 文件系统方面(分区调优,格式化时根据存储文件特性,指定合适的块大小,noatime,日志隔离,软raid,有效使用/dev/shm,关闭不必要的服务)
3. cpu优化 (进程绑定,中断绑定)

三. 应用程序方面
1. nginx、apache、php-fpm、mysql、tomcat、squid等应用,是可以通过调节各个参数获得性能优化的。
2. web优化,比如可以把用户请求合并(js、css合并),使用cdn加速静态页访问速度,把图片文档压缩减少带宽传输,
3. 优化网站程序

四. 架构方面
1. 使用简单并且稳定的架构方案
2. 多使用缓存(squid,varnish,memcache,nosql相关:redis,mongodb)