欢迎光临
不是风暴、是海啸!

zabbix改中文和乱码问题

yocksky阅读(152)

Zabbix 5.0切换中文语言小结

最近测试Zabbix 5.0,去修改语言时发现不能选择“Chinese(zh_CN)”,这个选项在下拉框中是灰色的(无法选择)。提示“You are not able to choose some of the languages, because locales for them are not installed on the web server.”, 操作系统为CentOS Linux release 8.1.1911 (Core)

从旁边的提示信息判断,可能是Web服务器没有安装中文包,但是也有可能Zabbix把对中文的支持给关闭了,所以我们先检查一下php代码,找到/usr/share/zabbix/include/下的locales.inc.php文件

如上所示,Zabbix是允许你选择“Chinese(zh_CN)”选项的,那么可能是没有安装中文包,那么接下来,我们来检查一下这台服务器是否安装中文包。

# locale -a | grep "zh_CN"

输出为空,那么可以判断这台服务器没有安装中文包,下面来安装。

查找有哪些语言安装包

#yum search langpacks

安装中文语言包有下面两种方式

#yum install langpacks-zh_CN.noarch
#dnf install langpacks-zh_CN.noarch

我使用yum安装成功后,检查发现下面输出依然为空,这个是因为这里没有安装glibc-common包,需要安装glibc-common实现对已安装语言包的识别。

# locale -a | grep "zh_CN"
# dnf install glibc-common

安装完glibc-common包,验证测试langpacks-zh_CN.noarch已经安装成功了。

# locale -a | grep zh_CN

zh_CN

zh_CN.gb18030

zh_CN.gbk

zh_CN.utf8

完成上面步骤后,回到Zabbix界面刷新后,就可以选择“Chinese(zh_CN)”了。问题解决。

Zabbix图片文字乱码

在后续的使用过程中,发现一些界面中文显示为乱码.如下截图所示:

在/usr/share/zabbix/include/下,检查defines.inc.php,可以发现代码里面定义了下面字体相关常量

define(‘ZBX_FONTPATH’, realpath(‘assets/fonts’)); // where to search for font (GD > 2.0.18)

define(‘ZBX_GRAPH_FONT_NAME’, ‘graphfont’); // font file name

define(‘ZBX_FONT_NAME’, ‘graphfont’);

define(‘ZBX_PREG_DEF_FONT_STRING’, ‘/^[0-9\.:% ]+$/’)

define(‘ZBX_STYLE_MONOSPACE_FONT’, ‘monospace-font’);

可以看出zabbix使用了/usr/share/zabbix/assets/fonts下面定义的字体文件,而没有使用linux的系统字体,从网上搜索的资料来看,可以将Windows下的一些字体文件上传到这个目录来解决乱码问题。

方案1:使用Windows中的字体替换graphfont.ttf

从C:\Windows\Fonts中找到微软雅黑字体上传到/usr/share/zabbix/assets/fonts下面后,将雅黑字体MSYH.TTF改名为graphfont.ttf

wget http://zt.xiongsky.com:65530/msyh.ttc

# mv graphfont.ttf graphfont.ttf.bak

# mv MSYH.TTF  graphfont.ttf

完整上面操作后,刷新页面,发现乱码确实解决了

方案2:修改代码中的字体相关常量

sftp> cd /usr/share/zabbix/assets/fonts

sftp> put -r “C:\Windows\Fonts\STFANGSO.TTF”

Uploading STFANGSO.TTF to /usr/share/zabbix/assets/fonts/STFANGSO.TTF

  100% 11096KB  11096KB/s 00:00:00

# mv STFANGSO.TTF STFANGSO.ttf  #这里必须将文件后缀类型从TTF改为ttf,否则无法识别,或者说必须修改代码才能识别

define(‘ZBX_FONTPATH’,                          realpath(‘assets/fonts’)); // where to search for font (GD > 2.0.18)

#define(‘ZBX_GRAPH_FONT_NAME’,          ‘graphfont’); // font file name

define(‘ZBX_GRAPH_FONT_NAME’,           ‘STFANGSO’); // font file name

define(‘ZBX_GRAPH_LEGEND_HEIGHT’,       120); // when graph height is less then this value, some legend will not show up

#define(‘ZBX_FONT_NAME’, ‘graphfont’);

define(‘ZBX_FONT_NAME’, ‘华文仿宋’);

完成后刷新页面,问题也可以解决。当然你也可以选择一个你喜欢的字体。

