#nginx 安装的依赖环境准备(编译安装) 1.nginx用户 2.需要安装gcc的环境: gcc make 3.第三方的开发包: pcre pcre-devel openssl 4.常用模块:--with-stream --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module ... #php:一般使用yum安装 #zabbix服务端安装的依赖环境准备(编译安装) 1.需要lnmp/lamp平台;mysql,nginx,apache,php具体需求版本多少以上;添加zabbix用户 2.需要依赖:zlib,net-snmp-devel,curl-devel,libevent-devel 3.可选依赖:OpenIPMI,libssh2,fping,libcurl,libiksemel,libxml2,net-snmp,libpcre,libevent,libpthread... 4.可能需要安装:php-gd php-xml php-bcmath php-mbstring 5.修改/etc/php.ini: date.timezone = Asia/Shanghai //设置时区 max_execution_time = 300 //最大执行时间,秒 post_max_size = 32M //POST数据最大容量 max_input_time = 300 //服务器接收数据的时间限制 memory_limit = 128M //内存容量限制 #设定zabbix agent端主动连接server端(或者说分布式),方式有如下 1.agent(active) 采集模式(create item) zabbix agent(Active)模式 /克隆修改模板 连接:https://www.cnblogs.com/irockcode/p/6756298.html 2.trapper 采集模式(create item),需要安装zabbix-sender,使用脚本启动命令,执行sender zabbix_sender安装和使用:https://blog.csdn.net/u012062455/article/details/81777190 3.proxy代理模式(一般不与zabbix服务端安装在同一主机) Zabbix-Proxy 连接:https://www.linuxidc.com/Linux/2016-07/133095.htm zabbix-proxy配置文件 #修改配置文件/etc/zabbix/zabbix_proxy.conf Server=192.168.1.154 #真正的服务端 ServerPort=18103 #根据个人需要修改,一般可以不改,默认端口是10051,要实现转发的话使用这个选项 Hostname=153Zabbix proxy #proxy的hostname,在web端网页配置时需要用到 DBHost=localhost #数据库,使用本地,也可以使用ip,使用localhost,因为授权就是本地,也因为配置ip失败踩过坑 DBName=zabbix_proxy #数据库名称,创建zabbix-proxy的mysql的数据库名称 DBUser=zabbix #用户 DBPassword=zabbix #密码 #DBPort=3306 #当DBHost填写localhost时,默认是使用socket通信的,这里配置一下也无碍 #HeartbeatFrequency=60 #心跳线(具体作用网了,看配置文件,这个默认就是60) ConfigFrequency=600 #zabbix proxy从zabbix server取得配置数据的频率 DataSenderFrequency=1 #这个是proxy端向server端发送数据的时间,单位是秒,几乎等于实时同步 !!注意时间与时区!! #redis依赖 1.安装依赖:gcc gcc-c++ make 2.端口及安装目录说明: 若为安装后修改端口号,需要更改一下文件 redis.conf redis-shutdown redis-sentinel.conf 3.配置文件说明: ze : 如需要在后台运行 , 把该项的值改为 yes pdifile : 把 pid 文件放在 /var/run/redis.pid , 可以配置到其他地址 bind : 指定 Redis 只接收来自该 IP 的请求 , 如果不设置 , 那么将处理所有请求 , 在生产环节中最好设置该项 port : 监听端口 , 默认为 6379 timeout : 设置客户端连接时的超时时间 , 单位为秒 loglevel : 等级分为 4 级 , debug , revbose , notice 和 warning , 生产环境下一般开启 notice logfile : 配置 log 文件地址 , 默认使用标准输出 , 即打印在命令行终端的端口上 database : 设置数据库的个数 , 默认使用的数据库是 0 save : 设置 redis 进行数据库镜像的频率 rdbcompression : 在进行镜像备份时 , 是否进行压缩 dbfilename : 镜像备份文件的文件名 dir : 数据库镜像备份的文件放置的路径 slaveof : 设置该数据库为其他数据库的从数据库 masterauth : 当主数据库连接需要密码验证时 , 在这里设定 requirepass : 设置客户端连接后进行任何其他指定前需要使用的密码 maxclients : 限制同时连接的客户端数量 maxmemory : 设置redis能够使用的最大内存 appendonly : 开启 appendonly 模式后 , Redis 会把每一次所接收到的写操作都追加到 appendonly.aof 文件中 , 当 Redis 重新启动时 , 会从该文件恢复出之前的状态 appendfsync : 设置 appendonly.aof 文件进行同步的频率 vm_enabled : 是否开启虚拟内存支持 vm_swap_file : 设置虚拟内存的交换文件的路径 vm_max_momery : 设置开启虚拟内存后 , Redis 将使用的最大物理内存的大小 , 默认为 0 vm_page_size : 设置虚拟内存页的大小 vm_pages : 设置交换文件的总的page数量 vm_max_thrrads : 设置 vm IO 同时使用的线程数量 客户端连接时 , 提示 DENIED Redis is running in protected mode because protected mode is enabled... 将配置文件里的 protected mode改为了 no , 原本是 yes 客户端连接时 , 提示 Connection refused... 可能是配置文件里面的 bind 字段设置了入口 IP , 将其注释 # # -------------------------------------------------------------- -------------------------------------------------------------- #系统清理缓存 在清理缓存前应该先 sync 先把缓存区中的数据先写入到硬盘中 echo 3 > /proc/sys/vm/drop_caches !!注!! drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存 #使用curl命令测试网站连通性 curl -o /dev/null -s -w %{http_code} 159.138.24.34:80 #/etc/fonts #该目录为字体存放目录,其他fonts目录与此相同 #if / test 判断中,不能存有ip地址类,否则或报错 -bash: [: 20.23.72.145: binary operator expected !!注意:在替换字符串的sed命令中不能出现转义字符"\" 开机登陆界面显示版本信息 # cat /etc/issue \S Kernel \r on an \m source或者"."命令的功能是:读入脚本并执行脚本,即在当前Shell中执行source或"."加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令 #linux删除/var/log/下面所有日志后重新记录日志 # systemctl stop rsyslog.service # systemctl start rsyslog.service du -h --max-depth=1 #查看某一个目录下的文件占用大小 hostnamectl set-hostname --static '主机名' #可使用大写字母 ps aux | sort -k4,4nr | head -n 10 //查看前10位占用内存最多的服务 egrep -v '^$|^#|^([ ]{4})#|^( )[ ]+( )$' /usr/local/nginx/conf/nginx.conf #输出配置文件的有效行(过滤出注释 空白行) #恢复.swp文件的方法 #先编辑.swp文件 vi -r filename.swp or vim -r filename.swp #然后保存退出,再删除.swp文件 #恢复系统日期时间 # hwclock -s #linux查看网络是否连通 cat /proc/net/dev (speed是当前网卡的速度;Duplex显示了当前网络支持全双工;link detected表示当前网卡和网络的物理连接状态,yes就是正常;该命令仅ro ot使用) -------------------------------------------------------------- -------------------------------------------------------------- echo -ne "$var\r" #不换行刷新数据(不换行输出) w | awk 'BEGIN{print "系统已登陆用户,tty"}{if(NR>2){print $1","$2}}' && echo "" w | awk '{if(NR>2 && $NF == "w"){print "当前登陆用户:"$1,"\n""当前登陆tty:"$2}}' user_ip=`who | awk '/pts/{print $NF}' | sed 's/[()]//g'` user_name=`whoami` export HISTTIMEFORMAT="[%F %T][${user_name}][${user_ip}]" ------------------------------------------------------------------------------------ tail -40 /usr/local/nginx/logs/access.log |awk -F[' ':] '{print $1,$4":"$5":"$6}'|sort -n |uniq -c tail -1000 /usr/local/nginx/logs/access.log |awk -F[' ':] '{print $4":"$5":"$6,$1}' |sort -n |uniq -c tail -1000 /usr/local/nginx/logs/access.log |awk -F[' ':] '{print $4":"$5":"$6,$1}' | sed -n "s/\[\(.*\)/\1/p" |sort -n |uniq -c tail -1000 /usr/local/nginx/logs/access.log | egrep -o "^([0-9]+.){3}([0-9]+).*http[[:graph:]]+" | awk '{print $1,$NF}'|awk -F[' '/] '{print $1,$4}'|sort -r |uniq -c #统计ip和访问域名 i=1;while [ $i -le 100 ]; do len=${#i}; printf "%d" $i; sleep 1; for x in $(seq $len); do printf "\b \b"; done; printf "."; let i+=1; done iconv -f GB2312 -t UTF-8 '待装换文件' -o '输出文件' iconv -f 'gbk' -t 'utf-8' mysql-pass.txt > utf-8.txt 再次file查看utf-8.txt发现文件编码正常 ##--------------------------------------------------------------------------## ournalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。 只要你不需要日志进行任何调试,可以删除 /var/log/journal/* 内的所有内容,但不要删除目录本身。 你应该看看/etc/systemd/journald.conf,有一个设置可以限制系统存储的日志量(下文有介绍),因此旧的日志会被轮换出来。这个设置并不完美,因为损坏的文件显然不会计入这个总数(至少在几个月之前是这种情况,不确定它现在是否已修复)。 查询 journalctl 消耗了多少磁盘空间 # journalctl --disk-usage Archived and active journals take up 3.9G on disk. ##磁盘清理------------------------------------------------------------------## 当使用 "df -h" 发现 "/" 目录磁盘使用率 "100%" 时,排查出占用磁盘空间比较大的无用文件并将其删除,当清理了文件后使用 "df -h" 发现磁盘空间并没有有效释放,而使用 "du -sh" 却显示已释放,这是因为某些大文件尽管已经被删除,但是对应的进程服务并没有停止对该文件的使用,因此需要停止进程清理文件;否则需要停止进程后重启主机; du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数; df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。 du是用户级程序,不考虑Meta Data(系统为自身分配的一些磁盘块) ps:应用程序打开的文件句柄没有关闭的话,会造成df命令显示的剩余磁盘空间少。而du则不会。 ### 发送UDP测试信息到端口,测试互通情况 echo "udp_test" | socat - udp4-datagram:192.168.1.1:514 ### 测试UDP端口互通情况 ncat/nc -u 192.168.0.1 514