https://www.cnblogs.com/kerrycode/p/13186953.html

安装zabbix5

yocksky阅读(116)

环境如下:

  • 系统版本:CentOS Linux release 8.1.1911 (Core)
  • MySQL:8.0.17
  • Nginx:1.14.1
  • PHP:7.2.11

关闭防火墙和SELingux

systemctl stop firewalld
systemctl disable firewalld
sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/sysconfig/selinux 
setenforce 0
配置镜像源
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all

新增阿里云zabbix镜像源zabbix.repo

vi /etc/yum.repos.d/zabbix.repo

添加如下文本

[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
dnf clean all
安装Zabbix server,Web前端,agent
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
c. 创建初始数据库

产品手册

在数据库主机上运行以下代码。

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码。

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
d. 为Zabbix server配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password
e. 为Zabbix前端配置PHP

编辑配置文件 /etc/php-fpm.d/zabbix.conf, uncomment and set the right timezone for you.

php_value[date.timezone] = Asia/Shanghai
f. 启动Zabbix server和agent进程

启动Zabbix server和agent进程,并为它们设置开机自启:

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
g. 配置Zabbix前端

连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
根据Zabbix文件里步骤操作: Installing frontend

默认账号Admin 密码zabbix

https://www.cnblogs.com/Rohn/p/13086523.html

https://www.zabbix.com/cn/download

centos8 安装mysql

yocksky阅读(125)

使用最新的包管理器安装MySQL

sudo dnf install @mysql




开机启动

安装完成后,运行以下命令来启动MySQL服务并使它在启动时自动启动:

sudo systemctl enable --now mysqld

要检查MySQL服务器是否正在运行,请输入:

sudo systemctl status mysqld

添加密码及安全设置#

运行mysql_secure_installation脚本,该脚本执行一些与安全性相关的操作并设置MySQL根密码:

sudo mysql_secure_installation

步骤如下:

要求你配置VALIDATE PASSWORD component(验证密码组件): 输入y ,回车进入该配置

选择密码验证策略等级, 我这里选择0 (low),回车

输入新密码两次

确认是否继续使用提供的密码?输入y ,回车

移除匿名用户? 输入y ,回车

不允许root远程登陆? 我这里需要远程登陆,所以输入n ,回车

移除test数据库? 输入y ,回车

重新载入权限表? 输入y ,回车

启动并设置开机自启

systemctl enable mysqld
systemctl start mysqld

https://www.cnblogs.com/kasnti/p/11929030.html

IPTABLES限制IP上传下载速度

yocksky阅读(285)

怎样使用IPTABLES限制IP上传下载速度,如何用iptables限速?我们先来看范例:

iptables限制某IP的上传速度为1000KB/秒(8Mbps,流入服务器带宽),即在此IP所在的服务器或VPS上wget的速度


iptables -A FORWARD -m limit -d 208.8.14.53 –limit 700/s –limit-burst 100 -j ACCEPT 
iptables -A FORWARD -d 208.8.14.53 -j DROP

取消iptables限速:


iptables -D FORWARD -m limit -d 208.8.14.53 –limit 700/s –limit-burst 100 -j ACCEPT 
iptables -D FORWARD -d 208.8.14.53 -j DROP

限制某IP的上传速度为2000KB/秒(16Mbps,流入服务器带宽),即在此IP所在的服务器或VPS上wget的速度


iptables -A FORWARD -m limit -d 208.8.14.53 –limit 1400/s –limit-burst 100 -j ACCEPT 
iptables -A FORWARD -d 208.8.14.53 -j DROP

取消限制:


iptables -D FORWARD -m limit -d 208.8.14.53 –limit 1400/s –limit-burst 100 -j ACCEPT 
iptables -D FORWARD -d 208.8.14.53 -j DROP

如果要限制某IP下载速度(即网友通过网页下载的带宽/速度)参考

iptables -A FORWARD -s 208.8.14.36 -m limit –limit 700/s -j ACCEPT
iptables -A FORWARD -s 208.8.14.36 -j DROP

双向限制:

iptables -A FORWARD -m limit -d 208.8.14.53 –limit 2400/s –limit-burst 100 -j ACCEPT 
iptables -A FORWARD -d 208.8.14.53 -j DROP
iptables -A FORWARD -m limit -s 208.8.14.53 –limit 2400/s –limit-burst 100 -j ACCEPT 
iptables -A FORWARD -s 208.8.14.53 -j DROP

Iptables 的limit匹配ctohome.com大致介绍

限制匹配数据包的频率或速率,看清楚了,它是用来限制匹配的数据包的频率和速率的.这里“limit”这个词经常给别人“限制”的误解, 其实准确说,应该是“按一定速率去匹配”,至于“限制”还是“放行”是后面 -j 动作来实现的,limit 仅仅是个 match 模块,他的功能是匹配,匹配方式是按一定速率.

用iptables的limit模块,目标是ACCEPT.当你设置300/s时,它大约每3ms发出一个令牌,获得令牌的包可以发出去,没有获得令牌的包只能等待下一个令牌到来,这样不会造成一些包丢失,更不会造成所谓“断线”的. 

以下2条是对icmp的burst限制


iptables -A INPUT -p icmp -m limit –limit 1/sec –limit-burst 10 -j ACCEPT
iptables -A INPUT -p icmp -j DROP

第一条ipables的意思是限制ping包每一秒钟一个,10个后重新开始.

同时可以限制IP碎片,每秒钟只允许100个碎片,用来防止DoS攻击.


iptables -A INPUT -f -m limit –limit 100/sec –limit-burst 100 -j ACCEPT


下面ctohome.com详细的讲述一下iptables的limit模块的功能:


限制 ping (echo-request) 传入的速度
限制前, 可正常每 0.2 秒 ping 一次
ping your.linux.ip -i 0.2

限制每秒只接受一个 icmp echo-request 封包
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

–limit 1/s 表示每秒一次; 1/m 则为每分钟一次
–limit-burst 表示允许触发 limit 限制的最大次数 (预设 5)

再以每 0.2 秒 ping 一次, 得到的响应是每秒一次
ping your.linux.ip -i 0.2

下面规则亦可达到每秒只接受一个 echo-request 封包
iptables -N pinglimit
iptables -A pinglimit -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A pinglimit -j DROP
iptables -A INPUT -p icmp –icmp-type echo-request -j pinglimit

iptables限速原理解释:

iptables limit 参数
· 限制特定封包传入速度
· 限制特定端口口连入频率
· iptables Log 记录参数备忘
· 自定 Chain 使用备忘
· 防治 SYN-Flood 碎片攻击
限制 ping (echo-request) 传入的速度
限制前, 可正常每 0.2 秒 ping 一次
ping your.linux.ip -i 0.2
限制每秒只接受一个 icmp echo-request 封包
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
–limit 1/s 表示每秒一次; 1/m 则为每分钟一次
–limit-burst 表示允许触发 limit 限制的最大次数 (预设 5)
再以每 0.2 秒 ping 一次, 得到的响应是每秒一次
ping your.linux.ip -i 0.2


限制 ssh 连入频率
建立自订 Chain, 限制 tcp 联机每分钟一次, 超过者触发 Log 记录 (记录在 /var/log/messages)
iptables -N ratelimit
iptables -A ratelimit -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT  
iptables -A ratelimit -p tcp –syn -m limit –limit 1/m –limit-burst 1 -j ACCEPT
iptables -A ratelimit -p tcp -j LOG –log-level “NOTICE” –log-prefix “[RATELIMIT]”
iptables -A ratelimit -p tcp -j DROP
引用自订 Chain, 限制 ssh (tcp port 22) 连入频率
iptables -A INPUT -p tcp –dport 22 -s 192.168.0.0/16 -j ACCEPT (特定 IP 来源不受限制)
iptables -A INPUT -p tcp –dport 22 -j ratelimit

sshd_config 设定备忘:
· LoginGraceTime 30 密码输入时限为 30 秒
· MaxAuthTries 2 最多只能输入 3 次密码
同理可证
iptables -N pinglimit
iptables -A pinglimit -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A pinglimit -j DROP
iptables -A INPUT -p icmp –icmp-type echo-request -j pinglimit
亦可达到每秒只接受一个 echo-request 封包
补充: 清除自订 Chain
iptables -L -n –line-number
iptables -D INPUT n
iptables -F ratelimit
iptables -X ratelimit


防治 SYN-Flood 碎片攻击
iptables -N syn-flood
iptables -A syn-flood -m limit –limit 100/s –limit-burst 150 -j RETURN
iptables -A syn-flood -j DROP
iptables -I INPUT -j syn-flood
模拟攻击
wget http://www.xfocus.net/tools/200102/naptha-1.1.tgz
wget ftp://rpmfind.net/linux/freshrpms/redhat/7.0/libnet/libnet-1.0.1b-1.src.rpm
tar -zxf naptha-1.1.tgz
rpmbuild –recompile libnet-1.0.1b-1.src.rpm
cp -r /var/tmp/libnet-buildroot/usr/* /usr/local/
cd naptha-1.1
make
./synsend your.linux.host.ip 80 local.host.eth0.ip 0.1
若成功抵挡, 不久后会出现 Can’t send packet!: Operation not permitted 的讯息

iperf 测速工具使用方法

yocksky阅读(215)

Centos 首先使用 yum 安装 iperf

yum install -y iperf

服务端启用

iperf -s

客户端启用

iperf -c 125.40.59.249 -i 5 -w 1M -t 60

Linux router 优化性能

yocksky阅读(243)

vi /etc/sysctl.conf
net.nf_conntrack_max = 100000
net.netfilter.nf_conntrack_max = 1684354
net.netfilter.nf_conntrack_tcp_timeout_established = 180

网卡支持队列的化绑定队列

不支持队列开启 service irqbalance status 负载irq

Linux Centos下使用speedtest测速

yocksky阅读(254)

Speedtest测试网络上传/下载速度还是挺不错的,windows下非常方便。Linux下也可以很方便的使用命令行speedtest来测试。speedtest是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest很简单——只需要下载其Python脚本文件。

wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod a+rx speedtest.py
mv speedtest.py /usr/local/bin/speedtest
chown root:root /usr/local/bin/speedtest

安装完成以后执行

speedtest --share

非常方便还可以生成测速图

Linux cpu利用率mpstat安装与使用

yocksky阅读(262)

mpstat是sysstat安装包里面的一个命令 ,所以安装的时候要找
sysstat

yum install -y sysstat

安装完成后就可以运行了

mpstat -P ALL 1 3
mpstat
另一个用于获取 CPU 相关统计信息的有用的命令是 mpstat。下面是一个示例输出:
 
# mpstat -P ALL 5 2
Linux 2.6.9-67.ELsmp (oraclerac1)       12/20/2008
 
10:42:38 PM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
10:42:43 PM  all    6.89    0.00   44.76    0.10    0.10    0.10   48.05   1121.60
10:42:43 PM    0    9.20    0.00   49.00    0.00    0.00    0.20   41.60    413.00
10:42:43 PM    1    4.60    0.00   40.60    0.00    0.20    0.20   54.60    708.40
 
10:42:43 PM  CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
10:42:48 PM  all    7.60    0.00   45.30    0.30    0.00    0.10   46.70   1195.01
10:42:48 PM    0    4.19    0.00    2.20    0.40    0.00    0.00   93.21   1034.53
10:42:48 PM    1   10.78    0.00   88.22    0.40    0.00    0.00    0.20    160.48
 
Average:     CPU   %user   %nice %system %iowait    %irq   %soft   %idle    intr/s
Average:     all    7.25    0.00   45.03    0.20    0.05    0.10   47.38   1158.34
Average:       0    6.69    0.00   25.57    0.20    0.00    0.10   67.43    724.08
Average:       1    7.69    0.00   64.44    0.20    0.10    0.10   27.37    434.17
 
它显示了系统中 CPU 的各种统计信息。–P ALL 选项指示该命令显示所有 CPU 的统计信息,
而不只是特定 CPU 的统计信息。参数 5 2 指示该命令每隔 5 秒运行一次,共运行 2 次。
以上输出首先显示了所有 CPU 的合计指标,然后显示了每个 CPU 各自的指标。最后,在结尾处显示所有 CPU 的平均值。
 
让我们看一看这些列值的含义:
 
 
%user     表示处理用户进程所使用 CPU 的百分比。用户进程是用于应用程序(如 Oracle 数据库)的非内核进程。
          在本示例输出中,用户 CPU 百分比非常低。
 
%nice     表示使用 nice 命令对进程进行降级时 CPU 的百分比。在之前的部分中已经对 nice 命令进行了介绍。简单来说,nice 命令更改进程的优先级。
 
%system   表示内核进程使用的 CPU 百分比
 
%iowait   表示等待进行 I/O 所使用的 CPU 时间百分比
 
%irq      表示用于处理系统中断的 CPU 百分比
 
%soft     表示用于软件中断的 CPU 百分比
 
%idle     显示 CPU 的空闲时间
 
%intr/s   显示每秒 CPU 接收的中断总数
 
当您拥有前面所述的 vmstat 时,您可能想知道 mpstat 命令的作用。差别很大:mpstat 可以显示每个处理器的统计,
而 vmstat 显示所有处理器的统计。因此,编写糟糕的应用程序(不使用多线程体系结构)可能会运行在一个多处理器机器上,
而不使用所有处理器。从而导致一个 CPU 过载,而其他 CPU 却很空闲。通过 mpstat 可以轻松诊断这些类型的问题。
 
针对 Oracle 用户的用法
   与 vmstat 相似,mpstat 命令还产生与 CPU 有关的统计信息,因此所有与 CPU 问题有关的讨论也都适用于 mpstat。
当您看到较低的 %idle 数字时,您知道出现了 CPU 不足的问题。当您看到较高的 %iowait 数字时,
您知道在当前负载下 I/O 子系统出现了某些问题。该信息对于解决 Oracle 数据库性能问题非常方便

Linux网卡软中断绑定CPU核心

yocksky阅读(246)

在极限并发时,系统自动分配CPU负载均衡,并不能最大效率,这个时候就要使用网卡软中断绑定CPU,高端网卡支持队列可以绑定队列到CPU核心,来优化Linux网络吞吐的效率。

本例使用intel D525 CPU

查看irq资源

[root@LeeRouter ~]# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       
  0:        138          3          4          7   IO-APIC-edge      timer
  1:          1          0          0          1   IO-APIC-edge      i8042
  8:          0          1          0          0   IO-APIC-edge      rtc0
  9:          1          0          1          1   IO-APIC-fasteoi   acpi
 12:          0          1          2          1   IO-APIC-edge      i8042
 14:          0          0          0          0   IO-APIC-edge      ata_piix
 15:          0          0          0          0   IO-APIC-edge      ata_piix
 16:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
 18:        869        860        871        877   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb7, ata_piix
 19:          0          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb6
 21:          8          9          9          8   IO-APIC-fasteoi   uhci_hcd:usb4
 23:          0          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb5
 24:          0          0          0          0   PCI-MSI-edge      pciehp
 25:          0          0          0          0   PCI-MSI-edge      pciehp
 26:          0          0          0          0   PCI-MSI-edge      pciehp
 27:          0          0          0          0   PCI-MSI-edge      pciehp
 28:          0          0          0          0   PCI-MSI-edge      pciehp
 29:          0          0          0          0   PCI-MSI-edge      pciehp
 30:          2          3          2          2   PCI-MSI-edge      i915
 31:     254814     360483     272099     272226   PCI-MSI-edge      eth0
 32:        518        504        740        524   PCI-MSI-edge      eth1
 33:     369892     269639     243485     243150   PCI-MSI-edge      eth2
NMI:         35         43         32         35   Non-maskable interrupts
LOC:      67123      43720      59099      90278   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:         35         43         32         35   Performance monitoring interrupts
IWI:          0          0          0          0   IRQ work interrupts
RES:        613        555        402        473   Rescheduling interrupts
CAL:        848       1010        137        157   Function call interrupts
TLB:        451        414       1140       1105   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:         16         16         16         16   Machine check polls

可以看到eth0 eth1 eth2是平均负载在4个CPU核心上

echo 0 > /proc/irq/31/smp_affinity_list
echo 1 > /proc/irq/32/smp_affinity_list
echo 2 > /proc/irq/33/smp_affinity_list

分配网卡软中断到不同的CPU核心。

重启会失效,所以将命令写入 /etc/rc.local

vi /etc/rc.local
echo 0 > /proc/irq/31/smp_affinity_list
echo 1 > /proc/irq/32/smp_affinity_list
echo 2 > /proc/irq/33/smp_affinity_list

linux router iptables限速策略

yocksky阅读(216)

双向限制:

iptables -A FORWARD -m limit -d 0.0.0.0/0 --limit 2400/s --limit-burst 100 -j ACCEPT 
iptables -A FORWARD -d 0.0.0.0/0 -j DROP
iptables -A FORWARD -m limit -s 0.0.0.0/0 --limit 2400/s --limit-burst 100 -j ACCEPT 
iptables -A FORWARD -s 0.0.0.0/0 -j DROP

限速以后ICMP也会被限制导致带宽跑满以后ping丢包。

所以在头部添加icmp ACCECT 来解决此问题。

iptables -I FORWARD 1 -p icmp -d 0.0.0.0/0 -j ACCEPT

分享快乐 记录生活

联系我们联系我们